From 7c7d0d6e08b475a92a825dd4e71845b7d62ffb21 Mon Sep 17 00:00:00 2001 From: Ruixuan Li Date: Mon, 3 Jun 2019 19:19:03 +0800 Subject: [PATCH] emmc: change emmc busmode from hs400 to hs200 [1/1] PD#SWPL-9326 Problem: hs400 200M not stable on some platform Solution: modify dts to hs200 mode Verify: passed on g12b_revb tl1 sm1 tm2 Change-Id: I45670c979b62a2caeed1e7ebc35b035bbbf8968c Signed-off-by: Ruixuan Li Conflicts: arch/arm/boot/dts/amlogic/sm1_s905d3_ac200.dts arch/arm/boot/dts/amlogic/sm1_s905d3_ac200_buildroot.dts arch/arm/boot/dts/amlogic/sm1_s905d3_ac202.dts arch/arm/boot/dts/amlogic/sm1_s905d3_ac202_1g.dts arch/arm/boot/dts/amlogic/sm1_s905x3_ac213.dts arch/arm/boot/dts/amlogic/tm2_t962e2_ab311.dts arch/arm/boot/dts/amlogic/tm2_t962x3_ab301.dts arch/arm64/boot/dts/amlogic/sm1_s905d3_ac200.dts arch/arm64/boot/dts/amlogic/sm1_s905d3_ac200_buildroot.dts arch/arm64/boot/dts/amlogic/sm1_s905d3_ac202.dts arch/arm64/boot/dts/amlogic/sm1_s905d3_ac202_1g.dts arch/arm64/boot/dts/amlogic/sm1_s905x3_ac213.dts arch/arm64/boot/dts/amlogic/tm2_t962e2_ab311.dts arch/arm64/boot/dts/amlogic/tm2_t962x3_ab301.dts --- arch/arm/boot/dts/amlogic/g12b_a311d_w400.dts | 3 ++- arch/arm/boot/dts/amlogic/sm1_s905d3_ac202.dts | 3 ++- arch/arm/boot/dts/amlogic/tl1_t962x2_x301_1g.dts | 3 ++- arch/arm64/boot/dts/amlogic/g12b_a311d_w400.dts | 3 ++- arch/arm64/boot/dts/amlogic/tl1_t962x2_x301_1g.dts | 3 ++- arch/arm64/boot/dts/amlogic/tl1_t962x2_x301_2g.dts | 3 ++- drivers/amlogic/mmc/aml_sd_emmc_v3.c | 4 ++-- 7 files changed, 14 insertions(+), 8 deletions(-) diff --git a/arch/arm/boot/dts/amlogic/g12b_a311d_w400.dts b/arch/arm/boot/dts/amlogic/g12b_a311d_w400.dts index 8d1194c2976f..ae00b758c2fa 100644 --- a/arch/arm/boot/dts/amlogic/g12b_a311d_w400.dts +++ b/arch/arm/boot/dts/amlogic/g12b_a311d_w400.dts @@ -1286,7 +1286,8 @@ "MMC_CAP_ERASE", "MMC_CAP_CMD23", "MMC_CAP_DRIVER_TYPE_A"; - caps2 = "MMC_CAP2_HS200", "MMC_CAP2_HS400"; + caps2 = "MMC_CAP2_HS200"; + /*MMC_CAP2_HS400"*/ f_min = <400000>; f_max = <200000000>; }; diff --git a/arch/arm/boot/dts/amlogic/sm1_s905d3_ac202.dts b/arch/arm/boot/dts/amlogic/sm1_s905d3_ac202.dts index 5c96c4bc4dbc..9d568589907a 100644 --- a/arch/arm/boot/dts/amlogic/sm1_s905d3_ac202.dts +++ b/arch/arm/boot/dts/amlogic/sm1_s905d3_ac202.dts @@ -1751,7 +1751,8 @@ "MMC_CAP_ERASE", "MMC_CAP_CMD23", "MMC_CAP_DRIVER_TYPE_D"; - caps2 = "MMC_CAP2_HS200", "MMC_CAP2_HS400"; + caps2 = "MMC_CAP2_HS200"; + /*MMC_CAP2_HS400"*/ f_min = <400000>; f_max = <166666666>; }; diff --git a/arch/arm/boot/dts/amlogic/tl1_t962x2_x301_1g.dts b/arch/arm/boot/dts/amlogic/tl1_t962x2_x301_1g.dts index a89303387873..4b17a9411f50 100644 --- a/arch/arm/boot/dts/amlogic/tl1_t962x2_x301_1g.dts +++ b/arch/arm/boot/dts/amlogic/tl1_t962x2_x301_1g.dts @@ -1929,7 +1929,8 @@ "MMC_CAP_ERASE", "MMC_CAP_CMD23", "MMC_CAP_DRIVER_TYPE_D"; - caps2 = "MMC_CAP2_HS200", "MMC_CAP2_HS400"; + caps2 = "MMC_CAP2_HS200"; + /*MMC_CAP2_HS400"*/ f_min = <400000>; f_max = <198000000>; }; diff --git a/arch/arm64/boot/dts/amlogic/g12b_a311d_w400.dts b/arch/arm64/boot/dts/amlogic/g12b_a311d_w400.dts index e686e8577ee8..2aa37dc8305f 100644 --- a/arch/arm64/boot/dts/amlogic/g12b_a311d_w400.dts +++ b/arch/arm64/boot/dts/amlogic/g12b_a311d_w400.dts @@ -1286,7 +1286,8 @@ "MMC_CAP_ERASE", "MMC_CAP_CMD23", "MMC_CAP_DRIVER_TYPE_A"; - caps2 = "MMC_CAP2_HS200", "MMC_CAP2_HS400"; + caps2 = "MMC_CAP2_HS200"; + /*MMC_CAP2_HS400"*/ f_min = <400000>; f_max = <200000000>; }; diff --git a/arch/arm64/boot/dts/amlogic/tl1_t962x2_x301_1g.dts b/arch/arm64/boot/dts/amlogic/tl1_t962x2_x301_1g.dts index 97b8502c2cfd..488cdad1232d 100644 --- a/arch/arm64/boot/dts/amlogic/tl1_t962x2_x301_1g.dts +++ b/arch/arm64/boot/dts/amlogic/tl1_t962x2_x301_1g.dts @@ -1702,7 +1702,8 @@ "MMC_CAP_ERASE", "MMC_CAP_CMD23", "MMC_CAP_DRIVER_TYPE_D"; - caps2 = "MMC_CAP2_HS200", "MMC_CAP2_HS400"; + caps2 = "MMC_CAP2_HS200"; + /*MMC_CAP2_HS400"*/ f_min = <400000>; f_max = <198000000>; }; diff --git a/arch/arm64/boot/dts/amlogic/tl1_t962x2_x301_2g.dts b/arch/arm64/boot/dts/amlogic/tl1_t962x2_x301_2g.dts index e5f588198c05..c0197d39d74d 100644 --- a/arch/arm64/boot/dts/amlogic/tl1_t962x2_x301_2g.dts +++ b/arch/arm64/boot/dts/amlogic/tl1_t962x2_x301_2g.dts @@ -1697,7 +1697,8 @@ "MMC_CAP_ERASE", "MMC_CAP_CMD23", "MMC_CAP_DRIVER_TYPE_D"; - caps2 = "MMC_CAP2_HS200", "MMC_CAP2_HS400"; + caps2 = "MMC_CAP2_HS200"; + /*MMC_CAP2_HS400"*/ f_min = <400000>; f_max = <198000000>; }; diff --git a/drivers/amlogic/mmc/aml_sd_emmc_v3.c b/drivers/amlogic/mmc/aml_sd_emmc_v3.c index 9c53c7464c56..d8a8809549b5 100644 --- a/drivers/amlogic/mmc/aml_sd_emmc_v3.c +++ b/drivers/amlogic/mmc/aml_sd_emmc_v3.c @@ -247,7 +247,7 @@ static int meson_mmc_clk_set_rate_v3(struct mmc_host *mmc, host->mux_parent[0]); if (ret) pr_warn("set comp0 as mux_clk parent error\n"); - } else if (((host->data->chip_type >= MMC_CHIP_TL1) +/* } else if (((host->data->chip_type >= MMC_CHIP_TL1) || (host->data->chip_type == MMC_CHIP_G12B)) && (clk_ios >= 166000000)) { src0_clk = devm_clk_get(host->dev, "clkin2"); @@ -269,6 +269,7 @@ static int meson_mmc_clk_set_rate_v3(struct mmc_host *mmc, host->mux_parent[0]); if (ret) pr_warn("set comp0 as mux_clk parent error\n"); +*/ } else if (clk_get_rate(host->mux_parent[0]) > 200000000) { pr_info("%s %d\n", __func__, __LINE__); src0_clk = devm_clk_get(host->dev, "xtal"); @@ -524,7 +525,6 @@ void meson_mmc_set_ios_v3(struct mmc_host *mmc, complete(&host->drv_completion); } - irqreturn_t meson_mmc_irq_thread_v3(int irq, void *dev_id) { struct amlsd_host *host = dev_id;