From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas Jin Date: Mon, 15 Oct 2007 22:40:14 +0800 Subject: [U-Boot-Users] [patch] fix bugs in rtl8139.c Message-ID: <200710152239511864357@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Signed-off-by: Lucas Jin bug 1: "rx_ring" and "tx_buffer" are in local memory space, so they shouldn't be translated by "phys_to_bus". bug 2: macro KSEG1ADDR is just for MIPS, so we can use "le32_to_cpu" as a common way. ------------------------------ --- ./drivers/rtl8139.c.orig 2007-10-12 22:17:52.000000000 +0800 +++ ./drivers/rtl8139.c 2007-10-15 22:46:59.991316984 +0800 @@ -76,6 +76,7 @@ #include #include #include +#include #if (CONFIG_COMMANDS & CFG_CMD_NET) && defined(CONFIG_NET_MULTI) && \ defined(CONFIG_RTL8139) @@ -383,7 +384,7 @@ #ifdef DEBUG_RX printf("rx ring address is %X\n",(unsigned long)rx_ring); #endif - outl(phys_to_bus((int)rx_ring), ioaddr + RxBuf); + outl((int)rx_ring, ioaddr + RxBuf); /* If we add multicast support, the MAR0 register would have to be * initialized to 0xffffffffffffffff (two 32 bit accesses). Etherboot @@ -423,7 +424,7 @@ tx_buffer[len++] = '\0'; } - outl(phys_to_bus((int)tx_buffer), ioaddr + TxAddr0 + cur_tx*4); + outl((int)tx_buffer, ioaddr + TxAddr0 + cur_tx*4); outl(((TX_FIFO_THRESH<<11) & 0x003f0000) | len, ioaddr + TxStatus0 + cur_tx*4); @@ -480,7 +481,7 @@ #endif ring_offs = cur_rx % RX_BUF_LEN; - rx_status = *(unsigned int*)KSEG1ADDR((rx_ring + ring_offs)); + rx_status = le32_to_cpu(*(unsigned int*)(rx_ring + ring_offs)); rx_size = rx_status >> 16; rx_status &= 0xffff; -------------- Lucas Jin