11da177e4SLinus Torvalds /* 21da177e4SLinus Torvalds * linux/arch/arm/kernel/isa.c 31da177e4SLinus Torvalds * 41da177e4SLinus Torvalds * Copyright (C) 1999 Phil Blundell 51da177e4SLinus Torvalds * 61da177e4SLinus Torvalds * This program is free software; you can redistribute it and/or 71da177e4SLinus Torvalds * modify it under the terms of the GNU General Public License 81da177e4SLinus Torvalds * as published by the Free Software Foundation; either version 91da177e4SLinus Torvalds * 2 of the License, or (at your option) any later version. 107034b0e6SRussell King * 117034b0e6SRussell King * ISA shared memory and I/O port support, and is required to support 127034b0e6SRussell King * iopl, inb, outb and friends in userspace via glibc emulation. 131da177e4SLinus Torvalds */ 141da177e4SLinus Torvalds #include <linux/stddef.h> 151da177e4SLinus Torvalds #include <linux/types.h> 161da177e4SLinus Torvalds #include <linux/fs.h> 171da177e4SLinus Torvalds #include <linux/sysctl.h> 181da177e4SLinus Torvalds #include <linux/init.h> 1987e0d6ccSBen Dooks #include <linux/io.h> 201da177e4SLinus Torvalds 211da177e4SLinus Torvalds static unsigned int isa_membase, isa_portbase, isa_portshift; 221da177e4SLinus Torvalds 231da177e4SLinus Torvalds static ctl_table ctl_isa_vars[4] = { 247034b0e6SRussell King { 257034b0e6SRussell King .procname = "membase", 267034b0e6SRussell King .data = &isa_membase, 277034b0e6SRussell King .maxlen = sizeof(isa_membase), 287034b0e6SRussell King .mode = 0444, 29*6d456111SEric W. Biederman .proc_handler = proc_dointvec, 307034b0e6SRussell King }, { 317034b0e6SRussell King .procname = "portbase", 327034b0e6SRussell King .data = &isa_portbase, 337034b0e6SRussell King .maxlen = sizeof(isa_portbase), 347034b0e6SRussell King .mode = 0444, 35*6d456111SEric W. Biederman .proc_handler = proc_dointvec, 367034b0e6SRussell King }, { 377034b0e6SRussell King .procname = "portshift", 387034b0e6SRussell King .data = &isa_portshift, 397034b0e6SRussell King .maxlen = sizeof(isa_portshift), 407034b0e6SRussell King .mode = 0444, 41*6d456111SEric W. Biederman .proc_handler = proc_dointvec, 4250469619SEric W. Biederman }, {} 431da177e4SLinus Torvalds }; 441da177e4SLinus Torvalds 451da177e4SLinus Torvalds static struct ctl_table_header *isa_sysctl_header; 461da177e4SLinus Torvalds 477034b0e6SRussell King static ctl_table ctl_isa[2] = { 487034b0e6SRussell King { 497034b0e6SRussell King .procname = "isa", 507034b0e6SRussell King .mode = 0555, 517034b0e6SRussell King .child = ctl_isa_vars, 5250469619SEric W. Biederman }, {} 537034b0e6SRussell King }; 547034b0e6SRussell King 557034b0e6SRussell King static ctl_table ctl_bus[2] = { 567034b0e6SRussell King { 577034b0e6SRussell King .procname = "bus", 587034b0e6SRussell King .mode = 0555, 597034b0e6SRussell King .child = ctl_isa, 6050469619SEric W. Biederman }, {} 617034b0e6SRussell King }; 621da177e4SLinus Torvalds 631da177e4SLinus Torvalds void __init 641da177e4SLinus Torvalds register_isa_ports(unsigned int membase, unsigned int portbase, unsigned int portshift) 651da177e4SLinus Torvalds { 661da177e4SLinus Torvalds isa_membase = membase; 671da177e4SLinus Torvalds isa_portbase = portbase; 681da177e4SLinus Torvalds isa_portshift = portshift; 690b4d4147SEric W. Biederman isa_sysctl_header = register_sysctl_table(ctl_bus); 701da177e4SLinus Torvalds } 71