···822822823823static unsigned int sc16is7xx_get_mctrl(struct uart_port *port)824824{825825- /* DCD and DSR are not wired and CTS/RTS is handled automatically826826- * so just indicate DSR and CAR asserted827827- */828828- return TIOCM_DSR | TIOCM_CAR;825825+ unsigned int msr;826826+ unsigned int ret = 0;827827+828828+ msr = sc16is7xx_port_read(port, SC16IS7XX_MSR_REG);829829+830830+ ret |= (msr & SC16IS7XX_MSR_CTS_BIT) ? TIOCM_CTS : 0;831831+ ret |= (msr & SC16IS7XX_MSR_DSR_BIT) ? TIOCM_DSR : 0;832832+ ret |= (msr & SC16IS7XX_MSR_RI_BIT) ? TIOCM_RNG : 0;833833+ ret |= (msr & SC16IS7XX_MSR_CD_BIT) ? TIOCM_CAR : 0;834834+ return ret;829835}830836831837static void sc16is7xx_set_mctrl(struct uart_port *port, unsigned int mctrl)