Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sc16is7xx: implemented get_mctrl

Add support for manual getting the modem control lines.

Signed-off-by: Maarten Brock <m.brock@vanmierlo.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Maarten Brock and committed by
Greg Kroah-Hartman
a3f0b77f b7dfdea8

+10 -4
+10 -4
drivers/tty/serial/sc16is7xx.c
··· 822 822 823 823 static unsigned int sc16is7xx_get_mctrl(struct uart_port *port) 824 824 { 825 - /* DCD and DSR are not wired and CTS/RTS is handled automatically 826 - * so just indicate DSR and CAR asserted 827 - */ 828 - return TIOCM_DSR | TIOCM_CAR; 825 + unsigned int msr; 826 + unsigned int ret = 0; 827 + 828 + msr = sc16is7xx_port_read(port, SC16IS7XX_MSR_REG); 829 + 830 + ret |= (msr & SC16IS7XX_MSR_CTS_BIT) ? TIOCM_CTS : 0; 831 + ret |= (msr & SC16IS7XX_MSR_DSR_BIT) ? TIOCM_DSR : 0; 832 + ret |= (msr & SC16IS7XX_MSR_RI_BIT) ? TIOCM_RNG : 0; 833 + ret |= (msr & SC16IS7XX_MSR_CD_BIT) ? TIOCM_CAR : 0; 834 + return ret; 829 835 } 830 836 831 837 static void sc16is7xx_set_mctrl(struct uart_port *port, unsigned int mctrl)