diff options
author | Suthikulpanit, Suravee <Suravee.Suthikulpanit@amd.com> | 2015-07-06 19:55:21 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2015-07-06 19:55:21 -0400 |
commit | 2051e9248688e4c36e4de2e93b88fa0d74e86261 (patch) | |
tree | a7d9ad9d78c39e151bd7dc524a680687ac6f381d | |
parent | 26095a01d359827eeccec5459c28ddd976183179 (diff) |
ata: ahci_platform: Add ACPI _CLS matching
This patch adds ACPI supports for AHCI platform driver, which uses _CLS
method to match the device.
The following is an example of ASL structure in DSDT for a SATA controller,
which contains _CLS package to be matched by the ahci_platform driver:
Device (AHC0) // AHCI Controller
{
Name(_HID, "AMDI0600")
Name (_CCA, 1)
Name (_CLS, Package (3)
{
0x01, // Base Class: Mass Storage
0x06, // Sub-Class: serial ATA
0x01, // Interface: AHCI
})
Name (_CRS, ResourceTemplate ()
{
Memory32Fixed (ReadWrite, 0xE0300000, 0x00010000)
Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive,,,) { 387 }
})
}
Also, since ATA driver should not require PCI support for ATA_ACPI,
this patch removes dependency in the driver/ata/Kconfig.
Acked-by: Tejun Heo <tj@kernel.org>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Hanjun Guo <hanjun.guo@linaro.org>
Signed-off-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r-- | drivers/ata/Kconfig | 2 | ||||
-rw-r--r-- | drivers/ata/ahci_platform.c | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig index 6d17a3b65ef7..15e40ee62a94 100644 --- a/drivers/ata/Kconfig +++ b/drivers/ata/Kconfig | |||
@@ -48,7 +48,7 @@ config ATA_VERBOSE_ERROR | |||
48 | 48 | ||
49 | config ATA_ACPI | 49 | config ATA_ACPI |
50 | bool "ATA ACPI Support" | 50 | bool "ATA ACPI Support" |
51 | depends on ACPI && PCI | 51 | depends on ACPI |
52 | default y | 52 | default y |
53 | help | 53 | help |
54 | This option adds support for ATA-related ACPI objects. | 54 | This option adds support for ATA-related ACPI objects. |
diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c index 614c78f510f0..1befb114c384 100644 --- a/drivers/ata/ahci_platform.c +++ b/drivers/ata/ahci_platform.c | |||
@@ -20,6 +20,8 @@ | |||
20 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
21 | #include <linux/libata.h> | 21 | #include <linux/libata.h> |
22 | #include <linux/ahci_platform.h> | 22 | #include <linux/ahci_platform.h> |
23 | #include <linux/acpi.h> | ||
24 | #include <linux/pci_ids.h> | ||
23 | #include "ahci.h" | 25 | #include "ahci.h" |
24 | 26 | ||
25 | #define DRV_NAME "ahci" | 27 | #define DRV_NAME "ahci" |
@@ -79,12 +81,19 @@ static const struct of_device_id ahci_of_match[] = { | |||
79 | }; | 81 | }; |
80 | MODULE_DEVICE_TABLE(of, ahci_of_match); | 82 | MODULE_DEVICE_TABLE(of, ahci_of_match); |
81 | 83 | ||
84 | static const struct acpi_device_id ahci_acpi_match[] = { | ||
85 | { ACPI_DEVICE_CLASS(PCI_CLASS_STORAGE_SATA_AHCI, 0xffffff) }, | ||
86 | {}, | ||
87 | }; | ||
88 | MODULE_DEVICE_TABLE(acpi, ahci_acpi_match); | ||
89 | |||
82 | static struct platform_driver ahci_driver = { | 90 | static struct platform_driver ahci_driver = { |
83 | .probe = ahci_probe, | 91 | .probe = ahci_probe, |
84 | .remove = ata_platform_remove_one, | 92 | .remove = ata_platform_remove_one, |
85 | .driver = { | 93 | .driver = { |
86 | .name = DRV_NAME, | 94 | .name = DRV_NAME, |
87 | .of_match_table = ahci_of_match, | 95 | .of_match_table = ahci_of_match, |
96 | .acpi_match_table = ahci_acpi_match, | ||
88 | .pm = &ahci_pm_ops, | 97 | .pm = &ahci_pm_ops, |
89 | }, | 98 | }, |
90 | }; | 99 | }; |