Thread (49 messages) flat view 49 messages, 5 authors, 2012-02-13

Re: Pinmux bindings proposal V2

From: Tony Lindgren <hidden>
Date: 2012-01-30 17:49:28
Also in: linux-arm-kernel, lkml

* Shawn Guo [off-list ref] [120129 18:30]:
On Fri, Jan 27, 2012 at 07:43:36AM -0800, Simon Glass wrote:
...
quoted
The cost of the pmx@dta node is about 12 bytes for the header (it
depends on the length of the name), and each of the properties above
is 16 bytes. So in total this node is 76 bytes. If we have 250 pins
being muxed as Tegra3 then this is about 20KB (including a bit of
slack for longer names). My point about being able to 'optimise out'
some of these remains, though, but probably not for the kernel.

Stephen's 'mux' property uses 12 bytes plus 8 bytes per pin/group (I
am removing the prefixes):

                       mux =
                               <PG_DTA   MUX_SDIO1>
                               <PG_DTD   MUX_SDIO1>;

so 28 bytes. What I proposed would use (12 + 2 * 16) per pin/group, or
44 bytes (60% bigger):
It's not only about size but also run-time tree travelling efficiency.
Your proposal requires every single pin show as a node in device tree.
Looking at these for_each_node_by_*() APIs in include/linux/of.h, you
might agree we should avoid bloating device tree with so many nodes.
And that's why I'm suggesting two bindings: A minimal pinctrl-static
binding and more verbose pinctrl-dynamic binding.

AFAIK the number of pinctrl-dynamic bindings needed are just a fraction
of the pinctrl-static bindings. So the extra parsing needed for a few
pinctrl-dynamic bindings should not matter.

Sure it would be nice to have it all in a single binding, but these
bindings have conflicting requirements. So it may not be possible to
do it in a single binding in an efficient way.

Regards,

Tony
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help