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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.