summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/mpc55xxevb/network
diff options
context:
space:
mode:
authorChristian Mauderer <christian.mauderer@embedded-brains.de>2012-08-16 12:19:14 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-08-21 11:06:24 +0200
commitf9fe954fa2d3323284a2e7dbcc18d80ad069f0b6 (patch)
tree8c9800aa0164d5e6df0040bbcaa7b2b5e4dcc6c6 /c/src/lib/libbsp/powerpc/mpc55xxevb/network
parentbsp/mpc55xx: Move work from ISR to task context (diff)
downloadrtems-f9fe954fa2d3323284a2e7dbcc18d80ad069f0b6.tar.bz2
bsp/mpc55xx: Fix SMSC9218I_BIG_ENDIAN_SUPPORT
Diffstat (limited to 'c/src/lib/libbsp/powerpc/mpc55xxevb/network')
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/network/smsc9218i.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/network/smsc9218i.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/network/smsc9218i.c
index cf5072a5a6..50d6c85b15 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/network/smsc9218i.c
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/network/smsc9218i.c
@@ -776,6 +776,7 @@ static void smsc9218i_new_mbuf(
static void smsc9218i_init_receive_jobs(
smsc9218i_driver_entry *e,
volatile smsc9218i_registers *regs,
+ volatile smsc9218i_registers *regs_dma,
smsc9218i_receive_job_control *jc
)
{
@@ -795,7 +796,7 @@ static void smsc9218i_init_receive_jobs(
struct tcd_t *tcd = &jc->tcd_table [i];
struct tcd_t *next_tcd = &jc->tcd_table [(i + 1) % SMSC9218I_RX_JOBS];
- tcd->SADDR = (uint32_t) &regs->rx_fifo_data;
+ tcd->SADDR = (uint32_t) &regs_dma->rx_fifo_data;
tcd->SDF.B.SSIZE = 0x2;
tcd->SDF.B.DSIZE = 0x2;
tcd->CDF.B.CITER = 1;
@@ -846,9 +847,10 @@ static void smsc9218i_receive_task(void *arg)
smsc9218i_receive_job_control *jc = &smsc_rx_jc;
smsc9218i_driver_entry *e = (smsc9218i_driver_entry *) arg;
volatile smsc9218i_registers *const regs = smsc9218i;
+ volatile smsc9218i_registers *const regs_dma = smsc9218i_dma;
uint32_t mac_cr = 0;
- smsc9218i_init_receive_jobs(e, regs, jc);
+ smsc9218i_init_receive_jobs(e, regs, regs_dma, jc);
/* Configure receiver */
regs->rx_cfg = SMSC9218I_RX_CFG_END_ALIGN_4
@@ -1335,6 +1337,7 @@ static void smsc9218i_transmit_task(void *arg)
smsc9218i_driver_entry *e = (smsc9218i_driver_entry *) arg;
struct ifnet *ifp = &e->arpcom.ac_if;
volatile smsc9218i_registers *const regs = smsc9218i;
+ volatile smsc9218i_registers *const regs_dma = smsc9218i_dma;
uint32_t mac_cr = 0;
smsc9218i_transmit_job_control *jc = &smsc_tx_jc;
unsigned i = 0;
@@ -1362,11 +1365,12 @@ static void smsc9218i_transmit_task(void *arg)
tcd.SDF.B.DSIZE = 2;
tcd.CDF.B.CITER = 1;
tcd.BMF.R = SMSC9218I_TCD_BMF_LINK;
- tcd.DADDR = (uint32_t) &regs->tx_fifo_data;
+ tcd.DADDR = (uint32_t) &regs_dma->tx_fifo_data;
tcd.DLAST_SGA = (int32_t) next_command_tcd;
*data_tcd = tcd;
+ tcd.DADDR = (uint32_t) &regs->tx_fifo_data;
tcd.SADDR = (uint32_t) &jc->command_table [i].a;
tcd.NBYTES = 8;
tcd.DLAST_SGA = (int32_t) data_tcd;