在使用了设备树以后,就不用这么复杂了,使用设备树的时候只要在对应的 I2C 节点下创建相应设备的
节点即可,比如我想添加一个触摸芯片 FT5X06 的设备,我就可以在对应的 I2C 的节点下这样写,如下所示:
注意:迅为 10.1 寸屏幕的触摸芯片是 gt911,4.3 寸触摸芯片是 tsc2007,其它都是 ft5426 芯片。
&i2c2
{
clock_frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2>;
status="okay";
edt-ft5x06 @38
{
compatible = "edt,edt-ft5306", "edt,edt-ft5x06", "edt,edt-ft5406";
pinctrl-names = "default";
pinctrl-0 = <&ts_int_pin& ts_reset_pin>;
reg = <0x38>;
interrupt-parent = <&gpio1>;
interrupts = <9 0>;
reset-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
irq-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
status = "okay";
};
}
第 6 行更改 status 为“okay”,使能 i2c-2 总线;
第 8 行触摸屏所使用的 FT5x06 芯片节点,挂载 I2C-2 节点下;“@”后面的“38”就是
edt-ft5x06 的 I2C 器件地址
第 10 行 compatible 用于和驱动程序的 compatible 匹配;
第 12 行 pinctrl-0 属性描述 FT5426 的复位 IO 和中断 IO 所使用的节点为
&ts_int_pin& ts_reset_pin
第 13 行 reg 属性描述 ft5x 的器件地址为 0x38;
第 14 行 interrupt-parent 属性描述中断 IO 对应的 GPIO 组为 GPIO1;
第 15 行 interrupts 属性描述中断 IO 对应的是 GPIO1 组的 9 号引脚和 0 号引脚;
第 16 行 reset-gpios 属性描述复位 IO 对应的 GPIO 为 GPIO5 9;
第 17 行 irq-gpios 属性描述中断 IO 对应的 GPIO 为 GPIO1 9。
因为我们的开发板默认是设备树的镜像, 我们进入到开发板的/sys/bus/i2c/devices/目录下,因为通过
查找原理图发现我们屏幕使用的是 i2c2,所以进入到 1-0038,查看 name 为 edt-ft5306
接下来我们以非设备树的方式写一个 client.c,然后加载进去,然后看一下和我们使用设备树的效果是
不是一样的呢?有些同学可能会说,现在都是用设备树了,为什么还要用以前的方法呢?因为我们以前的
方法也是需要熟悉的,我们只有学会以前的方法,才能够更好的理解现在的这种设备树的方法,而且有些
老的版本还是使用低版本的内核,比如说 kernel3.0。
更多内容:关注北京迅为