RE: [PATCH 2/2] mmc: sdhci-of-aspeed: Add ast2700 support
Ryan Chen <[email protected]>
| Newsgroups | org.ozlabs.lists.openbmc,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.linux-mmc,org.ozlabs.lists.linux-aspeed |
|---|---|
| Message-ID | <TY2PPF5CB9A1BE642DFDE4862B40BBAA1DBF240A@TY2PPF5CB9A1BE6.apcprd06.prod.outlook.com> |
> Subject: Re: [PATCH 2/2] mmc: sdhci-of-aspeed: Add ast2700 support > > On Fri, Mar 13, 2026 at 01:27:57PM +0800, Ryan Chen wrote: > > Add support for the AST2700 SOC in the sd controller driver. AST2700 > > sd controller requires an reset line, so hook up the optional reset > > control and deassert it during probe. > > > > Signed-off-by: Ryan Chen <[email protected]> > > --- > > drivers/mmc/host/sdhci-of-aspeed.c | 11 +++++++++++ > > 1 file changed, 11 insertions(+) > > > > diff --git a/drivers/mmc/host/sdhci-of-aspeed.c > > b/drivers/mmc/host/sdhci-of-aspeed.c > > index ca97b01996b1..91c36245e506 100644 > > --- a/drivers/mmc/host/sdhci-of-aspeed.c > > +++ b/drivers/mmc/host/sdhci-of-aspeed.c > > @@ -520,6 +520,7 @@ static int aspeed_sdc_probe(struct platform_device > > *pdev) > > > > { > > struct device_node *parent, *child; > > + struct reset_control *reset; > > struct aspeed_sdc *sdc; > > int ret; > > > > @@ -529,6 +530,15 @@ static int aspeed_sdc_probe(struct > > platform_device *pdev) > > > > spin_lock_init(&sdc->lock); > > > > + reset = reset_control_get_optional_exclusive(&pdev->dev, NULL); > > + if (IS_ERR(reset)) > > + return dev_err_probe(&pdev->dev, PTR_ERR(reset), > > + "unable to acquire reset\n"); > > + ret = reset_control_deassert(sdc->rst); > > + if (ret) > > + return dev_err_probe(&pdev->dev, ret, > > + "reset deassert failed\n"); > > + > > sdc->clk = devm_clk_get(&pdev->dev, NULL); > > if (IS_ERR(sdc->clk)) > > return PTR_ERR(sdc->clk); > > @@ -577,6 +587,7 @@ static const struct of_device_id > aspeed_sdc_of_match[] = { > > { .compatible = "aspeed,ast2400-sd-controller", }, > > { .compatible = "aspeed,ast2500-sd-controller", }, > > { .compatible = "aspeed,ast2600-sd-controller", }, > > + { .compatible = "aspeed,ast2700-sd-controller", }, > > So devices are fully compatible. You must express it in the bindings and drop > this hunk. Thanks the review. Do you mean I modify the binding with following. properties: compatible: oneOf: - const: aspeed,ast2400-sd-controller - const: aspeed,ast2500-sd-controller - const: aspeed,ast2600-sd-controller - items: - const: aspeed,ast2700-sd-controller - const: aspeed,ast2600-sd-controller And still keep this if: properties: compatible: contains: const: aspeed,ast2700-sd-controller then: required: - resets else: properties: resets: false also the child patternProperties: "^sdhci@[0-9a-f]+$": type: object $ref: sdhci-common.yaml unevaluatedProperties: false properties: compatible: oneOf: - const: aspeed,ast2400-sdhci - const: aspeed,ast2500-sdhci - const: aspeed,ast2600-sdhci - items: - const: aspeed,ast2700-sdhci - const: aspeed,ast2600-sdhci Then my dts will be following? sdc@... { compatible = "aspeed,ast2700-sd-controller", "aspeed,ast2600-sd-controller"; resets = <...>; ... sdhci0: sdhci@100 { compatible = "aspeed,ast2700-sdhci", "aspeed,ast2600-sdhci"; ... }; sdhci1: sdhci@200 { compatible = "aspeed,ast2700-sdhci", "aspeed,ast2600-sdhci"; ... }; }; > > Best regards, > Krzysztof