配置设备树时钟信号assigned-clocks、assigned-clock-rates、assigned-clock-parents
时间: 2023-08-01 07:10:19 浏览: 1305
在设备树中,时钟信号的配置通常需要使用三个属性:`assigned-clocks`、`assigned-clock-rates` 和 `assigned-clock-parents`。
`assigned-clocks` 属性用于指定该设备需要使用的时钟信号。这个属性的值是一个整数数组,每个元素对应一个时钟信号,表示该设备需要使用哪些时钟。
`assigned-clock-rates` 属性用于指定每个时钟信号的频率。这个属性的值也是一个整数数组,每个元素对应一个时钟信号,表示该时钟信号的频率。
`assigned-clock-parents` 属性用于指定时钟信号的父时钟。这个属性的值是一个字符串数组,每个元素对应一个时钟信号,表示该时钟信号的父时钟。
举个例子,假设我们有一个设备需要使用两个时钟信号,一个叫做 `clk1`,一个叫做 `clk2`,它们的频率分别为 100 MHz 和 50 MHz,而且 `clk2` 的父时钟是 `clk1`。那么这个设备在设备树中的时钟配置应该如下所示:
```dts
clocks {
#address-cells = <1>;
#size-cells = <0>;
clk1: clk1 {
compatible = "fixed-clock";
clock-frequency = <100000000>;
};
clk2: clk2 {
compatible = "fixed-clock";
clock-parents = <&clk1>;
clock-frequency = <50000000>;
};
};
...
my-device {
compatible = "my-device";
...
assigned-clocks = <&clk1 0>, <&clk2 0>;
assigned-clock-rates = <100000000>, <50000000>;
assigned-clock-parents = "", "clk1";
};
```
在这个例子中,我们首先定义了两个时钟 `clk1` 和 `clk2`,并且指定了它们的频率和父时钟。然后在 `my-device` 的设备树节点中,我们将 `assigned-clocks` 属性设置为 `<&clk1 0>, <&clk2 0>`,表示它需要使用 `clk1` 和 `clk2` 两个时钟。同时,我们将 `assigned-clock-rates` 设置为 `<100000000>, <50000000>`,表示 `clk1` 的频率是 100 MHz,`clk2` 的频率是 50 MHz。最后,我们将 `assigned-clock-parents` 设置为 `""` 和 `"clk1"`,表示 `clk1` 没有父时钟,而 `clk2` 的父时钟是 `clk1`。这样,我们就完成了设备树中的时钟信号配置。
阅读全文