All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Boyd <swboyd@chromium.org>
To: Lee Jones <lee.jones@linaro.org>,
	Satya Priya Kakitapalli <quic_c_skakit@quicinc.com>
Cc: Mark Brown <broonie@kernel.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Rob Herring <robh+dt@kernel.org>,
	Liam Girdwood <lgirdwood@gmail.com>,
	linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, quic_collinsd@quicinc.com,
	quic_subbaram@quicinc.com, quic_jprakash@quicinc.com,
	Lee Jones <lee@kernel.org>
Subject: Re: [PATCH V15 6/9] mfd: pm8008: Use i2c_new_dummy_device() API
Date: Mon, 8 Aug 2022 14:09:15 -0500	[thread overview]
Message-ID: <CAE-0n507SLeYB7XVzGFk=RO6YjOPoGpux+_N2AyrmL354mQJ-g@mail.gmail.com> (raw)
In-Reply-To: <Yuz2O+lZ5W7RviuA@google.com>

Quoting Lee Jones (2022-08-05 03:51:39)
> On Tue, 02 Aug 2022, Satya Priya Kakitapalli (Temp) wrote:
>
> >
> > On 7/27/2022 6:49 AM, Stephen Boyd wrote:
> > > Quoting Satya Priya Kakitapalli (Temp) (2022-07-21 23:31:16)
> > > >               regulator-name = "pm8008_l6";
> > > >           };
> > > >
> > > >           pm8008_l7: ldo7@4600 {
> > > >               reg = <0x4600>;
> > > >               regulator-name = "pm8008_l7";
> > > >           };
> > > >       };
> > > > };
> > > >
> > > >
> > > > Stephen/Mark, Please do let me know if you are OK with this design.
> > > >
> > > I was happy with the previous version of the DT node. That had one node
> > > for the "pm8008 chip", which is important because it really is one
> > > package. Why isn't that possible to implement and also register i2c
> > > devices on the i2c bus for the second address?
>
> If devices have different addresses, they should have their own nodes, no?

There are nodes for the devices at different addresses in the design we
had settled on earlier.

        pm8008: pmic@8 {
                compatible = "qcom,pm8008";
                reg = <0x8>;
                #address-cells = <2>;
                #size-cells = <0>;
                #interrupt-cells = <2>;

                pm8008_l1: ldo1@1,4000 {
                        compatible = "qcom,pm8008-regulator";
                        reg = <0x1 0x4000>;
                        regulator-name = "pm8008_ldo1";
                };

		...

	};

pmic@8 is the i2c device at i2c address 8. ldo1@1,4000 is the i2c device
at address 9 (8 + 1) with control for ldo1 at register offset 0x4000.

I think your concern is more about the fact that the regulator sub-nodes
are platform device drivers instead of i2c device drivers. I'm not an
i2c expert but from what I can tell we only describe one i2c address in
DT and then do something like this to describe the other i2c addresses
when one physical chip responds to multiple addresses on the i2c bus.
See i2c_new_dummy_device() and i2c_new_ancillary_device() kerneldoc for
slightly more background.

It may need some modifications to the i2c core to make the regulator
nodes into i2c devices. I suspect the qcom,pm8008 i2c driver needs to
look at the 'reg' property and translate that to the parent node's reg
property (8) plus the first cell (1) to determine the i2c device's final
i2c address. Then the i2c core needs to register i2c devices that are
bound to the lifetime of the "primary" i2c device (pmic@8). The driver
for the regulator can parse the second cell of the reg property to
determine the register offset within that i2c address to use to control
the regulator. That would make it possible to create an i2c device for
each regulator node, but I don't think that is correct because the
second reg property isn't an i2c address, it's a register offset inside
the i2c address.

It sort of looks like we need to use i2c_new_ancillary_device() here. IF
we did that the DT would look like this:

        pm8008: pmic@8 {
                compatible = "qcom,pm8008";
                reg = <0x8>, <0x9>;
		reg-names = "core", "regulators";
                #address-cells = <2>;
                #size-cells = <0>;
                #interrupt-cells = <2>;

                pm8008_l1: ldo1@1,4000 {
                        compatible = "qcom,pm8008-regulator";
                        reg = <0x1 0x4000>;
                        regulator-name = "pm8008_ldo1";
                };

		...

	};

And a dummy i2c device would be created for i2c address 0x9 bound to the
dummy i2c driver when we called i2c_new_ancillary_device() with
"regulators" for the name. The binding of the dummy driver is preventing
us from binding another i2c driver to the i2c address. Why can't we call
i2c_new_client_device() but avoid binding a dummy driver to it like
i2c_new_ancillary_device() does? If that can be done, then the single
i2c device at 0x9 can be a pm8008-regulators (plural) device that probes
a single i2c driver that parses the subnodes looking for regulator
nodes.

