Linux设备驱动之gpio-keys(3)

接前一篇文章:Linux设备驱动之gpio-keys(2)

本文内容参考:

Linux设备驱动之gpio-keys_linux gpio-keys-CSDN博客

Linux gpio-keys驱动解析-CSDN博客

GPIO-KEY的实现原理及使用方法_gpio-keys-CSDN博客

linux gpio key 实现方式_llinux gpio key 长按-CSDN博客

Linux设备树深度剖析

特此致谢!

上一回开始对于gpio-keys的核心功能与架构进行详细解析,讲了设备树(DTS)相关配置,本回继续沿着流程往下进行解析。

二、详细解析

2. gpio-keys的platform驱动

前文书已经讲过,gpio-keys驱动基于input子系统及平台架构(platform_bus、platform_driver、platform_device),其主文件为<Linux内核源码根目录>/drivers/input/keyboard/gpio_keys.c。

先来看gpio_keys.c的入口代码:

static int __init gpio_keys_init(void) { return platform_driver_register(&gpio_keys_device_driver); } static void __exit gpio_keys_exit(void) { platform_driver_unregister(&gpio_keys_device_driver); } late_initcall(gpio_keys_init); module_exit(gpio_keys_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Phil Blundell <pb@handhelds.org>"); MODULE_DESCRIPTION("Keyboard driver for GPIOs"); MODULE_ALIAS("platform:gpio-keys");

gpio_keys_device_driver的定义就在上边,代码如下:

static struct platform_driver gpio_keys_device_driver = { .probe = gpio_keys_probe, .shutdown = gpio_keys_shutdown, .driver = { .name = "gpio-keys", .pm = &gpio_keys_pm_ops, .of_match_table = gpio_keys_of_match, .dev_groups = gpio_keys_groups, } };

首先重点关注以下一行代码:

.of_match_table = gpio_keys_of_match,

gpio_keys_of_match的定义和初始化代码也在同文件(drivers/input/keyboard/gpio_keys.c)中,如下:

static const struct of_device_id gpio_keys_of_match[] = { { .compatible = "gpio-keys", }, { }, }; MODULE_DEVICE_TABLE(of, gpio_keys_of_match);

设备树通过compatible属性实现与驱动的匹配,反过来也就是,这里的平台驱动(platform_driver)通过成员.of_match_table对应的struct of_device_id gpio_keys_of_match中的compitable字段实现与设备树的匹配。

这里以Linux内核中的arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts(应该是以RK3399为主芯片的香橙派)为例,看一下驱动和设备树是如何对应起来的。

rk3399-orangepi.dts中的对应代码(片段)如下:

keys: gpio-keys { compatible = "gpio-keys"; autorepeat; key-power { debounce-interval = <100>; gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; label = "GPIO Power"; linux,code = <KEY_POWER>; linux,input-type = <1>; pinctrl-names = "default"; pinctrl-0 = <&pwr_btn>; wakeup-source; }; };

由代码可知,在香橙派中,PA5对应的为按键,使用了gpio-keys驱动。

再举一例,以笔者最近使用的米尔电子T113开发板为例,看一下其中的gpio-keys的相关代码,在device/config/chips/t113_i/configs/myir_image_yt113i/linux-5.4/board.dts中,如下所示:

gpio-keys { compatible = "gpio-keys"; status = "okay"; vol-down-key { gpios = <&pio PE 1 GPIO_ACTIVE_LOW>; linux,code = <114>; label = "user key"; debounce-interval = <10>; wakeup-source = <0x1>; }; };

由代码可知,在米尔开发板中,PE1为按键,使用了gpio-keys驱动。米尔开发板这部分的原理图如下:

更多内容请看下回。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1141287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现AI Agent的动态任务优先级调度

实现AI Agent的动态任务优先级调度 关键词:AI Agent、动态任务优先级调度、任务管理、算法原理、实际应用 摘要:本文围绕实现AI Agent的动态任务优先级调度展开。首先介绍了该主题的背景信息,包括目的、预期读者、文档结构和相关术语。接着阐述了核心概念及它们之间的联系,…

一、Mujoco-开始篇

一、介绍 MuJoCo 是 Multi-Joint dynamics with Contact 的缩写&#xff0c;字面意思可拆解为带接触的多关节动力学。是DeepMind&#xff08;谷歌旗下&#xff09;维护的高精度多体动力学物理仿真引擎&#xff0c;专为机器人、机械控制、强化学习&#xff08;RL&#xff09;、生…

AI与人类开发者的协作模式

AI与人类开发者的协作模式关键词&#xff1a;AI、人类开发者、协作模式、软件开发、代码生成、智能辅助摘要&#xff1a;本文深入探讨了AI与人类开发者的协作模式&#xff0c;旨在分析这种协作在软件开发领域的应用、原理和实际效果。首先介绍了研究的背景、目的、预期读者等信…

提升论文原创性的有效方法:六款AI工具改写文本的实用操作指南

排名 工具/方法 核心优势 适用场景 1 aibiye 智能降重学术语言优化 初稿完成后深度润色 2 aicheck 多维度查重选题辅助 全程论文质量监控 3 秒篇 一键生成逻辑结构优化 紧急补论文初稿 4 AskPaper 文献解析重点提炼 文献综述与理论支撑 5 知网人工降重 专…

论文查重与改写一体化方案:六款AI工具提升文本原创性的实用方法

排名 工具/方法 核心优势 适用场景 1 aibiye 智能降重学术语言优化 初稿完成后深度润色 2 aicheck 多维度查重选题辅助 全程论文质量监控 3 秒篇 一键生成逻辑结构优化 紧急补论文初稿 4 AskPaper 文献解析重点提炼 文献综述与理论支撑 5 知网人工降重 专…

学术论文降重必备工具:六种AI改写技术的高效应用与优化建议

排名 工具/方法 核心优势 适用场景 1 aibiye 智能降重学术语言优化 初稿完成后深度润色 2 aicheck 多维度查重选题辅助 全程论文质量监控 3 秒篇 一键生成逻辑结构优化 紧急补论文初稿 4 AskPaper 文献解析重点提炼 文献综述与理论支撑 5 知网人工降重 专…

通信原理篇---数字信号基带码型

第一部分&#xff1a;为什么选择HDB3码&#xff1f;——从数字基带信号码型设计原则分析在设计数字基带传输码型时&#xff0c;工程师需要平衡多个相互矛盾的要求。HDB3码&#xff08;High Density Bipolar 3 zeros&#xff0c;三阶高密度双极性码&#xff09;是针对PCM E1系统…

基于MLflow的推荐系统模型生命周期管理

基于MLflow的推荐系统模型生命周期管理:从实验到生产的全流程护航 关键词:MLflow、推荐系统、模型生命周期管理、实验跟踪、模型部署、模型注册、机器学习工程化 摘要:推荐系统是互联网产品的“流量引擎”,但从实验室的一个想法到线上稳定运行的模型,需要跨越数据准备、实…

计算机网络:物理层

目录 数据通信基础知识 信道的极限容量 编码与调制 传输介质 物理层设备 数据通信基础知识 码元&#xff08;Symbol&#xff09;是数字通信中承载信息的基本信号单元。 比特&#xff08;bit&#xff09;是信息的最小单位 &#xff08;0/1 逻辑概念&#xff09; 码元&…

优化论文查重结果的智能方案:六款AI改写工具的详细使用教程

排名 工具/方法 核心优势 适用场景 1 aibiye 智能降重学术语言优化 初稿完成后深度润色 2 aicheck 多维度查重选题辅助 全程论文质量监控 3 秒篇 一键生成逻辑结构优化 紧急补论文初稿 4 AskPaper 文献解析重点提炼 文献综述与理论支撑 5 知网人工降重 专…

通信原理篇---AMI码

想象一下&#xff0c;你和朋友隔着一条嘈杂的马路&#xff0c;要用一个手电筒来传递一串由“有”和“无”组成的秘密暗号&#xff08;比如“有有无无有有无…”&#xff09;。一、最笨的方法&#xff08;单极性不归零码&#xff09;最初级规则&#xff1a;亮灯 ➔ 代表 “有”&…

学术写作中的AI改写工具:六种高效优化论文查重结果的详细指南

排名 工具/方法 核心优势 适用场景 1 aibiye 智能降重学术语言优化 初稿完成后深度润色 2 aicheck 多维度查重选题辅助 全程论文质量监控 3 秒篇 一键生成逻辑结构优化 紧急补论文初稿 4 AskPaper 文献解析重点提炼 文献综述与理论支撑 5 知网人工降重 专…

UG NX 光顺曲线串合并G1相切线

在 UG NX 中&#xff0c;将多条曲线光顺地合并成一条满足 G1 连续性&#xff08;切线连续&#xff09;的曲线&#xff0c;是进行高质量曲面建模的基础。核心概念&#xff1a;G1 连续性 G1 连续性意味着在两条曲线的连接点处&#xff0c;不仅位置重合&#xff0c;且切线方向相同…

中望3D2026 光顺曲线串合并G1相切线(把多条曲线合并成一条曲线)

在 中望3D 中&#xff0c;将多条曲线光顺地合并成一条满足 G1 连续性&#xff08;切线连续&#xff09;的曲线&#xff0c;是进行高质量曲面建模的基础。G1 连续性意味着在两条曲线的连接点处&#xff0c;不仅位置重合&#xff0c;且切线方向相同&#xff08;一阶导数连续&…

提示系统弹性伸缩架构选型:如何根据业务需求选择合适的方案?

系统弹性伸缩架构选型&#xff1a;从业务需求到方案落地的全链路指南 一、引入&#xff1a;为什么弹性伸缩是当代系统的“生存技能”&#xff1f; 凌晨12点&#xff0c;电商大促的钟声响起—— 某美妆品牌的商品页流量瞬间从1万QPS暴涨至10万QPS&#xff1b;某直播平台的头部主…

如何快速配置DOL汉化包:新手完整教程

如何快速配置DOL汉化包&#xff1a;新手完整教程 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS 想要获得完美的Degrees of Lewdity中文游戏体验吗&#xff1f;DOL-CHS-MODS整合包为您提供一站式解决…

VisionPro二开之相机类设计

VisionPro二开之相机类设计 一 CameraService using Cognex.VisionPro; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace VP之相机调试2 {public class CameraSe…

查重比例超标?五个实用技巧帮你快速优化论文内容。

最新研究数据揭示&#xff0c;全球气温上升与极端气候事件发生频率上升之间存在明确的因果关系&#xff0c;这一发现通过科学验证表明环境温度变化会直接引发更为频繁的异常天气模式。 首先&#xff0c;咱们聊聊人工降重的基本功 根据最新调研数据&#xff0c;近年来人工智能…

论文重复率过高?五种有效策略助你轻松调整文本结构。

最新研究数据揭示&#xff0c;全球气温上升与极端气候事件发生频率上升之间存在明确的因果关系&#xff0c;这一发现通过科学验证表明环境温度变化会直接引发更为频繁的异常天气模式。 首先&#xff0c;咱们聊聊人工降重的基本功 根据最新调研数据&#xff0c;近年来人工智能…

数据服务熔断机制在大数据平台中的实现

数据服务熔断机制在大数据平台中的实现关键词&#xff1a;数据服务熔断、大数据平台、微服务架构、雪崩效应、服务治理、分布式系统、容错机制摘要&#xff1a;在分布式大数据平台中&#xff0c;服务间依赖关系复杂&#xff0c;网络波动、资源过载等问题易引发雪崩效应。本文系…