This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Problem Enabling RMII interface on NDK EMAC driver

Other Parts Discussed in Thread: TMS320C6455, SYSBIOS

Here is my Hardware setup:

TMS320C6455 (EMAC MII port) <---- (MII port) ---->[  Enet Switch  ] <--- (RMII port) --> Host P1021 (MAC RMII port)

MDIO port on the switch is controlled by the Host. There is no MDIO connection between DSP and the enet switch.

I am using NDK 2.24.00.11 + C6455 driver and sysbios 6.31.04.27.

I was be able to successfully passing message back and forth via TCP/IP socket between Host and DSP.

Then I modified DSP <--> Enet switch connection from MII to RMII, made some modification on the C6455 driver, and my socket connection is no longer working.

Here are some modification on the C6455 driver that I made:

In the EMAC_open in csl_emac.c, I added the following 

CSL_FINST(EMAC_REGS->MACCONTROL, EMAC_MACCONTROL_RMIISPEED, 25MHZ);

CSL_FINST(EMAC_REGS->MACCONTROL, EMAC_MACCONTROL_RMIIDUPLEXMODE, FULLDUPLEX);

Then after GMIIEN bit is set, I added the following code to de-assert RMII_RST bit.

CSL_FINS(DEV_REGS->EMACCFG, DEV_EMACCFG_RMIIRST, RELEASE);

The above changes broke my socket connection. Then I noticed several potential issues in the cslr_dev.h. Could someone please clarify this?

Is RMII_RST on bit 19 or bit 18?

RMIIRST_MASK is defined as 0x00080000 <--- Should this be 0x00040000 since RMII_RST is on bit 18?

RMIIRST_SHIFT is defined as 0x00000013 <-- I think this should be 0x00000012 if RMII_RST is on bit 18.

RMIIRST_ASSERT is defined as 0x00000000 <-- assert should be 1 according to datasheet

RMIIRST_RELEASE is defined as 0x00000001 <-- de-assert value should be 0 according to datasheet

After updating the #define values in cslr_dev.h, I still have problem with RMII interface. Please advise.

Thanks.