Hi,
In our project we design a custom board by using AM335x interface with Ethernet PHY device(IP101A) through MII interface. For hardware side, i use the AM335x BeagleBone schematic as reference to connect AM335x with Ethernet PHY.
The pin connect as folowing(AM335X<--------->IP101A)
MDIO_CLK <--------->MDC, MDIO_DATA<--------->MDIO, GMII1_TXD0<--------->TXD0, GMII1_TXD1<--------->TXD1, GMII1_TXD2<--------->TXD2, GMII1_TXD3<--------->TXD3, GMII1_TXEN<--------->TXEN, GMII1_TXCLK<--------->TX_CLK, GMII1_RXDV<--------->RX_DV, GMII1_RXD0<--------->RXD0, GMII1_RXD1<--------->RXD1, GMII1_RXD2<--------->RXD2, GMII1_RXD3<--------->RXD3, GMII1_RXCLK<--------->RX_CLK, GMII1_COL<--------->COL, GMII1_CRS<--------->CRS, GMII1_RXERR<--------->RX_ERR
We've modified 2 point in u-boot:
1、set mac mode as MII_MODE_ENABLE
2、change cpsw_slaves .phy_id
now when ping from our board to PC we cat that our board send message successfully
then we can measure some signals at GMII1_RXDV, GMII1_RXD0, GMII1_RXD1, GMII1_RXD2, GMII1_RXD3, GMII1_RXCLK through oscilloscope
so we add some LOG in fun cpdma_process
static int cpdma_process(struct cpsw_priv *priv, struct cpdma_chan *chan,
void **buffer, int *len)
{
struct cpdma_desc *desc = chan->head;
u32 status;
char * buff_zq = *buffer;
if (!desc)
return -ENOENT;
status = desc_read(desc, hw_mode);
printf("cpdma_process 1 ,regadd:%lx status: %lx,len:%lx\n", &(desc)->hw_mode,status,len);
if (len)
*len = status & 0x7ff;
if (buffer)
*buffer = desc_read_ptr(desc, sw_buffer);
printf("cpdma_process 2 ,buffer add:%lx\n", &(desc)->sw_buffer);
if (status & CPDMA_DESC_OWNER) {
if (chan_read(chan, hdp) == NULL) {
printf("cpdma_process 3\n");
if (desc_read(desc, hw_mode) & CPDMA_DESC_OWNER)
{
printf("cpdma_process 4\n");
chan_write(chan, hdp, desc);
}
}
printf("cpdma_process 5\n");
return -EBUSY;
}
printf("cpdma_process 6\n");
chan->head = desc_read_ptr(desc, hw_next);
chan_write(chan, cp, desc);
cpdma_desc_free(priv, desc);
return 0;
}
then the ping log is :
cpdma_process 1 ,regadd:8ff796a8 status: e00005ee,len:8ff77e10
cpdma_process 2 ,buffer add:8ff796ac
cpdma_process 5
U-Boot# md 0x8ff7969c
8ff7969c: 8ff796b4 8ffecca0 000005ee e00005ee ................//receive len 0x5ee?
8ff796ac: 8ffecca0 000005ee 8ff796cc 8ffed2a0 ................
8ff796bc: 000005ee e00005ee 8ffed2a0 000005ee ................
8ff796cc: 8ff796e4 8ffed8a0 000005ee e00005ee ................
8ff796dc: 8ffed8a0 000005ee 00000000 8ffedea0 ................
8ff796ec: 000005ee e00005ee 8ffedea0 000005ee ................
8ff796fc: 00000000 8ffec6a0 0000003c d000003c ........<...<...
8ff7970c: 8ffec6a0 0000003c 8ff7972c 00000000 ....<...,.......
8ff7971c: 00000000 00000000 00000000 00000000 ................
8ff7972c: 8ff79744 00000000 00000000 00000000 D...............
8ff7973c: 00000000 00000000 00000000 00000000 ................
8ff7974c: 00000000 00000000 00000000 00000000 ................
8ff7975c: 8ff79714 8ff7969c 8ff796e4 4a100a20 ............ ..J
8ff7976c: 4a100a60 4a1008e0 8ff796fc 8ff796fc `..J...J........
8ff7977c: 4a100a00 4a100a40 00000000 8ff79790 ...J@..J........
8ff7978c: 00000031 4a100208 4a100d80 00000000 1......J...J....
U-Boot# md 0x8ffecca0 //receive zeros?
8ffecca0: 00000000 00000000 00000000 00000000 ................
8ffeccb0: 00000000 00000000 00000000 00000000 ................
8ffeccc0: 00000000 00000000 00000000 00000000 ................
8ffeccd0: 00000000 00000000 00000000 00000000 ................
8ffecce0: 00000000 00000000 00000000 00000000 ................
8ffeccf0: 00000000 00000000 00000000 00000000 ................
8ffecd00: 00000000 00000000 00000000 00000000 ................
8ffecd10: 00000000 00000000 00000000 00000000 ................
8ffecd20: 00000000 00000000 00000000 00000000 ................
8ffecd30: 00000000 00000000 00000000 00000000 ................
8ffecd40: 00000000 00000000 00000000 00000000 ................
8ffecd50: 00000000 00000000 00000000 00000000 ................
8ffecd60: 00000000 00000000 00000000 00000000 ................
8ffecd70: 00000000 00000000 00000000 00000000 ................
8ffecd80: 00000000 00000000 00000000 00000000 ................
8ffecd90: 00000000 00000000 00000000 00000000 ................
it seems the rx dma was run into a wrong state, and is out of our limit, please check that is there any points to modify? or something else
Thanks in advance,
Keldy