Loading drivers/ide/ide-probe.c +21 −4 Original line number Diff line number Diff line Loading @@ -623,6 +623,8 @@ static void hwif_release_dev (struct device *dev) static void hwif_register (ide_hwif_t *hwif) { int ret; /* register with global device tree */ strlcpy(hwif->gendev.bus_id,hwif->name,BUS_ID_SIZE); hwif->gendev.driver_data = hwif; Loading @@ -634,7 +636,10 @@ static void hwif_register (ide_hwif_t *hwif) hwif->gendev.parent = NULL; } hwif->gendev.release = hwif_release_dev; device_register(&hwif->gendev); ret = device_register(&hwif->gendev); if (ret < 0) printk(KERN_WARNING "IDE: %s: device_register error: %d\n", __FUNCTION__, ret); } static int wait_hwif_ready(ide_hwif_t *hwif) Loading Loading @@ -884,13 +889,19 @@ int probe_hwif_init_with_fixup(ide_hwif_t *hwif, void (*fixup)(ide_hwif_t *hwif) if (hwif->present) { u16 unit = 0; int ret; for (unit = 0; unit < MAX_DRIVES; ++unit) { ide_drive_t *drive = &hwif->drives[unit]; /* For now don't attach absent drives, we may want them on default or a new "empty" class for hotplug reprobing ? */ if (drive->present) { device_register(&drive->gendev); ret = device_register(&drive->gendev); if (ret < 0) printk(KERN_WARNING "IDE: %s: " "device_register error: %d\n", __FUNCTION__, ret); } } } Loading Loading @@ -1409,8 +1420,14 @@ int ideprobe_init (void) if (hwif->chipset == ide_unknown || hwif->chipset == ide_forced) hwif->chipset = ide_generic; for (unit = 0; unit < MAX_DRIVES; ++unit) if (hwif->drives[unit].present) device_register(&hwif->drives[unit].gendev); if (hwif->drives[unit].present) { int ret = device_register( &hwif->drives[unit].gendev); if (ret < 0) printk(KERN_WARNING "IDE: %s: " "device_register error: %d\n", __FUNCTION__, ret); } } } return 0; Loading drivers/ide/ide-proc.c +18 −4 Original line number Diff line number Diff line Loading @@ -326,15 +326,24 @@ static int ide_replace_subdriver(ide_drive_t *drive, const char *driver) { struct device *dev = &drive->gendev; int ret = 1; int err; down_write(&dev->bus->subsys.rwsem); device_release_driver(dev); /* FIXME: device can still be in use by previous driver */ strlcpy(drive->driver_req, driver, sizeof(drive->driver_req)); device_attach(dev); err = device_attach(dev); if (err < 0) printk(KERN_WARNING "IDE: %s: device_attach error: %d\n", __FUNCTION__, err); drive->driver_req[0] = 0; if (dev->driver == NULL) device_attach(dev); if (dev->driver == NULL) { err = device_attach(dev); if (err < 0) printk(KERN_WARNING "IDE: %s: device_attach(2) error: %d\n", __FUNCTION__, err); } if (dev->driver && !strcmp(dev->driver->name, driver)) ret = 0; up_write(&dev->bus->subsys.rwsem); Loading Loading @@ -526,7 +535,12 @@ static int proc_print_driver(struct device_driver *drv, void *data) static int ide_drivers_show(struct seq_file *s, void *p) { bus_for_each_drv(&ide_bus_type, NULL, s, proc_print_driver); int err; err = bus_for_each_drv(&ide_bus_type, NULL, s, proc_print_driver); if (err < 0) printk(KERN_WARNING "IDE: %s: bus_for_each_drv error: %d\n", __FUNCTION__, err); return 0; } Loading drivers/ide/ide.c +7 −1 Original line number Diff line number Diff line Loading @@ -1997,10 +1997,16 @@ EXPORT_SYMBOL_GPL(ide_bus_type); */ static int __init ide_init(void) { int ret; printk(KERN_INFO "Uniform Multi-Platform E-IDE driver " REVISION "\n"); system_bus_speed = ide_system_bus_speed(); bus_register(&ide_bus_type); ret = bus_register(&ide_bus_type); if (ret < 0) { printk(KERN_WARNING "IDE: bus_register error: %d\n", ret); return ret; } init_ide_data(); Loading Loading
drivers/ide/ide-probe.c +21 −4 Original line number Diff line number Diff line Loading @@ -623,6 +623,8 @@ static void hwif_release_dev (struct device *dev) static void hwif_register (ide_hwif_t *hwif) { int ret; /* register with global device tree */ strlcpy(hwif->gendev.bus_id,hwif->name,BUS_ID_SIZE); hwif->gendev.driver_data = hwif; Loading @@ -634,7 +636,10 @@ static void hwif_register (ide_hwif_t *hwif) hwif->gendev.parent = NULL; } hwif->gendev.release = hwif_release_dev; device_register(&hwif->gendev); ret = device_register(&hwif->gendev); if (ret < 0) printk(KERN_WARNING "IDE: %s: device_register error: %d\n", __FUNCTION__, ret); } static int wait_hwif_ready(ide_hwif_t *hwif) Loading Loading @@ -884,13 +889,19 @@ int probe_hwif_init_with_fixup(ide_hwif_t *hwif, void (*fixup)(ide_hwif_t *hwif) if (hwif->present) { u16 unit = 0; int ret; for (unit = 0; unit < MAX_DRIVES; ++unit) { ide_drive_t *drive = &hwif->drives[unit]; /* For now don't attach absent drives, we may want them on default or a new "empty" class for hotplug reprobing ? */ if (drive->present) { device_register(&drive->gendev); ret = device_register(&drive->gendev); if (ret < 0) printk(KERN_WARNING "IDE: %s: " "device_register error: %d\n", __FUNCTION__, ret); } } } Loading Loading @@ -1409,8 +1420,14 @@ int ideprobe_init (void) if (hwif->chipset == ide_unknown || hwif->chipset == ide_forced) hwif->chipset = ide_generic; for (unit = 0; unit < MAX_DRIVES; ++unit) if (hwif->drives[unit].present) device_register(&hwif->drives[unit].gendev); if (hwif->drives[unit].present) { int ret = device_register( &hwif->drives[unit].gendev); if (ret < 0) printk(KERN_WARNING "IDE: %s: " "device_register error: %d\n", __FUNCTION__, ret); } } } return 0; Loading
drivers/ide/ide-proc.c +18 −4 Original line number Diff line number Diff line Loading @@ -326,15 +326,24 @@ static int ide_replace_subdriver(ide_drive_t *drive, const char *driver) { struct device *dev = &drive->gendev; int ret = 1; int err; down_write(&dev->bus->subsys.rwsem); device_release_driver(dev); /* FIXME: device can still be in use by previous driver */ strlcpy(drive->driver_req, driver, sizeof(drive->driver_req)); device_attach(dev); err = device_attach(dev); if (err < 0) printk(KERN_WARNING "IDE: %s: device_attach error: %d\n", __FUNCTION__, err); drive->driver_req[0] = 0; if (dev->driver == NULL) device_attach(dev); if (dev->driver == NULL) { err = device_attach(dev); if (err < 0) printk(KERN_WARNING "IDE: %s: device_attach(2) error: %d\n", __FUNCTION__, err); } if (dev->driver && !strcmp(dev->driver->name, driver)) ret = 0; up_write(&dev->bus->subsys.rwsem); Loading Loading @@ -526,7 +535,12 @@ static int proc_print_driver(struct device_driver *drv, void *data) static int ide_drivers_show(struct seq_file *s, void *p) { bus_for_each_drv(&ide_bus_type, NULL, s, proc_print_driver); int err; err = bus_for_each_drv(&ide_bus_type, NULL, s, proc_print_driver); if (err < 0) printk(KERN_WARNING "IDE: %s: bus_for_each_drv error: %d\n", __FUNCTION__, err); return 0; } Loading
drivers/ide/ide.c +7 −1 Original line number Diff line number Diff line Loading @@ -1997,10 +1997,16 @@ EXPORT_SYMBOL_GPL(ide_bus_type); */ static int __init ide_init(void) { int ret; printk(KERN_INFO "Uniform Multi-Platform E-IDE driver " REVISION "\n"); system_bus_speed = ide_system_bus_speed(); bus_register(&ide_bus_type); ret = bus_register(&ide_bus_type); if (ret < 0) { printk(KERN_WARNING "IDE: bus_register error: %d\n", ret); return ret; } init_ide_data(); Loading