From 0d2c8ee00065ee01442a28fabb693339589fe62e Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 25 Jun 2019 19:38:27 +0100 Subject: arm64: qcom: add patch for ACPI UFS storage --- ...om-Add-support-for-platforms-booting-ACPI.patch | 83 ++++++++++++++++++++++ kernel.spec | 2 +- 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 arm64-ufs-qcom-Add-support-for-platforms-booting-ACPI.patch 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 +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 +Reviewed-by: Ard Biesheuvel +Signed-off-by: Peter Robinson +--- + 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 + #include + #include + #include +@@ -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 + diff --git a/kernel.spec b/kernel.spec index 6eadbed16..ef34c6957 100644 --- a/kernel.spec +++ b/kernel.spec @@ -568,7 +568,7 @@ Patch350: arm64-qcom-pinctrl-support-for-ACPI.patch Patch351: arm64-acpi-ignore-5.1-fadts-reported-as-5.0.patch Patch352: arm64-acpi-make-ac-and-battery-drivers-available-on-non-x86.patch Patch353: arm64-qcom-DWC3-USB-Add-support-for-ACPI-based-AArch64-Laptops.patch - +Patch354: arm64-ufs-qcom-Add-support-for-platforms-booting-ACPI.patch # 400 - IBM (ppc/s390x) patches -- cgit