AM335x(TQ335x)学习笔记——GPIO按键驱动移植
还是按照S5PV210的学习顺序来,我们首先解决按键问题。TQ335x有六个用户按键,分别是上、下、左、右、Enter和ESC。开始我想到的是跟学习S5PV210时一样,编写输入子系统驱动解决按键问题,但是浏览driver/input/keyboard目录时意外的发现了gpio-keys.c,大体上看下该驱动程序,其功能是实现了通用的gpio按键。再去看了下DTS,发现DTS中有对gpio-keys的引用,于是猜到,新的内核不需要自己编写输入子系统驱动,可以通过配置DTS直接解决按键问题。本人最终通过实验证实了这个猜想,下面是实验笔记及本人的一些理解。
(1)确定GPIO管脚
通过查看TQ335x的原理图可以看到,TQ335x的6个按键分别接在GPIO1的20~25管脚上,原理图如下:
(2)查看原有的dts配置
进行DTS文件修改之前可以阅读下内核相关文档,在Documentation/devicetree/目录下有很多关于devicetree的记载,其实,这些第一手的资料才是最具参考价值的资料。我还没来得及系统的阅读这些文档,急于实现功能,仅阅读了gpio-key和pinmux相关的部分就开始了修改工作,这是浮躁的表现,大家不要养成这种恶习啊!
通过仔细阅读原dts文件可以发现am335x-evm开发板上有个gpio矩阵键盘和gpio的音量+、音量-键,且矩阵键盘和音量键与TQ335x的按键管脚有冲突,因此,删除这两组配置并重新添加适应TQ335x按键的配置。修改后的DTS代码片段如下:
- gpio_keypad:gpio_keyad@0{
- compatible="gpio-keys";
- #address-cells=<1>;
- #size-cells=<0>;
- autorepeat;
- switch@1{
- label="up";
- linux,code=<103>;
- gpios=<&gpio120GPIO_ACTIVE_LOW>;
- gpio-key,wakeup;
- };
- switch@2{
- label="down";
- linux,code=<108>;
- gpios=<&gpio121GPIO_ACTIVE_LOW>;
- gpio-key,wakeup;
- };
- switch@3{
- label="left";
- linux,code=<105>;
- gpios=<&gpio122GPIO_ACTIVE_LOW>;
- gpio-key,wakeup;
- };
- switch@4{
- label="right";
- linux,code=<106>;
- gpios=<&gpio123GPIO_ACTIVE_LOW>;
- gpio-key,wakeup;
- };
- switch@5{
- label="enter";
- linux,code=<28>;
- gpios=<&gpio124GPIO_ACTIVE_LOW>;
- gpio-key,wakeup;
- };
- switch@6{
- label="esc";
- linux,code=<1>;
- gpios=<&gpio125GPIO_ACTIVE_LOW>;
- gpio-key,wakeup;
- };
- }; 1 2
关键词: AM335x(Q335xGPIO按键驱
![](https://webstorage.eepw.com.cn/images/2014/m/wx.png)
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码
相关文章
-
2023-11-20
-
2023-10-28
-
-
-
-
-
-