|
@@ -1054,8 +1054,8 @@ static int poll_wait_key(char *obuf, struct uart_cpm_port *pinfo)
|
|
|
/* Get the address of the host memory buffer.
|
|
|
*/
|
|
|
bdp = pinfo->rx_cur;
|
|
|
- while (bdp->cbd_sc & BD_SC_EMPTY)
|
|
|
- ;
|
|
|
+ if (bdp->cbd_sc & BD_SC_EMPTY)
|
|
|
+ return NO_POLL_CHAR;
|
|
|
|
|
|
/* If the buffer address is in the CPM DPRAM, don't
|
|
|
* convert it.
|
|
@@ -1090,7 +1090,11 @@ static int cpm_get_poll_char(struct uart_port *port)
|
|
|
poll_chars = 0;
|
|
|
}
|
|
|
if (poll_chars <= 0) {
|
|
|
- poll_chars = poll_wait_key(poll_buf, pinfo);
|
|
|
+ int ret = poll_wait_key(poll_buf, pinfo);
|
|
|
+
|
|
|
+ if (ret == NO_POLL_CHAR)
|
|
|
+ return ret;
|
|
|
+ poll_chars = ret;
|
|
|
pollp = poll_buf;
|
|
|
}
|
|
|
poll_chars--;
|