From: Yixun Lan Date: Tue, 23 Dec 2025 02:24:50 +0000 (+0800) Subject: mmc: sdhci-of-k1: add reset support X-Git-Tag: v7.1-rc1~157^2~100 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=658b716c048684ad13d78280d69b883f181251da;p=thirdparty%2Fkernel%2Fstable.git mmc: sdhci-of-k1: add reset support The SDHCI controller of SpacemiT K1 SoC requires two resets, add support to explicitly request the reset line and deassert during initialization phase. Still using devm_xx_get_optional() API to make the request optional. Signed-off-by: Yixun Lan Reviewed-by: Javier Martinez Canillas Signed-off-by: Ulf Hansson --- diff --git a/drivers/mmc/host/sdhci-of-k1.c b/drivers/mmc/host/sdhci-of-k1.c index 0cc97e23a2f9c..a160e1d5d9bde 100644 --- a/drivers/mmc/host/sdhci-of-k1.c +++ b/drivers/mmc/host/sdhci-of-k1.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include "sdhci.h" @@ -223,6 +224,21 @@ static inline int spacemit_sdhci_get_clocks(struct device *dev, return 0; } +static inline int spacemit_sdhci_get_resets(struct device *dev) +{ + struct reset_control *rst; + + rst = devm_reset_control_get_optional_shared_deasserted(dev, "axi"); + if (IS_ERR(rst)) + return PTR_ERR(rst); + + rst = devm_reset_control_get_optional_exclusive_deasserted(dev, "sdh"); + if (IS_ERR(rst)) + return PTR_ERR(rst); + + return 0; +} + static const struct sdhci_ops spacemit_sdhci_ops = { .get_max_clock = spacemit_sdhci_clk_get_max_clock, .reset = spacemit_sdhci_reset, @@ -284,6 +300,10 @@ static int spacemit_sdhci_probe(struct platform_device *pdev) if (ret) goto err_pltfm; + ret = spacemit_sdhci_get_resets(dev); + if (ret) + goto err_pltfm; + ret = sdhci_add_host(host); if (ret) goto err_pltfm;