1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  *  linux/arch/arm/kernel/isa.c
4  *
5  *  Copyright (C) 1999 Phil Blundell
6  *
7  *  ISA shared memory and I/O port support, and is required to support
8  *  iopl, inb, outb and friends in userspace via glibc emulation.
9  */
10 #include <linux/stddef.h>
11 #include <linux/types.h>
12 #include <linux/fs.h>
13 #include <linux/sysctl.h>
14 #include <linux/init.h>
15 #include <linux/io.h>
16 
17 static unsigned int isa_membase, isa_portbase, isa_portshift;
18 
19 static struct ctl_table ctl_isa_vars[4] = {
20 	{
21 		.procname	= "membase",
22 		.data		= &isa_membase,
23 		.maxlen		= sizeof(isa_membase),
24 		.mode		= 0444,
25 		.proc_handler	= proc_dointvec,
26 	}, {
27 		.procname	= "portbase",
28 		.data		= &isa_portbase,
29 		.maxlen		= sizeof(isa_portbase),
30 		.mode		= 0444,
31 		.proc_handler	= proc_dointvec,
32 	}, {
33 		.procname	= "portshift",
34 		.data		= &isa_portshift,
35 		.maxlen		= sizeof(isa_portshift),
36 		.mode		= 0444,
37 		.proc_handler	= proc_dointvec,
38 	}, {}
39 };
40 
41 static struct ctl_table_header *isa_sysctl_header;
42 
43 static struct ctl_table ctl_isa[2] = {
44 	{
45 		.procname	= "isa",
46 		.mode		= 0555,
47 		.child		= ctl_isa_vars,
48 	}, {}
49 };
50 
51 static struct ctl_table ctl_bus[2] = {
52 	{
53 		.procname	= "bus",
54 		.mode		= 0555,
55 		.child		= ctl_isa,
56 	}, {}
57 };
58 
59 void __init
register_isa_ports(unsigned int membase,unsigned int portbase,unsigned int portshift)60 register_isa_ports(unsigned int membase, unsigned int portbase, unsigned int portshift)
61 {
62 	isa_membase = membase;
63 	isa_portbase = portbase;
64 	isa_portshift = portshift;
65 	isa_sysctl_header = register_sysctl_table(ctl_bus);
66 }
67