diff --git a/arch/arm64/boot/dts/amlogic/meson-s7.dtsi b/arch/arm64/boot/dts/amlogic/meson-s7.dtsi index 8b70dd2ea..b8f6c49e7 100644 --- a/arch/arm64/boot/dts/amlogic/meson-s7.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-s7.dtsi @@ -846,6 +846,9 @@ tx_delay = <17>; src_clk_rate = <1152000000>; cap-mmc-crypto; + no-prescan-powerup; + full-pwr-cycle; + post-power-on-delay-ms = <1>; // nwr_cnt = <0>; // resets = <&reset RESET_SD_EMMC_C>; }; diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c index 54eea101d..4284149d2 100644 --- a/drivers/mmc/host/meson-gx-mmc.c +++ b/drivers/mmc/host/meson-gx-mmc.c @@ -197,6 +197,16 @@ int amlogic_of_parse(struct mmc_host *host) mmc->sd_clk_sample = true; else mmc->sd_clk_sample = false; + + if (device_property_read_bool(dev, "wait-while-busy")) + host->caps |= MMC_CAP_WAIT_WHILE_BUSY; + + if (device_property_read_bool(dev, "no-prescan-powerup")) + host->caps2 |= MMC_CAP2_NO_PRESCAN_POWERUP; + + if (device_property_read_bool(dev, "full-pwr-cycle")) + host->caps2 |= MMC_CAP2_FULL_PWR_CYCLE; + /* Get the wifi model that needs to be optimized */ if (device_property_read_u32(dev, "vendor-id", &mmc->vendor_id) < 0) mmc->vendor_id = 0;