Linux デバイス ドライバーを作成しており、デバイス ツリー ファイルで次のクロック ツリーを定義する必要があります。
注: マルチプレクサーのオシレーターの選択は、gpio出力をハイまたはローにプルすることによって行われます。クロック ジェネレータは、I2C を介してプログラムされます。
これが私がこれまでに持っているものの例です:
clocks {
/* fixed clock oscillators */
osc22: oscillator22 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <22579200>;
};
osc24: oscillator24 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <24576000>;
};
/* clock multiplexer
* I'm afraid the following is not going to work :( ?
*/
mux: multiplexer {
compatible = "mux-clock"; /* <-------- ??? */
clocks = <&osc22>, <&osc24>; /* parent clocks */
};
};
i2c1 {
/* clock generator */
si5351: si5351c@60 {
#address-cells = <1>;
#size-cells = <0>;
#clock-cells = <1>;
compatible = "silabs,si5351c";
reg = <0x60>;
clocks = <0>, <&mux>;
clock-names = "xtal", "clkin";
status = "okay";
clkout0 {
reg = <0>;
silabs,disable-state = <2>;
silabs,clock-source = <3>;
};
};
};
参考文献:
デバイス ツリーで単純なgpio 制御クロック マルチプレクサーを定義するにはどうすればよいですか?