Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 727 → Rev 729

/shark/trunk/drivers/serial/scomirq.c
44,7 → 44,7
 
struct SCom_Access_Type SCom_Access;
 
unsigned SCom_Error;
unsigned SCom_Error[4];
 
struct TX_data_t{
int ptr;
52,7 → 52,7
BYTE buf[100];
};
 
static struct TX_data_t SCom_TX_data;
static struct TX_data_t SCom_TX_data[4];
 
/*****************************
* Functions
143,7 → 143,7
 
f = kern_fsave();
 
SCom_Error = 0;
SCom_Error[port] = 0;
handler_set(com_irq[port], com_irq_sel, NIL, TRUE);
com_irq_disable(port, ALL_IRQ); /* Disable interrupts */
 
172,11 → 172,11
f = kern_fsave();
 
/* Transmit first byte of message */
SCom_TX_data.ptr = 0;
SCom_TX_data.len = len;
SCom_TX_data[port].ptr = 0;
SCom_TX_data[port].len = len;
if (len < 100) {
memcpy(SCom_TX_data.buf, m, len);
com_write(port, THR, SCom_TX_data.buf[SCom_TX_data.ptr++]);
memcpy(SCom_TX_data[port].buf, m, len);
com_write(port, THR, SCom_TX_data[port].buf[SCom_TX_data[port].ptr++]);
com_irq_enable(port, THRE_IRQ);
}
 
192,8 → 192,8
 
void THRE_handler (unsigned port) /* Transmit Data Register Ready for next byte */
{
if (SCom_TX_data.ptr < SCom_TX_data.len)
com_write(port, THR, SCom_TX_data.buf[SCom_TX_data.ptr++]);
if (SCom_TX_data[port].ptr < SCom_TX_data[port].len)
com_write(port, THR, SCom_TX_data[port].buf[SCom_TX_data[port].ptr++]);
else
{
com_irq_disable(port, THRE_IRQ);
209,7 → 209,7
 
void LSR_handler (unsigned port) /* break = 8, frame = 4, parity = 2, RBR overrun = 1*/
{
SCom_Error = (com_read(port, LSR) & (bit4|bit3|bit2|bit1) ) >> 1;
SCom_Error[port] = (com_read(port, LSR) & (bit4|bit3|bit2|bit1) ) >> 1;
com_irq_disable(port, ALL_IRQ); /* Disable all interrupts */
SCom_Access.confirm(port, COM_ERROR);
}