Re: [PATCH v1 1/3] gpio: defer probe if pinctrl cannot be found

From: Stephen Warren
Date: Fri Jul 10 2015 - 13:07:53 EST


On 07/10/2015 10:21 AM, Tomeu Vizoso wrote:
On 10 July 2015 at 17:27, Stephen Warren <swarren@xxxxxxxxxxxxx> wrote:
On 07/10/2015 03:29 AM, Tomeu Vizoso wrote:

On 1 July 2015 at 19:36, Rob Herring <robherring2@xxxxxxxxx> wrote:

On Wed, Jul 1, 2015 at 7:45 AM, Tomeu Vizoso <tomeu.vizoso@xxxxxxxxxxxxx>
wrote:

When an OF node has a pin range for its GPIOs, return -EPROBE_DEFER if
the pin controller isn't available.

Otherwise, the GPIO range wouldn't be set at all unless the pin
controller probed always before the GPIO chip.

With this change, the probe of the GPIO chip will be deferred and will
be retried at a later point, hopefully once the pin controller has been
registered and probed already.


This will break cases where the pinctrl driver does not exist, but the
DT contains pinctrl bindings. We can have similar problems already
with clocks though. However, IMO this problem is a bit different in
that pinctrl is more likely entirely optional while clocks are often
required. You may do all pin setup in bootloader/firmware on some
boards and not others. Of course then why put pinctrl in the DT in
that case? They could be present just due to how chip vs. board dts
files are structured.


I see. My instinct tells me that it would be better if the gpio-ranges
property was set in the board dts, but I don't really know what each
mach does with its DTSs.


That doesn't make sense; the mapping between GPIO controller pins and pin
controller pins is a property of the SoC not the board.

From what Rob said above, apparently some boards will rely on the pin
setup done by the bootloader, and some other boards with the same soc
will want to do it in the kernel. So it's not really a difference in
the hw itself, but what expectations exist about the firmware on a
specific board.

Sure, but none of that changes the mapping between the GPIO and pin controller pins.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/