On 12/09/2016 at 12:50:38 +0200, Richard Genoud wrote : > >> diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c > >> index e9b4fbf88c2d..32154e7231ce 100644 > >> --- a/drivers/tty/serial/atmel_serial.c > >> +++ b/drivers/tty/serial/atmel_serial.c > >> @@ -2130,15 +2130,19 @@ static void atmel_set_termios(struct uart_port *port, struct ktermios *termios, > >> } else if ((termios->c_cflag & CRTSCTS) && > >> !mctrl_gpio_use_rtscts(atmel_port->gpios)) { > >> /* > >> - * RS232 with hardware handshake (RTS/CTS) > >> - * handled by the controller. > >> + * Automatic hardware handshake (RTS/CTS) only work with > >> + * FIFOs or PDC. > >> + * Meaning that on SAM9x5 the controller can't handle > >> + * the hardware handshake (no FIFOs nor PDC on these platforms). > >> */ > >> - if (atmel_use_dma_rx(port) && !atmel_use_fifo(port)) { > >> - dev_info(port->dev, "not enabling hardware flow control because DMA is used"); > >> - termios->c_cflag &= ~CRTSCTS; > >> - } else { > >> + if (atmel_use_pdc_rx(port) || atmel_use_fifo(port)) > >> mode |= ATMEL_US_USMODE_HWHS; > >> - } > >> + else > >> + /* > >> + * The hardware handshake won't be handle by the > >> + * controller but by the driver. > >> + */ > >> + mode |= ATMEL_US_USMODE_NORMAL; > > > > You still need the case where HWHS is impossible and there are no gpio > > configured. You need to inform userspace that the configuration was not > > applied instead of silently ignoring the error. > > Could you explain which case it is ? > The only one I can see is when there's no GPIO declared for RTS/CTS > AND, there's no pin muxed for RTS/CTS either. > > Have you got another example in mind ? > Hum, actually, it is that case. The other one (CRTSCTS and gpios) is handled in the else below. I think you need to keep the termios->c_cflag &= ~CRTSCTS; here so that userspace knows configuring it failed. > > > >> } else { > >> /* RS232 without hadware handshake or controlled by GPIOs */ > >> mode |= ATMEL_US_USMODE_NORMAL; > > -- Alexandre Belloni, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html