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.

[参考译文] DRA829J-Q1:MMCSD 超高速 (UHS) 模式问题

Guru**** 2832805 points

Other Parts Discussed in Thread: BEAGLEY-AI, SK-TDA4VM, TDA4VM

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1626659/dra829j-q1-mmcsd-ultra-high-speed-uhs-modes-issues

器件型号: DRA829J-Q1
Thread 中讨论的其他器件: BeagleY-AIDRA829SK-TDA4VM

在使用 DRA829 SoC 在定制电路板上以 SDR104 模式测试 MMCSD1 接口时、我注意到一些 SD 卡供应商存在问题、但该问题会影响其他评估板、例如 SK-TDA4VM (J721e)、Beagley-AI (J722s)、但不会影响 BBAI64 (J721e)。 (在删除 SDR104 限制之前、SD DDR50 会重现问题。)

预期结果:
[ 3.119790] mmc1: new ultra high speed SDR104 SDXC card at address 5048
[ 3.126756] mmcblk1: mmc1:5048 SD64G 58.0 GiB

结果是便宜的(假的?) SDCard 卡:
[ 3.142101] mmc1: new high speed SDXC card at address b369
[ 3.147949] mmcblk1: mmc1:b369 SDABC 58.2 GiB

我还注意到 u-boot 或 Linux 内核的引导问题与一些(并非所有)可疑的 SDcard 有关:

mmc1: SDHCI controller on 4fb0000.mmc [4fb0000.mmc] using ADMA 64-bit
Waiting for root device /dev/mmcblk1p2...
mmc1: error -110 whilst initialising SD card

它保证了 BBAI64 (j721e) 在 u-boot[1]中仅限于 SD 高速的 MMCSD1 接口上流式传输。

BeagleBoard AI64 似乎重复使用了其他 TI K3 SoC 的一些器件树示例。
实际上、第一个 K3 SoC (AM65xx) 过去似乎存在 SD UHS 问题、 因此 SD UHS 支持完全禁用:

“ARM:dts:k3-am625-sk-u-boot:在 MMCSD1 实例上禁用 UHS 速度模式

启用 UHS 速度模式时、在一些 SD 卡上会观察到不稳定性。 因此、应通过在 sdhci1 器件树节点中添加 sdhci-cap-Masks 来禁用 UHS 模式。“ [2]

“ARM:dts:k3-am654-base-board:将 SD 卡限制为高速模式

基板存在一个问题、即下电上电电路断电所需的时间比 MMC 内核预期的时间更长。 工程。 这可防止卡在 UHS 模式下进行枚举。

在新的电路板版本解决问题之前、禁用此电路板的 UHS 模式。“ [3]

“arm64:dts:k3:添加特定于 u-boot 的节点

arch/arm/dts/k3-am654-base-board-u-boot.dtsi
+&sdhci1{

  • u-boot、dm-spl;
  • 状态=“正常“;
  • pinctrl-names =“default";“;
  • pinctrl-0 =<&main_mmc1_pins_default>;
  • SDHCI-CAPS-MASK =<0x7 0x0>;+};
    “[4]

因此、当 u-boot 在 UHS 模式下配置 MMCSD 接口时、此 SD 卡问题可以重现、内核在使用某些 SD 卡验证电压开关信号时似乎存在一些问题。

MMC 驱动程序核心函数 MMC_SD_setup_card()[5]使用 MMC_READ_SWITCH ()[6]检索 SD 卡信息。 'sd3_bus_mode'值包含描述 SD 卡实际支持的标志。

但出于某种原因、对于某些 SD 卡、仅广播 SD HS 模式:

CARD->SW_CAPS.SD3_BUS_MODE = 3

对于其他 SD 卡、广播所有 UHS 模式:

卡->SW_CAPS.SD3_BUS_MODE 31

SD3_BUS_MODE 值由发送 SD_SWITCH 操作码的 MMC_SD_SWITCH ()[7]函数设置:

