【问题标题】:How to configure clock through Device Tree?如何通过设备树配置时钟?
【发布时间】:2014-12-01 13:59:33
【问题描述】:

我试图为内核中包含的新设备配置时钟。 我有一个旧版本的内核,其中已包含该设备。

所以我尝试对时钟内核进行类似的更改。 但是在旧版本的内核中,有一个 C 文件用于为几乎所有设备配置时钟, 但我在较新的内核中找不到任何类似的文件。

经过调查,我发现在较新版本的内核中,用于配置时钟的参数通过设备树传递给内核。 所以我尝试更改 DT 以包含新设备的时钟,但我无法完全成功。 所以我的问题是:

1)内核如何获取参数和寄存器地址来配置特定设备的时钟

2)我们可以在内核或驱动程序中访问这些信息(如寄存器加法器)吗?

3)有没有其他方法,我们可以直接在驱动或者内核中使用寄存器来设置 时钟(如频率)

【问题讨论】:

  • 请指定您使用的设备和驱动程序。有些设备可以将频率传递给 clock-frequency 参数,对于其他设备,您需要定义一个时钟。

标签: linux-kernel linux-device-driver device-tree


【解决方案1】:

在设备树文件中,您可以指定设备的时钟频率。例如,考虑一个设备树,其中串行端口 (UART) 时钟频率设置为“时钟频率 = ;”。就您问题的下一部分而言,内核如何获取参数,驱动程序可以很容易地使用 api“of_get_property”从设备树中获取任何数据。作为示例,请参阅 legacy_serial.c 文件,另请参阅上述示例的“Documentation/devicetree/bindings/serial”。

【讨论】:

  • 感谢您的回答,我在DT中设置了时钟频率如上,但它不能正常工作,我在驱动程序中获得了一些其他频率。我们可以访问时钟配置寄存器并更改驱动中的时钟频率?
  • 查看“文档/clk.txt”。这将帮助您了解 /drivers/tty/serial 中的 of_serial 驱动程序如何利用设备树中的时钟频率属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-19
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多