Hi Richard, On Wed, Aug 21, 2019 at 5:27 PM Richard Genoud <richard.genoud@xxxxxxxxx> wrote: > Le 20/08/2019 à 17:47, Richard Genoud a écrit : > > Le 14/08/2019 à 13:08, Uwe Kleine-König a écrit : > >> On Wed, Aug 14, 2019 at 12:20:33PM +0200, Geert Uytterhoeven wrote: > >>> Hi Uwe, > >>> > >>> On Wed, Aug 14, 2019 at 11:36 AM Uwe Kleine-König > >>> <u.kleine-koenig@xxxxxxxxxxxxxx> wrote: > >>>> On Wed, Aug 14, 2019 at 11:29:22AM +0200, Geert Uytterhoeven wrote: > >>>>> Since commit 1d267ea6539f2663 ("serial: mctrl-gpio: simplify init > >>>>> routine"), mctrl_gpio_init() returns failure if the assignment to any > >>>>> member of the gpio array results in an error pointer. > >>>>> Since commit c359522194593815 ("serial: mctrl_gpio: Avoid probe failures > >>>>> in case of missing gpiolib"), mctrl_gpio_to_gpiod() returns NULL in the > >>>>> !CONFIG_GPIOLIB case. > >>>>> Hence there is no longer a need to check for mctrl_gpio_to_gpiod() > >>>>> returning an error value. A simple NULL check is sufficient. > >>>>> > >>>>> This follows the spirit of commit 445df7ff3fd1a0a9 ("serial: mctrl-gpio: > >>>>> drop usages of IS_ERR_OR_NULL") in the mctrl-gpio core. > >>>>> > >>>>> Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> > >>>>> --- > >>>>> drivers/tty/serial/atmel_serial.c | 12 ++++-------- > >>>>> 1 file changed, 4 insertions(+), 8 deletions(-) > >>>>> > >>>>> diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c > >>>>> index 19a85d6fe3d20541..e9620a81166b7dc1 100644 > >>>>> --- a/drivers/tty/serial/atmel_serial.c > >>>>> +++ b/drivers/tty/serial/atmel_serial.c > >>>>> @@ -303,32 +303,28 @@ static unsigned int atmel_get_lines_status(struct uart_port *port) > >>>>> > >>>>> mctrl_gpio_get(atmel_port->gpios, &ret); > >>>>> > >>>>> - if (!IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(atmel_port->gpios, > >>>>> - UART_GPIO_CTS))) { > >>>>> + if (mctrl_gpio_to_gpiod(atmel_port->gpios, UART_GPIO_CTS)) { > >>>>> if (ret & TIOCM_CTS) > >>>>> status &= ~ATMEL_US_CTS; > >>>>> else > >>>>> status |= ATMEL_US_CTS; > >>>>> } > >>>> > >>>> The change is fine, but it seems the atmel driver doesn't use mctrl_gpio > >>>> as expected (at least as expected by me). IMHO driving the hardware > >>>> function of the CTS pin shouldn't be conditional on the presence of a > >>>> cts-gpio. Is there a reason not to just drop the if completely? > >>> > >>> The above code returns the hardware status if CTS is not a GPIO, and > >>> returns (overrides with) the GPIO status if CTS is a GPIO. > >>> Isn't that correct, or am I missing something? > >> > >> I took a deeper look into this driver now. The task for > >> atmel_get_lines_status() isn't to implement the get_mctrl() callback. > >> > >> Instead this is called in the irqhandler to set ATMEL_US_RI in a > >> "pending" value that then later in atmel_handle_status() is translated > >> to a "ring" event that is handled there. > >> > >> So the right cleanup would be to let atmel_get_lines_status() just be > >> > >> return atmel_uart_readl(port, ATMEL_US_CSR); > >> > >> . If something happend on the lines implemented as gpio the driver's irq > >> function isn't called anyhow. > > > > I'd like to give it a good test to be sure, and I'll get back to you. > > So, Uwe is right. > Since commit ce59e48fdbad ("serial: mctrl_gpio: implement interrupt handling"), > atmel_get_lines_status() can be completly killed and replaced by : > atmel_uart_readl(port, ATMEL_US_CSR); > > Geert, do you want to send a patch for that, or should I do it ? Feel free to send a patch. I don't have the Atmel hardware anyway. Thanks! Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds