aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-acpi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide/ide-acpi.c')
-rw-r--r--drivers/ide/ide-acpi.c30
1 files changed, 10 insertions, 20 deletions
diff --git a/drivers/ide/ide-acpi.c b/drivers/ide/ide-acpi.c
index a3bebba18425..8d6d31fcbfba 100644
--- a/drivers/ide/ide-acpi.c
+++ b/drivers/ide/ide-acpi.c
@@ -608,17 +608,17 @@ void ide_acpi_set_state(ide_hwif_t *hwif, int on)
608 DEBPRINT("no ACPI data for %s\n", hwif->name); 608 DEBPRINT("no ACPI data for %s\n", hwif->name);
609 return; 609 return;
610 } 610 }
611
611 /* channel first and then drives for power on and verse versa for power off */ 612 /* channel first and then drives for power on and verse versa for power off */
612 if (on) 613 if (on)
613 acpi_bus_set_power(hwif->acpidata->obj_handle, ACPI_STATE_D0); 614 acpi_bus_set_power(hwif->acpidata->obj_handle, ACPI_STATE_D0);
614 615
615 ide_port_for_each_dev(i, drive, hwif) { 616 ide_port_for_each_present_dev(i, drive, hwif) {
616 if (drive->acpidata->obj_handle && 617 if (drive->acpidata->obj_handle)
617 (drive->dev_flags & IDE_DFLAG_PRESENT)) {
618 acpi_bus_set_power(drive->acpidata->obj_handle, 618 acpi_bus_set_power(drive->acpidata->obj_handle,
619 on? ACPI_STATE_D0: ACPI_STATE_D3); 619 on ? ACPI_STATE_D0 : ACPI_STATE_D3);
620 }
621 } 620 }
621
622 if (!on) 622 if (!on)
623 acpi_bus_set_power(hwif->acpidata->obj_handle, ACPI_STATE_D3); 623 acpi_bus_set_power(hwif->acpidata->obj_handle, ACPI_STATE_D3);
624} 624}
@@ -667,12 +667,9 @@ void ide_acpi_port_init_devices(ide_hwif_t *hwif)
667 hwif->devices[1]->acpidata = &hwif->acpidata->slave; 667 hwif->devices[1]->acpidata = &hwif->acpidata->slave;
668 668
669 /* get _ADR info for each device */ 669 /* get _ADR info for each device */
670 ide_port_for_each_dev(i, drive, hwif) { 670 ide_port_for_each_present_dev(i, drive, hwif) {
671 acpi_handle dev_handle; 671 acpi_handle dev_handle;
672 672
673 if ((drive->dev_flags & IDE_DFLAG_PRESENT) == 0)
674 continue;
675
676 DEBPRINT("ENTER: %s at channel#: %d port#: %d\n", 673 DEBPRINT("ENTER: %s at channel#: %d port#: %d\n",
677 drive->name, hwif->channel, drive->dn & 1); 674 drive->name, hwif->channel, drive->dn & 1);
678 675
@@ -685,13 +682,8 @@ void ide_acpi_port_init_devices(ide_hwif_t *hwif)
685 drive->acpidata->obj_handle = dev_handle; 682 drive->acpidata->obj_handle = dev_handle;
686 } 683 }
687 684
688 /* 685 /* send IDENTIFY for each device */
689 * Send IDENTIFY for each drive 686 ide_port_for_each_present_dev(i, drive, hwif) {
690 */
691 ide_port_for_each_dev(i, drive, hwif) {
692 if ((drive->dev_flags & IDE_DFLAG_PRESENT) == 0)
693 continue;
694
695 err = taskfile_lib_get_identify(drive, drive->acpidata->idbuff); 687 err = taskfile_lib_get_identify(drive, drive->acpidata->idbuff);
696 if (err) 688 if (err)
697 DEBPRINT("identify device %s failed (%d)\n", 689 DEBPRINT("identify device %s failed (%d)\n",
@@ -711,9 +703,7 @@ void ide_acpi_port_init_devices(ide_hwif_t *hwif)
711 ide_acpi_get_timing(hwif); 703 ide_acpi_get_timing(hwif);
712 ide_acpi_push_timing(hwif); 704 ide_acpi_push_timing(hwif);
713 705
714 ide_port_for_each_dev(i, drive, hwif) { 706 ide_port_for_each_present_dev(i, drive, hwif) {
715 if (drive->dev_flags & IDE_DFLAG_PRESENT) 707 ide_acpi_exec_tfs(drive);
716 /* Execute ACPI startup code */
717 ide_acpi_exec_tfs(drive);
718 } 708 }
719} 709}