linux-gpio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Shawn Guo <shawn.guo@linaro.org>
To: Bjorn Andersson <bjorn.andersson@linaro.org>
Cc: Linus Walleij <linus.walleij@linaro.org>,
	Andy Shevchenko <andriy.shevchenko@intel.com>,
	linux-gpio@vger.kernel.org, linux-arm-msm@vger.kernel.org
Subject: Re: [PATCH v4] pinctrl: qcom: sc8180x: add ACPI probe support
Date: Thu, 11 Mar 2021 09:29:29 +0800	[thread overview]
Message-ID: <20210311012928.GU17424@dragon> (raw)
In-Reply-To: <YEkdAbWC8/Vszvba@builder.lan>

On Wed, Mar 10, 2021 at 01:24:49PM -0600, Bjorn Andersson wrote:
> > @@ -1588,13 +1610,105 @@ static struct msm_pinctrl_soc_data sc8180x_pinctrl = {
> >  	.nwakeirq_map = ARRAY_SIZE(sc8180x_pdc_map),
> >  };
> >  
> > +static const struct msm_pinctrl_soc_data sc8180x_acpi_pinctrl = {
> > +	.tiles = sc8180x_tiles,
> > +	.ntiles = ARRAY_SIZE(sc8180x_tiles),
> > +	.pins = sc8180x_pins,
> > +	.npins = ARRAY_SIZE(sc8180x_pins),
> > +	.groups = sc8180x_groups,
> > +	.ngroups = ARRAY_SIZE(sc8180x_groups),
> > +	.reserved_gpios = sc8180x_acpi_reserved_gpios,
> > +	.ngpios = 191,
> 
> As I said before, there really only is 190 things called "GPIO" on this
> platform - the 191 thing is a hack of mine, but it's inclusion here
> should depend on how the ACPI system would reset the UFS device - if it
> does so at all.

No, so far I do not see reset is required for ACPI boot.  I will keep it
as 190 to match hardware spec.

> 
> > +};
> > +
> 
> A comment describing the purpose of this function (to split the
> IORESOURCE_MEM into three) would be in its place.

Okay.

> 
> > +static int sc8180x_pinctrl_add_tile_resources(struct platform_device *pdev)
> > +{
> > +	int nres_num = pdev->num_resources + ARRAY_SIZE(sc8180x_tiles) - 1;
> > +	struct resource *mres, *nres, *res;
> > +	int i, ret;
> > +
> > +	/*
> > +	 * DT already has tiles defined properly, so nothing needs to be done
> > +	 * for DT probe.
> > +	 */
> > +	if (pdev->dev.of_node)
> > +		return 0;
> > +
> > +	/* Allocate for new resources */
> > +	nres = devm_kzalloc(&pdev->dev, sizeof(*nres) * nres_num, GFP_KERNEL);
> > +	if (!nres)
> > +		return -ENOMEM;
> > +
> > +	res = nres;
> > +
> > +	for (i = 0; i < pdev->num_resources; i++) {
> > +		struct resource *r = &pdev->resource[i];
> > +
> > +		/* Save memory resource and copy others */
> > +		if (resource_type(r) == IORESOURCE_MEM)
> > +			mres = r;
> > +		else
> > +			*res++ = *r;
> > +	}
> > +
> > +	/* Append tile memory resources */
> > +	for (i = 0; i < ARRAY_SIZE(sc8180x_tiles); i++, res++) {
> > +		const struct tile_info *info = &sc8180x_tile_info[i];
> > +
> > +		res->start = mres->start + info->offset;
> > +		res->end = mres->start + info->offset + info->size - 1;
> > +		res->flags = mres->flags;
> > +		res->name = sc8180x_tiles[i];
> > +
> > +		/* Add new MEM to resource tree */
> > +		insert_resource(mres->parent, res);
> > +	}
> > +
> > +	/* Remove old MEM from resource tree */
> > +	remove_resource(mres);
> > +
> > +	/* Free old resources and install new ones */
> > +	ret = platform_device_add_resources(pdev, nres, nres_num);
> > +	if (ret) {
> > +		dev_err(&pdev->dev, "failed to add new resources: %d\n", ret);
> > +		return ret;
> > +	}
> > +
> > +	return 0;
> > +}
> > +
> >  static int sc8180x_pinctrl_probe(struct platform_device *pdev)
> >  {
> > -	return msm_pinctrl_probe(pdev, &sc8180x_pinctrl);
> > +	const struct msm_pinctrl_soc_data *soc_data;
> > +	int ret;
> > +
> > +	soc_data = device_get_match_data(&pdev->dev);
> > +	if (!soc_data)
> > +		return -EINVAL;
> > +
> > +	ret = sc8180x_pinctrl_add_tile_resources(pdev);
> > +	if (ret) {
> > +		dev_err(&pdev->dev, "failed to add tile resources: %d\n", ret);
> 
> sc8180x_pinctrl_add_tile_resources() already printed an error when we
> get here, so no need to print another one.

Sure.

Shawn

      reply	other threads:[~2021-03-11  1:30 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-10 11:12 [PATCH v4] pinctrl: qcom: sc8180x: add ACPI probe support Shawn Guo
2021-03-10 12:09 ` Andy Shevchenko
2021-03-10 16:53   ` Bjorn Andersson
2021-03-10 16:59     ` Andy Shevchenko
2021-03-10 19:24 ` Bjorn Andersson
2021-03-11  1:29   ` Shawn Guo [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210311012928.GU17424@dragon \
    --to=shawn.guo@linaro.org \
    --cc=andriy.shevchenko@intel.com \
    --cc=bjorn.andersson@linaro.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-gpio@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).