From 4b432d20575b78d5c6e3456f5fbda414c4b98983 Mon Sep 17 00:00:00 2001 From: Sarthak Garg Date: Mon, 4 Jan 2021 18:31:20 +0530 Subject: [PATCH 1/2] defconfig: Enable SD card related configs for sdxnightjar Enable configs required for SD card support on sdxnightjar. Also enable the required Block layer configs. Change-Id: I01d077c9d6218da11b503592bcee302db8e3eb44 Signed-off-by: Sarthak Garg --- arch/arm/configs/vendor/sdxnightjar-debug.config | 6 ++++++ arch/arm/configs/vendor/sdxnightjar.config | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/arch/arm/configs/vendor/sdxnightjar-debug.config b/arch/arm/configs/vendor/sdxnightjar-debug.config index 7f885fc9a482..f87c96d983a1 100644 --- a/arch/arm/configs/vendor/sdxnightjar-debug.config +++ b/arch/arm/configs/vendor/sdxnightjar-debug.config @@ -859,3 +859,9 @@ CONFIG_INTERCONNECT_TEST=y CONFIG_INTERCONNECT_QCOM=y CONFIG_INTERCONNECT_QCOM_SDXNIGHTJAR=y CONFIG_QCOM_SOCINFO=y +CONFIG_BLK_CGROUP=y +CONFIG_IOSCHED_BFQ=y +CONFIG_BFQ_GROUP_IOSCHED=y +CONFIG_SDC_QTI=y +CONFIG_MMC_SDHCI_MSM=y +CONFIG_MMC_IPC_LOGGING=y diff --git a/arch/arm/configs/vendor/sdxnightjar.config b/arch/arm/configs/vendor/sdxnightjar.config index da27de275946..f25e6cad077a 100644 --- a/arch/arm/configs/vendor/sdxnightjar.config +++ b/arch/arm/configs/vendor/sdxnightjar.config @@ -874,3 +874,11 @@ CONFIG_INTERCONNECT_TEST=y CONFIG_INTERCONNECT_QCOM=y CONFIG_INTERCONNECT_QCOM_SDXNIGHTJAR=y CONFIG_QCOM_SOCINFO=y +CONFIG_BLK_CGROUP=y +CONFIG_IOSCHED_BFQ=y +CONFIG_BFQ_GROUP_IOSCHED=y +CONFIG_MMC=y +CONFIG_SDC_QTI=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_MSM=y From 94361fce31227f361b81d181feb49fe312913266 Mon Sep 17 00:00:00 2001 From: Sarthak Garg Date: Wed, 23 Dec 2020 15:27:38 +0530 Subject: [PATCH 2/2] mmc: host: sdhci-msm: Don't return error on missing bus voting paths On MDM targets we have only one path for bus voting (sdhc-ddr). If we provide only one path and not the other one then probe will itself fail as per the current logic. Don't return error when bus voting paths not found. Change-Id: Idf5401266793f4d4003391816f7511f8c0754696 Signed-off-by: Sarthak Garg --- drivers/mmc/host/sdhci-msm.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c index d4352faa295c..be5394397e97 100644 --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c @@ -2862,7 +2862,7 @@ static inline int sdhci_msm_bus_set_vote(struct sdhci_msm_host *msm_host, struct sdhci_msm_bus_vote_data *bvd = msm_host->bus_vote_data; struct msm_bus_path *usecase = bvd->usecase; struct msm_bus_vectors *vec = usecase[vote].vec; - int ddr_rc, cpu_rc; + int ddr_rc = 0, cpu_rc = 0; if (vote == bvd->curr_vote) return 0; @@ -2870,8 +2870,13 @@ static inline int sdhci_msm_bus_set_vote(struct sdhci_msm_host *msm_host, pr_debug("%s: vote:%d sdhc_ddr ab:%llu ib:%llu cpu_sdhc ab:%llu ib:%llu\n", mmc_hostname(host->mmc), vote, vec[0].ab, vec[0].ib, vec[1].ab, vec[1].ib); - ddr_rc = icc_set_bw(bvd->sdhc_ddr, vec[0].ab, vec[0].ib); - cpu_rc = icc_set_bw(bvd->cpu_sdhc, vec[1].ab, vec[1].ib); + + if (bvd->sdhc_ddr) + ddr_rc = icc_set_bw(bvd->sdhc_ddr, vec[0].ab, vec[0].ib); + + if (bvd->cpu_sdhc) + cpu_rc = icc_set_bw(bvd->cpu_sdhc, vec[1].ab, vec[1].ib); + if (ddr_rc || cpu_rc) { pr_err("%s: icc_set() failed\n", mmc_hostname(host->mmc)); @@ -2894,8 +2899,8 @@ static void sdhci_msm_bus_get_and_set_vote(struct sdhci_host *host, struct sdhci_msm_host *msm_host = sdhci_pltfm_priv(pltfm_host); if (!msm_host->bus_vote_data || - !msm_host->bus_vote_data->sdhc_ddr || - !msm_host->bus_vote_data->cpu_sdhc) + (!msm_host->bus_vote_data->sdhc_ddr && + !msm_host->bus_vote_data->cpu_sdhc)) return; vote = sdhci_msm_bus_get_vote_for_bw(msm_host, bw); sdhci_msm_bus_set_vote(msm_host, vote); @@ -3004,20 +3009,16 @@ static int sdhci_msm_bus_register(struct sdhci_msm_host *host, bsd->sdhc_ddr = of_icc_get(&pdev->dev, "sdhc-ddr"); if (IS_ERR_OR_NULL(bsd->sdhc_ddr)) { - dev_err(&pdev->dev, "(%ld): failed getting %s path\n", + dev_info(&pdev->dev, "(%ld): failed getting %s path\n", PTR_ERR(bsd->sdhc_ddr), "sdhc-ddr"); - ret = PTR_ERR(bsd->sdhc_ddr); bsd->sdhc_ddr = NULL; - return ret; } bsd->cpu_sdhc = of_icc_get(&pdev->dev, "cpu-sdhc"); if (IS_ERR_OR_NULL(bsd->cpu_sdhc)) { - dev_err(&pdev->dev, "(%ld): failed getting %s path\n", + dev_info(&pdev->dev, "(%ld): failed getting %s path\n", PTR_ERR(bsd->cpu_sdhc), "cpu-sdhc"); - ret = PTR_ERR(bsd->cpu_sdhc); bsd->cpu_sdhc = NULL; - return ret; } return ret; @@ -3028,8 +3029,11 @@ static void sdhci_msm_bus_unregister(struct device *dev, { struct sdhci_msm_bus_vote_data *bsd = host->bus_vote_data; - icc_put(bsd->sdhc_ddr); - icc_put(bsd->cpu_sdhc); + if (bsd->sdhc_ddr) + icc_put(bsd->sdhc_ddr); + + if (bsd->cpu_sdhc) + icc_put(bsd->cpu_sdhc); } static void sdhci_msm_bus_voting(struct sdhci_host *host, bool enable)