Linux kernel 如何通过设备树配置时钟?

Linux kernel 如何通过设备树配置时钟?,linux-kernel,linux-device-driver,device-tree,Linux Kernel,Linux Device Driver,Device Tree,我试图为内核中包含的新设备配置时钟。 我有一个旧版本的内核,其中的设备已经包括 因此,我尝试对内核进行类似的时钟更改。 但在旧版本的内核中,有一个C文件用于为几乎所有设备配置时钟, 但是我在更新的内核中找不到任何类似的文件 经过调查,我发现,在内核的较新版本中,配置时钟的参数通过设备树传递给内核。 因此,我试图更改DT以包含新设备的时钟,但未能完全成功。 因此,我的问题是: 1) 内核如何获取用于配置特定设备时钟的参数和寄存器地址 2) 我们可以在内核或驱动程序中访问这些信息(比如寄存器加法器)

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

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

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

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

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

3) 有没有其他方法可以直接使用驱动程序或内核中的寄存器进行设置
时钟(类似频率)

在设备树文件中,您可以指定设备的时钟频率。例如,考虑设备树,其中串行端口(UART)时钟频率被设置为“时钟频率=;”。至于问题的下一部分,即内核如何获取参数,驱动程序使用api“of_get_property”从设备树中获取任何数据同样容易。例如,请参阅legacy_serial.c文件,也可以查看上面的“Documentation/devicetree/bindings/serial”示例。

感谢您的回答,我将时钟频率设置为DT,如上所述,但它无法正常工作,我在驱动程序中获得了一些其他频率。我们可以访问时钟配置寄存器并更改驱动程序中的时钟频率吗?请参阅“Documentation/clk.txt”。这将帮助您了解/drivers/tty/serial的_串行驱动程序如何利用设备树中的时钟频率属性。请指定您使用的设备和驱动程序。有些设备可以将频率传递给with clock frequency参数,而对于其他设备,则需要定义时钟。