1 /* 2 * Virtual EISA root driver. 3 * Acts as a placeholder if we don't have a proper EISA bridge. 4 * 5 * (C) 2003 Marc Zyngier <maz@wild-wind.fr.eu.org> 6 * modified for SNI usage by Thomas Bogendoerfer 7 * 8 * This code is released under the GPL version 2. 9 */ 10 11 #include <linux/kernel.h> 12 #include <linux/platform_device.h> 13 #include <linux/eisa.h> 14 #include <linux/init.h> 15 16 /* The default EISA device parent (virtual root device). 17 * Now use a platform device, since that's the obvious choice. */ 18 19 static struct platform_device eisa_root_dev = { 20 .name = "eisa", 21 .id = 0, 22 }; 23 24 static struct eisa_root_device eisa_bus_root = { 25 .dev = &eisa_root_dev.dev, 26 .bus_base_addr = 0, 27 .res = &ioport_resource, 28 .slots = EISA_MAX_SLOTS, 29 .dma_mask = 0xffffffff, 30 .force_probe = 1, 31 }; 32 33 int __init sni_eisa_root_init(void) 34 { 35 int r; 36 37 r = platform_device_register(&eisa_root_dev); 38 if (!r) 39 return r; 40 41 dev_set_drvdata(&eisa_root_dev.dev, &eisa_bus_root); 42 43 if (eisa_root_register(&eisa_bus_root)) { 44 /* A real bridge may have been registered before 45 * us. So quietly unregister. */ 46 platform_device_unregister(&eisa_root_dev); 47 return -1; 48 } 49 return 0; 50 } 51