diff --git a/minix/drivers/tty/tty/arch/i386/rs232.c b/minix/drivers/tty/tty/arch/i386/rs232.c index d65107740..2bcbee5d5 100644 --- a/minix/drivers/tty/tty/arch/i386/rs232.c +++ b/minix/drivers/tty/tty/arch/i386/rs232.c @@ -11,6 +11,9 @@ #if NR_RS_LINES > 0 +/* switch RTS/CTS on/off */ +// #define UART_RTSCTS_OFF + /* 8250 constants. */ #define UART_FREQ 115200L /* timer frequency */ @@ -86,6 +89,18 @@ * dropped by close of the device). * OUT2 is also kept high all the time. */ +#ifdef UART_RTSCTS_OFF +#define istart(rs) \ + (rs)->idevready = TRUE + +#define istop(rs) \ + (rs)->idevready = FALSE + +/* Macro to tell if device is ready. The rs->cts field is set to MS_CTS if + * CLOCAL is in effect for a line without a CTS wire. + */ +#define devready(rs) MS_CTS +#else #define istart(rs) \ (sys_outb((rs)->modem_ctl_port, MC_OUT2 | MC_RTS | MC_DTR), \ (rs)->idevready = TRUE) @@ -98,6 +113,8 @@ */ #define devready(rs) ((my_inb(rs->modem_status_port) | rs->cts) & MS_CTS) +#endif + /* Macro to tell if transmitter is ready. */ #define txready(rs) (my_inb(rs->line_status_port) & LS_TRANSMITTER_READY) @@ -507,9 +524,12 @@ void rs_init(tty_t *tp) } rs_irq_set |= (1 << irq); - +#ifdef UART_RTSCTS_OFF + sys_outb(rs->int_enab_port, IE_LINE_STATUS_CHANGE | IE_RECEIVER_READY | IE_TRANSMITTER_READY); +#else sys_outb(rs->int_enab_port, IE_LINE_STATUS_CHANGE | IE_MODEM_STATUS_CHANGE | IE_RECEIVER_READY | IE_TRANSMITTER_READY); +#endif /* Fill in TTY function hooks. */ tp->tty_devread = rs_read;