我正在尝试为内核中包含的新设备配置时钟。 我有一个较旧版本的内核,其中已包含该设备。
所以我尝试对时钟进行类似的内核更改。 但是在旧版本的内核中,有一个C文件用于配置几乎所有设备的时钟, 但我在新的内核中找不到任何类似的文件。
经过我的调查后发现,在较新版本的内核中,配置时钟的参数通过设备树传递给内核。 所以我试图改变DT以包含新设备的时钟,但我无法完全成功。 所以我的问题是:
1)内核如何获取参数和寄存器地址以配置特定器件的时钟
2)我们可以在内核或驱动程序中访问此信息(如注册加法器)吗?
3)还有其他方法,我们可以直接在驱动程序或内核中使用寄存器进行设置 时钟(如频率)
答案 0 :(得分:1)
在设备树文件中,您可以指定设备的时钟频率。例如,考虑设备树,其中串行端口(UART)时钟频率被设置为“clock-frequency =< 3686400&gt ;;”。至于你的问题的下一部分是关于内核如何获取参数,驱动程序使用api“of_get_property”从设备树中获取任何数据都很容易。作为示例,请参阅legacy_serial.c文件,还可以查看上面示例中的“Documentation / devicetree / bindings / serial”。