Fix CTS handling in pmac-zilog.c
PATCH 1/1 Fix CTS handling in pmac-zilog.c
(From: Paul Mackerras <[email protected]>)
This patch fixes a bug in the pmac-zilog driver where if you enable CRTSCTS mode, it won't output data when CTS is asserted. On powermacs, the CTS input is inverted. It also fixes a logic bug in testing for CTS and DCD changes.
drivers/serial/pmac_zilog.c +5 -4
@@ -352,13 +352,14 @@/* The Zilog just gives us an interrupt when DCD/CTS/etc. change. * But it does not tell us which bit has changed, we have to keep * track of this ourselves. +* The CTS input is inverted for some reason. -- paulus */ -if ((status &DCD ) ^ uap->prev_status) +if ((status ^ uap->prev_status) &DCD )uart_handle_dcd_change (&uap->port, (status &DCD )); -if ((status &CTS ) ^ uap->prev_status) +if ((status ^ uap->prev_status) &CTS )uart_handle_cts_change (&uap->port, - (status &CTS )); + !(status &CTS ));wake_up_interruptible (&uap->port.info->delta_msr_wait); }
@@ -595,7 +596,7 @@ ret |=TIOCM_CAR ;if (status &SYNC_HUNT ) ret |=TIOCM_DSR ; -if (status &CTS ) +if (!(status &CTS )) ret |=TIOCM_CTS ;return ret;
Signature · 1 line
Benjamin Herrenschmidt <[email protected]>