Re: gpio-generic DT bindings?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 11/20/2013 11:15 AM, Stephen Warren wrote:
> On 11/20/2013 08:44 AM, Tom Rini wrote:
>> On Tue, Nov 19, 2013 at 03:38:20PM -0700, Stephen Warren wrote:
>>> On 11/19/2013 03:17 PM, Geert Uytterhoeven wrote:
>>>> On Tue, Nov 19, 2013 at 10:59 PM, Stephen Warren <swarren@xxxxxxxxxxxxx> wrote:
>>>>> On 11/19/2013 02:45 PM, Geert Uytterhoeven wrote:
>>>>>> This topic seems to come up from time to time.
>>>>>> Unfortunately the last time it coincided with the move of the mailing list
>>>>>> from ozlabs to vger, causing the mailing list archives not to have captured
>>>>>> the full discussion.
>>>>>>
>>>>>> Is there anything definitive/usable out there?
>>>>>
>>>>> What do you mean by "gpio-generic DT bindings"? A generic binding for a
>>>>> controller, or something else? I think it's best to have a specific
>>>>> binding for each individual controller, so it's always possible to know
>>>>> exactly which controller is present. Now, all the binding definitions
>>>>> should all look the same or as similar as possible for consistency...
>>>>
>>>> I mean DT bindings and DT support for drivers/gpio/gpio-generic.c.
>>>
>>> We should have DT bindings for particular HW, not for a driver. After
>>> all, DT describes HW, not a particular OS's driver.
>>>
>>> The path to adding DT support to gpio-generic.c is to define a binding
>>> for the particular HW you're interested in (which would quite likely
>>> only contain compatible, reg, and perhaps some other standard properties
>>> like interrupts, clocks, power domains, etc.). There would be one
>>> binding and compatible value for each different HW block you want to
>>> support, although they could all share the same schema and definition.
>>> Then update gpio-generic.c to bind to that (those) compatible value(s),
>>> and have some kind of table that maps from compatible value to whatever
>>> configuration structure gpio-generic.c uses internally.
>>
>> This I think is the rub that Geert is getting at.  The driver is
>> generic.
> 
> That's an OS-specific implementation detail that doesn't affect DT.

I got an off-list poke that this is being worked on, so I don't want to
inflame things.  But it's not really.  The hardware is presenting a
generic bit of functionality.  The only thing missing here is a
standards body declaring this a Whatever 1.0 compliant Doodad(tm).

>> You feed it a little info and it Just Works.
> 
> But, this information historically is a platform data structure in a
> board file, right? That means that historically for every new board
> using the driver, you needed to edit kernel code (the board file) to
> provide that platform data. If with DT you still need to edit kernel
> code (the driver) to add support for the HW. So, the situation with DT
> is no worse that the situation with board files.
> 
>> Having to patch
>> the generic driver N times for vendor,foo-gpio would be a step
>> backwards.
> 
> In fact, with DT you now edit the driver once per SoC/chip that embeds a
> particular GPIO controller IP block, rather than once per board that
> uses the IP block. That's likely a lower number of code edits, so you
> have gained something already.
> 
>> How do we have a binding here that lets us be as flexible as
>> we are today?
> 
> I think we already have that - something better in fact.

Putting on my old arch/ppc guy hat, "look we moved the editing/conflict
mess to another place, and it's a less messy now" never bought me much
with Paul/Ben other than "but it shows we can do better, everything is
so close".

So, I hope there's some way we can get to the high level point where
there's some way to say "I have a simple $foo as described &here" and
all of the various blocks that every vendor does themselves, but doesn't
require a per vendor driver Just Work without editing files.

-- 
Tom
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux