使用设备树

时间:2018-05-06 14:13:21

标签: 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";
    interrupt-parent = <&gic>;
    interrupts = <0x0 0x30 0x4>;
    reg = <0x0 0xff160000 0x0 0x1000>;
    clock-names = "clk_xin", "clk_ahb";
    xlnx,device_id = <0x0>; };

2 个答案:

答案 0 :(得分:0)

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

现在,您需要查看that file。具体来说,我认为您会对以下绑定感兴趣:

  
      
  • max-frequency:最高工作时钟频率
  •   
  • sd-uhs-sdr50:支持SD UHS SDR50速度
  •   
  • sd-uhs-sdr104:支持SD UHS SDR104速度
  •   

我认为强制SDR50速度的最佳选择是将max-frequency设置为SDR50的最大频率。根据我的研究,SDR50支持高达100 MHz,因此您可以将最大频率设置为:

/* Frequency in Hz - can be decimal or hex */
max-frequency = <100000000>

答案 1 :(得分:0)

模式是主机控制器功能和检测到的卡功能之间的折衷(协商)。无论如何,可以将主机端强制设置为较慢的模式。

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