G Gregory CLEMENT #
Message details and related content
Hi, On mar., f?vr. 02 2016, One Thousand Gnomes [off-list ref] wrote:
quoted
+static void mvebu_uart_set_termios(struct uart_port *port, + struct ktermios *termios, + struct ktermios *old) +{ + unsigned long flags; + unsigned int baud; + + spin_lock_irqsave(&port->lock, flags); + + port->read_status_mask = STAT_RX_RDY | STAT_OVR_ERR | + STAT_TX_RDY | STAT_TX_FIFO_FUL; + + if (termios->c_iflag & INPCK) + port->read_status_mask |= STAT_FRM_ERR | STAT_PAR_ERR; + + port->ignore_status_mask = 0; + if (termios->c_iflag & IGNPAR) + port->ignore_status_mask |= + STAT_FRM_ERR | STAT_PAR_ERR | STAT_OVR_ERR; + + if ((termios->c_cflag & CREAD) == 0) + port->ignore_status_mask |= STAT_RX_RDY | STAT_BRK_ERR;If you don't support parity or charactive size then you should be forcing those bits in the tty->termios so that the caller sees what settings they get. tty_termios_copy_hw is close to what you need except that you can support IGNPAR.
OK thanks for the pointer.
You also want to provide the actual baud rate chosen (see how 8250.c does it using tty_termios_encode_baud_rate().quoted
+static struct uart_driver mvebu_uart_driver = { + .owner = THIS_MODULE, + .driver_name = "serial", + .dev_name = "ttyS", + .major = TTY_MAJOR, + .minor = 64,NAK TTY_MAJOR 64+ is the 8250 driver and ttyS is the 8250 driver name. You should be using a dynamic major (0) for all new drivers and you need to pick a different and unused ttyXXX format name.
I missed this one, I will remove .major and .minor and use our own
ttyXX.
Thanks,
Gregory
Alan
-- Gregory Clement, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com