summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Chen <ryan_chen@aspeedtech.com>2026-03-24 09:58:50 +0800
committerUlf Hansson <ulf.hansson@linaro.org>2026-03-25 09:55:36 +0100
commit4f7cfb94be61677e8bfb7cbc909496f67bb6a08f (patch)
tree4e323f56e7669c264c59ac540289de986e061d3d
parent918d627c091683203a76badc88c2cd58b420f107 (diff)
mmc: sdhci-of-aspeed: Handle optional controller reset
Get the optional reset line for the ASPEED SD controller during probe by using devm_reset_control_get_optional_exclusive_deasserted(). This allows platforms such as AST2700, which require the SD controller to be taken out of reset before use, to work with the existing driver. Acked-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
-rw-r--r--drivers/mmc/host/sdhci-of-aspeed.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci-of-aspeed.c b/drivers/mmc/host/sdhci-of-aspeed.c
index 4296def69436..f5d973783cbe 100644
--- a/drivers/mmc/host/sdhci-of-aspeed.c
+++ b/drivers/mmc/host/sdhci-of-aspeed.c
@@ -13,6 +13,7 @@
#include <linux/of.h>
#include <linux/of_platform.h>
#include <linux/platform_device.h>
+#include <linux/reset.h>
#include <linux/spinlock.h>
#include "sdhci-pltfm.h"
@@ -519,6 +520,7 @@ static struct platform_driver aspeed_sdhci_driver = {
static int aspeed_sdc_probe(struct platform_device *pdev)
{
+ struct reset_control *reset;
struct device_node *parent;
struct aspeed_sdc *sdc;
int ret;
@@ -529,6 +531,10 @@ static int aspeed_sdc_probe(struct platform_device *pdev)
spin_lock_init(&sdc->lock);
+ reset = devm_reset_control_get_optional_exclusive_deasserted(&pdev->dev, NULL);
+ if (IS_ERR(reset))
+ return dev_err_probe(&pdev->dev, PTR_ERR(reset), "unable to acquire reset\n");
+
sdc->clk = devm_clk_get(&pdev->dev, NULL);
if (IS_ERR(sdc->clk))
return PTR_ERR(sdc->clk);