This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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

Other Parts Discussed in Thread: AM3359, TPS65910

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

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

  • 是的,要input子系统的。

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

  • 看看这个是否满足你要求

     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 (4x4) device\n");

             }

    }

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

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

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

  • 4 led set input;4 key set output

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

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

  • 试了根本没有任何反应,硬件初始化接口具体是那些函数?

    如果采用修改设备树的方式有参考文档马?

    /*

    Add matrix keypad device tree data to am335x-evm by adding all the necessary parameters like keymap, row & column gpios and etc.

    Signed-off-by: AnilKumar Ch <anil@ti.com>

    --- arch/arm/boot/dts/am335x-evm.dts |   20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)

    diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts index 9199456..8076e66 100644 --- a/arch/arm/boot/dts/am335x-evm.dts +++ b/arch/arm/boot/dts/am335x-evm.dts @@ -110,6 +110,26 @@ regulator-name = "lis3_reg"; regulator-boot-on; }; + + matrix_keypad: matrix_keypad@0 { + compatible = "gpio-matrix-keypad"; + debounce-delay-ms = <5>; + col-scan-delay-us = <2>; + + row-gpios = <&gpio2 25 0 /* Bank1, pin25 */ +      &gpio2 26 0 /* Bank1, pin26 */ +      &gpio2 27 0>; /* Bank1, pin27 */ + + col-gpios = <&gpio2 21 0 /* Bank1, pin21 */ +      &gpio2 22 0>; /* Bank1, pin22 */ + + linux,keymap = <0x0000008b /* MENU */ + 0x0100009e /* BACK */ + 0x02000069 /* LEFT */ + 0x0001006a /* RIGHT */ + 0x0101001c /* ENTER */ + 0x0201006c>; /* DOWN */ + }; };

    /include/ "tps65910.dtsi"

    */

  • 您最好能自行调试下,这个算是一个定制的驱动了。。。。

  • TI能否提供下4x4矩阵键盘设备树方式的驱动补丁?

  • 好像还没有这个打算

  • 那如果有两个矩阵键盘驱动 那要怎么写昵?