在linux中使用设备树强制SD卡检测为SDR50

在linux中使用设备树强制SD卡检测为SDR50,linux,arm,linux-device-driver,embedded-linux,sd-card,Linux,Arm,Linux Device Driver,Embedded Linux,Sd Card,我的任务是在ARM linux环境中测试SD/MMC驱动程序。我正在尝试测试驱动程序的SDR50功能。我的SD卡支持SDR104和SDR50。默认情况下,被检测为SDR104设备 我对设备树非常陌生。我想知道我是否可以禁用设备树中驱动程序的SDR104支持,以强制将我的SD卡检测为SDR50设备 我在网上找不到这样的例子。请帮忙 多谢各位 sdhci@ff160000 { compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";

我的任务是在ARM linux环境中测试SD/MMC驱动程序。我正在尝试测试驱动程序的SDR50功能。我的SD卡支持SDR104和SDR50。默认情况下,被检测为SDR104设备

我对设备树非常陌生。我想知道我是否可以禁用设备树中驱动程序的SDR104支持,以强制将我的SD卡检测为SDR50设备

我在网上找不到这样的例子。请帮忙

多谢各位

sdhci@ff160000 {
    compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
    interrupt-parent = <&gic>;
    interrupts = <0x0 0x30 0x4>;
    reg = <0x0 0xff160000 0x0 0x1000>;
    clock-names = "clk_xin", "clk_ahb";
    xlnx,device_id = <0x0>; };
sdhci@ff160000 {
compatible=“xlnx,zynqmp-8.9a”,“arasan,sdhci-8.9a”;
中断父项=;
中断=;
reg=;
时钟名称=“时钟新”、“时钟ahb”;
xlnx,设备_id=;};

在的设备树绑定文档中,您可以找到特定于该设备的所有设备树属性。在该文档的顶部,您会注意到绑定只是添加到MMC卡的通用设备树绑定上,位于内核源代码树中的
documentation/devicetree/bindings/MMC/MMC.txt

所以现在,你要退房了。具体而言,我认为以下绑定将引起您的兴趣:

  • 最大频率
    :最大工作时钟频率
  • sd-uhs-sdr50
    :支持sd-uhs sdr50速度
  • sd-uhs-sdr104
    :支持sd-uhs sdr104速度
我认为强制SDR50速度的最佳方法是将
max frequency
设置为SDR50的max frequency。根据我的研究,SDR50支持高达100 MHz的频率,因此您可以将最大频率设置为:

/* Frequency in Hz - can be decimal or hex */
max-frequency = <100000000>
/*频率(以Hz为单位)-可以是十进制或十六进制*/
最大频率=
模式是主机控制器功能和检测到的卡功能之间的折衷(协商)。在任何情况下,主机端都可以强制进入较慢的模式


模式选择与主机驱动程序相关,devicetree可能并不总是可以选择。我建议打开合适的驱动程序并禁用HS200/HS400功能/标志,以便将模式限制为sdr50或任何需要的模式。

您好,谢谢您提供的信息。除了“最大频率”,如果我没有在设备树中指定“sd-uhs-sdr50”参数。我可以说SDR50功能被禁用了吗?我不认为有专门禁用这些模式的绑定。我相信,如果你只是避免启用你不想要的模式,并相应地限制频率,你应该能够强迫它进入你想要的模式。