Message ID | 20160912094733.21501-2-richard.genoud@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Sep 12, 2016 at 11:47:31AM +0200, Richard Genoud wrote: > This function returns true if CTS and RTS are used as GPIOs. > Some drivers (like atmel_serial) needs to know if the flow control is > handled by the controller or by GPIOs. > > Signed-off-by: Richard Genoud <richard.genoud@gmail.com> > --- > drivers/tty/serial/serial_mctrl_gpio.c | 8 ++++++++ > drivers/tty/serial/serial_mctrl_gpio.h | 10 ++++++++++ > 2 files changed, 18 insertions(+) > > diff --git a/drivers/tty/serial/serial_mctrl_gpio.c b/drivers/tty/serial/serial_mctrl_gpio.c > index d2da6aa7f27d..93bed8c99796 100644 > --- a/drivers/tty/serial/serial_mctrl_gpio.c > +++ b/drivers/tty/serial/serial_mctrl_gpio.c > @@ -17,6 +17,7 @@ > #include <linux/err.h> > #include <linux/device.h> > #include <linux/irq.h> > +#include <linux/err.h> > #include <linux/gpio/consumer.h> > #include <linux/termios.h> > #include <linux/serial_core.h> > @@ -72,6 +73,13 @@ struct gpio_desc *mctrl_gpio_to_gpiod(struct mctrl_gpios *gpios, > } > EXPORT_SYMBOL_GPL(mctrl_gpio_to_gpiod); > > +bool mctrl_gpio_use_rtscts(struct mctrl_gpios *gpios) > +{ > + return !IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(gpios, UART_GPIO_CTS)) && > + !IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(gpios, UART_GPIO_RTS)); mctrl_gpio_to_gpiod cannot return an error pointer. So this is (surprise!) a wrong usage of IS_ERR_OR_NULL. Best regards Uwe
2016-09-22 15:14 GMT+02:00 Uwe Kleine-König <u.kleine-koenig@pengutronix.de>: > On Mon, Sep 12, 2016 at 11:47:31AM +0200, Richard Genoud wrote: >> This function returns true if CTS and RTS are used as GPIOs. >> Some drivers (like atmel_serial) needs to know if the flow control is >> handled by the controller or by GPIOs. >> >> Signed-off-by: Richard Genoud <richard.genoud@gmail.com> >> --- >> drivers/tty/serial/serial_mctrl_gpio.c | 8 ++++++++ >> drivers/tty/serial/serial_mctrl_gpio.h | 10 ++++++++++ >> 2 files changed, 18 insertions(+) >> >> diff --git a/drivers/tty/serial/serial_mctrl_gpio.c b/drivers/tty/serial/serial_mctrl_gpio.c >> index d2da6aa7f27d..93bed8c99796 100644 >> --- a/drivers/tty/serial/serial_mctrl_gpio.c >> +++ b/drivers/tty/serial/serial_mctrl_gpio.c >> @@ -17,6 +17,7 @@ >> #include <linux/err.h> >> #include <linux/device.h> >> #include <linux/irq.h> >> +#include <linux/err.h> >> #include <linux/gpio/consumer.h> >> #include <linux/termios.h> >> #include <linux/serial_core.h> >> @@ -72,6 +73,13 @@ struct gpio_desc *mctrl_gpio_to_gpiod(struct mctrl_gpios *gpios, >> } >> EXPORT_SYMBOL_GPL(mctrl_gpio_to_gpiod); >> >> +bool mctrl_gpio_use_rtscts(struct mctrl_gpios *gpios) >> +{ >> + return !IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(gpios, UART_GPIO_CTS)) && >> + !IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(gpios, UART_GPIO_RTS)); > > mctrl_gpio_to_gpiod cannot return an error pointer. So this is > (surprise!) a wrong usage of IS_ERR_OR_NULL. I see, your commit 1d267ea6539f266352f ("serial: mctrl-gpio: simplify init routine") removed the need of IS_ERR_OR_NULL(). I'll change that. Thanks ! Richard.
diff --git a/drivers/tty/serial/serial_mctrl_gpio.c b/drivers/tty/serial/serial_mctrl_gpio.c index d2da6aa7f27d..93bed8c99796 100644 --- a/drivers/tty/serial/serial_mctrl_gpio.c +++ b/drivers/tty/serial/serial_mctrl_gpio.c @@ -17,6 +17,7 @@ #include <linux/err.h> #include <linux/device.h> #include <linux/irq.h> +#include <linux/err.h> #include <linux/gpio/consumer.h> #include <linux/termios.h> #include <linux/serial_core.h> @@ -72,6 +73,13 @@ struct gpio_desc *mctrl_gpio_to_gpiod(struct mctrl_gpios *gpios, } EXPORT_SYMBOL_GPL(mctrl_gpio_to_gpiod); +bool mctrl_gpio_use_rtscts(struct mctrl_gpios *gpios) +{ + return !IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(gpios, UART_GPIO_CTS)) && + !IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(gpios, UART_GPIO_RTS)); +} +EXPORT_SYMBOL_GPL(mctrl_gpio_use_rtscts); + unsigned int mctrl_gpio_get(struct mctrl_gpios *gpios, unsigned int *mctrl) { enum mctrl_gpio_idx i; diff --git a/drivers/tty/serial/serial_mctrl_gpio.h b/drivers/tty/serial/serial_mctrl_gpio.h index fa000bcff217..c34269733c62 100644 --- a/drivers/tty/serial/serial_mctrl_gpio.h +++ b/drivers/tty/serial/serial_mctrl_gpio.h @@ -101,6 +101,11 @@ void mctrl_gpio_enable_ms(struct mctrl_gpios *gpios); */ void mctrl_gpio_disable_ms(struct mctrl_gpios *gpios); +/* + * Return true if both CTS and RTS are used with GPIOs + */ +bool mctrl_gpio_use_rtscts(struct mctrl_gpios *gpios); + #else /* GPIOLIB */ static inline @@ -152,6 +157,11 @@ static inline void mctrl_gpio_disable_ms(struct mctrl_gpios *gpios) { } +static inline bool mctrl_gpio_use_rtscts(struct mctrl_gpios *gpios) +{ + return false; +} + #endif /* GPIOLIB */ #endif
This function returns true if CTS and RTS are used as GPIOs. Some drivers (like atmel_serial) needs to know if the flow control is handled by the controller or by GPIOs. Signed-off-by: Richard Genoud <richard.genoud@gmail.com> --- drivers/tty/serial/serial_mctrl_gpio.c | 8 ++++++++ drivers/tty/serial/serial_mctrl_gpio.h | 10 ++++++++++ 2 files changed, 18 insertions(+)