All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gregory CLEMENT <gregory.clement@free-electrons.com>
To: Hans de Goede <hdegoede@redhat.com>, Mark Brown <broonie@kernel.org>
Cc: "Chen-Yu Tsai" <wens@csie.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	"Thomas Petazzoni" <thomas.petazzoni@free-electrons.com>,
	"Boris BREZILLON" <boris.brezillon@free-electrons.com>,
	"Jason Cooper" <jason@lakedaemon.net>,
	"Tawfik Bayouk" <tawfik@marvell.com>,
	"Andrew Lunn" <andrew@lunn.ch>,
	devicetree <devicetree@vger.kernel.org>,
	"Antoine Ténart" <antoine.tenart@free-electrons.com>,
	"Mark Rutland" <mark.rutland@arm.com>,
	"Nadav Haklai" <nadavh@marvell.com>,
	linux-ide@vger.kernel.org, "Lior Amsalem" <alior@marvell.com>,
	"Ezequiel Garcia" <ezequiel.garcia@free-electrons.com>,
	"Tejun Heo" <tj@kernel.org>,
	"Maxime Ripard" <maxime.ripard@free-electrons.com>,
	linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
	"Sebastian Hesselbarth" <sebastian.hesselbarth@gmail.com>,
	"Ulf Hansson" <ulf.hansson@linaro.org>
Subject: Re: [PATCH v2 2/4] Documentation: bindings: Add the regulator property to the sub-nodes AHCI bindings
Date: Mon, 12 Jan 2015 13:49:56 +0100	[thread overview]
Message-ID: <54B3C2F4.4010007@free-electrons.com> (raw)
In-Reply-To: <54B12E54.7000704@redhat.com>

On 10/01/2015 14:51, Hans de Goede wrote:
> Hi,
> 
> On 10-01-15 12:17, Mark Brown wrote:
>> On Sat, Jan 10, 2015 at 11:20:13AM +0100, Hans de Goede wrote:
>>> On 09-01-15 18:11, Mark Brown wrote:
>>
>>>> Or if the supply is for the device at the other end of the link (which
>>>> is what it sounded like) then use that.  This just sounds like the same
>>>> problem we have for all the enumerable buses in embedded systems where
>>>> we need to be able to understand that the device exists prior to it
>>>> being fully ready to appear in the system.  Having the link/slot be a
>>>> device in Linux does indeed seem to be a common way people think about
>>>> doing this, it sounds like for this one it might be the most direct.
>>
>>> I think we should be careful to not think too much from an implementation
>>> pov here, the purpose of the devicetree description is to describe the hardware,
>>> as is.
>>
>> I don't think anyone is talking about changing the DT here, only the way
>> it's represented inside Linux.
>>
>>>                  sata0: sata-port@0 {
>>>                          reg = <0>;
>>>                          phys = <&sata_phy 0>;
>>> 			target-supply = <&reg_sata0>;
>>>                  };
>>>
>>>                  sata1: sata-port@1 {
>>>                          reg = <1>;
>>>                          phys = <&sata_phy 1>;
>>> 			target-supply = <&reg_sata1>;
>>>                  };
>>>          };
>>
>>> Seems to match the hardware pretty exactly, and also matches how we've
>>> been describing similar devices with only one sata port + power plug sofar,
>>> so from a consistency pov it also is a good model.
>>
>> Right, I think that makes sense
> 
> Good, as said I think getting the dt bit rights is the most important
> thing here. So if we agree that the above dt example looks sane, lets see
> how we can best implement that.
> 
>  > it also looks to me like these things
>> should be representable as devices within Linux.
> 
> I guess we could manually instantiate platform devices for each of the
> subnodes which represent an sata port here, yes that should not be
> hard to do, it feels like a bit overkill though.
> 
> So for our this should likely look something like this:
> 
>          if (IS_ENABLED(CONFIG_OF_ADDRESS) && dev->of_node) {
>                  for_each_child_of_node(dev->of_node, np) {
>                          pdev[i++] = of_platform_device_create(np, NULL, NULL);
>                  }
>          }
> 
> and then loop over the pdev[] array and get the regulator, and phy for each.
> 
> I wonder if of_platform_device_create can deal with nodes with
> #size-cells = <0>; is 0 though, if it cannot maybe we need to teach it.
> 
>>> So supporting this model requires having a regulator_get API which allows
>>> specifying which of_node to get the regulator from, e.g. the proposed
>>
>> It requires nothing of the sort.
> 
> You're proposed solution of instantiating devices does more or less exactly
> what I say is required, it is a way to pass an of_node into regulator_get,
> but you're hiding the node inside dev->of_node. I can see the appeal in
> that.
> 
>>> of_regulator_get function. I know you (Mark) do not like this, but all
>>> other subsystems have an of_foo_get function taking an of_node as argument,
>>> I do not see how the regulator subsys is so special that it cannot have one,
>>> and also notice that this is only a kernel internal API which we can always
>>> change later.
>>
>> Two things there.  One is that mostly those APIs are legacy APIs from
>> before we made DT a first class citizen and generally they shouldn't be
>> used these days.  The other is that at least for regulators we have
>> constant problems with people abusing the API in various ways, as a
>> result the API has a goal of not helping undesirable usage patterns in
>> order to help people spot problems.  Having an API which makes it easy
>> create broken bindings means that it is much more likely that people
>> will do just that.
> 
> Hmm I can see where you're coming from, and your proposed solution may
> also be useful for when we get similar boards requiring explicit regulator
> handling with the sata ports described in ACPI tables.
> 
> Gregory, can you give the setup using per sata port devices a try, and
> see how that works out code wise ?

