logo资料库

mstar 遥控器配置说明.pdf

第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
资料共22页,剩余部分请下载后查看
显 金 锐 锐 Fusion_IR 配置说明 M edia T ek C onfidential R elease for M edia T ek C onfidential R elease for M edia T ek C onfidential R elease for 锐 金 金 显 显 Paul.liao V0.1
MStar Semiconductor makes no representations or warranties including, for example but not limited to, warranties of merchantability, fitness for a particular purpose, infringement of any intellectual property right or the accuracy or completeness of this document, and reserves the right to make changes without further notice to any products herein to improve reliability, function or design. No responsibility is assumed by MStar Semiconductor arising out of the application or user of any product or circuit described herein; neither does it convey any license under its patent rights, nor the rights of others. MStar is a trademark of MStar Semiconductor, Inc. Other trademarks or names herein are only for identification purposes only and owned by their respective owners. 锐 显 显 金 M edia T ek C onfidential R elease for M edia T ek C onfidential R elease for M edia T ek C onfidential R elease for 金 锐 金 锐 显 © 2019 MStar Semiconductor, Inc. All rights reserved.
F- 3697 REVISION HISTORY Revision Description No. Rev 0.1 Security Level: Confidential A - i - 9/24/2019 Copyright © 2019 MStar Semiconductor, Inc. All rights reserved. {MStar Part Name} {Product Description} {Document Name + Version} Date 2019/06/17 显 金 锐 锐  The 1st draft M edia T ek C onfidential R elease for M edia T ek C onfidential R elease for M edia T ek C onfidential R elease for 金 锐 金 显 显
F- 3697 目录 Security Level: Confidential A - ii - 9/24/2019 Copyright © 2019 MStar Semiconductor, Inc. All rights reserved. 1.1. 1.2. 1.3. IR 简介....................................................................................................................................... 1 IR 框架介绍 ............................................................................................................. 1 疑问:decoder list 和 map list 怎么来的? ................................................................... 2 IR 目录结构 ............................................................................................................. 2 系统 IR 配置介绍 ......................................................................................................................... 3 2.1 原则:(硬解码优先原则) .................................................................................................. 3 2.2 Ir_config.h 介绍 ................................................................................................................ 3 2.2.1. 配置客户 IR ..................................................................................................... 3 2.2.2. 新增遥控器 ...................................................................................................... 4 2.2.3. 配置 IR debug 级别........................................................................................... 4 2.2.4. 配置 IR Speed .................................................................................................. 4 2.3 ir_config.ini 介绍 .............................................................................................................. 5 2.3.1. 编译 kernel ......................................................................................................... 5 2.3.2. Ir_config.ini 的配置 .............................................................................................. 6 2.3.3. 支持公版 ir 的 ini 文件 .......................................................................................... 8 {MStar Part Name} {Product Description} {Document Name + Version} 显 金 锐 锐 M edia T ek C onfidential R elease for M edia T ek C onfidential R elease for M edia T ek C onfidential R elease for 金 锐 金 显 显 2.4 Kl 文件的介绍 ................................................................................................................... 9 PM 配置 dynamic ir ................................................................................................................... 11 3.1 开 dynamic ir .................................................................................................................. 11 3.2 开对应的协议 .................................................................................................................. 12 3.3 开 ir debug ..................................................................................................................... 12 新增协议流程 ............................................................................................................................. 14 4.1. 增加解析文件(例如:ir_nec_decoder.c) ......................................................................... 14 4.2. 修改 makefile ................................................................................................................. 15 4.3. 新增 keymap 映射 ........................................................................................................... 15 4.4 修改 ini 文件 .................................................................................................................. 16 新 ir 框架 debug 思路 ................................................................................................................. 17 5.1. 开 debug log .................................................................................................................. 17 5.2. 借助 getevent ................................................................................................................ 17
F- 3697 IR 简介 {MStar Part Name} {Product Description} {Document Name + Version} 上面的图中重要细节解释: Security Level: Confidential A - 1 - 9/24/2019 Copyright © 2019 MStar Semiconductor, Inc. All rights reserved. 拿来一个遥控器,我们需要拿到他对应的 spec,从 spec 中我们可以知道他是什么协议,头码是多少,每个 按键的键值是多少?这些都表示遥控器的属性。 那我们怎么让系统识别遥控器的不同按键呢? 就需要 kernel 针对协议进行解析(ir decoder),解析完后要 告诉 kernel 这个键值映射成了什么功能(ir map),这样上层就知道接下来要做什么了。 所以,配置一款遥控器重点在于 decoder + map。 1.1. IR 框架介绍 1. IR 框架分为四层:IR Driver 层,IR core 层,Decoder 层,Keymap 层。 2. IR Driver 层: 需要实现 IR Driver 的一些 init,interrupt 处理,file_operations 操作等。 3. IR core 层:需要实现提供给 decoder 层,keymap 层的相关接口,raw 数据处理接口,input 相关接口 等。 4. Decoder 层:需要实现不同 protocols 的解析函数。 5. Keymap 层:需要实现针对不同 IR 的 keymap 映射关系。 锐 金 M edia T ek C onfidential R elease for M edia T ek C onfidential R elease for M edia T ek C onfidential R elease for 金 锐 金 锐 显 显 显
F- 3697 {MStar Part Name} {Product Description} {Document Name + Version} Security Level: Confidential A - 2 - 9/24/2019 Copyright © 2019 MStar Semiconductor, Inc. All rights reserved. 1.2. 疑问:decoder list 和 map list 怎么来的? 从前面介绍,我们需要配置一款遥控器,需要有 decoder + map,所以 fusion 关于 ir 的配置就是要围绕 decoder list 和 map list 进行配置。 1.3. IR 目录结构 protocols/ ====》常见的 IR 协议(NEC/RC5/RC6/TOSHIBA/PANASONIC/等等) linaro/mstar2/drv/ir ==》老的 ir 框架(老的 chip 在用) linaro/mstar2/drv/ir_mirc ==》新 ir 框架(fusion 平台 + 新 chip) 1. Ir_config.h 进行配置出来 2. Ir_config.ini 进行 parse 出来。 ① 中断处理程序获取 register data 保存到 fifo,kthread 读取 fifo 数据。 ② kthread 取 fifo 数据后送给 decoder 匹配协议解析过程 ③ decoder 链表注册和销毁 ④ 解析得到 keycode 匹配 keymap 的过程,这里用 keymapnumber 来匹配 ⑤ keymap 链表注册和销毁 ⑥ keycode 传给/dev/ir read 的过程,供上层 polling 方式取 key ⑦ keycode 传给 input 过程,以 event 的方式传递给 Android 层 锐 显 金 M edia T ek C onfidential R elease for M edia T ek C onfidential R elease for M edia T ek C onfidential R elease for 金 锐 金 锐 显 显 keymaps/ ====》常见 cus 用到的 keymaps ir_dynamic_config/ ==》支持 ir_config.ini 的配置 其他文件是 ir 驱动文件。
F- 3697 {MStar Part Name} {Product Description} {Document Name + Version} // protocol_type, Headcode, IRSpeed ,enable Security Level: Confidential A - 3 - 9/24/2019 Copyright © 2019 MStar Semiconductor, Inc. All rights reserved. 系统 IR 配置介绍 IR 的配置有两种: 1. 2. 显 锐 Ir_config.h 进行配置,在编译阶段配置好客户要使用的遥控器。 Ir_config.ini 进行配置,可以动态配置客户要使用的遥控器。 两种配置方式可以单独配置使用,也可以同时配置使用。 2.1 原则:(硬解码优先原则) 支持下面这些模式 #define IR_TYPE_FULLDECODE_MODE 0 //nec full 解码,支持两个头码遥控器 #define IR_TYPE_RAWDATA_MODE 1 //nec raw 解码 #define IR_TYPE_HWRC5_MODE 2 //rc5 硬解码 #define IR_TYPE_HWRC5X_MODE 3 // rc5x 硬解码 #define IR_TYPE_HWRC6_MODE 4 //rc6 硬解码 支持 mode0 #define IR_TYPE_SWDECODE_MODE 5 //软解码,支持多种不同协议的解码 金 M edia T ek C onfidential R elease for M edia T ek C onfidential R elease for M edia T ek C onfidential R elease for 金 锐 锐 显 显 1. 如果客户配置了一个或者 2 个 NEC 协议的遥控,走的是 fulldecoder mode 2. 如果客户配置了多个 NEC 协议的遥控,走的是 RAW decoder mode 3. 如果客户配置了多个协议,走的是 sw decoder mode 金 //Number of IR should this chip supported #define IR_SUPPORT_NUM 1 //Add & Modify Customer IR with Differ Headcode Here static IR_Profile_t ir_config[IR_SUPPORT_NUM]= Ir_config.h 这个文件是提供给客户进行配置 IR 的文件,路径 mstar2/drv/ir_mirc/ ir_config.h { 2.2 Ir_config.h 介绍 2.2.1. 配置客户 IR 一般情况下 irq interrupt 跑的时间不会太长,而且可以立马响应过来,但当系统负载过大的情况下或者其他 中断优先级比 IR 大的中断程序一直运行的时候,这个情况需要开 SW FIFO 来保证 IR shotcount 不被丢失,导致 key 解析失败。(公版 fusion 新 ir 都是有开 sw fifo 的)
F- 3697 CT-90436 IR customer code {MStar Part Name} {Product Description} {Document Name + Version} {IR_TYPE_NEC,NUM_KEYMAP_MSTAR_TV,0,1}, // Mstar IR customer code //{IR_TYPE_NEC,NUM_KEYMAP_HISENSE_TV,0,1}, // Hisense IR customer code //{IR_TYPE_RCA,NUM_KEYMAP_TCL_RCA_TV,0,1}, // TCL RCA customer code //{IR_TYPE_P7051,NUM_KEYMAP_P7051_STB,0,1}, // Panasonic 7051 IR customer code //{IR_TYPE_RC5,NUM_KEYMAP_RC5_TV,0,1}, // RC5 customer code //{IR_TYPE_METZ,NUM_KEYMAP_METZ_RM18_TV,0,1}, // metz rm18 IR customer code //{IR_TYPE_METZ,NUM_KEYMAP_METZ_RM19_TV,0,1}, // metz rm19 IR customer code //{IR_TYPE_TOSHIBA,NUM_KEYMAP_SKYWORTH_TV,0,1}, //skyworth toshiba ir //{IR_TYPE_NEC,NUM_KEYMAP_CHANGHONG_TV,0,1}, // changhong_RL78B /Toshiba //{IR_TYPE_RC6,NUM_KEYMAP_KATHREIN_TV,0,1}, //Kathrein RC6 customer code };上面的就是配置的客户需要支持的遥控器。 #define IR_SUPPORT_NUM 1 表示这个系统支持 1 款遥控器如结构体描述。 以{0, IR_TYPE_NEC, NUM_KEYMAP_MSTAR_TV, 0x807F}, // Mstar IR customer code 为例 0:表示支持遥控器的下标 index IR_TYPE_NEC:表示要添加的遥控是 NEC 协议(假设 NEC 协议解码已经实现,换其他解码类似) NUM_KEYMAP_MSTAR_TV: 表示针对公版遥控器的键值映射关系是对应这个 keymap 0x807F: 表示公版遥控器的头码 锐 金 M edia T ek C onfidential R elease for M edia T ek C onfidential R elease for M edia T ek C onfidential R elease for 金 锐 金 锐 显 显 显 static IR_DBG_LEVEL_e ir_dbglevel = IR_DBG_ERR; 默认设置成 error 打印。 如果系统 IR 运行的时候不正常,可以打开 IR 的打印级别来抓 log debug。 find / -name IRDebug echo 4 > xxxx/IRDebug //修改打印级别 xxxx 为 find 到的 IRDebug 路径 cat xxxx /IRDebug //查看支持的打印级别和当前的打印级别 在这个框架中,除了_MDrv_IR_ISR 里面,可以在任何地方加 log 进行 debug。 默认设置成 IR_SPEED_FAST_N,这个是针对不同的遥控器灵敏度来客制化设置的,有些遥控器短按键的时 2.2.4. 配置 IR Speed //IR Speed level for customer setting static IR_SPEED_LEVEL_e ir_speed = IR_SPEED_FAST_N; 如果客户在上面的基础上还需要增加一个 NEC 协议的头码为 0x5566 的遥控器,则添加下面的 code。 { IR_TYPE_NEC, 0x5566, 0, 1}, // xxxxx IR 2.2.2. 新增遥控器 2.2.3. 配置 IR debug 级别 //IR Debug level for customer setting Security Level: Confidential A - 4 - 9/24/2019 Copyright © 2019 MStar Semiconductor, Inc. All rights reserved.
分享到:
收藏