红外遥控器的驱动函数
rockchip_pwm_remotectl.c为一个红外遥控器的驱动函数,资源由dts提供:
1030 &pwm0 {
1031 compatible = "rockchip,remotectl-pwm";
1032 remote_pwm_id = <0>;
1033 handle_cpu_id = <1>;
1034 status = "okay";
1035 ir_key{
1036 rockchip,usercode = <0xff00>;
1037 rockchip,key_table =
1038 <0xf5 KEY_POWER>,
1039 <0xef KEY_ENTER>,
1040 <0xea KEY_HOMEPAGE>,
1041 <0xbf KEY_BACK>,
1042 <0xed KEY_MENU>,
1043 <0xf3 KEY_UP>,
1044 <0xf2 KEY_DOWN>,
1045 <0xf1 KEY_LEFT>,
1046 // <0xf1 BTN_LEFT>,
1047 <0xec KEY_F8>,
1048 <0xeb KEY_F9>,
1049 <0xf0 KEY_RIGHT>,
1050 //<0xf0 BTN_RIGHT>,
1051 <0xee KEY_BACK>,
1052 <0x0b KEY_VOLUMEUP>,
1053 <0x58 KEY_VOLUMEDOWN>;
1054 };
1055 };
在驱动中首先调用rk_pwm_probe,函数为rkxx_remotectl_drvdata内存的申请和初始化,并且申请必要资源和获取dts中的设备资源。
本系统有三个中断服务函数分别为:
Pwm中断,定时器中断,和软件中断。
在pwm中断中来触发软件中断来上报获取到的按键值,用定时器中断来检测按键抬起。
涉及内容:
Dts的数据获取。
定时器的创建
中断的创建
Wake_lock锁机制
Tasklet机制
输入子系统
电源管理标志(唤醒系统)
结点调用顺序
of_match_table中的.compatible成员 和设备树进行匹配(最后一个必须为空作为结束符)
匹配成功则调用probe函数,并将platform_device *pdev 传递下来(platform_device *pdev为设备树创建时自动创建,只会创建根目录下的一级子节点,并将结点保存在dev->node中)
通过 子节点名称=of_find_node_by_name(np, “子节点名称”);获得子节点的指针。也可以通过for_each_child_of_node (node, child)遍历子节点(为一个 for循环),在for循环中通过函数:
属性值 = of_get_property(*np,"子节点属性名, len);得到各个子节点的属性
红外遥控器的驱动函数相关推荐
- 红外遥控器-IR-linux驱动(基于百问网IMX6ULL_Pro平台)
IR驱动使用指南 NEC红外协议说明 红外发射器将信号通过载波发送出来,红外接收器将接收到的红外信号进行电平解码,红外驱动根据这个解码后的电平信号进行解码操作,上图显示了NEC编码的时序规则 Star ...
- android手机红外代码HAL,Android 红外遥控器适配
红外遥控器协议简介 目前有如下几类标准1. RC5 2. NEC 3. SAMSWNG 4. ...... 5. SIRC (Sony Infrared Remote Control) 目前RK平台只 ...
- android红外遥控器代码剖析,Android 红外遥控器适配
红外遥控器协议简介 目前有如下几类标准 1. RC5 2. NEC 3. SAMSWNG 4. ...... 5. SIRC (Sony Infrared Remote Control) 目前RK平台 ...
- linux红外遥控进程,46.Linux-分析rc红外遥控平台驱动框架,修改内核的NEC解码函数BUG(1)...
内核版本 : Linux 3.10.14 rc红外接收类型: GPIO 类型的NEC红外编码 本章内容 1)rc体系结构分析 2) 分析红外platform_driver平台驱动框 ...
- 【字符设备驱动】 -- NEC红外通信原理|红外协议|红外驱动|红外编解码|红外遥控器...
目录 1. 红外基本介绍: 红外线的特点 红外线发射和接收 2.NEC协议介绍: NEC的数据格式: NEC协议中数据(DATA)段编码: NEC协议典型脉冲链: NEC载波调制: NEC载波解调: ...
- 和12岁小同志搞创客开发:如何驱动红外遥控器?
目录 1.红外遥控器通信原理 2.NEC协议 3.实践 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_3810 ...
- 基于STM32的万能红外遥控器
本博客介绍一种基于STM32的可学习和存储已有红外发射设备的万能红外遥控器的设计思路. 一.首先需要了解设计一款这功能的遥控器需要什么硬件设备支持. 1.3.3V,5V电源模块,用作给系统模块供电和单 ...
- android 4.4 红外,RTK2969平台android4.4添加新红外遥控器(一)
一直以来都没有一个好的习惯,学过的东西用过之后不久就忘记了,最近决定开始把之前遇到的一些问题写到这里,一方面是自己备忘,另一方面也希望能够帮助到大家,起码给各位有一点参考的价值,吾心足矣,废话少说今天 ...
- Esp8266进阶之路16 esp8266的 基于Nonos移植红外线H1838,实现红外遥控器配网,远程控制一盏灯。(附带固件)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...
- 微雪A20 配置 红外遥控器
1,文件位置: lihee/linux-3.4/drivers/input/keyboard/sun7i-ir.c 第一步:修改c代码 static int ir_code ...
最新文章
- 实现AGI,强化学习就够了?Sutton:奖励机制足够实现各种目标
- 3-3-完全二叉树结点数
- 一步步学习汇编系列(7)
- 百一测评java基础答案_百一测评——《Web应用开发》选择题(含参考答案)—JavaEE基础...
- jboss war包放哪_如何将JBoss HR Employee Rewards项目放入云端
- Qt实践|HTTP知识点-使用百度AI语音识别服务
- 完成端口与高性能服务器程序开发
- PHP后台管理登录界面代码
- 马克笔字体软件测试,广东文艺职业学院2017年公开招聘专业技能测试试题
- 原生js实现动态生成表格
- CODESYS Automation Server
- echarts实现世界地图,给不同数值的国家着色,并根据经纬度在对应位置上添加标签(一)
- ndoutils(ndo2db)安装难点
- 安卓APP自动更新功能实现
- 用什么软件可以记录并提醒每天的工作任务?
- 网络层IP协议和数据链路层
- 特效转序列帧动画工具
- 敌兵布阵(hdu-1166)
- 052基于SSM车辆维修管理系统
- 计算机毕业设计 HTML+CSS+JavaScript食品餐饮行业网站(10页)
热门文章
- 分享一个代码合并工具
- 什么是负载均衡器 负载均衡器的功能
- 51单片机dds信号发生器 扫频 c语言,基于DDS正弦信号发生器设计.doc
- python 封包发包_python中封包建立过程实例
- 6319. 【省选组】【USACO 2019 February Platinum】Problem 3. Mowing Mischief
- 秋招之前实习面经汇总
- 手把手实现AI诗歌生成(AI写诗)
- python实现乘法口诀表
- dropbox 怎么使用_如何在一台PC上使用多个Dropbox帐户
- 激光SLAM技术总结(3)3D激光SLAM算法原理