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.

AM623: SDK10.1 eMMC HS200 improvement

Part Number: AM623

Tool/software:

There are some questions regarding the patch comments, 

https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/?h=10.01.03&id=5bc0054f6e8f93be56a5cf2570e9db9d40f5d665

mmc: sdhci_am654: Add sdhci_am654_start_signal_voltage_switch

commit 93493662c0ad6878c8b01ed6d053ae99bc0bb76c upstream.
The sdhci_start_signal_voltage_switch function sets V1P8_SIGNAL_ENA by default after switching to 1v8 signaling. V1P8_SIGNAL_ENA determines whether to launch cmd/data on neg edge or pos edge of clock. Due to some eMMC and SD failures seen across am62x platform, do not set V1P8_SIGNAL_ENA by default, only enable the bit for devices that require this bit in order to switch to 1v8 voltage for uhs modes.
#1. Register HOST_CONTROL2 [V1P8_SIGNAL_ENA] bit description only mentioned control signal voltage. did not mention signal polarity. customer wants to know more details about how polarity related the voltage change? From which point change polarity from below #2 waveform
This bit controls voltage regulator for I/O cell. 3.3V is supplied to
the card regardless of signaling voltage. Setting this bit from 0 to
1 starts changing signal voltage from 3.3V to 1.8V. 1.8V regulator
output shall be stable within 5ms. Host Controller clears this bit if
switching to 1.8V signaling fails. Clearing this bit from 1 to 0 starts
changing signal voltage from 1.8V to 3.3V. 3.3V regulator output
shall be stable within 5ms. Host Driver can set this bit to 1 when
Host Controller supports 1.8V signaling [One of support bits is set to
1: SDR50, SDR104 or DDR50 in the Capabilities register] and the
card or device supports UHS-I. '0' 3.3V Signalling, '1' 1.8V Signalling
Reset Source: vbus_amod_g_rst_n 1 ENABLE 1.8V Signalling 0
DISABLE 3.3V Signalling
#2.  Did not observe voltage change across eMMC initialization, cmd is always 3.3V, data is always 1.8V.
#3.  “only enable the bit for devices that require this bit in order to switch to 1v8 voltage for UHS modes.
How to know if the eMMC device need or not need set SDHCI_CTRL_VDD_180?  there are seconds sources on customer side as eMMC is common device. will it cause incompatible。
And actually eMMC standard defined output in positive edge in single edge mode no matter what speed. What is the clock edge to output data/cmd before applying the patch? is it in negative edge?
  • Hi Tony,

    #1. Register HOST_CONTROL2 [V1P8_SIGNAL_ENA] bit description only mentioned control signal voltage. did not mention signal polarity. customer wants to know more details about how polarity related the voltage change? From which point change polarity from below #2 waveform

    The data line polarity change happens when eMMC switch to HS200 mode, it has nothing to do with the V1P8_SIGNAL_ENA bit.

    #2.  Did not observe voltage change across eMMC initialization, cmd is always 3.3V, data is always 1.8V.

    The data line voltage change (3.3v vs 1.8v) is only applicable to SD card. eMMC bus is always 1.8v.

    #3.  “only enable the bit for devices that require this bit in order to switch to 1v8 voltage for UHS modes.

    Again, this statement is only for SD card.

  • Bin, Tony,

    By signal polarity, I will asume you are talking about data launch on pos edge or neg edge of clock.

    If so, then V1P8_SIGNAL_ENA does affect "polarity".

    When V1P8_SIGNAL_ENA is set, we switch to full cycle timing or data launch at clock rising edge.

    ~ Judith

  • Hi Bin, Judith,

    Firstly, the patch resolved the issue. In order to identify the root cause and effective fact of the patch, customer split the patch to pieces, found the real effected change is "SDHCI_CTRL_VDD_180" operation.

    Can I understand the original drive did not set SDHCI_CTRL_VDD_180 for eMMC as it always works at 1.8V, but SDHCI_CTRL_VDD_180 impact data/clock polarity beside signal voltage, and it was not mentioned in TRM register description, if so, need to update it, and share us the correct register field description.

    When V1P8_SIGNAL_ENA is set, we switch to full cycle timing or data launch at clock rising edge.

    We need more details to help understanding.

    #1. From eMMC protocol standard, data always output(launch) at positive edgeis it at negative edge in default when SDHCI_CTRL_VDD_180 is not set? If so, the eMMC was working at wrong timing with old SDK? 

    #2. It explained why customers always report HS200 not working stable. But one of my customer's board work with SDK8.3 and mass productioned, if the timing polarity is wrong, how to assess the risk it the board in field will fail or not stable at HS200?

    #3. If my understanding of #1 is right, should be able to observe polarity changing on data/clock with/without SDHCI_CTRL_VDD_180 set. Is there waveform record when identify this issue.

    #4. Do you mean full cycle=double edge for DDR mode? HS200 is single edge mode, it should be not relevant.

  • Hi Tony,

    Please let us know if you still have question after Paul's explanation offline.

  • Update from offline by Paul:

    Half-cycle timing – this is where data is launched on the negative edge of clock and latched on the following positive edge of clock.

    Full-cycle timing – this is where data launched on the positive edge of clock and latched on the following positive edge of clock.

    DDR – this is where data is launched on each edge of clock and latched on the following edge of clock.

    The appropriate timing mode for each device is shown in the respective datasheet Switching Characteristics table and associated timing diagram.  For example, the AM62x device expects the host controller to operate in Half-cycle timing when you reference the Switching Characteristics of Legacy SDR and High Speed SDR modes.  You can see an example of Full-cycle timing when referencing the Switching Characteristics of HS200 mode.

  • Hi Paul,

    Customer needs to evaluate the risk of boards working in wrong timing mode in field, Question as below:

    As wrong configured to Half cycle timing for HS200 which should be full cycle timing. 

    #1. What is the setup/hold time requirements of wrong configured HS200 receive mode, customer need the data similar as below table SDR timing at 200MHz.

    #2. Also need the transmit timing data of HS200 wrong configured at half timing mode.

  • Closing this after the offline communication.