Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit febe53ba authored by Lin Ming's avatar Lin Ming Committed by Jeff Garzik
Browse files

libata-acpi: set acpi state for SATA port



Currently, ata_acpi_set_state() only sets acpi sate for IDE port.
Remove this limitation.

Acked-by: default avatarAaron Lu <aaron.lu@amd.com>
Signed-off-by: default avatarLin Ming <ming.m.lin@intel.com>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent 30dcf76a
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -852,23 +852,25 @@ void ata_acpi_on_resume(struct ata_port *ap)
void ata_acpi_set_state(struct ata_port *ap, pm_message_t state)
{
	struct ata_device *dev;

	if (!ata_ap_acpi_handle(ap) || (ap->flags & ATA_FLAG_ACPI_SATA))
		return;
	acpi_handle handle;

	/* channel first and then drives for power on and vica versa
	   for power off */
	if (state.event == PM_EVENT_ON)
		acpi_bus_set_power(ata_ap_acpi_handle(ap), ACPI_STATE_D0);
	handle = ata_ap_acpi_handle(ap);
	if (handle && state.event == PM_EVENT_ON)
		acpi_bus_set_power(handle, ACPI_STATE_D0);

	ata_for_each_dev(dev, &ap->link, ENABLED) {
		if (ata_dev_acpi_handle(dev))
			acpi_bus_set_power(ata_dev_acpi_handle(dev),
		handle = ata_dev_acpi_handle(dev);
		if (handle)
			acpi_bus_set_power(handle,
				state.event == PM_EVENT_ON ?
					ACPI_STATE_D0 : ACPI_STATE_D3);
	}
	if (state.event != PM_EVENT_ON)
		acpi_bus_set_power(ata_ap_acpi_handle(ap), ACPI_STATE_D3);

	handle = ata_ap_acpi_handle(ap);
	if (handle && state.event != PM_EVENT_ON)
		acpi_bus_set_power(handle, ACPI_STATE_D3);
}

/**