forked from Imagelibrary/rtems
termios: Update due to API changes
Termios notifies now the driver about an inactive transmit with the length argument set to zero.
This commit is contained in:
@@ -292,13 +292,12 @@ static int mpc55xx_esci_termios_poll_write( int minor, const char *out,
|
||||
*/
|
||||
static int mpc55xx_esci_termios_write( int minor, const char *out, size_t n)
|
||||
{
|
||||
mpc55xx_esci_driver_entry *e = &mpc55xx_esci_driver_table [minor];
|
||||
rtems_interrupt_level level;
|
||||
if (n > 0) {
|
||||
mpc55xx_esci_driver_entry *e = &mpc55xx_esci_driver_table [minor];
|
||||
|
||||
rtems_interrupt_disable(level);
|
||||
e->regs->DR.B.D = out [0];
|
||||
e->transmit_in_progress = true;
|
||||
rtems_interrupt_enable(level);
|
||||
e->regs->DR.B.D = out [0];
|
||||
e->transmit_in_progress = true;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -144,10 +144,13 @@ ssize_t m5xx_uart_write(
|
||||
size_t len
|
||||
)
|
||||
{
|
||||
volatile m5xxSCIRegisters_t *regs = sci_descs[minor].regs;
|
||||
if (len > 0) {
|
||||
volatile m5xxSCIRegisters_t *regs = sci_descs[minor].regs;
|
||||
|
||||
regs->scdr = *buf; /* start transmission */
|
||||
regs->sccr1 |= QSMCM_SCI_TIE; /* enable interrupt */
|
||||
}
|
||||
|
||||
regs->scdr = *buf; /* start transmission */
|
||||
regs->sccr1 |= QSMCM_SCI_TIE; /* enable interrupt */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1090,12 +1090,15 @@ m8xx_uart_write(
|
||||
size_t len
|
||||
)
|
||||
{
|
||||
while( (TxBd[minor]->status) & M8260_BD_READY );
|
||||
if (len > 0) {
|
||||
while( (TxBd[minor]->status) & M8260_BD_READY );
|
||||
|
||||
rtems_cache_flush_multiple_data_lines( buf, len );
|
||||
TxBd[minor]->buffer = (char *) buf;
|
||||
TxBd[minor]->length = len;
|
||||
TxBd[minor]->status = M8260_BD_READY | M8260_BD_WRAP | M8260_BD_INTERRUPT;
|
||||
}
|
||||
|
||||
rtems_cache_flush_multiple_data_lines( buf, len );
|
||||
TxBd[minor]->buffer = (char *) buf;
|
||||
TxBd[minor]->length = len;
|
||||
TxBd[minor]->status = M8260_BD_READY | M8260_BD_WRAP | M8260_BD_INTERRUPT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -271,8 +271,11 @@ spiPollRead (int minor)
|
||||
static int
|
||||
spiInterruptWrite (int minor, const char *buf, int len)
|
||||
{
|
||||
port->SPTB = *buf; /* write char to send */
|
||||
port->SPTC |= TCRIntEnabled; /* always enable tx interrupt */
|
||||
if (len > 0) {
|
||||
port->SPTB = *buf; /* write char to send */
|
||||
port->SPTC |= TCRIntEnabled; /* always enable tx interrupt */
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -296,8 +296,11 @@ spiStopRemoteTx (int minor)
|
||||
|
||||
static ssize_t InterruptWrite (int minor, const char *buf, size_t len)
|
||||
{
|
||||
port->IER |= IER_XMT; /* always enable tx interrupt */
|
||||
port->THR = *buf; /* write char to send */
|
||||
if (len > 0) {
|
||||
port->IER |= IER_XMT; /* always enable tx interrupt */
|
||||
port->THR = *buf; /* write char to send */
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user