Hi Andrew,
Here pinctrl is used to setup what function the group of the pins is
for.
Agreed.
The group of the pins could be configured for the function provided
by the SoC, such as general purpose I/O or specific function such as
ethernet depending on what products or boards you design for various
customers or vendors. Thanks for device tree introducing, it is easy
to find what resources the board needs including the pins usage is
also defined here.
All clear. However, if the ethernet driver has loaded, it means the
device tree says the ethernet should be loaded, unless it happens to
be on some discoverable bus. And so the device tree node for the
ethernet should also contain the needed pinctrl properties. The core
driver code should of seen these properties and already enabled the
correct pinctrl state before the driver probes.
This is how every other driver works. Like i said, i don't think i've
seen any other driver do its own pinctrl. So i just need a simple
description, what is different here, why does this driver need to do
it, when no other does?
Andrew