summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/m68k
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-06-24 17:29:11 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-06-25 17:03:21 +0200
commite18db9f0cffcb143e5fdec27539efb417cb4ebf3 (patch)
tree804edba552541bea8d5ea5c38680903373bf6c27 /c/src/lib/libbsp/m68k
parentbsps/arm: Rename function (diff)
downloadrtems-e18db9f0cffcb143e5fdec27539efb417cb4ebf3.tar.bz2
termios: Update due to API changes
Termios notifies now the driver about an inactive transmit with the length argument set to zero.
Diffstat (limited to 'c/src/lib/libbsp/m68k')
-rw-r--r--c/src/lib/libbsp/m68k/av5282/console/console.c17
-rw-r--r--c/src/lib/libbsp/m68k/gen68340/console/console.c12
-rw-r--r--c/src/lib/libbsp/m68k/gen68360/console/console.c9
-rw-r--r--c/src/lib/libbsp/m68k/genmcf548x/console/console.c17
-rw-r--r--c/src/lib/libbsp/m68k/mcf52235/console/console.c17
-rw-r--r--c/src/lib/libbsp/m68k/mcf5225x/console/console.c17
-rw-r--r--c/src/lib/libbsp/m68k/mcf5235/console/console.c17
-rw-r--r--c/src/lib/libbsp/m68k/mcf5329/console/console.c17
-rw-r--r--c/src/lib/libbsp/m68k/mvme167/console/console.c62
-rw-r--r--c/src/lib/libbsp/m68k/uC5282/console/console.c17
10 files changed, 95 insertions, 107 deletions
diff --git a/c/src/lib/libbsp/m68k/av5282/console/console.c b/c/src/lib/libbsp/m68k/av5282/console/console.c
index 25f012237e..85ec37fcc0 100644
--- a/c/src/lib/libbsp/m68k/av5282/console/console.c
+++ b/c/src/lib/libbsp/m68k/av5282/console/console.c
@@ -382,18 +382,15 @@ static ssize_t IntUartInterruptWrite(
size_t len
)
{
- rtems_interrupt_level level;
-
- rtems_interrupt_disable(level);
+ if (len > 0) {
+ /* write out character */
+ MCF5282_UART_UTB(minor) = *buf;
- /* write out character */
- MCF5282_UART_UTB(minor) = *buf;
-
- /* enable tx interrupt */
- IntUartInfo[minor].uimr |= MCF5282_UART_UIMR_TXRDY;
- MCF5282_UART_UIMR(minor) = IntUartInfo[minor].uimr;
+ /* enable tx interrupt */
+ IntUartInfo[minor].uimr |= MCF5282_UART_UIMR_TXRDY;
+ MCF5282_UART_UIMR(minor) = IntUartInfo[minor].uimr;
+ }
- rtems_interrupt_enable(level);
return 0;
}
diff --git a/c/src/lib/libbsp/m68k/gen68340/console/console.c b/c/src/lib/libbsp/m68k/gen68340/console/console.c
index 17d4ef4707..d1fa02edf0 100644
--- a/c/src/lib/libbsp/m68k/gen68340/console/console.c
+++ b/c/src/lib/libbsp/m68k/gen68340/console/console.c
@@ -172,12 +172,16 @@ static ssize_t
InterruptWrite (int minor, const char *buf, size_t len)
{
if (minor==UART_CHANNEL_A) {
- if (len>0) DUTBA=*buf;
- Enable_Interrupts_Tx_A;
+ if (len>0) {
+ DUTBA=*buf;
+ Enable_Interrupts_Tx_A;
+ }
}
else if (minor==UART_CHANNEL_B) {
- if (len>0) DUTBB=*buf;
- Enable_Interrupts_Tx_B;
+ if (len>0) {
+ DUTBB=*buf;
+ Enable_Interrupts_Tx_B;
+ }
}
return 0;
}
diff --git a/c/src/lib/libbsp/m68k/gen68360/console/console.c b/c/src/lib/libbsp/m68k/gen68360/console/console.c
index 0c43317ef7..8233449003 100644
--- a/c/src/lib/libbsp/m68k/gen68360/console/console.c
+++ b/c/src/lib/libbsp/m68k/gen68360/console/console.c
@@ -231,9 +231,12 @@ smc1PollRead (int minor)
static ssize_t
smc1InterruptWrite (int minor, const char *buf, size_t len)
{
- smcTxBd->buffer = (char *)buf;
- smcTxBd->length = len;
- smcTxBd->status = M360_BD_READY | M360_BD_WRAP | M360_BD_INTERRUPT;
+ if (len > 0) {
+ smcTxBd->buffer = (char *)buf;
+ smcTxBd->length = len;
+ smcTxBd->status = M360_BD_READY | M360_BD_WRAP | M360_BD_INTERRUPT;
+ }
+
return 0;
}
diff --git a/c/src/lib/libbsp/m68k/genmcf548x/console/console.c b/c/src/lib/libbsp/m68k/genmcf548x/console/console.c
index af18e23d7e..5e85e208b9 100644
--- a/c/src/lib/libbsp/m68k/genmcf548x/console/console.c
+++ b/c/src/lib/libbsp/m68k/genmcf548x/console/console.c
@@ -528,18 +528,15 @@ IntUartInitialize(void)
static ssize_t
IntUartInterruptWrite (int minor, const char *buf, size_t len)
{
- int level;
-
- rtems_interrupt_disable(level);
+ if (len > 0) {
+ /* write out character */
+ *(volatile uint8_t *)(&MCF548X_PSC_TB(minor)) = *buf;
- /* write out character */
- *(volatile uint8_t *)(&MCF548X_PSC_TB(minor)) = *buf;
-
- /* enable tx interrupt */
- IntUartInfo[minor].imr |= MCF548X_PSC_IMR_TXRDY;
- MCF548X_PSC_IMR(minor) = IntUartInfo[minor].imr;
+ /* enable tx interrupt */
+ IntUartInfo[minor].imr |= MCF548X_PSC_IMR_TXRDY;
+ MCF548X_PSC_IMR(minor) = IntUartInfo[minor].imr;
+ }
- rtems_interrupt_enable(level);
return 0;
}
diff --git a/c/src/lib/libbsp/m68k/mcf52235/console/console.c b/c/src/lib/libbsp/m68k/mcf52235/console/console.c
index b0ac4f9949..0b508c5f75 100644
--- a/c/src/lib/libbsp/m68k/mcf52235/console/console.c
+++ b/c/src/lib/libbsp/m68k/mcf52235/console/console.c
@@ -341,18 +341,15 @@ static void IntUartInitialize(void)
***************************************************************************/
static ssize_t IntUartInterruptWrite(int minor, const char *buf, size_t len)
{
- int level;
-
- rtems_interrupt_disable(level);
+ if (len > 0) {
+ /* write out character */
+ MCF_UART_UTB(minor) = *buf;
- /* write out character */
- MCF_UART_UTB(minor) = *buf;
-
- /* enable tx interrupt */
- IntUartInfo[minor].uimr |= MCF_UART_UIMR_TXRDY;
- MCF_UART_UIMR(minor) = IntUartInfo[minor].uimr;
+ /* enable tx interrupt */
+ IntUartInfo[minor].uimr |= MCF_UART_UIMR_TXRDY;
+ MCF_UART_UIMR(minor) = IntUartInfo[minor].uimr;
+ }
- rtems_interrupt_enable(level);
return (0);
}
diff --git a/c/src/lib/libbsp/m68k/mcf5225x/console/console.c b/c/src/lib/libbsp/m68k/mcf5225x/console/console.c
index 1f81e40ce4..48fca9f2c4 100644
--- a/c/src/lib/libbsp/m68k/mcf5225x/console/console.c
+++ b/c/src/lib/libbsp/m68k/mcf5225x/console/console.c
@@ -366,18 +366,15 @@ static void IntUartInitialize(void)
***************************************************************************/
static ssize_t IntUartInterruptWrite(int minor, const char *buf, size_t len)
{
- rtems_interrupt_level level=UART0_IRQ_LEVEL;
-
- rtems_interrupt_disable(level);
+ if (len > 0) {
+ /* write out character */
+ MCF_UART_UTB(minor) = *buf;
- /* write out character */
- MCF_UART_UTB(minor) = *buf;
-
- /* enable tx interrupt */
- IntUartInfo[minor].uimr |= MCF_UART_UIMR_TXRDY;
- MCF_UART_UIMR(minor) = IntUartInfo[minor].uimr;
+ /* enable tx interrupt */
+ IntUartInfo[minor].uimr |= MCF_UART_UIMR_TXRDY;
+ MCF_UART_UIMR(minor) = IntUartInfo[minor].uimr;
+ }
- rtems_interrupt_enable(level);
return (0);
}
diff --git a/c/src/lib/libbsp/m68k/mcf5235/console/console.c b/c/src/lib/libbsp/m68k/mcf5235/console/console.c
index 5c00adf36a..d0e556c473 100644
--- a/c/src/lib/libbsp/m68k/mcf5235/console/console.c
+++ b/c/src/lib/libbsp/m68k/mcf5235/console/console.c
@@ -394,18 +394,15 @@ IntUartInitialize(void)
static ssize_t
IntUartInterruptWrite (int minor, const char *buf, size_t len)
{
- int level;
-
- rtems_interrupt_disable(level);
+ if (len > 0) {
+ /* write out character */
+ MCF5235_UART_UTB(minor) = *buf;
- /* write out character */
- MCF5235_UART_UTB(minor) = *buf;
-
- /* enable tx interrupt */
- IntUartInfo[minor].uimr |= MCF5235_UART_UIMR_TXRDY;
- MCF5235_UART_UIMR(minor) = IntUartInfo[minor].uimr;
+ /* enable tx interrupt */
+ IntUartInfo[minor].uimr |= MCF5235_UART_UIMR_TXRDY;
+ MCF5235_UART_UIMR(minor) = IntUartInfo[minor].uimr;
+ }
- rtems_interrupt_enable(level);
return( 0 );
}
diff --git a/c/src/lib/libbsp/m68k/mcf5329/console/console.c b/c/src/lib/libbsp/m68k/mcf5329/console/console.c
index f0c798029b..8f72270fa3 100644
--- a/c/src/lib/libbsp/m68k/mcf5329/console/console.c
+++ b/c/src/lib/libbsp/m68k/mcf5329/console/console.c
@@ -356,18 +356,15 @@ static void IntUartInitialize(void)
***************************************************************************/
static ssize_t IntUartInterruptWrite(int minor, const char *buf, size_t len)
{
- int level;
-
- rtems_interrupt_disable(level);
+ if (len > 0) {
+ /* write out character */
+ MCF_UART_UTB(minor) = *buf;
- /* write out character */
- MCF_UART_UTB(minor) = *buf;
-
- /* enable tx interrupt */
- IntUartInfo[minor].uimr |= MCF_UART_UIMR_TXRDY;
- MCF_UART_UIMR(minor) = IntUartInfo[minor].uimr;
+ /* enable tx interrupt */
+ IntUartInfo[minor].uimr |= MCF_UART_UIMR_TXRDY;
+ MCF_UART_UIMR(minor) = IntUartInfo[minor].uimr;
+ }
- rtems_interrupt_enable(level);
return (0);
}
diff --git a/c/src/lib/libbsp/m68k/mvme167/console/console.c b/c/src/lib/libbsp/m68k/mvme167/console/console.c
index a03eda8888..ca16631cec 100644
--- a/c/src/lib/libbsp/m68k/mvme167/console/console.c
+++ b/c/src/lib/libbsp/m68k/mvme167/console/console.c
@@ -1141,37 +1141,39 @@ ssize_t cd2401_write(
size_t len
)
{
- cd2401->car = minor; /* Select channel */
-
- if ( (cd2401->dmabsts & 0x08) == 0 ) {
- /* Next buffer is A. Wait for it to be ours. */
- while ( cd2401->atbsts & 0x01 );
-
- CD2401_Channel_Info[minor].own_buf_A = FALSE;
- CD2401_Channel_Info[minor].len = len;
- CD2401_Channel_Info[minor].buf = buf;
- cd2401->atbadru = (uint16_t)( ( (uint32_t) buf ) >> 16 );
- cd2401->atbadrl = (uint16_t)( (uint32_t) buf );
- cd2401->atbcnt = len;
- CD2401_RECORD_WRITE_INFO(( len, buf, 'A' ));
- cd2401->atbsts = 0x03; /* CD2401 owns buffer, int when empty */
- }
- else {
- /* Next buffer is B. Wait for it to be ours. */
- while ( cd2401->btbsts & 0x01 );
-
- CD2401_Channel_Info[minor].own_buf_B = FALSE;
- CD2401_Channel_Info[minor].len = len;
- CD2401_Channel_Info[minor].buf = buf;
- cd2401->btbadru = (uint16_t)( ( (uint32_t) buf ) >> 16 );
- cd2401->btbadrl = (uint16_t)( (uint32_t) buf );
- cd2401->btbcnt = len;
- CD2401_RECORD_WRITE_INFO(( len, buf, 'B' ));
- cd2401->btbsts = 0x03; /* CD2401 owns buffer, int when empty */
+ if (len > 0) {
+ cd2401->car = minor; /* Select channel */
+
+ if ( (cd2401->dmabsts & 0x08) == 0 ) {
+ /* Next buffer is A. Wait for it to be ours. */
+ while ( cd2401->atbsts & 0x01 );
+
+ CD2401_Channel_Info[minor].own_buf_A = FALSE;
+ CD2401_Channel_Info[minor].len = len;
+ CD2401_Channel_Info[minor].buf = buf;
+ cd2401->atbadru = (uint16_t)( ( (uint32_t) buf ) >> 16 );
+ cd2401->atbadrl = (uint16_t)( (uint32_t) buf );
+ cd2401->atbcnt = len;
+ CD2401_RECORD_WRITE_INFO(( len, buf, 'A' ));
+ cd2401->atbsts = 0x03; /* CD2401 owns buffer, int when empty */
+ }
+ else {
+ /* Next buffer is B. Wait for it to be ours. */
+ while ( cd2401->btbsts & 0x01 );
+
+ CD2401_Channel_Info[minor].own_buf_B = FALSE;
+ CD2401_Channel_Info[minor].len = len;
+ CD2401_Channel_Info[minor].buf = buf;
+ cd2401->btbadru = (uint16_t)( ( (uint32_t) buf ) >> 16 );
+ cd2401->btbadrl = (uint16_t)( (uint32_t) buf );
+ cd2401->btbcnt = len;
+ CD2401_RECORD_WRITE_INFO(( len, buf, 'B' ));
+ cd2401->btbsts = 0x03; /* CD2401 owns buffer, int when empty */
+ }
+ /* Nuts -- Need TxD ints */
+ CD2401_Channel_Info[minor].txEmpty = FALSE;
+ cd2401->ier |= 0x01;
}
- /* Nuts -- Need TxD ints */
- CD2401_Channel_Info[minor].txEmpty = FALSE;
- cd2401->ier |= 0x01;
/* Return something */
return len;
diff --git a/c/src/lib/libbsp/m68k/uC5282/console/console.c b/c/src/lib/libbsp/m68k/uC5282/console/console.c
index a213cbca2f..2c133d7bb7 100644
--- a/c/src/lib/libbsp/m68k/uC5282/console/console.c
+++ b/c/src/lib/libbsp/m68k/uC5282/console/console.c
@@ -409,18 +409,15 @@ IntUartInitialize(void)
static ssize_t
IntUartInterruptWrite (int minor, const char *buf, size_t len)
{
- int level;
-
- rtems_interrupt_disable(level);
+ if (len > 0) {
+ /* write out character */
+ MCF5282_UART_UTB(minor) = *buf;
- /* write out character */
- MCF5282_UART_UTB(minor) = *buf;
-
- /* enable tx interrupt */
- IntUartInfo[minor].uimr |= MCF5282_UART_UIMR_TXRDY;
- MCF5282_UART_UIMR(minor) = IntUartInfo[minor].uimr;
+ /* enable tx interrupt */
+ IntUartInfo[minor].uimr |= MCF5282_UART_UIMR_TXRDY;
+ MCF5282_UART_UIMR(minor) = IntUartInfo[minor].uimr;
+ }
- rtems_interrupt_enable(level);
return 0;
}