summaryrefslogtreecommitdiffstats
path: root/arm64-mmc-sdhci_f_sdh30-add-ACPI-support.patch
diff options
context:
space:
mode:
Diffstat (limited to 'arm64-mmc-sdhci_f_sdh30-add-ACPI-support.patch')
-rw-r--r--arm64-mmc-sdhci_f_sdh30-add-ACPI-support.patch146
1 files changed, 0 insertions, 146 deletions
diff --git a/arm64-mmc-sdhci_f_sdh30-add-ACPI-support.patch b/arm64-mmc-sdhci_f_sdh30-add-ACPI-support.patch
deleted file mode 100644
index 4eaf67e33..000000000
--- a/arm64-mmc-sdhci_f_sdh30-add-ACPI-support.patch
+++ /dev/null
@@ -1,146 +0,0 @@
-From patchwork Mon Jan 8 15:44:19 2018
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [v2] mmc: sdhci_f_sdh30: add ACPI support
-From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
-X-Patchwork-Id: 10149775
-Message-Id: <20180108154419.2821-1-ard.biesheuvel@linaro.org>
-To: linux-mmc@vger.kernel.org
-Cc: adrian.hunter@intel.com, ulf.hansson@linaro.org,
- Ard Biesheuvel <ard.biesheuvel@linaro.org>
-Date: Mon, 8 Jan 2018 15:44:19 +0000
-
-The Fujitsu SDH30 SDHCI controller may be described as a SCX0002 ACPI
-device on ACPI platforms incorporating the Socionext SynQuacer SoC.
-
-Given that mmc_of_parse() has already been made ACPI/DT agnostic,
-making the SDH30 driver ACPI capable is actually rather simple:
-all we need to do is make the call to sdhci_get_of_property() [which
-does not set any properties we care about] and the clock handling
-dependent on whether we are dealing with a DT device, and exposing
-the ACPI id via the platform_driver struct and the module metadata.
-
-Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
-Acked-by: Adrian Hunter <adrian.hunter@intel.com>
----
-v2: make OF optional now that ACPI is supported
- drop dev_of_node() check when disabling the clocks - those routines
- tolerate NULL pointers so there's no need
-
- drivers/mmc/host/Kconfig | 2 +-
- drivers/mmc/host/sdhci_f_sdh30.c | 52 +++++++++++++-------
- 2 files changed, 35 insertions(+), 19 deletions(-)
-
-diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
-index 567028c9219a..07ed947ed10b 100644
---- a/drivers/mmc/host/Kconfig
-+++ b/drivers/mmc/host/Kconfig
-@@ -320,7 +320,7 @@ config MMC_SDHCI_BCM_KONA
- config MMC_SDHCI_F_SDH30
- tristate "SDHCI support for Fujitsu Semiconductor F_SDH30"
- depends on MMC_SDHCI_PLTFM
-- depends on OF
-+ depends on OF || ACPI
- help
- This selects the Secure Digital Host Controller Interface (SDHCI)
- Needed by some Fujitsu SoC for MMC / SD / SDIO support.
-diff --git a/drivers/mmc/host/sdhci_f_sdh30.c b/drivers/mmc/host/sdhci_f_sdh30.c
-index 04ca0d33a521..485f7591fae4 100644
---- a/drivers/mmc/host/sdhci_f_sdh30.c
-+++ b/drivers/mmc/host/sdhci_f_sdh30.c
-@@ -10,9 +10,11 @@
- * the Free Software Foundation, version 2 of the License.
- */
-
-+#include <linux/acpi.h>
- #include <linux/err.h>
- #include <linux/delay.h>
- #include <linux/module.h>
-+#include <linux/of.h>
- #include <linux/property.h>
- #include <linux/clk.h>
-
-@@ -146,7 +148,6 @@ static int sdhci_f_sdh30_probe(struct platform_device *pdev)
-
- platform_set_drvdata(pdev, host);
-
-- sdhci_get_of_property(pdev);
- host->hw_name = "f_sdh30";
- host->ops = &sdhci_f_sdh30_ops;
- host->irq = irq;
-@@ -158,25 +159,29 @@ static int sdhci_f_sdh30_probe(struct platform_device *pdev)
- goto err;
- }
-
-- priv->clk_iface = devm_clk_get(&pdev->dev, "iface");
-- if (IS_ERR(priv->clk_iface)) {
-- ret = PTR_ERR(priv->clk_iface);
-- goto err;
-- }
-+ if (dev_of_node(dev)) {
-+ sdhci_get_of_property(pdev);
-
-- ret = clk_prepare_enable(priv->clk_iface);
-- if (ret)
-- goto err;
-+ priv->clk_iface = devm_clk_get(&pdev->dev, "iface");
-+ if (IS_ERR(priv->clk_iface)) {
-+ ret = PTR_ERR(priv->clk_iface);
-+ goto err;
-+ }
-
-- priv->clk = devm_clk_get(&pdev->dev, "core");
-- if (IS_ERR(priv->clk)) {
-- ret = PTR_ERR(priv->clk);
-- goto err_clk;
-- }
-+ ret = clk_prepare_enable(priv->clk_iface);
-+ if (ret)
-+ goto err;
-
-- ret = clk_prepare_enable(priv->clk);
-- if (ret)
-- goto err_clk;
-+ priv->clk = devm_clk_get(&pdev->dev, "core");
-+ if (IS_ERR(priv->clk)) {
-+ ret = PTR_ERR(priv->clk);
-+ goto err_clk;
-+ }
-+
-+ ret = clk_prepare_enable(priv->clk);
-+ if (ret)
-+ goto err_clk;
-+ }
-
- /* init vendor specific regs */
- ctrl = sdhci_readw(host, F_SDH30_AHB_CONFIG);
-@@ -226,16 +231,27 @@ static int sdhci_f_sdh30_remove(struct platform_device *pdev)
- return 0;
- }
-
-+#ifdef CONFIG_OF
- static const struct of_device_id f_sdh30_dt_ids[] = {
- { .compatible = "fujitsu,mb86s70-sdhci-3.0" },
- { /* sentinel */ }
- };
- MODULE_DEVICE_TABLE(of, f_sdh30_dt_ids);
-+#endif
-+
-+#ifdef CONFIG_ACPI
-+static const struct acpi_device_id f_sdh30_acpi_ids[] = {
-+ { "SCX0002" },
-+ { /* sentinel */ }
-+};
-+MODULE_DEVICE_TABLE(acpi, f_sdh30_acpi_ids);
-+#endif
-
- static struct platform_driver sdhci_f_sdh30_driver = {
- .driver = {
- .name = "f_sdh30",
-- .of_match_table = f_sdh30_dt_ids,
-+ .of_match_table = of_match_ptr(f_sdh30_dt_ids),
-+ .acpi_match_table = ACPI_PTR(f_sdh30_acpi_ids),
- .pm = &sdhci_pltfm_pmops,
- },
- .probe = sdhci_f_sdh30_probe,