Other Parts Discussed in Thread: SYSCONFIG, TXS0206A
We are working on a custom board with AM5728 chipset and MMC1 Host controller is connected to an Embedded SDIO device with I/O-only support with no internal memory.
The Host Controller is programmed and controlled from DSP1 and we are using TI provided LLD driver routines. We have modified the TI Example application to send appropriate SDIO commands to enumerate our Embedded SDIO device. We are enumerating the SDIO device by following the I/O Aware sequence on the Host controller and so far, we were able to reach till below point,
Passes => CMD5 with expected response [0] 0x10ffff00, [1] 0x0, [2] 0x0, [3] 0x0
Passes => Polling of CMD5 till I/O ready bit gets set
Passes => CMD3 to request RCA and we receive valid RCA of 0x1
After this, sending of CMD7 for Card select with RCA=0x1 (as received from CMD3) is timing out
When we probe the MMC1_CMD and MMC1_CLK lines, we are seeing that after sending CMD7, Host controller does not see any response for 64 MMC clock cycles. According to MMCHS.CTO, it states that if a response is not received within 64 clocks Host controller raises the CTO event.
The same Embedded SDIO Device has been used on a different board connected to a Cypress based SDIO host controller and the enumeration goes through properly on that board design. On this new board design, the same SDIO Device is failing at CMD7 with Host controller not receiving any response.
Below points are similar between the two setups,
1. MMC Clock frequency is at 400KHz during these initial enumeration commands
2. CMD5/CMD3 sent before CMD7 are matching in both Command sent and Response received
3. Same Embedded SDIO Device is present on both the boards
I see two main differences when I compare the non-working case on AM5728 with the working Cypress board,
1. MMC Clock line when probed is continuous in working case and is not gated by Host controller activity. I configured the MMCHS_SYSCONFIG[0].AUTOIDLE=0x0 to get a free-running clock, but when probed, we still see the clock getting gated with MMC Command pin activity. We are reading MMCHS_SYSCONFIG=0x00001308 from the Host controller. What is the right programming needed for ungated/free-running MMC clock?
2. The non-working case has a TI level translator, TXS0206A, connected from Host controller (3.3V) to Embedded SDIO working at 1.8V. In working case, this level translator is not present. For now, I am assuming with CMD3/CMD5 working properly at 400KHz, CMD7 should also have responded properly
Below is the waveform seen with non-working case,
Below is the capture seen with working case,
Any inputs on solving this issue will be helpful.
thanks--
Somesh