MMC_SD_SWITCH (... 状态);
...
CARD->SW_CAPS.SD3_BUS_MODE = STATUS[13];

禁用 SD UHS 模式可使 SD 卡保持由 3、3V VDD_SD_DV 电源供电。

通过 u-boot 启用 SD UHS 模式后、VDD_SD_DV 设置为 1、8V。 当内核启动时、对于某些 SD 卡 (SanDisk One)、PMIC 驱动程序会收到有关 LDO1 电压超出其预期范围的 IRQ:

[ 3.149028] tps6594 0-004C:LDO1 的 IRQ 陷阱过压错误

(SK TDA4VM 上重现问题)

因此、我们在 uboot 中禁用了 SD UHS、以便 Linux 内核正确配置 SD UHS。

注意:
对于 AM57xx SoC、TI-SDK 提供了一个“功能“SD 卡的简短列表[8]。
此列表是否仍适用于较新的 K3 SoC? 即使 MMCSD 控制器不同、也是如此。


关于 DRA829 SoC 的 MMCSD SDR104 支持:
由于勘误表 i2090、已通过提交[9]为所有 J721e SoC 禁用 SD UHS SDR104。

但此勘误表仅适用于 J721e SR1.0 [10]

 i2090 - MMCSD:MMCSD1 和 MMCSD2 速度问题

 受影响的器件修订版本
 SR 1.0 | SR 1.1 | SR 2.0
 是|否|否

TI J721e EVM 板 (REV A) 和其他基于 J721e 的板 (BeagleboneAI64 和 SK-TDA4VM) 公开使用的是 SoC SR1.1。

J721e SR1.0 用于早期的 J721E EVM 原型板修订版 E8 [11]、J721e EVM 修订版 E8a 原型已经使用 SR1.1。


在此期间、需要根据 2024 年 4 月发布的最新修订版数据表 SPRSP36K、使用传统和高速模式的延迟值更新 j721e-main 器件树[12]。

 (MMC1/2 - SD/SDIO 接口):更新/更改了
 的“OTAPDLYENA、延迟启用“和“OTAPDLYSEL、延迟值“
 默认速度和高速模式从“0x0"至“至“0x1"</s>“

表 6-86. 所有时序模式的 MMC1/2 DLL 延迟映射
(SPRSP36K–2021 年 9 月–2024 年 4 月修订)

内核邮件列表[13]上发送了一个补丁。

[1] https://source.denx.de/u-boot/u-boot/-/commit/7f78636667f4dcab784548651a2cc3abd60476cf#line_8b6ae81ae_A139
[2] BeagleBoard/u-boot@5c309ad
[3] https://source.denx.de/u-boot/u-boot/-/commit/9aa4302c02de12517bf08d0fc487bf4da290c3e2
[4] https://source.denx.de/u-boot/u-boot/-/commit/853f7f5018d9b67b6039a78127c44e2daa467204
[5] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/mmc/core/sd.c?h=linux-6.1.y#n944
[6] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/mmc/core/sd.c?h=linux-6.1.y#n324
[7] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/mmc/core/sd_ops.c?h=linux-6.1.y#n310
[8] https://software-dl.ti.com/processor-sdk-linux/esd/AM57X/11_01_02_01/exports/docs/linux/Foundational_Components /内核/UHS/Storage/MMC-SD.html#supported-ultra-high-speed-uty-modes Kernel_Drivers

[9] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=eb8f6194e8074d7b00642dd75cf04d13e1b218e4
[10] www.ti.com/.../sprz455.pdf
[11] www.ti.com/.../SPRR411

