《点亮ISINK三色灯》
《点亮ISINK三色灯》
环境:mt6580平台,android7.0
前言:由于有项目需要带三色灯的功能,调试了一天也没有搞出来。用以前的办法也搞不定,于是就愤怒了!
决定去 read the fucking code !!!。
一、原理图
1,原理图上很简单,就是靠三路ISINK来控制LED灯的亮灭。
二、代码部分
1,底层驱动部分1.1alps\vendor\mediatek\proprietary\bootable\bootloader\lk\target\ww826_80_weg_n\cust_leds.c
这里是lk阶段的驱动代码,这里一共也就几十行代码。我们看关键的!
这里我们先看 cust_led_list 这个结构体数组,它的类型是 struct cust_mt65xx_led
我们再看看 enum mt65xx_led_mode 和 struct PWM_config
那么我现再去看前边的 cust_led_list[] 数组,这里边的成员就明白是什么了。例如:
“red” :对应的是led的name
MT65XX_LED_MODE_PMIC :对应的是led的模式,这个枚举里一共有7种模式。当前red用的是PMIC模式
MT65XX_LED_PMIC_NLED_ISINK2:对应的是led的data,还不清楚作什么用。我们接着往下看
{0,0,0,0,0}:这个是config_data,和PWM数据相关的一个结构体变量。
那么回过头来看,这个cust_led_list[]是给谁去调用的呢?明显我们看到了这个函数:
这是一个结构体函数指针,那么这个 get_cust_led_list 指针又是在什么时候被调用的呢?
找到了两个关键的文件调用了它!其中ddp_pwm.c里主要是和lcd背光相关的,我们暂不去管它。去看 mt_leds.c,我们找到了它里边的这个函数:
我们看到了,get_cust_led_list 结构体指针在这里被调用了。那么我们又看看在那里调用了mt65xx_leds_brightness_set函数。
于是我们在 vendor/mediatek/proprietary/bootable/bootloader/lk/platform/mt6580/platform.c 这个文件里找到了调用,
………………………………..
………………………………..
我们看到它传进来的参数是 6和110。6对应的是led 的type,110对应的是led亮度大小。我们在cust_leds.h里看到这个枚举:
因此我们就知道这里是控制 lcd背光的,即是点亮背光灯,亮度为110。一整个lk层里,只点了LCD背光,
没有控制和ISINK三色灯相关的东西。那就只能是在kernel层里控制了,即是我们要去Kernel里跟代码。
可得知 platform_init()是在 lk层里的入口函数main初始化里被调用的。
这个是lk的入口函数,但不管怎么样。在跑完lk层以后,就会跳转到kernel层去。
结论1:在 lk层里还没有控制到 ISINK充电指示灯相关的东西,那么它应该是在kernel层里边去控制它的。
1.2,Kernel层power相关代码的路径:
alps/kernel-3.18/drivers/power/mediatek/xxx :这里是 common层充电函数的位置
alps/kernel-3.18/drivers/misc/mediatek/power/mt6580/ :这里是客制化电池相关的地方
alps/kernel-3.18/drivers/misc/mediatek/include/mt-plat/xxx
alps/kernel-3.18/drivers/misc/mediatek/leds/mt6580/xxx :这里就是led相关的,我们重点要关注这里!
我们要根据自己项目的配置去找到对应的代码。
ps: 由于这是第一次写这些东西,感觉上传图片类的和一些格式还是挺麻烦的。这篇就先写这里吧,下一篇写到kernel层的。
《点亮ISINK三色灯》相关推荐
- ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- 信息学奥赛真题解析(玩具谜题)
玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...
- 信息学奥赛之初赛 第1轮 讲解(01-08课)
信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...
- 信息学奥赛一本通习题答案(五)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通习题答案(三)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题
第1章 快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章 素数 第 3 章 约数 第 4 章 同余问题 第 5 章 矩阵乘法 第 6 章 ...
- 信息学奥赛一本通题目代码(非题库)
为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...
- 信息学奥赛一本通(C++版) 刷题 记录
总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...
- 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离
首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...
最新文章
- Python:XPath与lxml类库
- webGL的一些咨询--web3D
- 【Web安全】通过机器学习破解验证码图片
- 正在编写推箱子游戏的自动求解程序
- 真正认识 realloc 的工作方式(转载)
- [转]PE文件格式详解(下)
- cad pu插件下载lisp_25个常用CAD插件 合集 下载
- 163邮箱服务器连接错误 请重试,163邮箱无法连接服务器
- 益智类游戏关卡设计:逆推法--巧解益智类游戏关卡设计
- 一文搞懂如何使用STM32驱动直流电机(普通PWM输出和L298N、高级定时器输出带死区双通道互补PWM和IR2110S及自举电路、H桥电路和电机正反转)
- 高级语言程序设计(c语言描述) 陆黎明 朱媛媛 练习答案,高级语言程序设计(c语言描述) 陆黎明 朱媛媛 练习答案...
- Go:内核线程、LWP、用户线程? 还是协程?
- 输入关键词获取今日头条免费图片
- 驯服最难以捉摸的野兽──创新
- 软件测试证述职报告ppt,实验室检测员的述职报告ppt
- Java实现找回密码
- java中定义ListNode
- 联想微型计算机重装,联想一体机电脑重装系统教程 一体机电脑重装系统
- vue中对echarts折线图设置基准线/警告线,可在输入框输入想要的值,并改变已有的基准线的值。
- 倒金字塔java语言_金字塔和倒金字塔