OK, I am taking care of it.


Thanks,

Gregory

-- 
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

WARNING: multiple messages have this Message-ID (diff)
From: gregory.clement@free-electrons.com (Gregory CLEMENT)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 2/4] Documentation: bindings: Add the regulator property to the sub-nodes AHCI bindings
Date: Mon, 12 Jan 2015 13:49:56 +0100	[thread overview]
Message-ID: <54B3C2F4.4010007@free-electrons.com> (raw)
In-Reply-To: <54B12E54.7000704@redhat.com>

On 10/01/2015 14:51, Hans de Goede wrote:
> Hi,
> 
> On 10-01-15 12:17, Mark Brown wrote:
>> On Sat, Jan 10, 2015 at 11:20:13AM +0100, Hans de Goede wrote:
>>> On 09-01-15 18:11, Mark Brown wrote:
>>
>>>> Or if the supply is for the device at the other end of the link (which
>>>> is what it sounded like) then use that.  This just sounds like the same
>>>> problem we have for all the enumerable buses in embedded systems where
>>>> we need to be able to understand that the device exists prior to it
>>>> being fully ready to appear in the system.  Having the link/slot be a
>>>> device in Linux does indeed seem to be a common way people think about
>>>> doing this, it sounds like for this one it might be the most direct.
>>
>>> I think we should be careful to not think too much from an implementation
>>> pov here, the purpose of the devicetree description is to describe the hardware,
>>> as is.
>>
>> I don't think anyone is talking about changing the DT here, only the way
>> it's represented inside Linux.
>>
>>>                  sata0: sata-port at 0 {
>>>                          reg = <0>;
>>>                          phys = <&sata_phy 0>;
>>> 			target-supply = <&reg_sata0>;
>>>                  };
>>>
>>>                  sata1: sata-port at 1 {
>>>                          reg = <1>;
>>>                          phys = <&sata_phy 1>;
>>> 			target-supply = <&reg_sata1>;
>>>                  };
>>>          };
>>
>>> Seems to match the hardware pretty exactly, and also matches how we've
>>> been describing similar devices with only one sata port + power plug sofar,
>>> so from a consistency pov it also is a good model.
>>
>> Right, I think that makes sense
> 
> Good, as said I think getting the dt bit rights is the most important
> thing here. So if we agree that the above dt example looks sane, lets see
> how we can best implement that.
> 
>  > it also looks to me like these things
>> should be representable as devices within Linux.
> 
> I guess we could manually instantiate platform devices for each of the
> subnodes which represent an sata port here, yes that should not be
> hard to do, it feels like a bit overkill though.
> 
> So for our this should likely look something like this:
> 
>          if (IS_ENABLED(CONFIG_OF_ADDRESS) && dev->of_node) {
>                  for_each_child_of_node(dev->of_node, np) {
>                          pdev[i++] = of_platform_device_create(np, NULL, NULL);
>                  }
>          }
> 
> and then loop over the pdev[] array and get the regulator, and phy for each.
> 
> I wonder if of_platform_device_create can deal with nodes with
> #size-cells = <0>; is 0 though, if it cannot maybe we need to teach it.
> 
>>> So supporting this model requires having a regulator_get API which allows
>>> specifying which of_node to get the regulator from, e.g. the proposed
>>
>> It requires nothing of the sort.
> 
> You're proposed solution of instantiating devices does more or less exactly
> what I say is required, it is a way to pass an of_node into regulator_get,
> but you're hiding the node inside dev->of_node. I can see the appeal in
> that.
> 
>>> of_regulator_get function. I know you (Mark) do not like this, but all
>>> other subsystems have an of_foo_get function taking an of_node as argument,
>>> I do not see how the regulator subsys is so special that it cannot have one,
>>> and also notice that this is only a kernel internal API which we can always
>>> change later.
>>
>> Two things there.  One is that mostly those APIs are legacy APIs from
>> before we made DT a first class citizen and generally they shouldn't be
>> used these days.  The other is that at least for regulators we have
>> constant problems with people abusing the API in various ways, as a
>> result the API has a goal of not helping undesirable usage patterns in
>> order to help people spot problems.  Having an API which makes it easy
>> create broken bindings means that it is much more likely that people
>> will do just that.
> 
> Hmm I can see where you're coming from, and your proposed solution may
> also be useful for when we get similar boards requiring explicit regulator
> handling with the sata ports described in ACPI tables.
> 
> Gregory, can you give the setup using per sata port devices a try, and
> see how that works out code wise ?

