diff options
Diffstat (limited to 'drivers/ide/ide-acpi.c')
-rw-r--r-- | drivers/ide/ide-acpi.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/drivers/ide/ide-acpi.c b/drivers/ide/ide-acpi.c index fd4a36433050..2f9e941968d6 100644 --- a/drivers/ide/ide-acpi.c +++ b/drivers/ide/ide-acpi.c | |||
@@ -218,7 +218,7 @@ static acpi_handle ide_acpi_hwif_get_handle(ide_hwif_t *hwif) | |||
218 | */ | 218 | */ |
219 | static acpi_handle ide_acpi_drive_get_handle(ide_drive_t *drive) | 219 | static acpi_handle ide_acpi_drive_get_handle(ide_drive_t *drive) |
220 | { | 220 | { |
221 | ide_hwif_t *hwif = HWIF(drive); | 221 | ide_hwif_t *hwif = drive->hwif; |
222 | int port; | 222 | int port; |
223 | acpi_handle drive_handle; | 223 | acpi_handle drive_handle; |
224 | 224 | ||
@@ -263,7 +263,7 @@ static int do_drive_get_GTF(ide_drive_t *drive, | |||
263 | acpi_status status; | 263 | acpi_status status; |
264 | struct acpi_buffer output; | 264 | struct acpi_buffer output; |
265 | union acpi_object *out_obj; | 265 | union acpi_object *out_obj; |
266 | ide_hwif_t *hwif = HWIF(drive); | 266 | ide_hwif_t *hwif = drive->hwif; |
267 | struct device *dev = hwif->gendev.parent; | 267 | struct device *dev = hwif->gendev.parent; |
268 | int err = -ENODEV; | 268 | int err = -ENODEV; |
269 | int port; | 269 | int port; |
@@ -641,7 +641,8 @@ void ide_acpi_push_timing(ide_hwif_t *hwif) | |||
641 | */ | 641 | */ |
642 | void ide_acpi_set_state(ide_hwif_t *hwif, int on) | 642 | void ide_acpi_set_state(ide_hwif_t *hwif, int on) |
643 | { | 643 | { |
644 | int unit; | 644 | ide_drive_t *drive; |
645 | int i; | ||
645 | 646 | ||
646 | if (ide_noacpi || ide_noacpi_psx) | 647 | if (ide_noacpi || ide_noacpi_psx) |
647 | return; | 648 | return; |
@@ -655,9 +656,8 @@ void ide_acpi_set_state(ide_hwif_t *hwif, int on) | |||
655 | /* channel first and then drives for power on and verse versa for power off */ | 656 | /* channel first and then drives for power on and verse versa for power off */ |
656 | if (on) | 657 | if (on) |
657 | acpi_bus_set_power(hwif->acpidata->obj_handle, ACPI_STATE_D0); | 658 | acpi_bus_set_power(hwif->acpidata->obj_handle, ACPI_STATE_D0); |
658 | for (unit = 0; unit < MAX_DRIVES; ++unit) { | ||
659 | ide_drive_t *drive = &hwif->drives[unit]; | ||
660 | 659 | ||
660 | ide_port_for_each_dev(i, drive, hwif) { | ||
661 | if (!drive->acpidata->obj_handle) | 661 | if (!drive->acpidata->obj_handle) |
662 | drive->acpidata->obj_handle = ide_acpi_drive_get_handle(drive); | 662 | drive->acpidata->obj_handle = ide_acpi_drive_get_handle(drive); |
663 | 663 | ||
@@ -711,15 +711,13 @@ void ide_acpi_port_init_devices(ide_hwif_t *hwif) | |||
711 | * for both drives, regardless whether they are connected | 711 | * for both drives, regardless whether they are connected |
712 | * or not. | 712 | * or not. |
713 | */ | 713 | */ |
714 | hwif->drives[0].acpidata = &hwif->acpidata->master; | 714 | hwif->devices[0]->acpidata = &hwif->acpidata->master; |
715 | hwif->drives[1].acpidata = &hwif->acpidata->slave; | 715 | hwif->devices[1]->acpidata = &hwif->acpidata->slave; |
716 | 716 | ||
717 | /* | 717 | /* |
718 | * Send IDENTIFY for each drive | 718 | * Send IDENTIFY for each drive |
719 | */ | 719 | */ |
720 | for (i = 0; i < MAX_DRIVES; i++) { | 720 | ide_port_for_each_dev(i, drive, hwif) { |
721 | drive = &hwif->drives[i]; | ||
722 | |||
723 | memset(drive->acpidata, 0, sizeof(*drive->acpidata)); | 721 | memset(drive->acpidata, 0, sizeof(*drive->acpidata)); |
724 | 722 | ||
725 | if ((drive->dev_flags & IDE_DFLAG_PRESENT) == 0) | 723 | if ((drive->dev_flags & IDE_DFLAG_PRESENT) == 0) |
@@ -744,9 +742,7 @@ void ide_acpi_port_init_devices(ide_hwif_t *hwif) | |||
744 | ide_acpi_get_timing(hwif); | 742 | ide_acpi_get_timing(hwif); |
745 | ide_acpi_push_timing(hwif); | 743 | ide_acpi_push_timing(hwif); |
746 | 744 | ||
747 | for (i = 0; i < MAX_DRIVES; i++) { | 745 | ide_port_for_each_dev(i, drive, hwif) { |
748 | drive = &hwif->drives[i]; | ||
749 | |||
750 | if (drive->dev_flags & IDE_DFLAG_PRESENT) | 746 | if (drive->dev_flags & IDE_DFLAG_PRESENT) |
751 | /* Execute ACPI startup code */ | 747 | /* Execute ACPI startup code */ |
752 | ide_acpi_exec_tfs(drive); | 748 | ide_acpi_exec_tfs(drive); |