作者blueblueChen (蓝蓝欠)
看板LinuxDev
标题[问题] spi driver 内加上 input device
时间Thu Aug 18 23:23:41 2016
晚安
前阵子有在版上问关於在 dpi driver 内加上 input device ,然後想在 driver内
开启 open API ,後来用 input_report_abs 和 input_sync 取代,我已经花了
一天时间...明天就是交期...我还是试不出来,抱各位佛脚一下... 不胜感激..
我在自己写的 spi driver 开一个用 irq 触发的 kernel thread ,这里面就一直
作
input_report_ads(inputdev,ABS_X,1); //inputdev 是 struct input_dev *
input_report_ads(inputdev,ABS_Y,2);
input_report_ads(inputdev,ABS_Y,3);
input_sync(inputdev);
再进入 thread 之前,有做些 inputdev 的初始:
inputdev = input_allocate_device();
if (!inputdev) {
printk(KERN_ERR "Failed to allocate acc input device\n");
err = -ENOMEM;
goto failed;
}
sensor->input_acc->name = "xxxxx";
set_bit(EV_ABS, inputdev->evbit);
set_bit(ABS_X, inputdev->absbit);
set_bit(ABS_Y, inputdev->absbit);
set_bit(ABS_Z, inputdev->absbit);
input_set_abs_params(inputdev, ABS_X, -ACC_MAX, ACC_MAX, 0, 0);
input_set_abs_params(inputdev, ABS_Y, -ACC_MAX, ACC_MAX, 0, 0);
input_set_abs_params(inputdev, ABS_Z, -ACC_MAX, ACC_MAX, 0, 0);
input_set_abs_params(inputdev, ABS_RX, -ACC_MAX, ACC_MAX, 0, 0);
input_set_abs_params(inputdev, ABS_RY, -ACC_MAX, ACC_MAX, 0, 0);
input_set_abs_params(inputdev, ABS_RZ, -ACC_MAX, ACC_MAX, 0, 0);
input_set_abs_params(inputdev, ABS_THROTTLE, -ACC_MAX, ACC_MAX, 0, 0);
input_set_abs_params(inputdev, ABS_RUDDER, -ACC_MAX, ACC_MAX, 0, 0);
input_set_abs_params(inputdev, ABS_WHEEL, -ACC_MAX, ACC_MAX, 0, 0);
input_set_abs_params(inputdev, ABS_HAT0X, -ACC_MAX, ACC_MAX, 0, 0);
input_set_abs_params(inputdev, ABS_HAT1X, -ACC_MAX, ACC_MAX, 0, 0);
input_set_abs_params(inputdev, ABS_HAT2X, -ACC_MAX, ACC_MAX, 0, 0);
err = input_register_device(inputdev);
if (err) {
pr_err("Failed to register acc input device\n");
input_free_device(inputdev);
inputdev = NULL;
goto failed;
}
之後也写了小程式 去 open /dev/input/event* 我在上面注册的 input,再用 write
写入 struct input_event 去验证 getevent 可以拿到资讯....
但是我用 input_sync 这方法就无法,请问我上面那些步骤还少了些甚麽吗?
谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 58.115.110.28
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1471533824.A.184.html
※ 编辑: blueblueChen (58.115.110.28), 08/18/2016 23:25:52
1F:推 chiwa: 1.我想kernel里面的范例应该很多,可以参考看看 08/19 22:57
2F:→ chiwa: 2.你有做过基本的debug吗? 最简单的譬如在你的input_sync之 08/19 22:58
3F:→ chiwa: 後印个log,确定是否有执行到 08/19 22:59
4F:→ chiwa: 如果device driver没问题,你的/dev/input/event*有选对吗? 08/19 23:01
5F:→ blueblueChen: c大你好,我在input_sync内埋log追悼後来发现 08/20 22:15
6F:→ blueblueChen: 他会把重复的ABS_X ABS_Y ABS_Z drop 掉 08/20 22:16
7F:→ blueblueChen: 所以我才得不到资讯,delay了一天 但总算是虚惊一场 08/20 22:16
8F:→ blueblueChen: 谢谢。 08/20 22:16