OK, I am taking care of it.


Thanks,

Gregory

-- 
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

  reply	other threads:[~2015-01-12 12:49 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-09 10:39 [PATCH v2 0/4] ata: libahci: Allow using a regulator for each port Gregory CLEMENT
2015-01-09 10:39 ` Gregory CLEMENT
2015-01-09 10:39 ` Gregory CLEMENT
2015-01-09 10:39 ` [PATCH v2 1/4] ata: libahci: Clean-up the ahci_platform_en/disable_phys functions Gregory CLEMENT
2015-01-09 10:39   ` Gregory CLEMENT
2015-01-09 10:39   ` Gregory CLEMENT
2015-01-09 10:39 ` [PATCH v2 3/4] ata: libahci: Allow using multiple regulators Gregory CLEMENT
2015-01-09 10:39   ` Gregory CLEMENT
2015-01-09 10:39   ` Gregory CLEMENT
     [not found] ` <1420799989-10645-1-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2015-01-09 10:39   ` [PATCH v2 2/4] Documentation: bindings: Add the regulator property to the sub-nodes AHCI bindings Gregory CLEMENT
2015-01-09 10:39     ` Gregory CLEMENT
2015-01-09 10:39     ` Gregory CLEMENT
2015-01-09 15:46     ` Hans de Goede
2015-01-09 15:46       ` Hans de Goede
2015-01-09 16:20       ` Gregory CLEMENT
2015-01-09 16:20         ` Gregory CLEMENT
2015-01-09 16:29         ` Chen-Yu Tsai
2015-01-09 16:29           ` Chen-Yu Tsai
2015-01-09 17:11           ` Mark Brown
2015-01-09 17:11             ` Mark Brown
     [not found]             ` <20150109171131.GH2634-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-01-10 10:20               ` Hans de Goede
2015-01-10 10:20                 ` Hans de Goede
2015-01-10 10:20                 ` Hans de Goede
2015-01-10 11:17                 ` Mark Brown
2015-01-10 11:17                   ` Mark Brown
2015-01-10 13:51                   ` Hans de Goede
2015-01-10 13:51                     ` Hans de Goede
2015-01-12 12:49                     ` Gregory CLEMENT [this message]
2015-01-12 12:49                       ` Gregory CLEMENT
2015-01-09 10:39   ` [PATCH v2 4/4] ARM: mvebu: Armada 385 GP: Add regulators to the SATA port Gregory CLEMENT
2015-01-09 10:39     ` Gregory CLEMENT
2015-01-09 10:39     ` Gregory CLEMENT

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=54B3C2F4.4010007@free-electrons.com \
    --to=gregory.clement@free-electrons.com \
    --cc=alior@marvell.com \
    --cc=andrew@lunn.ch \
    --cc=antoine.tenart@free-electrons.com \
    --cc=boris.brezillon@free-electrons.com \
    --cc=broonie@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=ezequiel.garcia@free-electrons.com \
    --cc=hdegoede@redhat.com \
    --cc=jason@lakedaemon.net \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=maxime.ripard@free-electrons.com \
    --cc=nadavh@marvell.com \
    --cc=sebastian.hesselbarth@gmail.com \
    --cc=tawfik@marvell.com \
    --cc=thomas.petazzoni@free-electrons.com \
    --cc=tj@kernel.org \
    --cc=ulf.hansson@linaro.org \
    --cc=wens@csie.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.