devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bjorn Helgaas <helgaas@kernel.org>
To: Bartosz Golaszewski <brgl@bgdev.pl>
Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Mark Brown <broonie@kernel.org>, Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Marcel Holtmann <marcel@holtmann.org>,
	Luiz Augusto von Dentz <luiz.dentz@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Balakrishna Godavarthi <quic_bgodavar@quicinc.com>,
	Rocky Liao <quic_rjliao@quicinc.com>,
	Kalle Valo <kvalo@kernel.org>, Jeff Johnson <jjohnson@kernel.org>,
	Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konrad.dybcio@linaro.org>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Srini Kandagatla <srinivas.kandagatla@linaro.org>,
	Elliot Berman <quic_eberman@quicinc.com>,
	Caleb Connolly <caleb.connolly@linaro.org>,
	Neil Armstrong <neil.armstrong@linaro.org>,
	Alex Elder <elder@kernel.org>,
	linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org, linux-bluetooth@vger.kernel.org,
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	ath11k@lists.infradead.org,
	Jeff Johnson <quic_jjohnson@quicinc.com>,
	ath12k@lists.infradead.org, linux-pm@vger.kernel.org,
	linux-pci@vger.kernel.org,
	Bartosz Golaszewski <bartosz.golaszewski@linaro.org>,
	kernel@quicinc.com, Amit Pundir <amit.pundir@linaro.org>
Subject: Re: [PATCH v8 16/17] PCI/pwrctl: add a PCI power control driver for power sequenced devices
Date: Wed, 5 Jun 2024 12:47:13 -0500	[thread overview]
Message-ID: <20240605174713.GA767261@bhelgaas> (raw)
In-Reply-To: <CAMRc=Mckab1QYoBuE3iSv0x+GEjFNBQS5Hw_Mry=r7h5XGHZEQ@mail.gmail.com>

