[PATCH v4 2/5] dt-bindings: gpio: add raspberry pi GPIO expander binding

Rob Herring robh at kernel.org
Tue Feb 20 05:39:58 PST 2018


On Tue, Feb 20, 2018 at 1:34 AM, Baruch Siach <baruch at tkos.co.il> wrote:
> Hi Rob,
>
> Thanks again for reviewing.
>
> On Tue, Feb 13, 2018 at 05:20:07PM -0600, Rob Herring wrote:
>> On Wed, Feb 07, 2018 at 08:35:23PM +0200, Baruch Siach wrote:
>> > +Raspberry Pi GPIO expander
>> > +
>> > +The Raspberry Pi 3 GPIO expander is controlled by the VC4 firmware. The
>> > +firmware exposes a mailbox interface that allows the ARM core to control the
>> > +GPIO lines on the expander.
>> > +
>> > +Required properties:
>> > +
>> > +- compatible : Should be "raspberrypi,firmware-gpio"
>> > +- gpio-controller : Marks the device node as a gpio controller
>> > +- #gpio-cells : Should be two.  The first cell is the pin number, and
>> > +  the second cell is used to specify the gpio polarity:
>> > +  0 = active high
>> > +  1 = active low
>> > +- firmware : Reference to the RPi firmware device node
>>
>> This is the parent node. You don't need it.
>
> OK. I guess of_get_parent() will do the trick.
>
>> > +Example:
>> > +
>> > +firmware: firmware {
>> > +   compatible = "raspberrypi,bcm2835-firmware";
>> > +   mboxes = <&mailbox>;
>>
>> No, sorry. /firmware is the container of firmware nodes. So
>> something like this:
>>
>> firmware {
>>       rpi-firmware {
>>               compatible = "raspberrypi,bcm2835-firmware";
>>               mboxes = <&mailbox>;
>>               gpio {
>>                compatible = "raspberrypi,firmware-gpio";
>>
>>               };
>>       };
>> };
>
> This is the hierarchy we currently have at arch/arm/boot/dts/bcm2835-rpi.dtsi:
>
> / {
>         soc {
>                 firmware: firmware {
>                         compatible = "raspberrypi,bcm2835-firmware";
>                         mboxes = <&mailbox>;
>                 };
>         };
> };
>
> Are you suggesting to add another container between 'soc' and 'firmware'? Or
> is it the 'firmware' node name that we need to change to 'rpi-firmware'?

Ah, I guess RPi missed following putting its firmware node under a
/firmware node rather than under /soc. We try to put all firmware
interfaces (you can have more than one) under /firmware. So just as I
wrote out. But you don't need to change that for this.

Just noting this is a child of "raspberrypi,bcm2835-firmware" is enough.

Rob



More information about the linux-arm-kernel mailing list