Debug fixes
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@429 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
98f35925e5
commit
cba8fa9596
@ -47,6 +47,7 @@
|
|||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
@ -109,6 +110,11 @@
|
|||||||
# undef CONFIG_NET_C5471_BASET10
|
# undef CONFIG_NET_C5471_BASET10
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* This should be disabled unless you are performing very low level debug */
|
||||||
|
|
||||||
|
#undef CONFIG_C5471_NET_DUMPBUFFER
|
||||||
|
//#define CONFIG_C5471_NET_DUMPBUFFER 1
|
||||||
|
|
||||||
/* Timing values ************************************************************/
|
/* Timing values ************************************************************/
|
||||||
/* TX poll deley = 1 seconds. CLK_TCK=number of clock ticks per second */
|
/* TX poll deley = 1 seconds. CLK_TCK=number of clock ticks per second */
|
||||||
|
|
||||||
@ -226,7 +232,7 @@
|
|||||||
/* Bits 3-5: reserved */
|
/* Bits 3-5: reserved */
|
||||||
#define EIM_INTEN_ENET0_ERR 0x00000004 /* Bit 2: ENET0 error interrupt */
|
#define EIM_INTEN_ENET0_ERR 0x00000004 /* Bit 2: ENET0 error interrupt */
|
||||||
#define EIM_INTEN_ENET0_TX 0x00000002 /* Bit 1: ENET0 TX interrupt */
|
#define EIM_INTEN_ENET0_TX 0x00000002 /* Bit 1: ENET0 TX interrupt */
|
||||||
#define EIM_INTEN_ENET0_RX 0x00000001 /* Bit 0" ENET0 RX interrupt */
|
#define EIM_INTEN_ENET0_RX 0x00000001 /* Bit 0: ENET0 RX interrupt */
|
||||||
|
|
||||||
/* ENET0_ADRMODE_EN bit settings */
|
/* ENET0_ADRMODE_EN bit settings */
|
||||||
|
|
||||||
@ -393,6 +399,64 @@ static void c5471_macassign(struct c5471_driver_s *c5471);
|
|||||||
* Private Functions
|
* Private Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: c5471_dumpbuffer
|
||||||
|
*
|
||||||
|
* Description
|
||||||
|
* Debug only
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef CONFIG_C5471_NET_DUMPBUFFER
|
||||||
|
static void c5471_dumpbuffer(const char *buffer, ssize_t nbytes)
|
||||||
|
{
|
||||||
|
#if defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_NET)
|
||||||
|
char line[128];
|
||||||
|
int ch;
|
||||||
|
int i;
|
||||||
|
int j;
|
||||||
|
|
||||||
|
for (i = 0; i < nbytes; i += 16)
|
||||||
|
{
|
||||||
|
sprintf(line, "%04x: ", i);
|
||||||
|
for (j = 0; j < 16; j++)
|
||||||
|
{
|
||||||
|
if (i + j < nbytes)
|
||||||
|
{
|
||||||
|
sprintf(&line[strlen(line)], "%02x", buffer[i+j] );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strcpy(&line[strlen(line)], " ");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (j == 7 || j == 15)
|
||||||
|
{
|
||||||
|
strcpy(&line[strlen(line)], " ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( j = 0; j < 16; j++)
|
||||||
|
{
|
||||||
|
if (i + j < nbytes)
|
||||||
|
{
|
||||||
|
ch = buffer[i+j];
|
||||||
|
sprintf(&line[strlen(line)], "%c", ch >= 0x20 && ch <= 0x7e ? ch : '.');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (j == 7 || j == 15)
|
||||||
|
{
|
||||||
|
strcpy(&line[strlen(line)], " ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ndbg("%s\n", line);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
# define c5471_dumpbuffer(buffer,nbytes)
|
||||||
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: c5471_mdtxbit
|
* Name: c5471_mdtxbit
|
||||||
*
|
*
|
||||||
@ -419,9 +483,12 @@ static void c5471_mdtxbit (int bit_state)
|
|||||||
* out the MDIO pin.
|
* out the MDIO pin.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* config MDIO as output pin. */
|
/* Config MDIO as output pin. */
|
||||||
|
|
||||||
putreg32((getreg32(GPIO_CIO) & ~GPIO_CIO_MDIO), GPIO_CIO);
|
putreg32((getreg32(GPIO_CIO) & ~GPIO_CIO_MDIO), GPIO_CIO);
|
||||||
|
|
||||||
|
/* Select the the bit output state */
|
||||||
|
|
||||||
if (bit_state)
|
if (bit_state)
|
||||||
{
|
{
|
||||||
/* set MDIO state high. */
|
/* set MDIO state high. */
|
||||||
@ -448,7 +515,7 @@ static void c5471_mdtxbit (int bit_state)
|
|||||||
|
|
||||||
/* release MDIO */
|
/* release MDIO */
|
||||||
|
|
||||||
putreg32((getreg32(GPIO_CIO)|GPIO_CIO_MDIO), GPIO_CIO);
|
putreg32((getreg32(GPIO_CIO) | GPIO_CIO_MDIO), GPIO_CIO);
|
||||||
nop();
|
nop();
|
||||||
nop();
|
nop();
|
||||||
|
|
||||||
@ -499,7 +566,7 @@ static int c5471_mdrxbit (void)
|
|||||||
|
|
||||||
/* MDCLK rising edge */
|
/* MDCLK rising edge */
|
||||||
|
|
||||||
putreg32((getreg32(GPIO_IO)|GPIO_IO_MDCLK), GPIO_IO);
|
putreg32((getreg32(GPIO_IO) | GPIO_IO_MDCLK), GPIO_IO);
|
||||||
nop();
|
nop();
|
||||||
nop();
|
nop();
|
||||||
nop();
|
nop();
|
||||||
@ -536,7 +603,9 @@ static void c5471_mdwrite (int adr, int reg, int data)
|
|||||||
/* preamble: 11111111111111111111111111111111 */
|
/* preamble: 11111111111111111111111111111111 */
|
||||||
|
|
||||||
for (i = 0; i < 32; i++)
|
for (i = 0; i < 32; i++)
|
||||||
c5471_mdtxbit(1);
|
{
|
||||||
|
c5471_mdtxbit(1);
|
||||||
|
}
|
||||||
|
|
||||||
/* start of frame: 01 */
|
/* start of frame: 01 */
|
||||||
|
|
||||||
@ -564,7 +633,7 @@ static void c5471_mdwrite (int adr, int reg, int data)
|
|||||||
reg = reg << 1;
|
reg = reg << 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* turnaround time: ZZ */
|
/* Turnaround time: ZZ */
|
||||||
|
|
||||||
c5471_mdtxbit(1);
|
c5471_mdtxbit(1);
|
||||||
c5471_mdtxbit(0);
|
c5471_mdtxbit(0);
|
||||||
@ -597,7 +666,9 @@ static int c5471_mdread (int adr, int reg)
|
|||||||
/* preamble: 11111111111111111111111111111111 */
|
/* preamble: 11111111111111111111111111111111 */
|
||||||
|
|
||||||
for (i = 0; i < 32; i++)
|
for (i = 0; i < 32; i++)
|
||||||
c5471_mdtxbit(1);
|
{
|
||||||
|
c5471_mdtxbit(1);
|
||||||
|
}
|
||||||
|
|
||||||
/* start of frame: 01 */
|
/* start of frame: 01 */
|
||||||
|
|
||||||
@ -792,7 +863,7 @@ static inline void c5471_incrxcpu(struct c5471_driver_s *c5471)
|
|||||||
c5471->c_rxcpudesc += 2*sizeof(uint32);
|
c5471->c_rxcpudesc += 2*sizeof(uint32);
|
||||||
}
|
}
|
||||||
|
|
||||||
nvdbg("RX CPU desc: %08x\n", c5471->c_txcpudesc);
|
nvdbg("RX CPU desc: %08x\n", c5471->c_rxcpudesc);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -829,6 +900,8 @@ static int c5471_transmit(struct c5471_driver_s *c5471)
|
|||||||
c5471->c_lastdescstart = c5471->c_rxcpudesc;
|
c5471->c_lastdescstart = c5471->c_rxcpudesc;
|
||||||
|
|
||||||
nvdbg("Packet size: %d RX CPU desc: %08x\n", nbytes, c5471->c_rxcpudesc);
|
nvdbg("Packet size: %d RX CPU desc: %08x\n", nbytes, c5471->c_rxcpudesc);
|
||||||
|
c5471_dumpbuffer(dev->d_buf, dev->d_len);
|
||||||
|
|
||||||
while (nbytes)
|
while (nbytes)
|
||||||
{
|
{
|
||||||
/* Verify that the hardware is ready to send another packet */
|
/* Verify that the hardware is ready to send another packet */
|
||||||
@ -1021,7 +1094,7 @@ void c5471_rxstatus(int *numbytes)
|
|||||||
{
|
{
|
||||||
/* Loop back around to base of descriptor queue. */
|
/* Loop back around to base of descriptor queue. */
|
||||||
|
|
||||||
desc = getreg32(EIM_CPU_RXBA) + EIM_RAM_START;
|
desc = getreg32(EIM_CPU_TXBA) + EIM_RAM_START;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1120,24 +1193,28 @@ static void c5471_receive(struct c5471_driver_s *c5471)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get the size of the frame from words #0 and #1 of the descriptor
|
||||||
|
* and update the accumulated packet size
|
||||||
|
*/
|
||||||
|
|
||||||
framelen = (getreg32(c5471->c_txcpudesc) & EIM_TXDESC_BYTEMASK);
|
framelen = (getreg32(c5471->c_txcpudesc) & EIM_TXDESC_BYTEMASK);
|
||||||
packetlen += framelen;
|
packetlen += framelen;
|
||||||
|
|
||||||
/* Words #2 and #3 of descriptor */
|
/* Check if the received packet will fit within the uIP packet buffer */
|
||||||
|
|
||||||
packetmem = (uint16*)getreg32(c5471->c_txcpudesc + 1);
|
if (packetlen < (CONFIG_NET_BUFSIZE + 4))
|
||||||
|
|
||||||
/* Divide by 2 with round up to get the number of 16-bit words. */
|
|
||||||
|
|
||||||
nshorts = (framelen + 1) >> 1;
|
|
||||||
nvdbg("Reading framelen: %d packetlen: %d nshorts: %d packetment: %p\n",
|
|
||||||
framelen, packetlen, nshorts, packetmem);
|
|
||||||
|
|
||||||
for (i = 0 ; i < nshorts; i++, j++)
|
|
||||||
{
|
{
|
||||||
/* Check if the received packet will fit without the uIP packet buffer */
|
/* Get the packet memory from words #2 and #3 of descriptor */
|
||||||
|
|
||||||
if (packetlen < (CONFIG_NET_BUFSIZE - 4))
|
packetmem = (uint16*)getreg32(c5471->c_txcpudesc + sizeof(uint32));
|
||||||
|
|
||||||
|
/* Divide by 2 with round up to get the number of 16-bit words. */
|
||||||
|
|
||||||
|
nshorts = (framelen + 1) >> 1;
|
||||||
|
nvdbg("Reading framelen: %d packetlen: %d nshorts: %d packetmen: %p\n",
|
||||||
|
framelen, packetlen, nshorts, packetmem);
|
||||||
|
|
||||||
|
for (i = 0 ; i < nshorts; i++, j++)
|
||||||
{
|
{
|
||||||
/* Copy the data data from the hardware to c5471->c_dev.d_buf 16-bits at
|
/* Copy the data data from the hardware to c5471->c_dev.d_buf 16-bits at
|
||||||
* a time.
|
* a time.
|
||||||
@ -1146,6 +1223,10 @@ static void c5471_receive(struct c5471_driver_s *c5471)
|
|||||||
((uint16*)dev->d_buf)[j] = htons(packetmem[i]);
|
((uint16*)dev->d_buf)[j] = htons(packetmem[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nvdbg("Discarding framelen: %d packetlen\n", framelen, packetlen);
|
||||||
|
}
|
||||||
|
|
||||||
if (getreg32(c5471->c_txcpudesc) & EIM_TXDESC_LIF)
|
if (getreg32(c5471->c_txcpudesc) & EIM_TXDESC_LIF)
|
||||||
{
|
{
|
||||||
@ -1173,20 +1254,22 @@ static void c5471_receive(struct c5471_driver_s *c5471)
|
|||||||
packetlen -= 4;
|
packetlen -= 4;
|
||||||
|
|
||||||
#ifdef CONFIG_C5471_NET_STATS
|
#ifdef CONFIG_C5471_NET_STATS
|
||||||
/* Increment the count of received packets */
|
/* Increment the count of received packets */
|
||||||
|
|
||||||
c5471->c_rxpackets++;
|
c5471->c_rxpackets++;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* If we successfully transferred the data into the uIP buffer, then pass it on
|
/* If we successfully transferred the data into the uIP buffer, then pass it on
|
||||||
* to uIP for processing.
|
* to uIP for processing.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (packetlen > 0 && packetlen < (CONFIG_NET_BUFSIZE / sizeof(uint16)))
|
if (packetlen > 0 && packetlen < CONFIG_NET_BUFSIZE)
|
||||||
{
|
{
|
||||||
/* Set amount of data in c5471->c_dev.d_len. */
|
/* Set amount of data in c5471->c_dev.d_len. */
|
||||||
|
|
||||||
dev->d_len = packetlen;
|
dev->d_len = packetlen;
|
||||||
|
nvdbg("Received packet, packetlen: %d type: %02x\n", packetlen, BUF->type);
|
||||||
|
c5471_dumpbuffer(dev->d_buf, dev->d_len);
|
||||||
|
|
||||||
/* We only accept IP packets of the configured type and ARP packets */
|
/* We only accept IP packets of the configured type and ARP packets */
|
||||||
|
|
||||||
@ -1234,6 +1317,7 @@ static void c5471_receive(struct c5471_driver_s *c5471)
|
|||||||
{
|
{
|
||||||
/* Increment the count of dropped packets */
|
/* Increment the count of dropped packets */
|
||||||
|
|
||||||
|
ndbg("Too big! packetlen: %d\n", packetlen);
|
||||||
c5471->c_rxdropped++;
|
c5471->c_rxdropped++;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1270,7 +1354,7 @@ static inline void c5471_txstatus(void)
|
|||||||
{
|
{
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
txstatus |= (getreg32(desc) & EIM_TXDESC_STATUSMASK);
|
txstatus |= (getreg32(desc) & EIM_RXDESC_STATUSMASK);
|
||||||
if (desc == c5471->c_lastdescend)
|
if (desc == c5471->c_lastdescend)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
@ -1748,13 +1832,15 @@ static void c5471_eimconfig(struct c5471_driver_s *c5471)
|
|||||||
|
|
||||||
/* TX ENET 0 */
|
/* TX ENET 0 */
|
||||||
|
|
||||||
putreg32((desc & 0x0000ffff), ENET0_TDBA); /* 16bit offset address */
|
ndbg("TX ENET0 desc: %08x pbuf: %08x\n", desc, pbuf);
|
||||||
|
putreg32((desc & 0x0000ffff), ENET0_TDBA); /* 16-bit offset address */
|
||||||
for (i = NUM_DESC_TX-1; i >= 0; i--)
|
for (i = NUM_DESC_TX-1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
val = EIM_TXDESC_WRAP_NEXT;
|
val = EIM_TXDESC_WRAP_NEXT;
|
||||||
else
|
else
|
||||||
val = EIM_TXDESC_WRAP_FIRST;
|
val = EIM_TXDESC_WRAP_FIRST;
|
||||||
|
|
||||||
val |= EIM_TXDESC_OWN_HOST|EIM_TXDESC_INTRE|EIM_TXDESC_PADCRC|EIM_PACKET_BYTES;
|
val |= EIM_TXDESC_OWN_HOST|EIM_TXDESC_INTRE|EIM_TXDESC_PADCRC|EIM_PACKET_BYTES;
|
||||||
|
|
||||||
putreg32(val, desc);
|
putreg32(val, desc);
|
||||||
@ -1766,19 +1852,21 @@ static void c5471_eimconfig(struct c5471_driver_s *c5471)
|
|||||||
putreg32(0, pbuf);;
|
putreg32(0, pbuf);;
|
||||||
pbuf += EIM_PACKET_BYTES;
|
pbuf += EIM_PACKET_BYTES;
|
||||||
|
|
||||||
putreg32(0, pbuf);;
|
putreg32(0, pbuf);
|
||||||
pbuf += sizeof(uint32); /* Ether Module's "Buffer Usage Word" */
|
pbuf += sizeof(uint32); /* Ether Module's "Buffer Usage Word" */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* RX ENET 0 */
|
/* RX ENET 0 */
|
||||||
|
|
||||||
putreg32((desc & 0x0000ffff), ENET0_RDBA); /* 16bit offset address */
|
ndbg("RX ENET0 desc: %08x pbuf: %08x\n", desc, pbuf);
|
||||||
|
putreg32((desc & 0x0000ffff), ENET0_RDBA); /* 16-bit offset address */
|
||||||
for (i = NUM_DESC_RX-1; i >= 0; i--)
|
for (i = NUM_DESC_RX-1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
val = EIM_RXDESC_WRAP_NEXT;
|
val = EIM_RXDESC_WRAP_NEXT;
|
||||||
else
|
else
|
||||||
val = EIM_RXDESC_WRAP_FIRST;
|
val = EIM_RXDESC_WRAP_FIRST;
|
||||||
|
|
||||||
val |= EIM_RXDESC_OWN_ENET|EIM_RXDESC_INTRE|EIM_RXDESC_PADCRC|EIM_PACKET_BYTES;
|
val |= EIM_RXDESC_OWN_ENET|EIM_RXDESC_INTRE|EIM_RXDESC_PADCRC|EIM_PACKET_BYTES;
|
||||||
|
|
||||||
putreg32(val, desc);
|
putreg32(val, desc);
|
||||||
@ -1796,8 +1884,9 @@ static void c5471_eimconfig(struct c5471_driver_s *c5471)
|
|||||||
|
|
||||||
/* TX CPU */
|
/* TX CPU */
|
||||||
|
|
||||||
|
ndbg("TX CPU desc: %08x pbuf: %08x\n", desc, pbuf);
|
||||||
c5471->c_txcpudesc = desc;
|
c5471->c_txcpudesc = desc;
|
||||||
putreg32((desc & 0x0000ffff), EIM_CPU_TXBA); /* 16bit offset address */
|
putreg32((desc & 0x0000ffff), EIM_CPU_TXBA); /* 16-bit offset address */
|
||||||
for (i = NUM_DESC_TX-1; i >= 0; i--)
|
for (i = NUM_DESC_TX-1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
/* Set words 1+2 of the TXDESC */
|
/* Set words 1+2 of the TXDESC */
|
||||||
@ -1806,24 +1895,27 @@ static void c5471_eimconfig(struct c5471_driver_s *c5471)
|
|||||||
val = EIM_TXDESC_WRAP_NEXT;
|
val = EIM_TXDESC_WRAP_NEXT;
|
||||||
else
|
else
|
||||||
val = EIM_TXDESC_WRAP_FIRST;
|
val = EIM_TXDESC_WRAP_FIRST;
|
||||||
|
|
||||||
val |= EIM_TXDESC_OWN_HOST|EIM_TXDESC_INTRE|EIM_TXDESC_PADCRC|EIM_PACKET_BYTES;
|
val |= EIM_TXDESC_OWN_HOST|EIM_TXDESC_INTRE|EIM_TXDESC_PADCRC|EIM_PACKET_BYTES;
|
||||||
|
|
||||||
putreg32(val, desc);
|
putreg32(val, desc);
|
||||||
desc += sizeof(uint32);
|
desc += sizeof(uint32);
|
||||||
|
|
||||||
putreg32(pbuf, desc);
|
putreg32(pbuf, desc);
|
||||||
desc += sizeof(uint32);
|
desc += sizeof(uint32);
|
||||||
|
|
||||||
putreg(pbuf, 0);
|
putreg(0, pbuf);
|
||||||
pbuf += EIM_PACKET_BYTES;
|
pbuf += EIM_PACKET_BYTES;
|
||||||
|
|
||||||
putreg(pbuf, 0);
|
putreg(0, pbuf);
|
||||||
pbuf += sizeof(uint32); /* Ether Module's "Buffer Usage Word" */
|
pbuf += sizeof(uint32); /* Ether Module's "Buffer Usage Word" */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* RX CPU */
|
/* RX CPU */
|
||||||
|
|
||||||
|
ndbg("RX CPU desc: %08x pbuf: %08x\n", desc, pbuf);
|
||||||
c5471->c_rxcpudesc = desc;
|
c5471->c_rxcpudesc = desc;
|
||||||
putreg32((desc & 0x0000ffff), EIM_CPU_RXBA); /* 16bit offset address */
|
putreg32((desc & 0x0000ffff), EIM_CPU_RXBA); /* 16-bit offset address */
|
||||||
for (i = NUM_DESC_RX-1; i >= 0; i--)
|
for (i = NUM_DESC_RX-1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
/* Set words 1+2 of the RXDESC */
|
/* Set words 1+2 of the RXDESC */
|
||||||
@ -1832,6 +1924,7 @@ static void c5471_eimconfig(struct c5471_driver_s *c5471)
|
|||||||
val = EIM_RXDESC_WRAP_NEXT;
|
val = EIM_RXDESC_WRAP_NEXT;
|
||||||
else
|
else
|
||||||
val = EIM_RXDESC_WRAP_FIRST;
|
val = EIM_RXDESC_WRAP_FIRST;
|
||||||
|
|
||||||
val |= EIM_RXDESC_OWN_ENET|EIM_RXDESC_INTRE|EIM_RXDESC_PADCRC|EIM_PACKET_BYTES;
|
val |= EIM_RXDESC_OWN_ENET|EIM_RXDESC_INTRE|EIM_RXDESC_PADCRC|EIM_PACKET_BYTES;
|
||||||
|
|
||||||
putreg32(val, desc);
|
putreg32(val, desc);
|
||||||
@ -1846,6 +1939,7 @@ static void c5471_eimconfig(struct c5471_driver_s *c5471)
|
|||||||
putreg32(0, pbuf);;
|
putreg32(0, pbuf);;
|
||||||
pbuf += sizeof(uint32); /* Ether Module's "Buffer Usage Word" */
|
pbuf += sizeof(uint32); /* Ether Module's "Buffer Usage Word" */
|
||||||
}
|
}
|
||||||
|
ndbg("END desc: %08x pbuf: %08x\n", desc, pbuf);
|
||||||
|
|
||||||
/* Save the descriptor packet size */
|
/* Save the descriptor packet size */
|
||||||
|
|
||||||
@ -1928,9 +2022,13 @@ static void c5471_eimconfig(struct c5471_driver_s *c5471)
|
|||||||
static void c5471_reset(struct c5471_driver_s *c5471)
|
static void c5471_reset(struct c5471_driver_s *c5471)
|
||||||
{
|
{
|
||||||
#if (CONFIG_C5471_ETHERNET_PHY == ETHERNET_PHY_LU3X31T_T64)
|
#if (CONFIG_C5471_ETHERNET_PHY == ETHERNET_PHY_LU3X31T_T64)
|
||||||
|
ndbg("EIM reset\n");
|
||||||
c5471_eimreset(c5471);
|
c5471_eimreset(c5471);
|
||||||
#endif
|
#endif
|
||||||
|
ndbg("PHY init\n");
|
||||||
c5471_phyinit();
|
c5471_phyinit();
|
||||||
|
|
||||||
|
ndbg("EIM config\n");
|
||||||
c5471_eimconfig(c5471);
|
c5471_eimconfig(c5471);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user