设备树使用
通用的文件(iic)写在imx6ull.dtsi,具体的设备(mpu6050)写到imx6ull-alientek-emmc.dts
向节点追加或修改
&i2c1 {
/* 要追加或修改的内容 */
};
&i2c1 表示要访问 i2c1 这个 label 所对应的节点,也就是 imx6ull.dtsi 中的“i2c1:i2c@021a0000”
&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>;
};
};
属性“clock-frequency”就表示 i2c1 时钟为 100KHz。
status 属性的值由原来的 disabled 改为 okay
mag3110 添加的子节点
fxls8471 添加的子节点
一、创建设备树节点
alphaled {
#address-cells = <1>;
#size-cells = <1>;
compatible = "atkalpha-led";
status = "okay";
reg = < 0X020C406C 0X04 /* CCM_CCGR1_BASE */
0X020E0068 0X04 /* SW_MUX_GPIO1_IO03_BASE */
0X020E02F4 0X04 /* SW_PAD_GPIO1_IO03_BASE */
0X0209C000 0X04 /* GPIO1_DR_BASE */
0X0209C004 0X04 >; /* GPIO1_GDIR_BASE */
};
编译设备树 make dtbs。查看是否添加成功
二、从驱动函数中调用设备树值
/* 1、获取设备节点:alphaled */
dtsled.nd = of_find_node_by_path("/alphaled");
/* 2、获取compatible属性内容 */
of_find_property(dtsled.nd, "compatible", NULL);
/* 3、获取status属性内容 */
of_property_read_string(dtsled.nd, "status", &str);
/* 4、获取reg属性内容 */
of_property_read_u32_array(dtsled.nd, "reg", regdata, 10);