[Armadillo:09204] A-4x0 でのgpio-keyのパッチ
Yasuhisa Nakamura
email@hidden
2013年 9月 22日 (日) 13:02:17 JST
中村です。
質問や不具合ではなくて、こんなのがありました情報です。
2つあります。
その1)チャタリング防止
去年の2月〜3月に、こういう投稿がありました。
[Armadillo:07918] Armadillo-440 インプットデバイスのチャタリング防止について
http://lists.atmark-techno.com/pipermail/armadillo/2012-February/007921.html
[Armadillo:07920] Re: Armadillo-440 インプットデバイスのチャタリング防止について
http://lists.atmark-techno.com/pipermail/armadillo/2012-March/007923.html
このときは、自分で改造するしかない、ということでしたが、
探してみたところ、より新しいバージョンのgpio-keyドライバで
対応してましたので、バックポートして使ってみました。
Input: gpio-keys debouncing support
http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=a33466e31213cd7c46696160d3db78680b58f6a3
Input: gpio-keys - fix possible NULL pointer dereference
http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=74dd4393445ba37b79041d92de6ff7e7b68a4aec
確か、パッチがリジェクトされるところがあって、
手作業での修正が必要だったと思います。
arch/arm/mach-mx25/armadillo400.c の
static struct gpio_keys_button armadillo400_key_buttons[]
も修正が必要で、ボタンごとにパラメタを設定できます。
その2)リピート
リピート機能そのものはすでに入っていて、
それを使う!というフラグを追加するだけです。
Input: gpio-keys - add flag to allow auto repeat
http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=b67b4b117746aef686e527c3205792db0f2c9e16
これを使うには、arch/arm/mach-mx25/armadillo400.c の
static struct gpio_keys_platform_data armadillo400_gpio_key_data = {
の修正が必要で、こちらはボタンごとではなくて、
全体でリピート機能を使うか使わないかの設定です。
リピートの2つのパラメタは、ioctlで取得と設定ができます。
エラー処理などを省略して要点だけ書くと、こんな感じ。
int rep[2];
int fd = open("/dev/input/event0", O_RDWR);
// 取得
ioctl(fd, EVIOCGREP, rep);
printf("delay: %d, repeat rate: %d\n", rep[0], rep[1]);
// 設定
rep[0] = atoi(argv[1]); // delay
rep[1] = atoi(argv[2]); // repeat rate
ioctl(fd, EVIOCSREP, rep);
Armadillo-460のGPIOにボタンを7個ほど追加して1ヶ月くらい
使っていますが、問題はなさそうです。
--
なかむら
armadillo メーリングリストの案内