[問題] spi driver 內加上 input device

看板LinuxDev作者 (藍藍欠)時間8年前 (2016/08/18 23:23), 8年前編輯推噓1(107)
留言8則, 2人參與, 最新討論串1/1
晚安 前陣子有在版上問關於在 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://www.ptt.cc/bbs/LinuxDev/M.1471533824.A.184.html ※ 編輯: blueblueChen (58.115.110.28), 08/18/2016 23:25:52

08/19 22:57, , 1F
1.我想kernel裡面的範例應該很多,可以參考看看
08/19 22:57, 1F

08/19 22:58, , 2F
2.你有做過基本的debug嗎? 最簡單的譬如在你的input_sync之
08/19 22:58, 2F

08/19 22:59, , 3F
後印個log,確定是否有執行到
08/19 22:59, 3F

08/19 23:01, , 4F
如果device driver沒問題,你的/dev/input/event*有選對嗎?
08/19 23:01, 4F

08/20 22:15, , 5F
c大妳好,我在input_sync內埋log追悼後來發現
08/20 22:15, 5F

08/20 22:16, , 6F
他會把重複的ABS_X ABS_Y ABS_Z drop 掉
08/20 22:16, 6F

08/20 22:16, , 7F
所以我才得不到資訊,delay了一天 但總算是虛驚一場
08/20 22:16, 7F

08/20 22:16, , 8F
謝謝。
08/20 22:16, 8F
文章代碼(AID): #1NjTC064 (LinuxDev)
文章代碼(AID): #1NjTC064 (LinuxDev)