diff options
Diffstat (limited to 'drivers/ide/ide-probe.c')
-rw-r--r-- | drivers/ide/ide-probe.c | 44 |
1 files changed, 16 insertions, 28 deletions
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 5ccd691b0bd..2cccfe9d39f 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c @@ -1182,26 +1182,6 @@ static void drive_release_dev (struct device *dev) complete(&drive->gendev_rel_comp); } -static void init_gendisk (ide_hwif_t *hwif) -{ - unsigned int unit; - - for (unit = 0; unit < MAX_DRIVES; ++unit) { - ide_drive_t * drive = &hwif->drives[unit]; - - if (!drive->present) - continue; - - ide_add_generic_settings(drive); - snprintf(drive->gendev.bus_id,BUS_ID_SIZE,"%u.%u", - hwif->index,unit); - drive->gendev.parent = &hwif->gendev; - drive->gendev.bus = &ide_bus_type; - drive->gendev.driver_data = drive; - drive->gendev.release = drive_release_dev; - } -} - static int hwif_init(ide_hwif_t *hwif) { int old_irq; @@ -1261,7 +1241,6 @@ done: blk_register_region(MKDEV(hwif->major, 0), MAX_DRIVES << PARTN_BITS, THIS_MODULE, ata_probe, ata_lock, hwif); ide_acpi_init(hwif); - init_gendisk(hwif); return 1; out: @@ -1275,15 +1254,24 @@ static void hwif_register_devices(ide_hwif_t *hwif) for (i = 0; i < MAX_DRIVES; i++) { ide_drive_t *drive = &hwif->drives[i]; + struct device *dev = &drive->gendev; + int ret; - if (drive->present) { - int ret = device_register(&drive->gendev); + if (!drive->present) + continue; - if (ret < 0) - printk(KERN_WARNING "IDE: %s: " - "device_register error: %d\n", - __FUNCTION__, ret); - } + ide_add_generic_settings(drive); + + snprintf(dev->bus_id, BUS_ID_SIZE, "%u.%u", hwif->index, i); + dev->parent = &hwif->gendev; + dev->bus = &ide_bus_type; + dev->driver_data = drive; + dev->release = drive_release_dev; + + ret = device_register(dev); + if (ret < 0) + printk(KERN_WARNING "IDE: %s: device_register error: " + "%d\n", __func__, ret); } } |