Hi Schrempf, On Thu, Aug 1, 2019 at 9:47 AM Schrempf Frieder <frieder.schrempf@xxxxxxxxxx> wrote: > > From: Frieder Schrempf <frieder.schrempf@xxxxxxxxxx> > > If CONFIG_GPIOLIB is not enabled, mctrl_gpio_init() and > mctrl_gpio_init_noauto() will currently return an error pointer with > -ENOSYS. As the mctrl GPIOs are usually optional, drivers need to > check for this condition to allow continue probing. > > To avoid the need for this check in each driver, we return NULL > instead, as all the mctrl_gpio_*() functions are skipped anyway. > We also adapt mctrl_gpio_to_gpiod() to be in line with this change. > > Signed-off-by: Frieder Schrempf <frieder.schrempf@xxxxxxxxxx> Looks good to me: Reviewed-by: Fabio Estevam <festevam@xxxxxxxxx> Also adding Geert on Cc as the patch touches sh-sci. Thanks > --- > drivers/tty/serial/serial_mctrl_gpio.c | 3 +++ > drivers/tty/serial/serial_mctrl_gpio.h | 6 +++--- > drivers/tty/serial/sh-sci.c | 2 +- > 3 files changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/tty/serial/serial_mctrl_gpio.c b/drivers/tty/serial/serial_mctrl_gpio.c > index 2b400189be91..54c43e02e375 100644 > --- a/drivers/tty/serial/serial_mctrl_gpio.c > +++ b/drivers/tty/serial/serial_mctrl_gpio.c > @@ -61,6 +61,9 @@ EXPORT_SYMBOL_GPL(mctrl_gpio_set); > struct gpio_desc *mctrl_gpio_to_gpiod(struct mctrl_gpios *gpios, > enum mctrl_gpio_idx gidx) > { > + if (gpios == NULL) > + return NULL; > + > return gpios->gpio[gidx]; > } > EXPORT_SYMBOL_GPL(mctrl_gpio_to_gpiod); > diff --git a/drivers/tty/serial/serial_mctrl_gpio.h b/drivers/tty/serial/serial_mctrl_gpio.h > index b7d3cca48ede..1b2ff503b2c2 100644 > --- a/drivers/tty/serial/serial_mctrl_gpio.h > +++ b/drivers/tty/serial/serial_mctrl_gpio.h > @@ -114,19 +114,19 @@ static inline > struct gpio_desc *mctrl_gpio_to_gpiod(struct mctrl_gpios *gpios, > enum mctrl_gpio_idx gidx) > { > - return ERR_PTR(-ENOSYS); > + return NULL; > } > > static inline > struct mctrl_gpios *mctrl_gpio_init(struct uart_port *port, unsigned int idx) > { > - return ERR_PTR(-ENOSYS); > + return NULL; > } > > static inline > struct mctrl_gpios *mctrl_gpio_init_noauto(struct device *dev, unsigned int idx) > { > - return ERR_PTR(-ENOSYS); > + return NULL; > } > > static inline > diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c > index d18c680aa64b..249325b65ee0 100644 > --- a/drivers/tty/serial/sh-sci.c > +++ b/drivers/tty/serial/sh-sci.c > @@ -3287,7 +3287,7 @@ static int sci_probe_single(struct platform_device *dev, > return ret; > > sciport->gpios = mctrl_gpio_init(&sciport->port, 0); > - if (IS_ERR(sciport->gpios) && PTR_ERR(sciport->gpios) != -ENOSYS) > + if (IS_ERR(sciport->gpios)) > return PTR_ERR(sciport->gpios); > > if (sciport->has_rtscts) { > -- > 2.17.1