linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Andrew F. Davis" <afd@ti.com>
To: Mark Brown <broonie@kernel.org>
Cc: Rob Herring <robh+dt@kernel.org>, Pawel Moll <pawel.moll@arm.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Ian Campbell <ijc+devicetree@hellion.org.uk>,
	Kumar Gala <galak@codeaurora.org>,
	Lee Jones <lee.jones@linaro.org>,
	Alexandre Courbot <gnurou@gmail.com>,
	Grygorii Strashko <grygorii.strashko@ti.com>,
	<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 4/5] regulator: tps65912: Add regulator driver for the TPS65912 PMIC
Date: Sun, 25 Oct 2015 15:45:43 -0500	[thread overview]
Message-ID: <562D3F77.5040205@ti.com> (raw)
In-Reply-To: <20151024221457.GS29919@sirena.org.uk>

On 10/24/2015 05:14 PM, Mark Brown wrote:
> On Fri, Oct 23, 2015 at 07:11:56PM -0500, Andrew F. Davis wrote:
>> On 10/23/2015 06:18 PM, Mark Brown wrote:
>
>>> mt6397 doesn't do this, it doesn't have a compatible string at all (it's
>>> doing what I'm recommending that you do).  The SPMI devices are
>>> standalone devices, their parent device is actually functioning as a bus
>>> controller here (it's really a microcontroller inside the SoC).  The
>>> Palmas is part of how we realised this was a problem.
>
>> mt6397: Documentation/devicetree/bindings/mfd/mt6397.txt
>> Doing exactly what I'm doing,
>
> Tbe binding document is buggy and doesn't reflect the code, there's no
> compatible string in the driver.
>

Sure there is:

drivers/mfd/mt6397-core.c:48:
.of_compatible = "mediatek,mt6397-regulator",

Then mfd_add_devices uses this to find the regulator node and fill
in .of_node, then in the regulator driver:

drivers/regulator/mt6397-regulator.c:48:
.of_match = of_match_ptr(match),

which uses your helper to match the nodes in the filled in .of_node.

>> The Palmas is a great example of why this is a good idea, there are
>> so many spins on this common base, and look how we can re-use sub-nodes:
>
> There's no real reuse here, we have to have a table in both the MFD and
> regulator listing every variant.

That's not true, the only variant that needs its own table is the tps65917,
and that's for the IRQ and regulator differences. The RTC, pwrbutton, and
GPIO nodes are completely variant agnostic and their drivers are reused
by just adding their subnode to a new PMIC device node.

> Remember that the only reason the user
> is having to type most of those subnodes at all is that we pushed things
> into the DT, if someone forgot to include one of the nodes in their
> board DT then they won't be able to use the relevant feature even if
> it's there.
>

This is what DT is for, we want to push this kind of thing into DT, the
driver should not have to know the devices hardware configuration anymore
that in needs to.

>>> The fact that the SoC DT is not distinct from the board DT is actually
>>> one of the problems with the way we're using DT at the minute, it means
>>> that DTBs are much less stable than they should be since we can enhance
>>> support for SoCs but DTBs need regenerating to take advantage of it.  It
>>> would be much better if the boards just referenced the SoC they use and
>>> pulled in a separate definition of the SoC (DT overlays will make it
>>> much more tractable to implement that if someone has time...).
>
>> I figured this can already be done by keeping the SoC stuff in dtsi files?
>
> That doesn't help with the above issue, include files get processed at
> the time the binary is generated.
>

Yeah so the board DT and the SoC DT are already mostly separate, it would
then just be a matter enforcing where nodes are defined.

>> Well I have to match the sub-devices on something, it's ether the node name
>> or the compatible string, so they might have to get used to typing :)
>
> No, that's not the case - remember, users don't have to write a new
> driver every time they instantiate a device on a board.  They're going
> to have to list the in-use regulators one way or another but if we have
> the extra compatible for regulators they have to bind both the core
> device (which is going to be required anyway due to the control bus) and
> the subnode saying that it has regulators (which we knew anyway as soon
> as we knew we had the core device).
>

We don't know what sub-devices the core device has, PMICs are more like
SoCs on a bus than a regular device, the sub-parts change with every spin and
we can represent this in DT like we do with SoCs. Else we would have to have
a new core binding for every spin. We know what devices are on a particular
SoC too, but we still list them and match them in DT so some SoC driver
doesn't have to.


  reply	other threads:[~2015-10-25 20:45 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-01 20:37 [PATCH v4 0/5] mfd: tps65912: Driver rewrite with DT support Andrew F. Davis
2015-10-01 20:37 ` [PATCH v4 1/5] Documentation: tps65912: Add DT bindings for the TPS65912 PMIC Andrew F. Davis
2015-10-01 20:37 ` [PATCH v4 2/5] mfd: tps65912: Remove old driver in preparation for new driver Andrew F. Davis
2015-10-05  9:28   ` Lee Jones
2015-10-05  9:29     ` Lee Jones
2015-10-05 16:01       ` Andrew F. Davis
2015-10-01 20:37 ` [PATCH v4 3/5] mfd: tps65912: Add driver for the TPS65912 PMIC Andrew F. Davis
2015-10-01 20:51   ` kbuild test robot
     [not found]     ` <20151002095859.GN12635@sirena.org.uk>
2015-10-02 13:32       ` [lkp] " Fengguang Wu
2015-10-02 13:47         ` Mark Brown
2015-10-01 20:57   ` kbuild test robot
2015-10-01 20:57   ` kbuild test robot
2015-10-01 23:49   ` Andrew F. Davis
2015-10-05  9:24   ` Lee Jones
2015-10-05  9:27     ` Lee Jones
2015-10-12 15:06       ` Andrew F. Davis
2015-10-13  7:34         ` Lee Jones
2015-10-01 20:37 ` [PATCH v4 4/5] regulator: tps65912: Add regulator " Andrew F. Davis
2015-10-02 19:21   ` Grygorii Strashko
2015-10-22 16:47   ` Mark Brown
2015-10-23 12:46     ` Andrew F. Davis
2015-10-23 23:18       ` Mark Brown
2015-10-24  0:11         ` Andrew F. Davis
2015-10-24 22:14           ` Mark Brown
2015-10-25 20:45             ` Andrew F. Davis [this message]
2015-10-26  0:43               ` Mark Brown
2015-10-26 15:47                 ` Andrew F. Davis
2015-10-27  0:16                   ` Mark Brown
2015-10-27 14:23                     ` Andrew F. Davis
2015-11-04 15:35     ` Andrew F. Davis
2015-11-05 10:14       ` Mark Brown
2015-11-05 18:04         ` Andrew F. Davis
2015-11-06 10:43           ` Mark Brown
2015-11-06 18:10             ` Andrew F. Davis
2015-11-06 21:16               ` Mark Brown
2015-11-09 17:41                 ` Andrew F. Davis
2015-11-10  9:57                   ` Mark Brown
2015-11-10 16:47                     ` Andrew F. Davis
2015-11-10 17:04                       ` Mark Brown
2015-11-10 17:52                         ` Andrew F. Davis
2015-11-10 18:44                           ` Mark Brown
2015-11-10 19:40                             ` Andrew F. Davis
2015-11-16 18:23                               ` Mark Brown
2015-10-01 20:37 ` [PATCH v4 5/5] gpio: tps65912: Add GPIO " Andrew F. Davis

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=562D3F77.5040205@ti.com \
    --to=afd@ti.com \
    --cc=broonie@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=galak@codeaurora.org \
    --cc=gnurou@gmail.com \
    --cc=grygorii.strashko@ti.com \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=lee.jones@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=pawel.moll@arm.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 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).