From 939e43d35a0fa3cb9bdef75278c7a1633bede2c4 Mon Sep 17 00:00:00 2001 From: Ruixuan Li Date: Tue, 23 Jul 2019 14:44:53 +0800 Subject: [PATCH] emmc: run hs400 200M busmode on tl1 [1/1] PD#SWPL-11266 Problem: tl1 is running hs200 200M Solution: modify dts Verify: passed on tl1_t962x2_x301 Change-Id: Ib515d62e92564bb71980bb8122de7dc54a89a2fb Signed-off-by: Ruixuan Li --- arch/arm/boot/dts/amlogic/tl1_t962x2_skt.dts | 3 +-- arch/arm/boot/dts/amlogic/tl1_t962x2_t309.dts | 3 +-- arch/arm/boot/dts/amlogic/tl1_t962x2_x301_1g.dts | 3 +-- arch/arm/boot/dts/amlogic/tl1_t962x2_x301_2g.dts | 3 +-- arch/arm64/boot/dts/amlogic/tl1_t962x2_t309.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 | 8 +++++++- 8 files changed, 14 insertions(+), 15 deletions(-) diff --git a/arch/arm/boot/dts/amlogic/tl1_t962x2_skt.dts b/arch/arm/boot/dts/amlogic/tl1_t962x2_skt.dts index 00a27eff0b87..d1cf2c60e65a 100644 --- a/arch/arm/boot/dts/amlogic/tl1_t962x2_skt.dts +++ b/arch/arm/boot/dts/amlogic/tl1_t962x2_skt.dts @@ -1829,8 +1829,7 @@ "MMC_CAP_HW_RESET", "MMC_CAP_ERASE", "MMC_CAP_CMD23"; - 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/tl1_t962x2_t309.dts b/arch/arm/boot/dts/amlogic/tl1_t962x2_t309.dts index 99f1590f17a4..38918360af56 100644 --- a/arch/arm/boot/dts/amlogic/tl1_t962x2_t309.dts +++ b/arch/arm/boot/dts/amlogic/tl1_t962x2_t309.dts @@ -1873,8 +1873,7 @@ "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 = <200000000>; }; 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 ca5bfba3da06..2c7b73f9c1e3 100644 --- a/arch/arm/boot/dts/amlogic/tl1_t962x2_x301_1g.dts +++ b/arch/arm/boot/dts/amlogic/tl1_t962x2_x301_1g.dts @@ -1972,8 +1972,7 @@ "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 = <200000000>; }; diff --git a/arch/arm/boot/dts/amlogic/tl1_t962x2_x301_2g.dts b/arch/arm/boot/dts/amlogic/tl1_t962x2_x301_2g.dts index 0eb91c8dddb0..542424b5e9b1 100644 --- a/arch/arm/boot/dts/amlogic/tl1_t962x2_x301_2g.dts +++ b/arch/arm/boot/dts/amlogic/tl1_t962x2_x301_2g.dts @@ -1969,8 +1969,7 @@ "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 = <200000000>; }; diff --git a/arch/arm64/boot/dts/amlogic/tl1_t962x2_t309.dts b/arch/arm64/boot/dts/amlogic/tl1_t962x2_t309.dts index c19166dfb5fe..cb04bd293eeb 100644 --- a/arch/arm64/boot/dts/amlogic/tl1_t962x2_t309.dts +++ b/arch/arm64/boot/dts/amlogic/tl1_t962x2_t309.dts @@ -1879,8 +1879,7 @@ "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 = <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 9ea0825ade00..c4e7bad2f39d 100644 --- a/arch/arm64/boot/dts/amlogic/tl1_t962x2_x301_1g.dts +++ b/arch/arm64/boot/dts/amlogic/tl1_t962x2_x301_1g.dts @@ -1968,8 +1968,7 @@ "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 = <200000000>; }; 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 b14484f67ddf..8fb77d9b903c 100644 --- a/arch/arm64/boot/dts/amlogic/tl1_t962x2_x301_2g.dts +++ b/arch/arm64/boot/dts/amlogic/tl1_t962x2_x301_2g.dts @@ -1961,8 +1961,7 @@ "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 = <200000000>; }; diff --git a/drivers/amlogic/mmc/aml_sd_emmc_v3.c b/drivers/amlogic/mmc/aml_sd_emmc_v3.c index 401a46955384..e7dd78e75ef4 100644 --- a/drivers/amlogic/mmc/aml_sd_emmc_v3.c +++ b/drivers/amlogic/mmc/aml_sd_emmc_v3.c @@ -1118,7 +1118,13 @@ static u32 scan_emmc_cmd_win(struct mmc_host *mmc, int send_status) writel(delay2, host->base + SD_EMMC_DELAY2_V3); offset = (u32)(get_random_long() % capacity); for (j = 0; j < repeat_times; j++) { - err = single_read_cmd_for_scan(mmc, + if (send_status) + err = emmc_send_cmd(mmc, + MMC_SEND_STATUS, + 1 << 16, + MMC_RSP_R1 | MMC_CMD_AC); + else + err = single_read_cmd_for_scan(mmc, MMC_READ_SINGLE_BLOCK, host->blk_test, 512, 1, offset);