imx6 添加matrix keypad

imx6 添加matrix keypadfreescale增加matrixkeypad1.添加设备树,imx6有矩阵键盘功能,支持8*8的键盘kernel_imx/arch/arm/boot/dts/imx6qdl.dtsi/*addedbyyue.zhong*/#include//键值定义的地方,这是一个链接文件,指向kernel_imx/include/dt-bindings/input/i

大家好,又见面了,我是你们的朋友全栈君。

freescale增加matrix keypad

keypad_pin_sch

keypad_pin_sch2

keypad_keymap

1.添加设备树,imx6 有矩阵键盘功能,支持8*8的键盘
kernel_imx/arch/arm/boot/dts/imx6qdl.dtsi

/*added by yue.zhong*/

#include <dt-bindings/input/input.h>

//键值定义的地方,这是一个链接文件,指向kernel_imx/include/dt-bindings/input/input.h

/*endadded by yue.zhong*/


kpp: kpp@020b8000 {

compatible = “fsl,imx6q-kpp”, “fsl,imx21-kpp”;
reg = ;
interrupts = ;
clocks = <&clks 0>;

linux,keymap = <
KEY(2, 2, KEY_SOS) KEY(2, 4, KEY_FUN1) KEY(2, 5, KEY_FUN2) KEY(2, 6, KEY_FUN3) KEY(2, 7, KEY_CALL) KEY(4, 2, KEY_PTT) KEY(4, 4, KEY_UP) KEY(4, 5, KEY_DOWN) KEY(4, 6, KEY_LEFT) KEY(4, 7, KEY_RIGHT)
KEY(5, 2, KEY_VOLUMEUP) KEY(5, 4, KEY_1) KEY(5, 5, KEY_2) KEY(5, 6, KEY_3) KEY(5, 7, KEY_ASTERISK) KEY(6, 2, KEY_VOLUMEDOWN) KEY(6, 4, KEY_4) KEY(6, 5, KEY_5) KEY(6, 6, KEY_6) KEY(6, 7, KEY_0)
KEY(7, 2, KEY_FUN4) KEY(7, 4, KEY_7) KEY(7, 5, KEY_8) KEY(7, 6, KEY_9) KEY(7, 7, KEY_POUND)
>;

}

kpp {

pinctrl_kpp_1: kpp_grp_1 {

fsl,pins = <
MX6QDL_PAD_KEY_COL2__KEY_COL2 0x1b0b0
MX6QDL_PAD_KEY_COL4__KEY_COL4 0x1b0b0
MX6QDL_PAD_GPIO_19__KEY_COL5 0x1b0b0
MX6QDL_PAD_GPIO_9__KEY_COL6 0x1b0b0
MX6QDL_PAD_GPIO_4__KEY_COL7 0x1b0b0
MX6QDL_PAD_KEY_ROW2__KEY_ROW2 0x110b0
MX6QDL_PAD_KEY_ROW4__KEY_ROW4 0x110b0
MX6QDL_PAD_GPIO_1__KEY_ROW5 0x110b0
MX6QDL_PAD_GPIO_2__KEY_ROW6 0x110b0
MX6QDL_PAD_GPIO_5__KEY_ROW7 0x110b0
>;

};
};

对应驱动在kernel_imx\drivers\input\keyboard\imx-keypad.c

imx_keypad_setup_timer_bug

但是设备驱动注册后,驱动中的定时器没有运行。。。囧,换方法,用gpio模拟。

