2

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

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

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

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

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

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

4

1 回答 1

1

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

于 2014-12-02T15:18:13.997 回答