Hello Shawn, On Mon, May 15, 2017 at 10:21:30AM +0800, Shawn Guo wrote: > On Fri, May 12, 2017 at 10:01:50AM +0200, Uwe Kleine-König wrote: > > On Fri, May 12, 2017 at 11:05:38AM +0800, Shawn Guo wrote: > > > I went through the code around requesting a pin, and found that we need > > > to call pinctrl_request_gpio() from gpio driver to get the result you > > > want. In that case, pin_request() will be called with a valid > > > gpio_range as below. > > > > > > pinctrl_request_gpio() > > > pinmux_request_gpio() > > > pin_request(..., gpio_range) > > > > > > Right now, pin_request() is being called with a NULL gpio_range from > > > pinmux_enable_setting(). That gets us the mux_owner rather than > > > gpio_owner for the pin. > > > > But then again I cannot mux a pin to a different function when the gpio > > is requested, right? (Actually I intended to postpone this mail, but sent it instead by accident.) > You will need to free the GPIO before muxing it to a different function, > I think. IMHO this is a bad concept. This makes GPIOs more special than for example PWMs or LEDs. And it breaks some configurations (for example the make-pins-highz-on-idle setup in my previous mails). Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | http://www.pengutronix.de/ | -- 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