summaryrefslogtreecommitdiff
path: root/drivers/qe
diff options
context:
space:
mode:
authorEmilian Medve <Emilian.Medve@freescale.com>2007-01-30 16:14:50 -0600
committerKim Phillips <kim.phillips@freescale.com>2007-03-02 11:05:53 -0600
commita28899c910024a0226331df07207b1038c300c93 (patch)
tree3934bc93d648d0a48a5ced4037ba2d2a994b0db6 /drivers/qe
parent3e78a31cfe3d3022f46f67eb88e1281d5cc2eb89 (diff)
downloadu-boot-imx-a28899c910024a0226331df07207b1038c300c93.zip
u-boot-imx-a28899c910024a0226331df07207b1038c300c93.tar.gz
u-boot-imx-a28899c910024a0226331df07207b1038c300c93.tar.bz2
mpc83xx: Fix alternating tx error / tx buffer not ready bug in QE UEC
The problem is not gcc4 but the code itself. The BD_STATUS() macro can't be used for busy-waiting since it strips the 'volatile' property from the bd variable. gcc3 was working by pure luck. This is a follow on patch to "Fix the UEC driver bug of QE"
Diffstat (limited to 'drivers/qe')
-rw-r--r--drivers/qe/uec.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/qe/uec.c b/drivers/qe/uec.c
index aea455b..c416a67 100644
--- a/drivers/qe/uec.c
+++ b/drivers/qe/uec.c
@@ -1148,7 +1148,7 @@ static int uec_send(struct eth_device* dev, volatile void *buf, int len)
/* Init TxBD */
BD_DATA_SET(bd, buf);
BD_LENGTH_SET(bd, len);
- status = BD_STATUS(bd);
+ status = bd->status;
status &= BD_WRAP;
status |= (TxBD_READY | TxBD_LAST);
BD_STATUS_SET(bd, status);