Note: There is really one i2c device at address 0x9, that corresponds to
the regulators, but in DT we need to have one node per regulator so we
can configure constraints.

  reply	other threads:[~2022-08-08 19:09 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-14  9:48 [PATCH V15 0/9] Add Qualcomm Technologies, Inc. PM8008 regulator driver Satya Priya
2022-06-14  9:48 ` [PATCH V15 1/9] dt-bindings: mfd: pm8008: Add reset-gpios Satya Priya
2022-06-16 20:58   ` Lee Jones
2022-06-14  9:48 ` [PATCH V15 2/9] dt-bindings: mfd: pm8008: Change the address cells Satya Priya
2022-06-16 20:59   ` Lee Jones
2022-06-17 16:34     ` Lee Jones
2022-06-14  9:48 ` [PATCH V15 3/9] dt-bindings: mfd: pm8008: Add regulators for pm8008 Satya Priya
2022-06-16 20:58   ` Lee Jones
2022-06-14  9:48 ` [PATCH V15 4/9] mfd: pm8008: Add reset-gpios Satya Priya
2022-06-16 20:58   ` Lee Jones
2022-06-17 16:34     ` Lee Jones
2022-06-29 18:36   ` Guru Das Srinagesh
2022-06-14  9:48 ` [PATCH V15 5/9] mfd: pm8008: Remove the regmap member from pm8008_data struct Satya Priya
2022-06-16 20:58   ` Lee Jones
2022-06-29 18:35   ` Guru Das Srinagesh
2022-06-14  9:48 ` [PATCH V15 6/9] mfd: pm8008: Use i2c_new_dummy_device() API Satya Priya
2022-06-16 20:57   ` Lee Jones
2022-06-20  5:28     ` Satya Priya Kakitapalli (Temp)
2022-06-20  8:20       ` Lee Jones
2022-06-20 11:07         ` Satya Priya Kakitapalli (Temp)
2022-06-27  5:07           ` Satya Priya Kakitapalli (Temp)
2022-06-27  7:41             ` Lee Jones
2022-06-28  4:53               ` Satya Priya Kakitapalli (Temp)
2022-06-28  7:42                 ` Lee Jones
2022-06-29 10:36                   ` Satya Priya Kakitapalli (Temp)
2022-06-29 15:18                     ` Lee Jones
2022-06-30  9:37                       ` Satya Priya Kakitapalli (Temp)
2022-06-30 10:34                         ` Lee Jones
2022-07-01  6:46                           ` Satya Priya Kakitapalli (Temp)
2022-07-01  7:54                             ` Lee Jones
2022-07-01  8:47                               ` Satya Priya Kakitapalli (Temp)
2022-07-01  9:12                                 ` Lee Jones
     [not found]                                   ` <0481d3cc-4bb9-4969-0232-76ba57ff260d@quicinc.com>
2022-07-04 12:49                                     ` Lee Jones
2022-07-04 12:59                                       ` Satya Priya Kakitapalli (Temp)
2022-07-11 10:31                                       ` Satya Priya Kakitapalli (Temp)
2022-07-12 12:47                                         ` Lee Jones
2022-07-13  5:50                                           ` Satya Priya Kakitapalli (Temp)
2022-07-13 13:14                                             ` Mark Brown
2022-07-22  6:31                                           ` Satya Priya Kakitapalli (Temp)
2022-07-27  1:19                                             ` Stephen Boyd
     [not found]                                               ` <52039cd1-4390-7abb-d296-0eb7ac0c3b15@quicinc.com>
2022-08-05 10:51                                                 ` Lee Jones
2022-08-08 19:09                                                   ` Stephen Boyd [this message]
2022-08-16  3:41                                                     ` Satya Priya Kakitapalli (Temp)
2022-09-28 10:20                                                     ` Lee Jones
2022-09-29  1:20                                                       ` Stephen Boyd
2022-09-29 18:01                                                         ` Lee Jones
2022-10-03 18:47                                                           ` Stephen Boyd
2022-10-04 11:41                                                             ` Lee Jones
2022-06-14  9:48 ` [PATCH V15 7/9] regulator: Add a regulator driver for the PM8008 PMIC Satya Priya
2022-06-14 20:36   ` Stephen Boyd
2022-06-14  9:48 ` [PATCH V15 8/9] arm64: dts: qcom: pm8008: Add base dts file Satya Priya
2022-06-14  9:48 ` [PATCH V15 9/9] arm64: dts: qcom: sc7280: Add pm8008 support for sc7280-idp Satya Priya
2023-03-17  8:06 ` [PATCH V15 0/9] Add Qualcomm Technologies, Inc. PM8008 regulator driver Luca Weiss
2023-07-07  8:54   ` Luca Weiss

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='CAE-0n507SLeYB7XVzGFk=RO6YjOPoGpux+_N2AyrmL354mQJ-g@mail.gmail.com' \
    --to=swboyd@chromium.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=broonie@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=lee.jones@linaro.org \
    --cc=lee@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=quic_c_skakit@quicinc.com \
    --cc=quic_collinsd@quicinc.com \
    --cc=quic_jprakash@quicinc.com \
    --cc=quic_subbaram@quicinc.com \
    --cc=robh+dt@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.