On Fri, Sep 05, 2025 at 06:42:23PM -0700, Stefano Stabellini wrote: > On Fri, 5 Sep 2025, dmuk...@xen.org wrote: > > From: Denis Mukhin <dmuk...@ford.com> [..] > > + /* Calculate changes in modem status */ > > + if ( (msr_curr & UART_MSR_CTS) ^ (msr_next & UART_MSR_CTS) ) > > + msr_delta |= UART_MSR_DCTS; > > + if ( (msr_curr & UART_MSR_DSR) ^ (msr_next & UART_MSR_DSR) ) > > + msr_delta |= UART_MSR_DDSR; > > + if ( (msr_curr & UART_MSR_RI) & (msr_next & UART_MSR_RI) ) > > + msr_delta |= UART_MSR_TERI; > > Should this be: > > if ( (msr_curr & UART_MSR_RI) && !(msr_next & UART_MSR_RI) ) > msr_delta |= UART_MSR_TERI; > > ?
Thanks for the catch! TL16C550C spec (7.7.10 Modem Status Register (MSR)) says TERI is set on RI's 0->1 transition: if ( !(msr_curr & UART_MSR_RI) && (msr_next & UART_MSR_RI) )