[PATCH] mmc: sdhci-of-aspeed: depopulate slots before disabling clock
Pengpeng Hou
pengpeng at iscas.ac.cn
Mon Jun 15 17:49:53 PDT 2026
aspeed_sdc_probe() creates child slot devices one by one after enabling
the controller clock. If a later slot creation fails, the already-created
slot devices remain registered while the parent probe returns an error.
Depopulate any created slot devices on probe failure and during remove,
before disabling the shared controller clock used by the slots.
Signed-off-by: Pengpeng Hou <pengpeng at iscas.ac.cn>
---
drivers/mmc/host/sdhci-of-aspeed.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/host/sdhci-of-aspeed.c b/drivers/mmc/host/sdhci-of-aspeed.c
index f5d973783cbe..3e941b176687 100644
--- a/drivers/mmc/host/sdhci-of-aspeed.c
+++ b/drivers/mmc/host/sdhci-of-aspeed.c
@@ -560,12 +560,14 @@ static int aspeed_sdc_probe(struct platform_device *pdev)
cpdev = of_platform_device_create(child, NULL, &pdev->dev);
if (!cpdev) {
ret = -ENODEV;
- goto err_clk;
+ goto err_depopulate;
}
}
return 0;
+err_depopulate:
+ of_platform_depopulate(&pdev->dev);
err_clk:
clk_disable_unprepare(sdc->clk);
return ret;
@@ -575,6 +577,7 @@ static void aspeed_sdc_remove(struct platform_device *pdev)
{
struct aspeed_sdc *sdc = dev_get_drvdata(&pdev->dev);
+ of_platform_depopulate(&pdev->dev);
clk_disable_unprepare(sdc->clk);
}
--
2.50.1 (Apple Git-155)
More information about the linux-arm-kernel
mailing list