3288S Android11 适配红外遥控功能(超详细)

目录

一、rk3288平台红外遥控介绍

这个文档路径在a\RKDocs\common\PWM\Rockchip_Developer_Guide_PWM_IR_CN.pdf

二、原理图分析

三、配置设备树并使能红外遥控功能

据上面原理图分析可知,IR_INT红外接口使用的是PWM2,因此设备树配置对应的PWM2,如下:

然后开相关的宏,开启红外遥控功能:

c 复制代码
CONFIG_ROCKCHIP_REMOTECTL=y
CONFIG_ROCKCHIP_REMOTECTL_PWM=y

而相关的驱动文件路径在kernel/drivers/input/remotectl/rockchip_pwm_remotectl.c

四、打开红外打印功能,查看红外遥控的用户码和键值

查看红外接收的红外遥控用户码和键值,需要先内核中的红外接收打印功能,如下:
echo 1 > /sys/module/rockchip_pwm_remotectl/parameters/code_print

那么如何查看打印信息呢?查看内核打印信息有两种方法,分别是在adb中使用cat proc/kmsg命令查看内核打印信息和直接通过串口查看内核打印信息,现象如下:

五、将查看到的红外遥控用户码和键值添加到设备树和.kl文件

那么需要先知道使用的是哪个.kl文件,首先通过getevent查看输入设备名称,然后通过dumpsys input命令查看输入设备管理器中的事件中心状态对应的输入设备信息查看到使用的输入设备布局文件,如下:

通过以上可知,输入设备名称为"ff680020.pwm"。

上图解释:如果没有指定的KeyLayoutFile,就会使用默认的Generic.kl文件的,如果需要添加自定义的键值,那么相应地也要在使用的.kl文件中添加该键值。

六、Android红外遥控.kl文件映射知识和使用添加新的.kl文件

感谢这位哥的博客,该博客参考链接请点击


关于.kl文件的解释,如下图:

七、补充(设备树中interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;属性解释)

GIC_SPI :表示共享外设中断。

78:中断号。

IRQ_TYPE_LEVEL_HIGH:中断触发类型为高电平触发。

在Rockchip_RK3288_TRM_V1.2_Part1-20170321.pdf文档有对中断号的描述,如下图所示:

这里我解释一下,RK3288拥有32个私有中断,而其中有3个私有中断是外设中断,其余的112个都是共享外设中断。而本次使用的PWM中断属于共享外设中断,如下图所示:

红外遥控使用的是PWM通用的共享外设中断,也就是RK_PWM,中断号110,很疑问的是:为什么设备树上写的终端号是78呢?其实设备树上写的是共享外设中断的索引,也就是说78的由来是110-32而得来的。

相关推荐
不怕犯错,就怕不做2 小时前
RK3562的CPU如何降频及关闭硬件编解码
linux·驱动开发·嵌入式硬件
CoderMeijun2 小时前
Linux 文件操作详解:open/read/write/lseek 系统调用
linux·文件操作·系统调用·open·文件描述符
可可西里_X_back2 小时前
Linux学习(二)- 驱动开发步骤
linux·驱动开发·学习
Hical_W2 小时前
Hical 踩坑实录五部曲(二):MSVC / GCC / Clang 三平台 C++20 编译差异
linux·windows·经验分享·嵌入式硬件·macos·开源·c++20
活蹦乱跳酸菜鱼3 小时前
linux ATF BL2执行过程
linux
淡淡烟雨淡淡愁5 小时前
安装libreoffice
linux
蜀道山老天师5 小时前
云原生监控入门:监控基础概念 + SLI/SLO/SLA 详解 + Prometheus 从零安装配置
linux·运维·云原生·prometheus
AIDF20265 小时前
linux 服务器网络问题排查
linux·服务器·网络
楼兰公子5 小时前
br_opi5_plus_defconfig 附带uboot
linux·运维·服务器
云天AI实战派5 小时前
AI 智能体/API 调用故障排查指南:实时语音、Codex 权限与 Spec 驱动开发全流程修复手册
人工智能·驱动开发·chatgpt·api·codex