专栏首页程序手艺人[Linux驱动炼成记] 08-GPIO按键

[Linux驱动炼成记] 08-GPIO按键

这里以Amlogic A113为例

按键DTS配置

arch/arm64/boot/dts/amlogic/xxx.dts gpio key dts 配置 :

	gpio_keypad{
		compatible = "amlogic, gpio_keypad";
		status = "disable";
		scan_period = <20>;
		key_num = <2>;
		key_name = "mute","Alexa_wakeup";
		key_code = <115 116>;
		key_pin = <&gpio GPIOZ_10 GPIO_ACTIVE_LOW>,
				<&gpio_ao GPIOAO_4 GPIO_ACTIVE_LOW>;
		interrupts = <0 70 1
				0 71 2>;
		interrupt-names = "irq_keyup", "irq_keydown";
	};
    // key_name:按键名称
    // key_num:按键数量
    // key_code:按键上报值
    // key_pin:gpio配置
驱动源文件路径
//配置
arch/arm64/configs/meson64_smarthome_defconfig->CONFIG_AMLOGIC_GPIO_KEY=y

//gpio key驱动文件路径
drivers/amlogic/input/keyboard/adc_keypad.c

//按键定义

include/dt-bindings/input/linux-event-codes.h
开发板测试

驱动正常加载之后,进入文件系统,查看信息

# cat /proc/bus/input/devices
I: Bus=0010 Vendor=0001 Product=0001 Version=0100
N: Name="gpio_keypad"
P: Phys=gpio_keypad/input0
S: Sysfs=/devices/platform/gpio_keypad/input/input0
U: Uniq=
H: Handlers=kbd event0 
B: PROP=0
B: EV=100003
B: KEY=1f80000 0 0 0

测试按键是否按下抬起1

//按下按键,会上报键值
 cat /dev/input/event0

  1. 手把手教你写Linux设备驱动—input子系统 ↩︎

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 效率工具之SecureCRT

    SecureCRT是一款支持SSH的终端仿真程序,同时支持Telnet和rlogin协议等, 之前在Windows用过一段时间,之后切换到Linux平台,min...

    程序手艺人
  • AVS之Notifications测试方法

    程序手艺人
  • [ 后端篇 ] 10 - AWS API 返回 Endpoint request time out

    设备访问服务端的时候,返回Endpoint request time out,在stackoverflow看到有类似的问题 Amazon API gateway...

    程序手艺人
  • Python这10个字典操作你必须知道

    不要使用 key in d.keys(), 这是一种画蛇添足的操作,因为d.keys()会返回一个新的列表对象,导致内存最大。

    华章科技
  • Java:手把手带你源码分析 HashMap 1.7

    在了解 如何计算存放数组table 中的位置 后,所谓 知其然 而 需知其所以然,下面我将讲解为什么要这样计算,即主要解答以下3个问题: 1. 为什么不直接...

    Carson.Ho
  • 能不能让R按行处理数据?

    Hello亲爱的小伙伴们,大猫课堂又回来啦。从今天开始大猫会选择一些Stackoverflow.com上有关R数据处理的问答摘录给大家。这些问题都是在平日的工作...

    用户7652506
  • 泛函编程(8)-数据结构-Tree

        上节介绍了泛函数据结构List及相关的泛函编程函数设计使用,还附带了少许多态类型(Polymorphic Type)及变形(Type Variance)...

    用户1150956
  • 线程源码分析之specific.c(基于linuxthreads2.0.1)

    该文件是线程私有数据的实现。在线程tcb里有一个数组,保存了一系列的键对值。从而实现了线程的私有数据存储。线程想拥有自己的数据时,首先获取一个键,然后在tcb中...

    theanarkh
  • 解决zookeeper导致tomcat停止时报异常的问题

    jeremyxu
  • 程序员必备的16个实用的网站

    3个月以前在知乎上回答一个问题【有哪些能集实用,装逼于一身的冷门网站?】得到很多小伙伴的喜爱,一直到现在都还陆陆续续收到大家的赞,谢谢大家。

    Java后端技术

扫码关注云+社区

领取腾讯云代金券