主题 : tiny210有没有矩阵驱动程序啊 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 95691
精华: 0
发帖: 6
金钱: 30 两
威望: 6 点
综合积分: 12 分
注册时间: 2013-08-21
最后登录: 2013-11-10
楼主  发表于: 2013-08-22 17:57

 tiny210有没有矩阵驱动程序啊

tiny210有没有矩阵驱动程序啊
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
1楼  发表于: 2013-08-23 10:04
有,驱动是 drivers/input/keyboard/samsung-keypad.c
级别: 新手上路
UID: 95691
精华: 0
发帖: 6
金钱: 30 两
威望: 6 点
综合积分: 12 分
注册时间: 2013-08-21
最后登录: 2013-11-10
2楼  发表于: 2013-08-23 15:17

 回 1楼(911gt3) 的帖子

4x4矩阵键盘驱动已经调试成功,用的就是samsung-keypad.c。打开内核调试模式可以检测到keydown和keyrelease两个事件,但是问题随之而来。

1.在s3c-keypad.kl和samsung-keypad.kl键盘布局文件里面定义了对应的按键值,
在samsung-keypad.c里面定义了
static uint32_t mini210_keymap[] __initdata = {
    //4 x 4 矩阵键盘
    KEY(0,0,KEY_1),KEY(0,1,KEY_2),KEY(0,2,KEY_3),KEY(0,3,KEY_A),
    KEY(1,0,KEY_4),KEY(1,1,KEY_5),KEY(1,2,KEY_6),KEY(1,3,KEY_B),
    KEY(2,0,KEY_7),KEY(2,1,KEY_8),KEY(2,2,KEY_9),KEY(2,3,KEY_C),
    KEY(3,0,KEY_S),KEY(3,1,KEY_0),KEY(3,2,KEY_P),KEY(3,3,KEY_D),
};    

static struct matrix_keymap_data mini210_keymap_data __initdata = {
    .keymap            = mini210_keymap,
    .keymap_size    = ARRAY_SIZE(mini210_keymap),
};

static struct samsung_keypad_platdata mini210_keypad_data __initdata = {
    .keymap_data    = &mini210_keymap_data,
    .rows            = 4,
    .cols            = 4,
};

然后又参照input.h里面的键值
改写s3c-keypad.kl
改写为
key 30    POWER             WAKE
key 10    9
key 11    0
key 2     1
key 3     2
key 4     3
key 5     4
key 6     5
key 7     6
key 8     7
key 9     8
按键时只有power键管用,其他按键能触发中断,显示内核调试信息,但是在短信,email里面都无法显示出对应的数字。