Skip to content

Commit

Permalink
ide: factor out code unregistering devices from ide_unregister()
Browse files Browse the repository at this point in the history
Factor out code unregistering devices from ide_unregister() to
ide_port_unregister_devices().

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
  • Loading branch information
Bartlomiej Zolnierkiewicz committed Apr 17, 2008
1 parent 5b0c4b3 commit 71bf9f6
Showing 1 changed file with 19 additions and 11 deletions.
30 changes: 19 additions & 11 deletions drivers/ide/ide.c
Original file line number Diff line number Diff line change
Expand Up @@ -490,6 +490,23 @@ void ide_remove_port_from_hwgroup(ide_hwif_t *hwif)
spin_unlock_irq(&ide_lock);
}

/* Called with ide_lock held. */
static void ide_port_unregister_devices(ide_hwif_t *hwif)
{
int i;

for (i = 0; i < MAX_DRIVES; i++) {
ide_drive_t *drive = &hwif->drives[i];

if (drive->present) {
spin_unlock_irq(&ide_lock);
device_unregister(&drive->gendev);
wait_for_completion(&drive->gendev_rel_comp);
spin_lock_irq(&ide_lock);
}
}
}

/**
* ide_unregister - free an IDE interface
* @index: index of interface (will change soon to a pointer)
Expand All @@ -516,11 +533,10 @@ void ide_remove_port_from_hwgroup(ide_hwif_t *hwif)

void ide_unregister(unsigned int index, int init_default, int restore)
{
ide_drive_t *drive;
ide_hwif_t *hwif, *g;
static ide_hwif_t tmp_hwif; /* protected by ide_cfg_mtx */
ide_hwgroup_t *hwgroup;
int irq_count = 0, unit;
int irq_count = 0;

BUG_ON(index >= MAX_HWIFS);

Expand All @@ -531,15 +547,7 @@ void ide_unregister(unsigned int index, int init_default, int restore)
hwif = &ide_hwifs[index];
if (!hwif->present)
goto abort;
for (unit = 0; unit < MAX_DRIVES; ++unit) {
drive = &hwif->drives[unit];
if (!drive->present)
continue;
spin_unlock_irq(&ide_lock);
device_unregister(&drive->gendev);
wait_for_completion(&drive->gendev_rel_comp);
spin_lock_irq(&ide_lock);
}
ide_port_unregister_devices(hwif);
hwif->present = 0;

spin_unlock_irq(&ide_lock);
Expand Down

0 comments on commit 71bf9f6

Please sign in to comment.