[12] www.ti.com/.../tda4vm.pdf
[13] https://lore.kernel.org/linux-omap/20260218203823.1825554-1-romain.naour@smile.fr/

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:
    感谢您的查询。 *** Gokul Praveen**目前正在休假、将在** 2026年03月17日**上提供。
    您的问题将在他们返回后得到解决。 感谢您的耐心和理解。
    此致、
    TI E2E 支持团队
    ——
    *这是一个自动通知。*

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Romain:

    [引述 userid=“333284" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1626659/dra829j-q1-mmcsd-ultra-high-speed-uhs-modes-issues

    在此期间、需要根据 2024 年 4 月发布的最新修订版数据表 SPRSP36K、使用传统和高速模式的延迟值更新 j721e-main 器件树[12]。

     (MMC1/2 - SD/SDIO 接口):更新/更改了
     的“OTAPDLYENA、延迟启用“和“OTAPDLYSEL、延迟值“
     默认速度和高速模式从“0x0"至“至“0x1"</s>“

    [/报价]

    首先、感谢您指出这一点。

    在 J721E EVM 上应用以下补丁后、SD 卡 UHS 速度模式是否正常工作。

    https://lore.kernel.org/linux-omap/20260218203823.1825554-1-romain.naour@smile.fr/

    此外、此修补程序是否被上流化。

    此致

    Gokul Praveen

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Gokul、

    如果我们与 SK-TDA4VM 相比、PMIC 周围的 J721e EVM 设计略有不同。
    在不更改硬件的情况下、VCC 电源由 tlv71033 稳压器控制、而由 PMIC-B ldo1 生成。

    在删除以下限制后广播 SDR104:
     

    # k3conf --version
    |-----------------------------------------------------------------------------------------|
    | VERSION INFO                                                                            |
    |-----------------------------------------------------------------------------------------|
    | K3CONF           | (version 2026.02-160-gd829327a04 built Tue Mar 17 14:50:43 UTC 2026) |
    | SoC              | J721E SR1.1                                                          |
    | SoC identifiers  | [0x1317be2a] fam: 0x00000004 base: 0x000002f7                        |
    | DIE-ID           | [0] 0x316A0002 [1] 0x06050005 [2] 0x08043394 [3] 0x1000b004          |
    | SYSFW            | ABI: 4.0 (firmware version 0x000b '11.1.8--v11.01.08 (Fancy Rat))')  |
    | DM ABI Info      | 3.0                                                                  |
    | DM F/w rev       | 11.1.8                                                               |
    | DM Component rev | RM/PM HAL:'v11.01.08a' SCI_SERV:'PSDK.11.01.00.04'                   |
    | F/w Capabilities | 0x101: GEN DM-SPLT                                                   |
    |-----------------------------------------------------------------------------------------|
    
    # cat /sys/devices/soc0/machine 
    Texas Instruments J721e EVM
    # cat /sys/kernel/debug/mmc1/ios 
    clock:          200000000 Hz
    actual clock:   200000000 Hz
    vdd:            21 (3.3 ~ 3.4 V)
    bus mode:       2 (push-pull)
    chip select:    0 (don't care)
    power mode:     2 (on)
    bus width:      2 (4 bits)
    timing spec:    6 (sd uhs SDR104)
    signal voltage: 1 (1.80 V)
    driver type:    0 (driver type B)
    # uname -a
    Linux buildroot 6.18.16 #1 SMP PREEMPT Wed Mar 11 21:22:47 CET 2026 aarch64 GNU/Linux


    该补丁位于内核邮件列表中、最好能由 TI 审核。

    此致、
    罗曼语

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:
    感谢您的查询。 *** Gokul Praveen**目前正在休假、将在** 2026年03月27日**上提供。
    您的问题将在他们返回后得到解决。 感谢您的耐心和理解。
    此致、
    TI E2E 支持团队
    ——
    *这是一个自动通知。*

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Romain:

    因为我不在办公室,所以对拖延表示歉意。

    内核邮件列表中提供了该补丁、如果 TI 能够对其进行审核就更好了。

    当然、我已经在内部讨论过这一点、他们说这将很快得到审查和批准。

    https://lore.kernel.org/linux-omap/20260218203823.1825554-1-romain.naour@smile.fr/

    再次感谢您指出这一点、Romain。

    此致

    Gokul Praveen