aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSuthikulpanit, Suravee <Suravee.Suthikulpanit@amd.com>2015-07-06 19:55:21 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2015-07-06 19:55:21 -0400
commit2051e9248688e4c36e4de2e93b88fa0d74e86261 (patch)
treea7d9ad9d78c39e151bd7dc524a680687ac6f381d
parent26095a01d359827eeccec5459c28ddd976183179 (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/Kconfig2
-rw-r--r--drivers/ata/ahci_platform.c9
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
49config ATA_ACPI 49config 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};
80MODULE_DEVICE_TABLE(of, ahci_of_match); 82MODULE_DEVICE_TABLE(of, ahci_of_match);
81 83
84static const struct acpi_device_id ahci_acpi_match[] = {
85 { ACPI_DEVICE_CLASS(PCI_CLASS_STORAGE_SATA_AHCI, 0xffffff) },
86 {},
87};
88MODULE_DEVICE_TABLE(acpi, ahci_acpi_match);
89
82static struct platform_driver ahci_driver = { 90static 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};