aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata
diff options
context:
space:
mode:
authorLin Ming <ming.m.lin@intel.com>2012-06-25 04:13:07 -0400
committerJeff Garzik <jgarzik@redhat.com>2012-06-29 11:38:15 -0400
commita606dac368eed5696fb38e16b1394f1d049c09e9 (patch)
treec65ac7fe74e7aadbdf36e5078f34bfb47a9f3333 /drivers/ata
parent3bd46600a7a7e938c54df8cdbac9910668c7dfb0 (diff)
libata-acpi: register/unregister device to/from power resource
Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/ata')
-rw-r--r--drivers/ata/libata-acpi.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/drivers/ata/libata-acpi.c b/drivers/ata/libata-acpi.c
index e01807a1ef31..f36284e3290d 100644
--- a/drivers/ata/libata-acpi.c
+++ b/drivers/ata/libata-acpi.c
@@ -1025,14 +1025,46 @@ static void ata_acpi_remove_pm_notifier(struct ata_device *dev)
1025 } 1025 }
1026} 1026}
1027 1027
1028static void ata_acpi_register_power_resource(struct ata_device *dev)
1029{
1030 struct scsi_device *sdev = dev->sdev;
1031 acpi_handle handle;
1032 struct device *device;
1033
1034 handle = ata_dev_acpi_handle(dev);
1035 if (!handle)
1036 return;
1037
1038 device = &sdev->sdev_gendev;
1039
1040 acpi_power_resource_register_device(device, handle);
1041}
1042
1043static void ata_acpi_unregister_power_resource(struct ata_device *dev)
1044{
1045 struct scsi_device *sdev = dev->sdev;
1046 acpi_handle handle;
1047 struct device *device;
1048
1049 handle = ata_dev_acpi_handle(dev);
1050 if (!handle)
1051 return;
1052
1053 device = &sdev->sdev_gendev;
1054
1055 acpi_power_resource_unregister_device(device, handle);
1056}
1057
1028void ata_acpi_bind(struct ata_device *dev) 1058void ata_acpi_bind(struct ata_device *dev)
1029{ 1059{
1030 ata_acpi_add_pm_notifier(dev); 1060 ata_acpi_add_pm_notifier(dev);
1061 ata_acpi_register_power_resource(dev);
1031} 1062}
1032 1063
1033void ata_acpi_unbind(struct ata_device *dev) 1064void ata_acpi_unbind(struct ata_device *dev)
1034{ 1065{
1035 ata_acpi_remove_pm_notifier(dev); 1066 ata_acpi_remove_pm_notifier(dev);
1067 ata_acpi_unregister_power_resource(dev);
1036} 1068}
1037 1069
1038static int compat_pci_ata(struct ata_port *ap) 1070static int compat_pci_ata(struct ata_port *ap)