diff options
author | Lin Ming <ming.m.lin@intel.com> | 2012-06-25 04:13:07 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2012-06-29 11:38:15 -0400 |
commit | a606dac368eed5696fb38e16b1394f1d049c09e9 (patch) | |
tree | c65ac7fe74e7aadbdf36e5078f34bfb47a9f3333 /drivers/ata | |
parent | 3bd46600a7a7e938c54df8cdbac9910668c7dfb0 (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.c | 32 |
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 | ||
1028 | static 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 | |||
1043 | static 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 | |||
1028 | void ata_acpi_bind(struct ata_device *dev) | 1058 | void 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 | ||
1033 | void ata_acpi_unbind(struct ata_device *dev) | 1064 | void 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 | ||
1038 | static int compat_pci_ata(struct ata_port *ap) | 1070 | static int compat_pci_ata(struct ata_port *ap) |