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.

[参考译文] Linux/am3357:MMC0引脚多路复用配置

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/668324/linux-am3357-mmc0-pinmux-configuration

器件型号:AM3357

工具/软件:Linux

我一直在查看 Uboot 和 Linux 的器件树、但无法找到连接到 mmc0的 SD 卡的 pinmux 设置的位置。  

在 AM335x-evm.dts 中、我找到以下内容、告诉我 pinmux 配置位于 mmc1_pins 下:

&mmc1{
status ="确定";
VMMC-supply =<&VMMC_reg>;
总线宽度=<4>;
pinctrl-names ="默认值";
pinctrl-0 =<&mmc1_PINs>;
CD-GPIO =<&GPIO0 6 GPIO_ACTIVE_LOW>;
}; 

当我在 pinmux 部分中查找 mmc1_pins 时、我会看到:

mmc1_pins:pinmux_mmc1_pins{
pinctrl-single、pins =<
0x160 (PIN_input | MUX_MODE7)/* spi0_CS1.GPIO0_6 */
>;
}; 

如果没有引脚0x0f0、0x0f4、0x0f8、0x0fc、0x100、 0x104? 我理解0x160行的含义、但我也希望得到 Data0-2、CLK、CMD 的定义。 我知道 ROM 引导加载程序会在查找 SPL 时设置这些引脚、但如果您打算使用这些引脚、保留在 devicetree 中定义的引脚是否谨慎?

为了便于参考、我希望找到如下内容:

mmc1_pins:pinmux_mmc1_pins{
pinctrl-single、pins =<
0x100 (PIN_INPUT | MUX_MODE0)/*(G17) mmc0_clk.mmc0_clk *
0x104 (PIN_INPUT | MUX_MODE0)/*(G18) mmc0_cmd.mmc0_cmd *
0xFC (PIN_INPUT | MUX_MODE0)/*(G16) mmc0_data0.mmc0_data0 */
0xf8 (PIN_INPUT | MUX_MODE0)/*(G15) mmc0_data1.mmc0_data1 */
0xf4 (PIN_INPUT | MUX_MODE0)/*(F18) mmc0_data2.mmc0_data2 */
0xf0 (PIN_INPUT | MUX_MODE0)/*(F17) mmc0_data3.mmc0_data3 */
0x160 (PIN_INPUT | MUX_MODE7)/*(C15) spi0_CS1.mmc0_sdcd */
>;
}; 

感谢您的任何见解、

Tyler

 

编辑


我使用了 BeagleBone Black 使用的 DTB (未启用 uboot 覆盖)并对其进行了反编译、我发现 mmc1的情况与此完全相同:

pinmux_mmc1_pins{
pinctrl-single、pins =<0x160 0x2F>;
Linux、phandle =<0x38>;
phandle =<0x38>;
}; 

因此、我确信 SD 卡总线没有引脚多路复用器配置、我认为这是因为 ROM 引导加载程序正在设置引脚多路复用器、 但是、我的原始问题是、如果您打算使用这些引脚、保留在 devicetree 中定义的这些引脚并不谨慎 、或者是否有很好的理由在 ROM 引导加载程序设置这些引脚后不接触这些引脚的引脚多路复用寄存器?

Tyler

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

    您好、Tyler、

    mmc0的 Pinmux 配置在此处完成 /board-support/u-boot- U-Boot 中的/board/ti/am335x/mux.c。 请 也查看此文章。

    此致、
    Kemal

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

    您是否知道 Linux 启动期间是否发生了同样的情况、以及等效文件在内核源代码中的位置?

    Tyler
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Linux 中用于引脚多路复用的等效文件是内核的器件树、但在 U-Boot 中完成后不会执行两次。 这就是为什么在该文件中、请阅读它。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我确实阅读了您链接的文章、但我认为它不适用于我的器件、我认为它适用于 AM57XX 系列、而不适用于 AM335X 系列。  我读过 AM335X 的 TRM、没有提到 IO 时序或隔离模式。

    也就是说、我不知道 mux.c 中的编码引脚多路复用设置、这清除了这些设置在何处的问题。 我仍然想知道为什么不能/不能在设备树中重新配置它们?

    我们正在使用 mmc1从 eMMC 器件启动的电路板、我想知道我是否需要从器件树中移除引脚多路复用器重新配置、以模仿我在 mmc0中看到的内容? 观察 BeagleBone Distro、它们也不会在器件树中重新配置 mmc0、但会在 uboot 后重新配置 mmc1。 在开始制造之前、我正在努力确保我们的器件树中不存在缺陷。

    谢谢你

    Tyler

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    器件树中的 mmc1实际上是 mmc0。 那么、您要从物理 mmc1引导吗? 这将是器件树中的 mmc2。

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

    我从 TI 对 MMC 的定义中讲、是的、物理 mmc1是 devicetree mmc2。

    我试图传达的是、物理 mmc1在器件树中确实具有将在引导期间应用的引脚多路复用配置、但 mmc0没有。 为什么在 uboot 执行配置后不应触发 mmc0、即使 uboot 同时设置了 mmc0和 mmc1?

    我觉得我缺少了一些知识、可以解释为什么在 uboot 之后无法触及 mmc0。 如果我接受这种说法、如果只是为了两次做同样的事情、但如果原因是芯片会停止并着火、我需要知道这一点、以确保不会发生。

    再次感谢
    Tyler
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Tyler、
    物理端口 mmc0应具有引脚多路复用器和器件树中的节点。 已打开 TT 以将其添加到中。

    Steve K.