int wait_for_xmitr(void) { int tmout = SPK_XMITR_TIMEOUT; if ((synth->alive) && (timeouts >= NUM_DISABLE_TIMEOUTS)) { pr_warn("%s: too many timeouts, deactivating speakup\n", synth->long_name); synth->alive = 0; speakup_start_ttys(); timeouts = 0; return 0; } while (spk_serial_tx_busy()) { if (--tmout == 0) { pr_warn("%s: timed out (tx busy)\n", synth->long_name); timeouts++; return 0; } udelay(1); } tmout = SPK_CTS_TIMEOUT; while (!((inb_p(speakup_info.port_tts + UART_MSR)) & UART_MSR_CTS)) { if (--tmout == 0) { timeouts++; return 0; } udelay(1); } timeouts = 0; return 1; }
static void synth_flush(struct spk_synth *synth) { int timeout = SPK_XMITR_TIMEOUT; while (spk_serial_tx_busy()) { if (!--timeout) break; udelay(1); } outb(SYNTH_CLEAR, speakup_info.port_tts); }
int spk_wait_for_xmitr(void) { int tmout = SPK_XMITR_TIMEOUT; if ((synth->alive) && (timeouts >= NUM_DISABLE_TIMEOUTS)) { pr_warn("%s: too many timeouts, deactivating speakup\n", synth->long_name); synth->alive = 0; /* No synth any more, so nobody will restart TTYs, and we thus * need to do it ourselves. Now that there is no synth we can * let application flood anyway */ speakup_start_ttys(); timeouts = 0; return 0; } while (spk_serial_tx_busy()) { if (--tmout == 0) { pr_warn("%s: timed out (tx busy)\n", synth->long_name); timeouts++; return 0; } udelay(1); } tmout = SPK_CTS_TIMEOUT; while (!((inb_p(speakup_info.port_tts + UART_MSR)) & UART_MSR_CTS)) { /* CTS */ if (--tmout == 0) { /* pr_warn("%s: timed out (cts)\n", * synth->long_name); */ timeouts++; return 0; } udelay(1); } timeouts = 0; return 1; }