Messages in this thread Patch in this message | | | Date | Fri, 8 Mar 2002 19:04:58 +0100 | From | Pavel Machek <> | Subject | Driver support for system devices |
| |
Hi!
This adds devicefs support for motherboard devices. time is going to need it (to restore time after resume), floppy might be critical too (it uses DMA, so we *need* it stopped). Please apply,
Pavel
--- clean.pre/arch/i386/kernel/i8259.c Fri Mar 8 18:40:34 2002 +++ linux-dm.pre/arch/i386/kernel/i8259.c Fri Mar 8 00:16:49 2002 @@ -11,6 +11,7 @@ #include <linux/smp_lock.h> #include <linux/init.h> #include <linux/kernel_stat.h> +#include <linux/device.h> #include <asm/atomic.h> #include <asm/system.h> @@ -332,6 +333,19 @@ goto handle_real_irq; } } + +static struct device device_i8259A = { + name: "i8259A", + bus_id: "0020", + parent: &device_sys, +}; + +static void __init init_8259A_devicefs(void) +{ + device_register(&device_i8259A); +} + +__initcall(init_8259A_devicefs); void __init init_8259A(int auto_eoi) { --- clean.pre/arch/i386/kernel/time.c Fri Mar 8 18:40:34 2002 +++ linux-dm.pre/arch/i386/kernel/time.c Fri Mar 8 00:16:49 2002 @@ -41,6 +41,7 @@ #include <linux/delay.h> #include <linux/init.h> #include <linux/smp.h> +#include <linux/device.h> #include <asm/io.h> #include <asm/smp.h> @@ -634,6 +635,18 @@ bad_ctc: return 0; } + +static struct device device_i8253; + +static void time_init_driverfs(void) +{ + strcpy(device_i8253.name, "i8253"); + strcpy(device_i8253.bus_id, "0040"); + device_i8253.parent = &device_sys; + device_register(&device_i8253); +} + +__initcall(time_init_driverfs); void __init time_init(void) { --- clean.pre/drivers/base/core.c Mon Feb 11 20:50:55 2002 +++ linux-dm.pre/drivers/base/core.c Fri Mar 8 00:11:00 2002 @@ -24,6 +24,18 @@ name: "System Root", }; +struct device device_sys = { + bus_id: "sys", + name: "Bus for motherboard devices", + parent: &device_root, +}; + +struct device device_legacy = { + bus_id: "legacy", + name: "Bus for devices on southbridge/X-BUS/ISA", + parent: &device_root, +}; + int (*platform_notify)(struct device * dev) = NULL; int (*platform_notify_remove)(struct device * dev) = NULL; @@ -121,7 +133,13 @@ static int __init device_init_root(void) { - return device_register(&device_root); + int res; + res = device_register(&device_root); + if (res) return res; + res = device_register(&device_sys); + if (res) return res; + res = device_register(&device_legacy); + if (res) return res; } static int __init device_init(void) --- clean.pre/drivers/block/floppy.c Tue Mar 5 21:52:34 2002 +++ linux-dm.pre/drivers/block/floppy.c Fri Mar 8 00:11:00 2002 @@ -167,6 +167,7 @@ #include <linux/interrupt.h> #include <linux/init.h> #include <linux/devfs_fs_kernel.h> +#include <linux/device.h> /* * PS/2 floppies have much slower step rates than regular floppies. @@ -4146,11 +4147,16 @@ static int have_no_fdc= -ENODEV; +static struct device device_floppy; int __init floppy_init(void) { int i,unit,drive; + strcpy(device_floppy.name, "floppy"); + strcpy(device_floppy.bus_id, "03?0"); + device_floppy.parent = &device_sys; + device_register(&device_floppy); raw_cmd = NULL; --- clean.pre/include/linux/device.h Tue Mar 5 21:52:49 2002 +++ linux-dm.pre/include/linux/device.h Fri Mar 8 00:11:27 2002 @@ -61,6 +61,7 @@ int (*suspend) (struct device * dev, u32 state, u32 level); int (*resume) (struct device * dev, u32 level); + int (*enable_wake) (struct device * dev, u32 state, int enable); /* Enable wake event */ }; struct device { @@ -83,7 +84,7 @@ device */ void *driver_data; /* data private to the driver */ void *platform_data; /* Platform specific data (e.g. ACPI, - BIOS data relevant to device */ + BIOS data relevant to device) */ u32 current_state; /* Current operating state. In ACPI-speak, this is D0-D3, D0 @@ -142,5 +143,8 @@ } extern void put_device(struct device * dev); +extern struct device device_root; +extern struct device device_legacy; +extern struct device device_sys; #endif /* _DEVICE_H_ */ -- (about SSSCA) "I don't say this lightly. However, I really think that the U.S. no longer is classifiable as a democracy, but rather as a plutocracy." --hpa - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |