V3s移植TSC2013触摸板芯片驱动,成功注册中断号,中断引脚有信号,但无反馈,i2c无反应,i2c能对此芯片寄存器读写,请问可能是什么原因?
# cat /proc/interrupts
CPU0
4: 0 sunxi_gpio_irq_chip tsc2013
离线
配置是 sys_config.fex 文件 如下:
tsc2013_driver_20190901-1522.zip
--------
253 ;i2c configuration
254 ; twi_used = twix enable ;; twi0->use pmu axp209 , twi1->use gsenor
255 ;-------------------------------------------------------------------------- --------
256 [twi0]
257 twi_used = 1
258 twi_scl = port:PB06<2><default><default><default>
259 twi_sda = port:PB07<2><default><default><default>
sunxi.c 文件添加如下:
/*tsc2013*/
struct tsc2013_platform_data tsc2013_data = {
155 .model = 2013,
156 .x_plate_ohms = 180,
157 };
592
593 if (i2c_register_board_info(0, i2c_tsc2013_devs, ARRAY_SIZE(i2c_tsc2 013_devs)) < 0) {
594 printk(KERN_ERR "%s()%d - tsc2013 init failed!\n", __func__, __LINE__);
595 }
596 printk(KERN_ERR "tsc2013 device registered\n");
最近编辑记录 liwenting_wyx@163.com (2019-09-01 15:23:05)
离线
有检测到的,控制台打印信息:
启动阶段:
-->tsc2013_init
[ 1.434014] tsc2013_init-->i2c_add_driver
[ 1.438675] -->tsc2013_probe
[ 1.442028] tsc2013_probe-->tsc2013_hw_init
[ 1.446719] -->tsc2013_hw_init
[ 1.450185] after gpio_request
[ 1.453625] after gpio_direction_input
[ 1.458102] ts_ptr--irq :4
[ 1.461168] tsc2013_probe-->tsc2013_sw_init
[ 1.466346] tsc2013_i2c_write_register : CFG[62] = 0xa58c
[ 1.472681] tsc2013_i2c_write_register : CFG[6a] = 0x0
[ 1.478708] tsc2013_i2c_write_register : CFG[72] = 0xb81c
cat /proc/interrupts
CPU0
4: 0 sunxi_gpio_irq_chip tsc2013
这是驱动注册后的设备信息:
# cat devices
I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="sunxi-keyboard"
P: Phys=sunxikbd/input0
S: Sysfs=/devices/virtual/input/input0
U: Uniq=
H: Handlers=kbd event0
B: PROP=0
B: EV=3
B: KEY=800 c0040 0 0 10000000
I: Bus=0018 Vendor=0000 Product=0000 Version=0000
N: Name="tsc2013_ts"
P: Phys=0-0048/input0
S: Sysfs=/devices/virtual/input/input1
U: Uniq=
H: Handlers=event1
B: PROP=0
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=2610000 0
离线
触摸 触摸板是中断脚是有电平变化的,但是i2c两线无反应,cat event1 无数据反馈,推测原因是没进入中断服务函数,但是中断号成功注册了,也匹配上了,中断条件也符合了。
晕哥,问一下:
893 static irqreturn_t tsc2013_irq(int irq, void *handle)
894 {
895 struct tsc2013 *ts = handle;
896
897 printk(KERN_ERR "-->tsc2013_irq\n");
898
899 schedule_delayed_work(&ts->work, msecs_to_jiffies(ts->poll_delay));
900
901 if (ts->clear_penirq)
902 ts->clear_penirq();
903
904 return IRQ_HANDLED;
905 }
906
这是中断服务函数:
触摸触摸板,正常情况下,进入此函数之后会打印 --》tsc2013_irq 到控制台显示吗?因为不是启动阶段,不确定
因为 cat event1 后触摸触摸板无任何数据反馈,这个字符串也没有显示, 如果是正常情况下,此字符串显示的话就是没有进入到中断服务函数
离线
是不是你选的gpio不具有中断功能哦
离线
是具有中断功能的,PB4 EINT4 ,而且已经成功注册号中断号了
离线
1.i2c 设备是否注册成功
2.input 设备是否注册成功
3.input 设备初始化设置检查一下
离线