diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-02-02 19:56:41 +0100 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-02-02 19:56:41 +0100 |
commit | d5bc6592df85dbbb300e0d62af89645602c97551 (patch) | |
tree | 26dba4b9a7277a819fdee1216ea06c08ec7b2226 /drivers/ide/ide-probe.c | |
parent | ide: factor out adding drive to hwgroup from init_irq() (diff) | |
download | linux-d5bc6592df85dbbb300e0d62af89645602c97551.tar.xz linux-d5bc6592df85dbbb300e0d62af89645602c97551.zip |
ide: factor out devices setup from init_irq()
* Factor out devices setup from init_irq() to ide_port_setup_devices().
While at it:
* Do devices setup after printing port information.
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to '')
-rw-r--r-- | drivers/ide/ide-probe.c | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 4d940d1a80ed..91c352c82725 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c @@ -929,6 +929,31 @@ static void ide_add_drive_to_hwgroup(ide_drive_t *drive) } /* + * For any present drive: + * - allocate the block device queue + * - link drive into the hwgroup + */ +static void ide_port_setup_devices(ide_hwif_t *hwif) +{ + int i; + + for (i = 0; i < MAX_DRIVES; i++) { + ide_drive_t *drive = &hwif->drives[i]; + + if (!drive->present) + continue; + + if (ide_init_queue(drive)) { + printk(KERN_ERR "ide: failed to init %s\n", + drive->name); + continue; + } + + ide_add_drive_to_hwgroup(drive); + } +} + +/* * This routine sets up the irq for an ide interface, and creates a new * hwgroup for the irq/hwif if none was previously assigned. * @@ -1037,22 +1062,6 @@ static int init_irq (ide_hwif_t *hwif) hwif->rqsize = 65536; } - /* - * For any present drive: - * - allocate the block device queue - * - link drive into the hwgroup - */ - for (index = 0; index < MAX_DRIVES; ++index) { - ide_drive_t *drive = &hwif->drives[index]; - if (!drive->present) - continue; - if (ide_init_queue(drive)) { - printk(KERN_ERR "ide: failed to init %s\n",drive->name); - continue; - } - ide_add_drive_to_hwgroup(drive); - } - #if !defined(__mc68000__) && !defined(CONFIG_APUS) printk("%s at 0x%03lx-0x%03lx,0x%03lx on irq %d", hwif->name, hwif->io_ports[IDE_DATA_OFFSET], @@ -1066,6 +1075,9 @@ static int init_irq (ide_hwif_t *hwif) printk(" (%sed with %s)", hwif->sharing_irq ? "shar" : "serializ", match->name); printk("\n"); + + ide_port_setup_devices(hwif); + mutex_unlock(&ide_cfg_mtx); return 0; out_unlink: |