设备树节点追加内容

  设备树是描述PCB硬件信息的文件,如果PCB增加一个六轴芯片fxls8471, fxls8471 要接到PCB的 I2C1 接口上,那么相当于需要在 i2c1 这个节点上添加一个 fxls8471 子节点。对于I2C1 接口对应的节点,在文件 imx6ull.dtsi 文件,有如下所示内容:

i2c1: i2c@021a0000 {
    
    
	#address-cells = <1>;
	#size-cells = <0>;
	compatible = "fsl,imx6ul-i2c", "fsl,imx21-i2c";
	reg = <0x021a0000 0x4000>;
	interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
	clocks = <&clks IMX6UL_CLK_I2C1>;
	status = "disabled";
};

  现在要在 i2c1 节点下创建一个子节点,这个子节点就是 fxls8471,最简单的方法就是在 i2c1 下直接添加一个名为 fxls8471 的子节点。

i2c1: i2c@021a0000 {
    
    
	#address-cells = <1>;
	#size-cells = <0>;
	compatible = "fsl,imx6ul-i2c", "fsl,imx21-i2c";
	reg = <0x021a0000 0x4000>;
	interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
	clocks = <&clks IMX6UL_CLK_I2C1>;
	status = "disabled";
	//fxls8471 子节点
	fxls8471@1e {
    
    
		compatible = "fsl,fxls8471";
		reg = <0x1e>;
	};
};

  i2c1 节点是定义在 imx6ull.dtsi 文件中的,而 imx6ull.dtsi 是设备树头文件,所以直接添加子节点是不合适的。因此,一般是在PCB使用的dts设备树文件中向节点追加数据。例如在dts文件中:

&i2c1 {
    
    
	clock-frequency = <100000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c1>;
	status = "okay";

	mag3110@0e {
    
    
		compatible = "fsl,mag3110";
		reg = <0x0e>;
		position = <2>;
	};

	fxls8471@1e {
    
    
		compatible = "fsl,fxls8471";
		reg = <0x1e>;
		position = <0>;
		interrupt-parent = <&gpio5>;
		interrupts = <0 8>;
	};
};

  &i2c1 表示要访问 i2c1 这个 label 所对应的节点,也就是 imx6ull.dtsi 中的“i2c1:i2c@021a0000”。
  示例代码就是向 i2c1 节点添加/修改数据,比如第 2 行的属性“clock-frequency”就表示 i2c1 时钟为 100KHz。“clock-frequency”就是新添加的属性。第 5行,将 status 属性的值由原来的 disabled 改为 okay。
  第7~12行, i2c1 子节点 mag3110。
  第 13~18 行, i2c1 子节点 fxls8471。

猜你喜欢

转载自blog.csdn.net/xxxx123041/article/details/120068827