summaryrefslogtreecommitdiffstats
path: root/arm64-ufs-qcom-Add-support-for-platforms-booting-ACPI.patch
diff options
context:
space:
mode:
authorPeter Robinson <pbrobinson@gmail.com>2019-06-25 19:38:27 +0100
committerPeter Robinson <pbrobinson@gmail.com>2019-06-25 19:38:27 +0100
commit0d2c8ee00065ee01442a28fabb693339589fe62e (patch)
treecf0a8f93aafd4a3aa30b98884d228716c3c52919 /arm64-ufs-qcom-Add-support-for-platforms-booting-ACPI.patch
parent639ea3fb7e7a3e74109080c2cf2864a37a03a52c (diff)
downloadkernel-0d2c8ee00065ee01442a28fabb693339589fe62e.tar.gz
kernel-0d2c8ee00065ee01442a28fabb693339589fe62e.tar.xz
kernel-0d2c8ee00065ee01442a28fabb693339589fe62e.zip
arm64: qcom: add patch for ACPI UFS storage
Diffstat (limited to 'arm64-ufs-qcom-Add-support-for-platforms-booting-ACPI.patch')
-rw-r--r--arm64-ufs-qcom-Add-support-for-platforms-booting-ACPI.patch83
1 files changed, 83 insertions, 0 deletions
diff --git a/arm64-ufs-qcom-Add-support-for-platforms-booting-ACPI.patch b/arm64-ufs-qcom-Add-support-for-platforms-booting-ACPI.patch
new file mode 100644
index 000000000..318922766
--- /dev/null
+++ b/arm64-ufs-qcom-Add-support-for-platforms-booting-ACPI.patch
@@ -0,0 +1,83 @@
+From 9ceb22fbffbad710db2c91ed32e4e73503f13301 Mon Sep 17 00:00:00 2001
+From: Peter Robinson <pbrobinson@gmail.com>
+Date: Tue, 25 Jun 2019 19:12:10 +0100
+Subject: [PATCH] scsi: ufs-qcom: Add support for platforms booting ACPI
+
+New Qualcomm AArch64 based laptops are now available which use UFS
+as their primary data storage medium. These devices are supplied
+with ACPI support out of the box. This patch ensures the Qualcomm
+UFS driver will be bound when the "QCOM24A5" H/W device is
+advertised as present.
+
+Signed-off-by: Lee Jones <lee.jones@linaro.org>
+Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
+---
+ drivers/scsi/ufs/ufs-qcom.c | 23 ++++++++++++++++++++---
+ 1 file changed, 20 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c
+index b4d1b5c22987..ee4b1da1e223 100644
+--- a/drivers/scsi/ufs/ufs-qcom.c
++++ b/drivers/scsi/ufs/ufs-qcom.c
+@@ -3,6 +3,7 @@
+ * Copyright (c) 2013-2016, Linux Foundation. All rights reserved.
+ */
+
++#include <linux/acpi.h>
+ #include <linux/time.h>
+ #include <linux/of.h>
+ #include <linux/platform_device.h>
+@@ -161,6 +162,9 @@ static int ufs_qcom_init_lane_clks(struct ufs_qcom_host *host)
+ int err = 0;
+ struct device *dev = host->hba->dev;
+
++ if (has_acpi_companion(dev))
++ return 0;
++
+ err = ufs_qcom_host_clk_get(dev, "rx_lane0_sync_clk",
+ &host->rx_l0_sync_clk, false);
+ if (err)
+@@ -1127,9 +1131,13 @@ static int ufs_qcom_init(struct ufs_hba *hba)
+ __func__, err);
+ goto out_variant_clear;
+ } else if (IS_ERR(host->generic_phy)) {
+- err = PTR_ERR(host->generic_phy);
+- dev_err(dev, "%s: PHY get failed %d\n", __func__, err);
+- goto out_variant_clear;
++ if (has_acpi_companion(dev)) {
++ host->generic_phy = NULL;
++ } else {
++ err = PTR_ERR(host->generic_phy);
++ dev_err(dev, "%s: PHY get failed %d\n", __func__, err);
++ goto out_variant_clear;
++ }
+ }
+
+ err = ufs_qcom_bus_register(host);
+@@ -1599,6 +1607,14 @@ static const struct of_device_id ufs_qcom_of_match[] = {
+ };
+ MODULE_DEVICE_TABLE(of, ufs_qcom_of_match);
+
++#ifdef CONFIG_ACPI
++static const struct acpi_device_id ufs_qcom_acpi_match[] = {
++ { "QCOM24A5" },
++ { },
++};
++MODULE_DEVICE_TABLE(acpi, ufs_qcom_acpi_match);
++#endif
++
+ static const struct dev_pm_ops ufs_qcom_pm_ops = {
+ .suspend = ufshcd_pltfrm_suspend,
+ .resume = ufshcd_pltfrm_resume,
+@@ -1615,6 +1631,7 @@ static struct platform_driver ufs_qcom_pltform = {
+ .name = "ufshcd-qcom",
+ .pm = &ufs_qcom_pm_ops,
+ .of_match_table = of_match_ptr(ufs_qcom_of_match),
++ .acpi_match_table = ACPI_PTR(ufs_qcom_acpi_match),
+ },
+ };
+ module_platform_driver(ufs_qcom_pltform);
+--
+2.21.0
+