Subject: [PATCH 2/5] ARM: dts: OMAP2+: create a DT header for GPIO

From: [email-masked] (Stephen Warren)
Date: Wed, 22 May 2013 10:03:26 -0600

On 05/22/2013 10:00 AM, Florian Vaussard wrote:
> Hello Stephan, Tony,
> 
> Thank you for your reviews.
> 
> On 05/22/2013 05:34 PM, Tony Lindgren wrote:
>> * Stephen Warren <[email-masked]> [130522 08:32]:
>>> On 05/22/2013 08:27 AM, Florian Vaussard wrote:
>>>> Define the OMAP_GPIO macro to conveniently use GPIO inside OMAP DT.
>>>> For example:
>>>>
>>>>     gpios = <&gpio6 3 0>;  /* GPIO 163 */
>>>>
>>>> can be replaced by
>>>>
>>>>     gpios = OMAP_GPIO(163, 0);
>>>
>>>> diff --git a/include/dt-bindings/gpio/omap-gpio.h
>>>> b/include/dt-bindings/gpio/omap-gpio.h
>>>
>>>> +#define OMAP_GPIO_0_BANK        gpio1
>>>> +#define OMAP_GPIO_1_BANK        gpio1
>>>> +#define OMAP_GPIO_2_BANK        gpio1
>>>> +#define OMAP_GPIO_3_BANK        gpio1
>>>
>>> There are a /lot/ of those. Is this really worth it?
...
> From a board point a view, I consider this macro as being easier to use,
> than having to perform the necessary arithmetic to get the bank + offset
> for each GPIO when converting existing boards or developing new ones.
> 
> But I also agree with you, and I was sad not to find a more elegant
> way. Maybe someone with better preprocessor skills could come up with
> a better solution?

I did a quick bit of searching before, and while cpp is certainly
capable of doing the shifting/masking required to calculate the bank ID
directly, I don't think it's capable of constructing the symbol gpio1 as
opposed to the string "gpio1":-( I'd love to be proven wrong though, but
the torture e.g. cpp "99 bottles of beer on the wall" goes through to
stuff implies it isn't possible.