过程中出现了ROW4所在的第二行始终为低电平,后决定驱动迎合电平状态,行列互换先满足键盘正常工作。
kpp: kpp@020b8000 {

compatible = “gpio-matrix-keypad”;
debounce-delay-ms = ;
col-scan-delay-us = ;
gpio-activelow = ;
kp-backlight-gpios = <&gpio6 7 0>;
pinctrl-0 = <&pinctrl_kpp_1>;
/*row turn col*/
row-gpios = < &gpio4 10 1 &gpio4 14 1 &gpio4 5 1 &gpio1 9 1 &gpio1 4 1>;

col-gpios = < &gpio4 11 0 &gpio4 15 0 &gpio1 1 0 &gpio1 2 0 &gpio1 5 0>;

linux,keymap = <
KEY(0, 0, KEY_SOS) KEY(0, 1, KEY_PTT) KEY(0, 2, KEY_VOLUMEUP) KEY(0, 3, KEY_VOLUMEDOWN) KEY(0, 4, KEY_FUN4)
KEY(1, 0, KEY_FUN1) KEY(1, 1, KEY_UP) KEY(1, 2, KEY_1) KEY(1, 3, KEY_4) KEY(1, 4, KEY_7)
KEY(2, 0, KEY_FUN2) KEY(2, 1, KEY_DOWN) KEY(2, 2, KEY_2) KEY(2, 3, KEY_5) KEY(2, 4, KEY_8)
KEY(3, 0, KEY_FUN3) KEY(3, 1, KEY_LEFT) KEY(3, 2, KEY_3) KEY(3, 3, KEY_6) KEY(3, 4, KEY_9)
KEY(4, 0, KEY_CALL) KEY(4, 1, KEY_RIGHT) KEY(4, 2, KEY_ASTERISK) KEY(4, 3, KEY_0) KEY(4, 4, KEY_POUND)
>;

}

对应驱动在kernel_imx\drivers\input\keyboard\matrix_keypad.c

2.键盘灯的gpio也不能拉动,很奇怪。
keypad_backlight_sch

keypad_backlight_sch2

前两个问题都有遗留问题没有解决,未完待续。。。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130362.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月14日 下午1:36
下一篇 2022年6月14日 下午1:36


相关推荐

  • navicat 15 激活码【注册码】

    navicat 15 激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    45
  • Android ViewPager 垂直滑动 纵向滑动 VerticalViewPager[通俗易懂]

    Android ViewPager 垂直滑动 纵向滑动 VerticalViewPager[通俗易懂]项目里头需要用到一个在垂直方向滑动页签的效果,这可难道宝宝了,不过google还是强大的,在stackoverflow找到了人生的真谛。具体链接传送门特么的里面居然出现了四五种方案,选择困难症啊。。。。。。实验了其中的两种,效果上均可行,另外两种均是github的项目,没细看,有兴趣的可以去做对比地址VerticalViewPagerVe

    2022年7月22日
    15
  • FIONREAD 判断 socket有多少数据可读[通俗易懂]

    FIONREAD 判断 socket有多少数据可读[通俗易懂]Ioctl(sockfd,FIONREAD,&npend); /*checkFIONREADsupport*/检查sockfd表示的文件描述符中有多少数据可以读取

    2022年7月23日
    18
  • 关于JavaScript闭包理解

    关于JavaScript闭包理解js 的作用域分两种 和 基于所熟悉的作用域链相关知识 知道在 js 作用域环境中访问变量的权利是的 内部作用域可以获得当前作用域下的变量并且可以获得当前包含当前作用域的外层作用域下的变量 反之则不能 也就是说在外层作用域下无法获取内层作用域下的变量 同样在不同的函数作用域中也是不能相互访问彼此变量的 那么想在一个函数内部也有限权访问另一个函数内部的变量该怎么办呢 闭包就是用来解决这一需求的 我们首先知道闭包有 3 个特性 函数嵌套函数 函数内部可以引用函数外部的参数和变量 参数和变量不会被垃圾回收机制回

    2025年9月16日
    5
  • js实现冒泡排序_js 冒泡排序

    js实现冒泡排序_js 冒泡排序冒泡排序原理:冒泡排序算法的原理如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比比较 白话就是:比如有6个数,你需要比较5趟,这……

    2022年10月10日
    5
  • java语言helloworld源代码[通俗易懂]

    java语言helloworld源代码[通俗易懂]java语言helloworld源代码publicclassHello{publicstaticvoidmain(String[]args){System.out.println(“hello,world”);}}

    2022年5月28日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号