diff --git a/arch/arm/boot/dts/amlogic/mesonsm1.dtsi b/arch/arm/boot/dts/amlogic/mesonsm1.dtsi index d8a2636f7590..a60d23f23a98 100644 --- a/arch/arm/boot/dts/amlogic/mesonsm1.dtsi +++ b/arch/arm/boot/dts/amlogic/mesonsm1.dtsi @@ -1365,7 +1365,7 @@ clocks = <&clkc CLKID_SD_EMMC_C>, <&clkc CLKID_SD_EMMC_C_P0_COMP>, <&clkc CLKID_FCLK_DIV2>, - <&clkc CLKID_FCLK_DIV5>, + <&clkc CLKID_FCLK_DIV2P5>, <&xtal>; clock-names = "core", "clkin0", "clkin1", "clkin2", "xtal"; @@ -1872,7 +1872,7 @@ function = "emmc"; input-enable; bias-pull-up; - drive-strength = <2>; + drive-strength = <3>; }; }; @@ -1891,7 +1891,7 @@ function = "emmc"; input-enable; bias-pull-up; - drive-strength = <2>; + drive-strength = <3>; }; }; @@ -1901,7 +1901,7 @@ function = "emmc"; input-enable; bias-pull-down; - drive-strength = <2>; + drive-strength = <3>; }; }; diff --git a/arch/arm64/boot/dts/amlogic/mesonsm1.dtsi b/arch/arm64/boot/dts/amlogic/mesonsm1.dtsi index 6908e2ab29a8..a828aee19b97 100644 --- a/arch/arm64/boot/dts/amlogic/mesonsm1.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesonsm1.dtsi @@ -1364,7 +1364,7 @@ clocks = <&clkc CLKID_SD_EMMC_C>, <&clkc CLKID_SD_EMMC_C_P0_COMP>, <&clkc CLKID_FCLK_DIV2>, - <&clkc CLKID_FCLK_DIV5>, + <&clkc CLKID_FCLK_DIV2P5>, <&xtal>; clock-names = "core", "clkin0", "clkin1", "clkin2", "xtal"; @@ -1832,7 +1832,7 @@ function = "emmc"; input-enable; bias-pull-up; - drive-strength = <2>; + drive-strength = <3>; }; }; @@ -1851,7 +1851,7 @@ function = "emmc"; input-enable; bias-pull-up; - drive-strength = <2>; + drive-strength = <3>; }; }; @@ -1861,7 +1861,7 @@ function = "emmc"; input-enable; bias-pull-down; - drive-strength = <2>; + drive-strength = <3>; }; }; diff --git a/drivers/amlogic/mmc/aml_sd_emmc.c b/drivers/amlogic/mmc/aml_sd_emmc.c index db8e04c6b11a..4cf59f5dca32 100644 --- a/drivers/amlogic/mmc/aml_sd_emmc.c +++ b/drivers/amlogic/mmc/aml_sd_emmc.c @@ -3649,7 +3649,7 @@ static struct meson_mmc_data mmc_data_sm1 = { .sdmmc.ddr.tx_phase = 0, .sdmmc.hs2.core_phase = 2, .sdmmc.hs2.tx_phase = 0, - .sdmmc.hs4.tx_delay = 0, + .sdmmc.hs4.tx_delay = 16, .sdmmc.sd_hs.core_phase = 3, .sdmmc.sdr104.core_phase = 2, .sdmmc.sdr104.tx_phase = 0, diff --git a/drivers/amlogic/mmc/aml_sd_emmc_v3.c b/drivers/amlogic/mmc/aml_sd_emmc_v3.c index 0ec139946211..e46d1abbf0c5 100644 --- a/drivers/amlogic/mmc/aml_sd_emmc_v3.c +++ b/drivers/amlogic/mmc/aml_sd_emmc_v3.c @@ -358,7 +358,7 @@ static void aml_sd_emmc_set_timing_v3(struct amlsd_platform *pdata, if (pdata->tx_delay != 0) clkc->tx_delay = pdata->tx_delay; - if (((host->data->chip_type == MMC_CHIP_TL1) + if (((host->data->chip_type >= MMC_CHIP_TL1) || (host->data->chip_type == MMC_CHIP_G12B)) && aml_card_type_mmc(pdata)) { clkc->core_phase = para->hs4.core_phase; @@ -2275,7 +2275,7 @@ int aml_mmc_execute_tuning_v3(struct mmc_host *mmc, u32 opcode) intf3 |= (1<<22); writel(intf3, (host->base + SD_EMMC_INTF3)); pdata->intf3 = intf3; - if ((host->data->chip_type == MMC_CHIP_TL1) + if ((host->data->chip_type >= MMC_CHIP_TL1) || (host->data->chip_type == MMC_CHIP_G12B)) aml_emmc_hs200_tl1(mmc); err = 0; @@ -2293,7 +2293,8 @@ int aml_post_hs400_timming(struct mmc_host *mmc) struct amlsd_platform *pdata = mmc_priv(mmc); struct amlsd_host *host = pdata->host; aml_sd_emmc_clktest(mmc); - if (host->data->chip_type == MMC_CHIP_TL1) + if ((host->data->chip_type == MMC_CHIP_TL1) + || (host->data->chip_type == MMC_CHIP_SM1)) aml_emmc_hs400_tl1(mmc); else if (host->data->chip_type == MMC_CHIP_G12B) aml_emmc_hs400_Revb(mmc);