On Wed, Jun 05, 2024 at 10:47:32AM +0200, Bartosz Golaszewski wrote:
> On Wed, Jun 5, 2024 at 4:13 AM Bjorn Helgaas <helgaas@kernel.org> wrote:
> > On Wed, Jun 05, 2024 at 02:34:52AM +0300, Dmitry Baryshkov wrote:
> > > On Wed, 5 Jun 2024 at 02:23, Bjorn Helgaas <helgaas@kernel.org> wrote:
> > > > On Tue, May 28, 2024 at 09:03:24PM +0200, Bartosz Golaszewski wrote:
> > > > > From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> > > > >
> > > > > Add a PCI power control driver that's capable of correctly powering up
> > > > > devices using the power sequencing subsystem. The first users of this
> > > > > driver are the ath11k module on QCA6390 and ath12k on WCN7850.
> >
> > > > > +static const struct of_device_id pci_pwrctl_pwrseq_of_match[] = {
> > > > > +     {
> > > > > +             /* ATH11K in QCA6390 package. */
> > > > > +             .compatible = "pci17cb,1101",
> > > > > +             .data = "wlan",
> > > > > +     },
> > > > > +     {
> > > > > +             /* ATH12K in WCN7850 package. */
> > > > > +             .compatible = "pci17cb,1107",
> > > > > +             .data = "wlan",
> > > > > +     },
> > > >
> > > > IIUC, "pci17cb,1101" and "pci17cb,1107" exist partly so we can check
> > > > that a DTS conforms to the schema, e.g., a "pci17cb,1101" node
> > > > contains all the required regulators.  For that use, we obviously need
> > > > a very specific "compatible" string.
> > > >
> > > > Is there any opportunity to add a more generic "compatible" string in
> > > > addition to those so this list doesn't have to be updated for every
> > > > PMU?  The .data here is "wlan" in both cases, and for this purpose, we
> > > > don't care whether it's "pci17cb,1101" or "pci17cb,1107".
> > >
> > > These two devices have different set of regulators and different
> > > requirements to power them on.
> >
> > Right, but I don't think pci_pwrctl_pwrseq_probe() knows about those
> > different sets.  It basically looks like:
> >
> >   pci_pwrctl_pwrseq_probe(struct platform_device *pdev)
> >   {
> >     struct pci_pwrctl_pwrseq_data *data;
> >     struct device *dev = &pdev->dev;
> >
> >     data->pwrseq = devm_pwrseq_get(dev, of_device_get_match_data(dev));
> >     pwrseq_power_on(data->pwrseq);
> >     data->ctx.dev = dev;
> >     devm_pci_pwrctl_device_set_ready(dev, &data->ctx);
> >   }
> >
> > I think of_device_get_match_data(dev) will return "wlan" for both
> > "pci17cb,1101" and "pci17cb,1107", so devm_pwrseq_get(),
> > pwrseq_power_on(), and devm_pci_pwrctl_device_set_ready() don't see
> > the distinction between them.
> 
> These are only the first two users of this generic driver. We may end
> up adding more that will use different targets or even extend the
> match data with additional fields.

If that were the only reason, I would suggest waiting to add the
specific device strings until we need the functionality, but it sounds
like there are other stronger reasons.

> > Of course, they also get "dev", so they can find the device-specifc
> > stuff that way, but I think that's on the drivers/power/sequencing/
> > side, not in this pci-pwrctl-pwrseq driver itself.
> >
> > So what if there were a more generic "compatible" string, e.g., if the
> > DT contained something like this:
> >
> >   wifi@0 {
> >     compatible = "pci17cb,1101", "wlan-pwrseq";
> 
> What even is "pwrseq" in the context of the hardware description? DT
> maintainers would like to have a word with you. :)

There are "compatible" strings like "simple-bus", "simple-mfd", and
"syscon" that allow drivers to bind and provide generic functionality
when they don't need to know the exact hardware.

> > and pci_pwrctl_pwrseq_of_match[] had this:
> >
> >   { .compatible = "wlan-pwrseq", .data = "wlan", }
> >
> > Wouldn't this pci-pwrctl-pwrseq driver work the same?  I'm not a DT
> > whiz, so likely I'm missing something, but it would be nice if we
> > didn't have to update this very generic-looking driver to add every
> > device that needs it.

Do you have any other ideas to reduce the churn in this file?  It just
seems weird to have to add an ID to this file without adding any
actual code or data related to it.

We should probably also add a pattern to MAINTAINERS so
get_maintainers.pl on this file will show you as a maintainer.

Bjorn

  reply	other threads:[~2024-06-05 17:47 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-28 19:03 [PATCH v8 00/17] power: sequencing: implement the subsystem and add first users Bartosz Golaszewski
2024-05-28 19:03 ` [PATCH v8 01/17] regulator: dt-bindings: describe the PMU module of the QCA6390 package Bartosz Golaszewski
2024-06-04 17:30   ` Bjorn Helgaas
2024-06-05  9:13     ` Bartosz Golaszewski
2024-06-05 11:12       ` Mark Brown
2024-05-28 19:03 ` [PATCH v8 02/17] regulator: dt-bindings: describe the PMU module of the WCN7850 package Bartosz Golaszewski
2024-06-04 17:31   ` Bjorn Helgaas
2024-05-28 19:03 ` [PATCH v8 03/17] dt-bindings: net: bluetooth: qualcomm: describe regulators for QCA6390 Bartosz Golaszewski
2024-05-28 19:03 ` [PATCH v8 04/17] dt-bindings: net: wireless: qcom,ath11k: describe the ath11k on QCA6390 Bartosz Golaszewski
2024-05-28 19:03 ` [PATCH v8 05/17] dt-bindings: net: wireless: describe the ath12k PCI module Bartosz Golaszewski
2024-05-28 19:03 ` [PATCH v8 06/17] arm64: dts: qcom: sm8550-qrd: add the Wifi node Bartosz Golaszewski
2024-05-28 19:03 ` [PATCH v8 07/17] arm64: dts: qcom: sm8650-qrd: " Bartosz Golaszewski
2024-05-28 19:03 ` [PATCH v8 08/17] arm64: dts: qcom: sm8650-hdk: " Bartosz Golaszewski
2024-05-28 19:03 ` [PATCH v8 09/17] arm64: dts: qcom: qrb5165-rb5: " Bartosz Golaszewski
2024-05-28 19:03 ` [PATCH v8 10/17] power: sequencing: implement the pwrseq core Bartosz Golaszewski
2024-06-04 17:43   ` Bjorn Helgaas
2024-06-04 18:27     ` Bartosz Golaszewski
2024-06-05  6:52   ` Ratheesh Kannoth
2024-06-05  7:43     ` Bartosz Golaszewski
2024-05-28 19:03 ` [PATCH v8 11/17] power: pwrseq: add a driver for the PMU module on the QCom WCN chipsets Bartosz Golaszewski
2024-06-04 17:52   ` Bjorn Helgaas
2024-05-28 19:03 ` [PATCH v8 12/17] PCI: hold the rescan mutex when scanning for the first time Bartosz Golaszewski
2024-06-11 22:55   ` Bjorn Helgaas
2024-05-28 19:03 ` [PATCH v8 13/17] PCI/pwrctl: reuse the OF node for power controlled devices Bartosz Golaszewski
2024-06-11 22:56   ` Bjorn Helgaas
2024-05-28 19:03 ` [PATCH v8 14/17] PCI/pwrctl: create platform devices for child OF nodes of the port node Bartosz Golaszewski
2024-06-11 22:56   ` Bjorn Helgaas
2024-05-28 19:03 ` [PATCH v8 15/17] PCI/pwrctl: add PCI power control core code Bartosz Golaszewski
2024-06-05 17:57   ` Bjorn Helgaas
2024-06-05 18:05     ` Bartosz Golaszewski
2024-06-11 22:56       ` Bjorn Helgaas
2024-05-28 19:03 ` [PATCH v8 16/17] PCI/pwrctl: add a PCI power control driver for power sequenced devices Bartosz Golaszewski
2024-06-04 23:23   ` Bjorn Helgaas
2024-06-04 23:34     ` Dmitry Baryshkov
2024-06-05  2:13       ` Bjorn Helgaas
2024-06-05  8:47         ` Bartosz Golaszewski
2024-06-05 17:47           ` Bjorn Helgaas [this message]
2024-06-05 18:04             ` Bartosz Golaszewski
2024-06-11 22:56   ` Bjorn Helgaas
2024-05-28 19:03 ` [PATCH v8 17/17] Bluetooth: qca: use the power sequencer for QCA6390 Bartosz Golaszewski
2024-05-30 11:02 ` [PATCH v8 00/17] power: sequencing: implement the subsystem and add first users Neil Armstrong
2024-05-30 15:22 ` Caleb Connolly
2024-06-04 17:19 ` Bjorn Helgaas
2024-06-04 18:24   ` Bartosz Golaszewski
2024-06-05 17:56     ` Bjorn Helgaas
2024-06-11 22:54 ` Bjorn Helgaas
2024-06-12  7:10   ` Bartosz Golaszewski
2024-06-20 14:30 ` patchwork-bot+bluetooth

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=20240605174713.GA767261@bhelgaas \
    --to=helgaas@kernel.org \
    --cc=amit.pundir@linaro.org \
    --cc=andersson@kernel.org \
    --cc=ath11k@lists.infradead.org \
    --cc=ath12k@lists.infradead.org \
    --cc=bartosz.golaszewski@linaro.org \
    --cc=bhelgaas@google.com \
    --cc=brgl@bgdev.pl \
    --cc=broonie@kernel.org \
    --cc=caleb.connolly@linaro.org \
    --cc=conor+dt@kernel.org \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=edumazet@google.com \
    --cc=elder@kernel.org \
    --cc=jjohnson@kernel.org \
    --cc=kernel@quicinc.com \
    --cc=konrad.dybcio@linaro.org \
    --cc=krzk+dt@kernel.org \
    --cc=kuba@kernel.org \
    --cc=kvalo@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=luiz.dentz@gmail.com \
    --cc=marcel@holtmann.org \
    --cc=neil.armstrong@linaro.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=quic_bgodavar@quicinc.com \
    --cc=quic_eberman@quicinc.com \
    --cc=quic_jjohnson@quicinc.com \
    --cc=quic_rjliao@quicinc.com \
    --cc=robh@kernel.org \
    --cc=srinivas.kandagatla@linaro.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).