搜索

451

主题

662

帖子

4997

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4997
QQ
发表于 2023-3-3 11:48:15 622 浏览 0 回复

T618 如何添加矩阵按键

需求:
       如何添加矩阵按键?

解决方案:
  1. 如下2×2矩阵键盘示例:
  2. 1.pinmap.c (function应配置为keyin*/keyout*)
  3. {REG_PIN_KEYIN1,                        BITS_PIN_AF(0)},
  4. {REG_MISC_PIN_KEYIN1,                   BITS_PIN_DS(1)|BIT_PIN_NULL|BIT_PIN_WPU|BIT_PIN_SLP_AP|BIT_PIN_SLP_WPU|BIT_PIN_SLP_IE},//KEYIN1
  5. {REG_PIN_KEYIN2,                        BITS_PIN_AF(0)},
  6. {REG_MISC_PIN_KEYIN2,                   BITS_PIN_DS(1)|BIT_PIN_NULL|BIT_PIN_WPU|BIT_PIN_SLP_AP|BIT_PIN_SLP_WPU|BIT_PIN_SLP_IE},//KEYIN2
  7. {REG_PIN_KEYOUT0,                       BITS_PIN_AF(0)},
  8. {REG_MISC_PIN_KEYOUT0,                  BITS_PIN_DS(1)|BIT_PIN_NULL|BIT_PIN_WPU|BIT_PIN_SLP_AP|BIT_PIN_SLP_WPU|BIT_PIN_SLP_IE},//KEYOUT0
  9. {REG_PIN_KEYOUT1,                       BITS_PIN_AF(0)},
  10. {REG_MISC_PIN_KEYOUT1,                  BITS_PIN_DS(1)|BIT_PIN_NULL|BIT_PIN_WPU|BIT_PIN_SLP_AP|BIT_PIN_SLP_WPU|BIT_PIN_SLP_IE},//KEYOUT1

  11. 2.dts
  12. keypad: keypad@32250000 {
  13.                 compatible = "sprd,s9820e-keypad";
  14.                 reg = <0 0x32250000 0  0x1000>
  15.                 interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
  16.                 clocks = <&aonapb_gate CLK_KPD_EB>,
  17.                          <&aonapb_gate CLK_KPD_RTC_EB>;
  18.                 clock-names = "enable", "rtc";
  19.                 keypad,num-rows= <2>; //使用了keyout0和keyout1,num由使用到的最大的keyout1确定
  20.                 keypad,num-columns = <3>; //使用了keyin1和keyin2,num由使用到的最大的keyin2确定
  21.                 debounce-inteval = <5>;
  22.                 linux,keymap = <0x00010066  /*KEYOUT0 KEYIN1  keycode1*/
  23.                                 0x0101008B  /*KEYOUT1 KEYIN1  keycode2*/
  24.                                 0x01020057  /*KEYOUT1 KEYIN2  keycode3*/
  25.                                 0x00020059>;/*KEYOUT0 KEYIN2  keycode4*/
  26.                 status = "okay";
  27. keymap计算方式:row << 24 | column << 16 | key-code
  28. key-code定义于/include/uapi/linux/input-event-codes.h
  29. 以上num-rows、num-columns、keymap需客制化修改

  30. 3.驱动
  31. sprd_keypad.c
  32. /kernel4.14/arch/aem64/configs/sprd_sharkl5pro_defconfig
  33. +CONFIG_KEYBOARD_SPRD = y
复制代码




手机微信同号:13682654092
回复

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


登录或注册
快速回复 返回顶部 返回列表