TI中文支持网
TI专业的中文技术问题搜集分享网站

am3359的linux的4*4键盘驱动??

谁有am3359是否有linux的4*4键盘驱动啊??要走input子系统的。

Jason Wang83:

你好,请问你是想用普通GPIO口来做4*4矩阵键盘吗?

joe joe:

回复 Jason Wang83:

是的

joe joe:

回复 Jason Wang83:

是的,要input子系统的。

Jason Wang83:

回复 joe joe:

如果只是普通的GPOI那和单片机是一样的啊,你把你以前写的51的矩阵键盘的程序拿出来看看,然后移植到335上不可以吗?

leo chen:

看看这个是否满足你要求

 EE_BeagleBone_Cape之矩阵键盘

http://bbs.eeworld.com.cn/thread-356191-1-1.html

/* Matrix GPIO Keypad Support for profile-0 only: TODO */

 

/* pinmux for keypad device */

static struct pinmux_config matrix_keypad_pin_mux[] = {

         {"uart1_txd.gpio0_15",        OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLDOWN},

         {"mcasp0_ahclkx.gpio3_21",    OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLDOWN},

         {"uart1_rxd.gpio0_14",        OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLDOWN},

         {"mcasp0_fsr.gpio3_19",       OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLDOWN},

 

         {"mcasp0_ahclkr.gpio3_17",    OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},

         {"mcasp0_fsx.gpio3_15",       OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},

         {"mcasp0_axr0.gpio3_16",      OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},

         {"mcasp0_aclkx.gpio3_14",     OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},

 

         {NULL, 0},

};

 

/* Keys mapping */

static const uint32_t am335x_evm_matrix_keys[] = {

         KEY(0, 0, KEY_A),

         KEY(1, 0, KEY_3),

         KEY(2, 0, KEY_2),

         KEY(3, 0, KEY_1),

 

         KEY(0, 1, KEY_B),

         KEY(1, 1, KEY_6),

         KEY(2, 1, KEY_5),

         KEY(3, 1, KEY_4),

 

         KEY(0, 2, KEY_C),

         KEY(1, 2, KEY_9),

         KEY(2, 2, KEY_8),

         KEY(3, 2, KEY_7),

 

         KEY(0, 3, KEY_D),

         KEY(1, 3, KEY_OK),

         KEY(2, 3, KEY_0),

         KEY(3, 3, KEY_DELETE),

 

};

 

const struct matrix_keymap_data am335x_evm_keymap_data = {

         .keymap      = am335x_evm_matrix_keys,

         .keymap_size = ARRAY_SIZE(am335x_evm_matrix_keys),

};

 

static const unsigned int am335x_evm_keypad_row_gpios[] = {

         GPIO_TO_PIN(0, 15), GPIO_TO_PIN(3, 21), GPIO_TO_PIN(0, 14), GPIO_TO_PIN(3, 19)

};

 

static const unsigned int am335x_evm_keypad_col_gpios[] = {

         GPIO_TO_PIN(3, 17), GPIO_TO_PIN(3, 15), GPIO_TO_PIN(3, 16), GPIO_TO_PIN(3, 14)

};

 

static struct matrix_keypad_platform_data am335x_evm_keypad_platform_data = {

         .keymap_data       = &am335x_evm_keymap_data,

         .row_gpios         = am335x_evm_keypad_row_gpios,

         .num_row_gpios     = ARRAY_SIZE(am335x_evm_keypad_row_gpios),

         .col_gpios         = am335x_evm_keypad_col_gpios,

         .num_col_gpios     = ARRAY_SIZE(am335x_evm_keypad_col_gpios),

         .active_low        = false,

         .debounce_ms       = 5,

         .col_scan_delay_us = 2,

};

 

static struct platform_device am335x_evm_keyboard = {

         .name  = "matrix-keypad",

         .id    = -1,

         .dev   = {

                   .platform_data = &am335x_evm_keypad_platform_data,

         },

};

 

static void matrix_keypad_init(int evm_id, int profile)

{

         int err;

 

         setup_pin_mux(matrix_keypad_pin_mux);

         err = platform_device_register(&am335x_evm_keyboard);

         if (err) {

                   pr_err("failed to register matrix keypad (4×4) device\n");

         }

}

joe joe:

回复 leo chen:

ti的和三星的驱动写法有什么区别吗

Jason Wang83:

回复 joe joe:

软件上应该是一样的。建议你先把原理看一看,然后在看看跟硬件相关联的接口,一般在软件里修改修改硬件相关的设置就可以工作了。

leo chen:

回复 Jason Wang83:

这个问题还没解决吗? 上面给出的解决方案是不是已经测试过了

sddsdssd ssdsd:

回复 Jason Wang83:

4 led set input;4 key set output

"在看看跟硬件相关联的接口,一般在软件里修改修改硬件相关的设置就可以工作了。"请问具体需要设着那些才能初始化成功?

leo chen:

回复 sddsdssd ssdsd:

不是已经给出例子了吗?测试一下啊

赞(0)
未经允许不得转载:TI中文支持网 » am3359的linux的4*4键盘驱动??
分享到: 更多 (0)