Loading arch/sparc64/kernel/auxio.c +74 −35 Original line number Diff line number Diff line Loading @@ -110,43 +110,82 @@ void auxio_set_lte(int on) } } void __init auxio_probe(void) static void __devinit auxio_report_dev(struct device_node *dp) { struct sbus_bus *sbus; struct sbus_dev *sdev = NULL; for_each_sbus(sbus) { for_each_sbusdev(sdev, sbus) { if(!strcmp(sdev->prom_name, "auxio")) goto found_sdev; } printk(KERN_INFO "AUXIO: Found device at %s\n", dp->full_name); } found_sdev: if (sdev) { static struct of_device_id auxio_match[] = { { .name = "auxio", }, {}, }; MODULE_DEVICE_TABLE(of, auxio_match); #ifdef CONFIG_SBUS static int __devinit auxio_sbus_probe(struct of_device *dev, const struct of_device_id *match) { struct sbus_dev *sdev = to_sbus_device(&dev->dev); auxio_devtype = AUXIO_TYPE_SBUS; auxio_register = sbus_ioremap(&sdev->resource[0], 0, sdev->reg_addrs[0].reg_size, "auxiliaryIO"); if (!auxio_register) return -ENODEV; auxio_report_dev(dev->node); return 0; } static struct of_platform_driver auxio_sbus_driver = { .name = "auxio", .match_table = auxio_match, .probe = auxio_sbus_probe, }; #endif #ifdef CONFIG_PCI else { struct linux_ebus *ebus; struct linux_ebus_device *edev = NULL; for_each_ebus(ebus) { for_each_ebusdev(edev, ebus) { if (!strcmp(edev->prom_node->name, "auxio")) goto ebus_done; } } ebus_done: if (edev) { static int __devinit auxio_ebus_probe(struct of_device *dev, const struct of_device_id *match) { struct linux_ebus_device *edev = to_ebus_device(&dev->dev); auxio_devtype = AUXIO_TYPE_EBUS; auxio_register = ioremap(edev->resource[0].start, sizeof(u32)); } } auxio_register = ioremap(edev->resource[0].start, sizeof(u32)); if (!auxio_register) return -ENODEV; auxio_report_dev(dev->node); auxio_set_led(AUXIO_LED_ON); return 0; } static struct of_platform_driver auxio_ebus_driver = { .name = "auxio", .match_table = auxio_match, .probe = auxio_ebus_probe, }; #endif static int __init auxio_probe(void) { #ifdef CONFIG_SBUS of_register_driver(&auxio_sbus_driver, &sbus_bus_type); #endif #ifdef CONFIG_PCI of_register_driver(&auxio_ebus_driver, &ebus_bus_type); #endif return 0; } /* Must be after subsys_initcall() so that busses are probed. Must * be before device_initcall() because things like the floppy driver * need to use the AUXIO register. */ fs_initcall(auxio_probe); arch/sparc64/kernel/ebus.c +0 −8 Original line number Diff line number Diff line Loading @@ -269,10 +269,6 @@ EXPORT_SYMBOL(ebus_dma_enable); struct linux_ebus *ebus_chain = NULL; #ifdef CONFIG_SUN_AUXIO extern void auxio_probe(void); #endif static inline void *ebus_alloc(size_t size) { void *mem; Loading Loading @@ -630,8 +626,4 @@ void __init ebus_init(void) ++num_ebus; } pci_dev_put(pdev); /* XXX for the case, when ebusnd is 0, is it OK? */ #ifdef CONFIG_SUN_AUXIO auxio_probe(); #endif } arch/sparc64/kernel/sbus.c +0 −2 Original line number Diff line number Diff line Loading @@ -1269,10 +1269,8 @@ int __init sbus_arch_preinit(void) void __init sbus_arch_postinit(void) { extern void firetruck_init(void); extern void auxio_probe(void); extern void clock_probe(void); firetruck_init(); auxio_probe(); clock_probe(); } Loading
arch/sparc64/kernel/auxio.c +74 −35 Original line number Diff line number Diff line Loading @@ -110,43 +110,82 @@ void auxio_set_lte(int on) } } void __init auxio_probe(void) static void __devinit auxio_report_dev(struct device_node *dp) { struct sbus_bus *sbus; struct sbus_dev *sdev = NULL; for_each_sbus(sbus) { for_each_sbusdev(sdev, sbus) { if(!strcmp(sdev->prom_name, "auxio")) goto found_sdev; } printk(KERN_INFO "AUXIO: Found device at %s\n", dp->full_name); } found_sdev: if (sdev) { static struct of_device_id auxio_match[] = { { .name = "auxio", }, {}, }; MODULE_DEVICE_TABLE(of, auxio_match); #ifdef CONFIG_SBUS static int __devinit auxio_sbus_probe(struct of_device *dev, const struct of_device_id *match) { struct sbus_dev *sdev = to_sbus_device(&dev->dev); auxio_devtype = AUXIO_TYPE_SBUS; auxio_register = sbus_ioremap(&sdev->resource[0], 0, sdev->reg_addrs[0].reg_size, "auxiliaryIO"); if (!auxio_register) return -ENODEV; auxio_report_dev(dev->node); return 0; } static struct of_platform_driver auxio_sbus_driver = { .name = "auxio", .match_table = auxio_match, .probe = auxio_sbus_probe, }; #endif #ifdef CONFIG_PCI else { struct linux_ebus *ebus; struct linux_ebus_device *edev = NULL; for_each_ebus(ebus) { for_each_ebusdev(edev, ebus) { if (!strcmp(edev->prom_node->name, "auxio")) goto ebus_done; } } ebus_done: if (edev) { static int __devinit auxio_ebus_probe(struct of_device *dev, const struct of_device_id *match) { struct linux_ebus_device *edev = to_ebus_device(&dev->dev); auxio_devtype = AUXIO_TYPE_EBUS; auxio_register = ioremap(edev->resource[0].start, sizeof(u32)); } } auxio_register = ioremap(edev->resource[0].start, sizeof(u32)); if (!auxio_register) return -ENODEV; auxio_report_dev(dev->node); auxio_set_led(AUXIO_LED_ON); return 0; } static struct of_platform_driver auxio_ebus_driver = { .name = "auxio", .match_table = auxio_match, .probe = auxio_ebus_probe, }; #endif static int __init auxio_probe(void) { #ifdef CONFIG_SBUS of_register_driver(&auxio_sbus_driver, &sbus_bus_type); #endif #ifdef CONFIG_PCI of_register_driver(&auxio_ebus_driver, &ebus_bus_type); #endif return 0; } /* Must be after subsys_initcall() so that busses are probed. Must * be before device_initcall() because things like the floppy driver * need to use the AUXIO register. */ fs_initcall(auxio_probe);
arch/sparc64/kernel/ebus.c +0 −8 Original line number Diff line number Diff line Loading @@ -269,10 +269,6 @@ EXPORT_SYMBOL(ebus_dma_enable); struct linux_ebus *ebus_chain = NULL; #ifdef CONFIG_SUN_AUXIO extern void auxio_probe(void); #endif static inline void *ebus_alloc(size_t size) { void *mem; Loading Loading @@ -630,8 +626,4 @@ void __init ebus_init(void) ++num_ebus; } pci_dev_put(pdev); /* XXX for the case, when ebusnd is 0, is it OK? */ #ifdef CONFIG_SUN_AUXIO auxio_probe(); #endif }
arch/sparc64/kernel/sbus.c +0 −2 Original line number Diff line number Diff line Loading @@ -1269,10 +1269,8 @@ int __init sbus_arch_preinit(void) void __init sbus_arch_postinit(void) { extern void firetruck_init(void); extern void auxio_probe(void); extern void clock_probe(void); firetruck_init(); auxio_probe(); clock_probe(); }