Thread (79 messages) 79 messages, 9 authors, 2017-06-19

Re: [PATCH v5 01/10] pinctrl: generic: Add bi-directional and output-enable

From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: 2017-05-12 12:25:28
Also in: linux-gpio, linux-renesas-soc, lkml

Hi Chris,

On Fri, May 12, 2017 at 2:13 PM, Chris Brandt [off-list ref] wrote:
On Friday, May 12, 2017, Geert Uytterhoeven wrote:
quoted
Jacopo, Chris: Would two bits per pin/function (none, input, output,
bidir)
be sufficient?
That makes one u16 per pin. So roughtly 12 ports x 16 pins => 384 bytes.
Plus code to handle it. After all not that bad...
OK...I give up!
If that's what it takes to get it, I'm fine.

NOTE, your math is a little off, the issue is that depending on the
function that you use, you might need to do extra settings, so you'd
have to have a lookup table for every pin & function.
Each pin can have 1 of 8 functions (which is good because a 'byte' has
8 bits).

So,
 12 ports x 16 pins => 384 bytes  (this table would just be for checking if bi-dir is needed)
 12 ports x 16 pins => 384 bytes  (this table would just be for checking if input is needed)
 12 ports x 16 pins => 384 bytes  (this table would just be for checking if input is needed)
         ------------
                     1,152 bytes
12 x 16 = 192, not 384.

Do you need all possible combinations of input, output, and bi-dir?
I assumed they're mutually exclusive. If not, you need 3 bits/pin/function.
But then...there are package variations so you need another entire
table for those parts.
   1,152 bytes x 2 = 2,304 bytes
With packages, do you mean e.g. RZ/A1H vs. RZ/A1L? These indeed differ, but
should use different compatible values.
Or do you mean QFP/BGA256 vs. BGA324? Isn't the former a subset of the latter?
#What we should really do is just make a look-up table (tables) for the
'special' ones. But, we can have that discussion in a different thread.
Yep, depending on what gives the smallest code/data size.
There is still a need for "input-enable" and "output-enable" for the timer
pins. Because, when you choose the pin to be connected to the MTU2 timer,
the pin can be used as either input-capture/output-compare/PWM and that's
the user's choice. So that's probably a valid usage of the generic pin
properties for configuration.
OK.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help