diff options
Diffstat (limited to 'packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Fix-the-UEC-driver-bug-of-QE.patch')
-rw-r--r-- | packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Fix-the-UEC-driver-bug-of-QE.patch | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Fix-the-UEC-driver-bug-of-QE.patch b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Fix-the-UEC-driver-bug-of-QE.patch new file mode 100644 index 0000000000..ad2ff243e8 --- /dev/null +++ b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Fix-the-UEC-driver-bug-of-QE.patch @@ -0,0 +1,62 @@ +21fb83dfa2dcba7982eeb54f4ca7bc1056582c1e +diff --git a/drivers/qe/uec.c b/drivers/qe/uec.c +index f640c81..c44a5be 100644 +--- a/drivers/qe/uec.c ++++ b/drivers/qe/uec.c +@@ -1122,7 +1122,7 @@ static int uec_send(struct eth_device* dev, volatile void *buf, int len) + uec_private_t *uec; + ucc_fast_private_t *uccf; + volatile qe_bd_t *bd; +- volatile u16 status; ++ u16 status; + int i; + int result = 0; + +@@ -1131,7 +1131,7 @@ static int uec_send(struct eth_device* dev, volatile void *buf, int len) + bd = uec->txBd; + + /* Find an empty TxBD */ +- for (i = 0; BD_STATUS(bd) & TxBD_READY; i++) { ++ for (i = 0; bd->status & TxBD_READY; i++) { + if (i > 0x100000) { + printf("%s: tx buffer not ready\n", dev->name); + return result; +@@ -1150,13 +1150,11 @@ static int uec_send(struct eth_device* dev, volatile void *buf, int len) + ucc_fast_transmit_on_demand(uccf); + + /* Wait for buffer to be transmitted */ +- status = BD_STATUS(bd); +- for (i = 0; status & TxBD_READY; i++) { ++ for (i = 0; bd->status & TxBD_READY; i++) { + if (i > 0x100000) { + printf("%s: tx error\n", dev->name); + return result; + } +- status = BD_STATUS(bd); + } + + /* Ok, the buffer be transimitted */ +@@ -1171,12 +1169,12 @@ static int uec_recv(struct eth_device* dev) + { + uec_private_t *uec = dev->priv; + volatile qe_bd_t *bd; +- volatile u16 status; ++ u16 status; + u16 len; + u8 *data; + + bd = uec->rxBd; +- status = BD_STATUS(bd); ++ status = bd->status; + + while (!(status & RxBD_EMPTY)) { + if (!(status & RxBD_ERROR)) { +@@ -1190,7 +1188,7 @@ static int uec_recv(struct eth_device* dev) + BD_LENGTH_SET(bd, 0); + BD_STATUS_SET(bd, status | RxBD_EMPTY); + BD_ADVANCE(bd, status, uec->p_rx_bd_ring); +- status = BD_STATUS(bd); ++ status = bd->status; + } + uec->rxBd = bd; + |