On Wed, Mar 29, 2017 at 2:38 PM, Chris Brandt <Chris.Brandt@xxxxxxxxxxx> wrote: >> I'm strongly in favour of something like >> pinmux = <PIN(1, 4) | FUNC# | FLAGS>, .... ; >> >> opposed to >> pinmux = <PIN1_4_FUNC#_FLAGS>, ... ; > > > I agree. I like "<PIN(1, 4) | FUNC# | FLAGS>". I don't know if you have seen the Mediatek things really. include/dt-bindings/pinctrl/mt6397-pinfunc.h Example: #define MT6397_PIN_2_SRCLKEN_PERI__FUNC_GPIO2 (MTK_PIN_NO(2) | 0) If you prefer to use preprocessor macros or whatever to make the bitmasks or how you want to organize the constants in your include files is not my concern, do whatever you seem fit, just pack it into a 32bit thing somehow which makes sense from a maintenance point of view. >> Not only because it will save use from having a loong list(*) of macros >> that has to be kept up to date when/if new RZ hardware will arrive, but >> also because of readability and simplicity for down-stream and BSP users. >> Speaking of which, I would like to know what does Chris think of this. > > The list of macros would be very long, especially against the different > packaging version of the RZ/A1 series. 11 ports, 16-pins for each port, 8 different > function options for each pin....2 different package/pin variations. > > And at the end of the day....there is no benefit for the user over just using > a macro. I don't know who has this idea that you could not use macros, certainly not me. Some misunderstanding must be going on. For what I'm concerned you can write hex numbers in the pinmux = <0x12345678>; > The reason for the "FLAGS" is to work around a quirky hardware design (in my opinion). The flags I don't like at all, and think they should be converted to generic pin config because they have nothing to do with muxing. But I will point that out in the specific patch adding them. Yours, Linus Walleij