Hi Axboe, Please take some times reviewing this patch. Thanks, Andy > -----Original Message----- > From: andy.tang@xxxxxxx <andy.tang@xxxxxxx> > Sent: 2020年8月17日 16:22 > To: axboe@xxxxxxxxx > Cc: linux-ide@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Andy Tang > <andy.tang@xxxxxxx>; Udit Kumar <udit.kumar@xxxxxxx> > Subject: [PATCH] ahci: qoriq: enable acpi support in qoriq ahci driver > > From: Yuantian Tang <andy.tang@xxxxxxx> > > This patch enables ACPI support in qoriq ahci driver. > > Signed-off-by: Udit Kumar <udit.kumar@xxxxxxx> > Signed-off-by: Yuantian Tang <andy.tang@xxxxxxx> > --- > drivers/ata/ahci_qoriq.c | 20 +++++++++++++++++--- > 1 file changed, 17 insertions(+), 3 deletions(-) > > diff --git a/drivers/ata/ahci_qoriq.c b/drivers/ata/ahci_qoriq.c index > a330307d3201..5b46fc9aeb4a 100644 > --- a/drivers/ata/ahci_qoriq.c > +++ b/drivers/ata/ahci_qoriq.c > @@ -6,6 +6,7 @@ > * Tang Yuantian <Yuantian.Tang@xxxxxxxxxxxxx> > */ > > +#include <linux/acpi.h> > #include <linux/kernel.h> > #include <linux/module.h> > #include <linux/pm.h> > @@ -80,6 +81,12 @@ static const struct of_device_id ahci_qoriq_of_match[] = > { }; MODULE_DEVICE_TABLE(of, ahci_qoriq_of_match); > > +static const struct acpi_device_id ahci_qoriq_acpi_match[] = { > + {"NXP0004", .driver_data = (kernel_ulong_t)AHCI_LX2160A}, > + { } > +}; > +MODULE_DEVICE_TABLE(acpi, ahci_qoriq_acpi_match); > + > static int ahci_qoriq_hardreset(struct ata_link *link, unsigned int *class, > unsigned long deadline) > { > @@ -255,6 +262,7 @@ static int ahci_qoriq_phy_init(struct ahci_host_priv > *hpriv) static int ahci_qoriq_probe(struct platform_device *pdev) { > struct device_node *np = pdev->dev.of_node; > + const struct acpi_device_id *acpi_id; > struct device *dev = &pdev->dev; > struct ahci_host_priv *hpriv; > struct ahci_qoriq_priv *qoriq_priv; > @@ -267,14 +275,18 @@ static int ahci_qoriq_probe(struct platform_device > *pdev) > return PTR_ERR(hpriv); > > of_id = of_match_node(ahci_qoriq_of_match, np); > - if (!of_id) > + acpi_id = acpi_match_device(ahci_qoriq_acpi_match, &pdev->dev); > + if (!(of_id || acpi_id)) > return -ENODEV; > > qoriq_priv = devm_kzalloc(dev, sizeof(*qoriq_priv), GFP_KERNEL); > if (!qoriq_priv) > return -ENOMEM; > > - qoriq_priv->type = (enum ahci_qoriq_type)of_id->data; > + if (of_id) > + qoriq_priv->type = (enum ahci_qoriq_type)of_id->data; > + else > + qoriq_priv->type = (enum ahci_qoriq_type)acpi_id->driver_data; > > if (unlikely(!ecc_initialized)) { > res = platform_get_resource_byname(pdev, > @@ -288,7 +300,8 @@ static int ahci_qoriq_probe(struct platform_device > *pdev) > } > } > > - qoriq_priv->is_dmacoherent = of_dma_is_coherent(np); > + if (device_get_dma_attr(&pdev->dev) == DEV_DMA_COHERENT) > + qoriq_priv->is_dmacoherent = true; > > rc = ahci_platform_enable_resources(hpriv); > if (rc) > @@ -354,6 +367,7 @@ static struct platform_driver ahci_qoriq_driver = { > .driver = { > .name = DRV_NAME, > .of_match_table = ahci_qoriq_of_match, > + .acpi_match_table = ahci_qoriq_acpi_match, > .pm = &ahci_qoriq_pm_ops, > }, > }; > -- > 2.17.1