According to the Application Notes of the DM9000, only the 2 bits 0:1 of
the status byte need to be checked to identify a valid packet in the fifo
But, The several different Application Notes do not all speak the same
language on these bits. They do not disagree, but only 1 Application Note
noted explicitly that only these 2 bits need to be checked.
Even the datasheets do not mention anything about these 2 bits.
Because the old code, and the kernel check the whole byte, I left this piece
untouched.
However, I tested all board/DM9000[A|E|EP] devices with this 2 bit check, so
it should work.
Notice, that the 2nd iteration through this receive loop (when a 2nd packet is
in the fifo) is much shorter now, compared to the older U-boot driver code,
so that we can maybe run into a hardware condition now that was never seen
before, or maybe was seen very unfrequently.
Signed-off-by: Remy Bohmer <[EMAIL PROTECTED]>
---
drivers/net/dm9000x.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
Index: u-boot-git-03062008/drivers/net/dm9000x.c
===================================================================
--- u-boot-git-03062008.orig/drivers/net/dm9000x.c 2008-06-03
19:52:06.000000000 +0200
+++ u-boot-git-03062008/drivers/net/dm9000x.c 2008-06-03 19:54:44.000000000
+0200
@@ -624,8 +624,9 @@ eth_rx(void)
for (;;) {
DM9000_ior(DM9000_MRCMDX); /* Dummy read */
- /* Get most updated data */
- rxbyte = DM9000_inb(DM9000_DATA);
+ /* Get most updated data,
+ only look at bits 0:1, See application notes DM9000 */
+ rxbyte = DM9000_inb(DM9000_DATA) & 0x03;
/* Status check: this byte must be 0 or 1 */
if (rxbyte > DM9000_PKT_RDY) {
--
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
U-Boot-Users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/u-boot-users