Hi Vladimir, On Mon, Feb 24, 2014 at 4:42 PM, Vladimir Barinov <vladimir.barinov@xxxxxxxxxxxxxxxxxx> wrote: > Hi Magnus, > > > On 02/24/2014 06:57 AM, Magnus Damm wrote: >> >> Hi Vladimir, >> >> On Mon, Feb 24, 2014 at 1:37 AM,<vladimir.barinov@xxxxxxxxxxxxxxxxxx> >> wrote: >>> >>> From: Vladimir Barinov<vladimir.barinov@xxxxxxxxxxxxxxxxxx> >>> >>> This adds ability to use gpio API at board init_machine level. >>> >>> F.e. it can be used in the following situation. >>> Many reference hardware has onboard switches that selects which >>> periferals >>> to connect to the system. The gpio input state from switches can be used >>> in choosing platform devices runtime in board code instead of >>> ifdefs/defconfig >>> changes. >>> >>> Signed-off-by:<vladimir.barinov@xxxxxxxxxxxxxxxxxx> >>> >>> --- >>> drivers/gpio/gpio-rcar.c | 12 +++++++++++- >>> 1 file changed, 11 insertions(+), 1 deletion(-) >>> >>> Index: build/drivers/gpio/gpio-rcar.c >>> =================================================================== >>> --- build.orig/drivers/gpio/gpio-rcar.c 2014-02-22 23:21:51.456229152 >>> +0400 >>> +++ build/drivers/gpio/gpio-rcar.c 2014-02-22 23:21:52.320229133 >>> +0400 >>> @@ -485,7 +485,17 @@ >>> } >>> }; >>> >>> -module_platform_driver(gpio_rcar_device_driver); >>> +static int __init gpio_rcar_init(void) >>> +{ >>> + return platform_driver_register(&gpio_rcar_device_driver); >>> +} >>> +postcore_initcall(gpio_rcar_init); >>> + >>> +static void __exit gpio_rcar_exit(void) >>> +{ >>> + platform_driver_unregister(&gpio_rcar_device_driver); >>> +} >>> +module_exit(gpio_rcar_exit); >>> >>> MODULE_AUTHOR("Magnus Damm"); >>> MODULE_DESCRIPTION("Renesas R-Car GPIO Driver"); >> >> Hi Vladimir, >> >> Thanks for your help. Good to see that you are working on enabling the >> dual role USB port on Koelsch. >> >> Your current board code is checking some DIP switch value during boot, >> and that kind of early use of GPIO would require a change in the probe >> order like this patch implements. I do however believe that we should >> not implement checking during boot like this. >> >> If you for instance check the legacy Lager USBHS DIP switch code that >> runs during driver probe() then that can run can use GPIO without the >> need for a change like this. So your GPIO user code needs to be >> adjusted. > > Yes, this is true for USBHS that has platform callbacks like > hardware_init/exit. > But this is not acceptable for other devices like EHCI PCI/PHY and others. > So we wouldn't be able to do such fixup for other cases. Right, the USBHS driver has callbacks but PCI-based hardrware like EHCI and OHCI do not have such. But I believe we already have some kind of USB PHY abstraction level and we also have a R-Car Gen2 PHY driver that somehow is integrated together with the PCI-based hardware. Based on that my feeling is that the answer to ID-pin control is there somewhere, and not just once during the boot! =) Cheers, / magnus -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html