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);得到各个子节点的属性

红外遥控器的驱动函数相关推荐

  1. 红外遥控器-IR-linux驱动(基于百问网IMX6ULL_Pro平台)

    IR驱动使用指南 NEC红外协议说明 红外发射器将信号通过载波发送出来,红外接收器将接收到的红外信号进行电平解码,红外驱动根据这个解码后的电平信号进行解码操作,上图显示了NEC编码的时序规则 Star ...

  2. android手机红外代码HAL,Android 红外遥控器适配

    红外遥控器协议简介 目前有如下几类标准1. RC5 2. NEC 3. SAMSWNG 4. ...... 5. SIRC (Sony Infrared Remote Control) 目前RK平台只 ...

  3. android红外遥控器代码剖析,Android 红外遥控器适配

    红外遥控器协议简介 目前有如下几类标准 1. RC5 2. NEC 3. SAMSWNG 4. ...... 5. SIRC (Sony Infrared Remote Control) 目前RK平台 ...

  4. linux红外遥控进程,46.Linux-分析rc红外遥控平台驱动框架,修改内核的NEC解码函数BUG(1)...

    内核版本         :  Linux 3.10.14 rc红外接收类型:  GPIO 类型的NEC红外编码 本章内容 1)rc体系结构分析 2) 分析红外platform_driver平台驱动框 ...

  5. 【字符设备驱动】 -- NEC红外通信原理|红外协议|红外驱动|红外编解码|红外遥控器...

    目录 1. 红外基本介绍: 红外线的特点 红外线发射和接收 2.NEC协议介绍: NEC的数据格式: NEC协议中数据(DATA)段编码: NEC协议典型脉冲链: NEC载波调制: NEC载波解调: ...

  6. 和12岁小同志搞创客开发:如何驱动红外遥控器?

    目录 1.红外遥控器通信原理 2.NEC协议 3.实践 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_3810 ...

  7. 基于STM32的万能红外遥控器

    本博客介绍一种基于STM32的可学习和存储已有红外发射设备的万能红外遥控器的设计思路. 一.首先需要了解设计一款这功能的遥控器需要什么硬件设备支持. 1.3.3V,5V电源模块,用作给系统模块供电和单 ...

  8. android 4.4 红外,RTK2969平台android4.4添加新红外遥控器(一)

    一直以来都没有一个好的习惯,学过的东西用过之后不久就忘记了,最近决定开始把之前遇到的一些问题写到这里,一方面是自己备忘,另一方面也希望能够帮助到大家,起码给各位有一点参考的价值,吾心足矣,废话少说今天 ...

  9. Esp8266进阶之路16 esp8266的 基于Nonos移植红外线H1838,实现红外遥控器配网,远程控制一盏灯。(附带固件)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  10. 微雪A20 配置 红外遥控器

    1,文件位置: lihee/linux-3.4/drivers/input/keyboard/sun7i-ir.c      第一步:修改c代码          static int ir_code ...

最新文章

  1. 实现AGI,强化学习就够了?Sutton:奖励机制足够实现各种目标
  2. 3-3-完全二叉树结点数
  3. 一步步学习汇编系列(7)
  4. 百一测评java基础答案_百一测评——《Web应用开发》选择题(含参考答案)—JavaEE基础...
  5. jboss war包放哪_如何将JBoss HR Employee Rewards项目放入云端
  6. Qt实践|HTTP知识点-使用百度AI语音识别服务
  7. 完成端口与高性能服务器程序开发
  8. PHP后台管理登录界面代码
  9. 马克笔字体软件测试,广东文艺职业学院2017年公开招聘专业技能测试试题
  10. 原生js实现动态生成表格
  11. CODESYS Automation Server
  12. echarts实现世界地图,给不同数值的国家着色,并根据经纬度在对应位置上添加标签(一)
  13. ndoutils(ndo2db)安装难点
  14. 安卓APP自动更新功能实现
  15. 用什么软件可以记录并提醒每天的工作任务?
  16. 网络层IP协议和数据链路层
  17. 特效转序列帧动画工具
  18. 敌兵布阵(hdu-1166)
  19. 052基于SSM车辆维修管理系统
  20. 计算机毕业设计 HTML+CSS+JavaScript食品餐饮行业网站(10页)

热门文章

  1. 分享一个代码合并工具
  2. 什么是负载均衡器 负载均衡器的功能
  3. 51单片机dds信号发生器 扫频 c语言,基于DDS正弦信号发生器设计.doc
  4. python 封包发包_python中封包建立过程实例
  5. 6319. 【省选组】【USACO 2019 February Platinum】Problem 3. Mowing Mischief
  6. 秋招之前实习面经汇总
  7. 手把手实现AI诗歌生成(AI写诗)
  8. python实现乘法口诀表
  9. dropbox 怎么使用_如何在一台PC上使用多个Dropbox帐户
  10. 激光SLAM技术总结(3)3D激光SLAM算法原理