|
|
|
@ -723,7 +723,8 @@ static hw_info_t hw_info[] = { |
|
|
|
|
{ /* SuperSocket RE450T */ 0x0110, 0x00, 0xe0, 0x98, 0 }, |
|
|
|
|
{ /* Volktek NPL-402CT */ 0x0060, 0x00, 0x40, 0x05, 0 }, |
|
|
|
|
{ /* NEC PC-9801N-J12 */ 0x0ff0, 0x00, 0x00, 0x4c, 0 }, |
|
|
|
|
{ /* PCMCIA Technology OEM */ 0x01c8, 0x00, 0xa0, 0x0c, 0 } |
|
|
|
|
{ /* PCMCIA Technology OEM */ 0x01c8, 0x00, 0xa0, 0x0c, 0 }, |
|
|
|
|
{ /* Qemu */ 0x0, 0x52, 0x54, 0x00, 0 } |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
#define NR_INFO (sizeof(hw_info)/sizeof(hw_info_t)) |
|
|
|
@ -824,30 +825,22 @@ static hw_info_t * get_prom(void ) { |
|
|
|
|
|
|
|
|
|
/* U-boot specific routines */ |
|
|
|
|
|
|
|
|
|
#define NB 5 |
|
|
|
|
|
|
|
|
|
static unsigned char *pbuf = NULL; |
|
|
|
|
static int plen[NB]; |
|
|
|
|
static int nrx = 0; |
|
|
|
|
|
|
|
|
|
static int pkey = -1; |
|
|
|
|
static int initialized=0; |
|
|
|
|
|
|
|
|
|
void uboot_push_packet_len(int len) { |
|
|
|
|
PRINTK("pushed len = %d, nrx = %d\n", len, nrx); |
|
|
|
|
PRINTK("pushed len = %d\n", len); |
|
|
|
|
if (len>=2000) { |
|
|
|
|
printf("NE2000: packet too big\n"); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (nrx >= NB) { |
|
|
|
|
printf("losing packets in rx\n"); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
plen[nrx] = len; |
|
|
|
|
dp83902a_recv(&pbuf[nrx*2000], len); |
|
|
|
|
dp83902a_recv(&pbuf[0], len); |
|
|
|
|
|
|
|
|
|
/*Just pass it to the upper layer*/ |
|
|
|
|
NetReceive(&pbuf[nrx*2000], plen[nrx]); |
|
|
|
|
NetReceive(&pbuf[0], len); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void uboot_push_tx_done(int key, int val) { |
|
|
|
@ -862,9 +855,9 @@ int eth_init(bd_t *bd) { |
|
|
|
|
PRINTK("### eth_init\n"); |
|
|
|
|
|
|
|
|
|
if (!pbuf) { |
|
|
|
|
pbuf = malloc(NB*2000); |
|
|
|
|
pbuf = malloc(2000); |
|
|
|
|
if (!pbuf) { |
|
|
|
|
printf("Cannot allocate rx buffers\n"); |
|
|
|
|
printf("Cannot allocate rx buffer\n"); |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|