本帖最后由 F_madman 于 2017-2-9 18:24 编辑
之前学习的过程中大概整理了下pwm和spi的驱动,现在继续整理下i2c的驱动,只是一个简单的收发程序配了个proc的接口。感觉相对来说i2c的驱动还是比较简便的。在对应的i2c上加上dts的配置:
+ vol@34 {
+ compatible = "nxp,volume";
+ reg = <0x34>;
+ };
配置好Makefile
--- a/kernel/drivers/Makefile
+++ b/kernel/drivers/Makefile
@@ -157,3 +157,4 @@ obj-$(CONFIG_NTB) += ntb/
obj-$(CONFIG_GATOR) += gator/
obj-y += headset_observe/
+obj-y += volume_control.o
因为懒~所以只配了Makefile,没配Kconfig~{:3_55:}
下面是驱动的代码。有需要的初学者可以看看
ps:
经论坛的朋友提醒
大家要用这个驱动的话
去掉MODULE_DEVICE_TABLE(of, volume_of_match);这句
更新个i2c oled的驱动,源码见附件
volume_control.zip (1.89 KB)
oled.c.zip (5.27 KB)
晒晒 SPI接口的指纹识别,在firefly3288上
junhai
5
请问:I2C4的GPIO要用做普通GPIO的话,删除设备树中的配置就可以了吗?
junhai 发表于 2016-3-28 22:36
请问:I2C4的GPIO要用做普通GPIO的话,删除设备树中的配置就可以了吗?
dts里disabled掉,然后按普通io那样申请使用就可以了
junhai
7
madman 发表于 2016-3-29 08:59
dts里disabled掉,然后按普通io那样申请使用就可以了
i2c4: i2c@ff160000 {
compatible = "rockchip,rk30-i2c";
reg = <0xff160000 0x1000>;
interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&i2c4_sda &i2c4_scl>;
pinctrl-1 = <&i2c4_gpio>;
gpios = <&gpio7 GPIO_C1 GPIO_ACTIVE_LOW>, <&gpio7 GPIO_C2 GPIO_ACTIVE_LOW>;
clocks = <&clk_gates6 15>;
rockchip,check-idle = <1>;
status = "disabled";
};
i2c4在dts中的status = "disabled"的,但是为什么dev/下还有i2c4设备(crw-rw-rw- root root 89, 4 2011-01-01 12:00 i2c-4)?
我在自己的驱动中申请gpio是失败的啊!
去dts里面disabled,你这个是dtsi里面的,dts使能了的话会覆盖dtsi
junhai
12
madman 发表于 2016-3-29 14:04
去dts里面disabled,你这个是dtsi里面的,dts使能了的话会覆盖dtsi
dts里只有这个啊
&i2c4 {
status = “okay”;
ts@55 {
compatible = “goodix,gt8xx”;
reg = <0x55>;
touch-gpio = <&gpio7 GPIO_A6 IRQ_TYPE_LEVEL_LOW>;
reset-gpio = <&gpio7 GPIO_A5 GPIO_ACTIVE_LOW>;
//power-gpio = <&gpio0 GPIO_C5 GPIO_ACTIVE_LOW>;
max-x = <1280>;
max-y = <800>;
};
ts@01 {
compatible = "ct,vtl_ts";
reg = <0x01>;
screen_max_x = <2048>;
screen_max_y = <1536>;
irq_gpio_number = <&gpio7 GPIO_A6 IRQ_TYPE_LEVEL_LOW>;
rst_gpio_number = <&gpio7 GPIO_A5 GPIO_ACTIVE_HIGH>;
};
};
status = “okay”;改成 status = “disabled”;就好了~
其实你自己写的代码里面关于of_device_id和i2c_device_id是搞混淆了的,版主没仔细看吗,这会给人误导的
有学习了具体的东西,每天在各位大神的指导下进步一点点,谢谢
yangze
17
xiaofei 发表于 2016-7-26 10:13
good job…
楼主 注意查看你的of_device_id 与i2c_device_id哦