如何配置LCD背光和LED,调试方法
LCD背光和LED配置文件
alps/custom/<proj name>lk/cust_leds.c
alps/custom/<proj name>/kernel/leds/mt65xx/cust_leds.c
drvgen.exe编辑修改codegen.dws 配置cust_leds.c参数: static struct cust_mt65xx_led cust_led_list[MT65XX_LED_TYPE_TOTAL] = {
{"red", MT65XX_LED_MODE_NONE, -1,{0}},
{"green", MT65XX_LED_MODE_NONE, -1,{0}},
{"blue", MT65XX_LED_MODE_NONE, -1,{0}},
{"jogball-backlight", MT65XX_LED_MODE_NONE, -1,{0}},
{"keyboard-backlight",MT65XX_LED_MODE_NONE, -1,{0}},
{"button-backlight", MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_BUTTON,{0}},
{"lcd-backlight", MT65XX_LED_MODE_CUST_BLS_PWM, (int)disp_bls_set_backlight,{0}},
}; LCD背光
MT6589
使用不同的控制源,配置模式:
1.BL_PWM (BLS_PWM)
{"lcd-backlight", MT65XX_LED_MODE_CUST_BLS_PWM, (int)disp_bls_set_backlight,{0}},
2.PWM1~PWM7
如果是PWM1~4
{"lcd-backlight", MT65XX_LED_MODE_PWM, PWM1,{0,0,0,0,0}},
{0,0,0,0,0}表示src_clk=32k时钟,div=0,HDuration=4; LDuration=4,pmic_pad= 0
频率计算:32K/(0+1)/64/4=125Hz
如果使用PWM5~7
{"lcd-backlight", MT65XX_LED_MODE_PWM, PWM5,{1,1,32,32,1}},
{1,1,30,30,1}表示src_clk=52M时钟,div=1,HDuration=32; LDuration=32,pmic_pad= 1 (PWM5~7在PMIC6320)
频率计算:52M/(1+1)/64/32=126.95KHz 3.GPIO脉冲
{"lcd-backlight", MT65XX_LED_MODE_GPIO, (int)Cust_SetBacklight,{0}},
通过实现Cust_SetBacklight(level,div)函数操作GPIO动作 4.类似OLED屏幕,通过写LCM 寄存器实现
{"lcd-backlight", MT65XX_LED_MODE_CUST, (int)Cust_SetBacklight,{0}},
通过实现
unsigned int Cust_SetBacklight(int level, int div)
{
mtkfb_set_backlight_level(level);
}
通过mtkfb_set_backlight_level(level);实现的函数指针将level传到LCM driver
在LCM的driver中实现.set_backlight=lcm_setbacklight, 5.PMIC6320的Isinks
MT6320只有3个Isink,应该不能满足要求 MT6572
和Mt6589有区别的:
1.PWM1~PWM5
{"lcd-backlight", MT65XX_LED_MODE_PWM, PWM1,{0,0,0,0,0}},
{0,0,0,0,0}表示src_clk=32k时钟,div=0,HDuration=4; LDuration=4,pmic_pad=0
频率计算:32K/(0+1)/64/4=125Hz
{"lcd-backlight", MT65XX_LED_MODE_PWM, PWM1,{1,1,32,32,0}},
{1,1,30,30,0}表示src_clk=66M时钟,div=1,HDuration=32; LDuration=32,pmic_pad=0
频率计算:66M/(1+1)/64/32=161.11KHz 2.PMIC6323的Isinks
MT6323有4个Isink,每路24mA电流,可以double为48mA,可以接8个LED
{"lcd-backlight", MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_LCD_ISINK,{0}}, Button LED
MT6589 PMIC mt6530有KPD LDO
{"button-backlight", MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_BUTTON,{0}},
MT6572 mt6323没有KPD LDO,一般兼容使用Isink或者PWM
ISink0和Isink1合并做Button LED
{"button-backlight", MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_NLED_ISINK01,{0}},
注意:如果需要修改电流等级和double current,请修改leds.c
brightness_set_pmic()和led_blink_pmic()
电流等级接口:upmu_set_isinks_chx_step(0x0);//0x0 4mA;0x01 8mA;0x2 12mA;0x03 16mA 0x04 20mA;0x05 24mA
double current接口:upmu_set_isinks_chx_double_en(0x1); PWM1~5
{"button-backlight", MT65XX_LED_MODE_PWM, PWM1,{0,0,0,0,0}}, LED
MT6589
1.Pre-charger(PCH_DET) LED
主要使用由于关机充电LED,插USB charger点亮,lk阶段关闭
如果需要打开PCH_DET:
在mt_leds.c(lk)和leds.c 中要打开pre-charger LED 的控制
Upmu_chr_chrind_on(1);//开启
Upmu_chr_chrind_on(0);//关闭 2.使用Isink接LED
{"red", MT65XX_LED_MODE_PMIC,MT65XX_LED_PMIC_NLED_ISINK0,{0}},
{"green", MT65XX_LED_MODE_PMIC,MT65XX_LED_PMIC_NLED_ISINK1,{0}},
{"blue", MT65XX_LED_MODE_PMIC,MT65XX_LED_PMIC_NLED_ISINK2,{0}}, 3.使用PWM控制LED
{"red", MT65XX_LED_MODE_PWM,PWM5,{0,0,0,0,1}},
{"green", MT65XX_LED_MODE_PWM,PWM6,{0,0,0,0,1}},
{"blue", MT65XX_LED_MODE_PWM,PWM7,{0,0,0,0,1}},
注意:Mt6589上的PWM在sleep的时候没有波形输出的,如果sleep需要闪烁设计,请使用PMIC Mt6320上的PWM(PWM5~PWM7) MT6572
与Mt6589的区别:
1.mt6572没有pre-charger LED的PCH_DET pin 2.Mt6572的PWM1~5在sleep的时候,都是没有波形输出的,设计请注意 3.使用Isink设计时,如果1个isink接2路LED,请注意打开double current,或者step调大 Flash light
文件:alps/mediatek/custom/<proj name>/kernel/flashlight/constant_flashlight/leds_stobe.c
实现FL_enable()和FL_disable()
MT6589有专门的flash LDO
MT6572 没有Flash LDO,可以通过控制PWM,GPIO,ISINK等控制Flash light 上层JNI lib文件
alps/mediatek/hardware/liblights/lights.c
如果需要同时打开2个以上的LED,请修改set_speaker_light_locked()里面的逻辑 adb shell调试LCD背光和LED adb命令查看LED或者backlight的亮度status
cd /sys/class/leds/xxx/brightness
(xxx表示的是light的名字,例如green,blue,red分别表示绿灯、蓝灯和红灯,lcd-backlight表示的是lcd背光。)
如果出现LED或Backlight不正常时,可以通过进入到相应的folder执行如下命令去检测是否driver有问题:
echo brightness_level > brightness 检查是否按照你设置的亮度显示。 对于LED来说brightness_level只要不是0,driver都会让led on。 LCD背光不支持blink,测试LED blink可以执行如下命令:
cd /sys/class/leds/xxx/
echo timer > trigger 这个命令会创建delay_on和delay_off两个文件。
echo on_time > delay_on 这个命令用于设置LED on的时间
echo off_time > delay_on 这个命令用于设置LED off的时间(On和off的时间都是以毫秒为单位的。)
echo timer > trigger 命令清除delay_on和delay_off时间,让led off。
echo none > trigger 删除delay_on/delay_off 节点 在kernel_log 可以看到leds.s中函数调用的情况
如 printk("mt65xx_leds_set_cust: set brightness, name:%s, mode:%d, level:%d\n", cust->name, cust->mode, level);
alps/custom/<proj name>lk/cust_leds.c
alps/custom/<proj name>/kernel/leds/mt65xx/cust_leds.c
drvgen.exe编辑修改codegen.dws 配置cust_leds.c参数: static struct cust_mt65xx_led cust_led_list[MT65XX_LED_TYPE_TOTAL] = {
{"red", MT65XX_LED_MODE_NONE, -1,{0}},
{"green", MT65XX_LED_MODE_NONE, -1,{0}},
{"blue", MT65XX_LED_MODE_NONE, -1,{0}},
{"jogball-backlight", MT65XX_LED_MODE_NONE, -1,{0}},
{"keyboard-backlight",MT65XX_LED_MODE_NONE, -1,{0}},
{"button-backlight", MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_BUTTON,{0}},
{"lcd-backlight", MT65XX_LED_MODE_CUST_BLS_PWM, (int)disp_bls_set_backlight,{0}},
}; LCD背光
MT6589
使用不同的控制源,配置模式:
1.BL_PWM (BLS_PWM)
{"lcd-backlight", MT65XX_LED_MODE_CUST_BLS_PWM, (int)disp_bls_set_backlight,{0}},
2.PWM1~PWM7
如果是PWM1~4
{"lcd-backlight", MT65XX_LED_MODE_PWM, PWM1,{0,0,0,0,0}},
{0,0,0,0,0}表示src_clk=32k时钟,div=0,HDuration=4; LDuration=4,pmic_pad=0
频率计算:32K/(0+1)/64/4=125Hz
如果使用PWM5~7
{"lcd-backlight", MT65XX_LED_MODE_PWM, PWM5,{1,1,32,32,1}},
{1,1,30,30,1}表示src_clk=52M时钟,div=1,HDuration=32; LDuration=32,pmic_pad=1(PWM5~7在PMIC6320)
频率计算:52M/(1+1)/64/32=126.95KHz 3.GPIO脉冲
{"lcd-backlight", MT65XX_LED_MODE_GPIO, (int)Cust_SetBacklight,{0}},
通过实现Cust_SetBacklight(level,div)函数操作GPIO动作 4.类似OLED屏幕,通过写LCM 寄存器实现
{"lcd-backlight", MT65XX_LED_MODE_CUST, (int)Cust_SetBacklight,{0}},
通过实现
unsigned int Cust_SetBacklight(int level, int div)
{
mtkfb_set_backlight_level(level);
}
通过mtkfb_set_backlight_level(level);实现的函数指针将level传到LCM driver
在LCM的driver中实现.set_backlight=lcm_setbacklight, 5.PMIC6320的Isinks
MT6320只有3个Isink,应该不能满足要求 MT6572
和Mt6589有区别的:
1.PWM1~PWM5
{"lcd-backlight", MT65XX_LED_MODE_PWM, PWM1,{0,0,0,0,0}},
{0,0,0,0,0}表示src_clk=32k时钟,div=0,HDuration=4; LDuration=4,pmic_pad=0
频率计算:32K/(0+1)/64/4=125Hz
{"lcd-backlight", MT65XX_LED_MODE_PWM, PWM1,{1,1,32,32,0}},
{1,1,30,30,0}表示src_clk=66M时钟,div=1,HDuration=32; LDuration=32,pmic_pad=0
频率计算:66M/(1+1)/64/32=161.11KHz 2.PMIC6323的Isinks
MT6323有4个Isink,每路24mA电流,可以double为48mA,可以接8个LED
{"lcd-backlight", MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_LCD_ISINK,{0}}, Button LED
MT6589 PMIC mt6530有KPD LDO
{"button-backlight", MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_BUTTON,{0}},
MT6572 mt6323没有KPD LDO,一般兼容使用Isink或者PWM
ISink0和Isink1合并做Button LED
{"button-backlight", MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_NLED_ISINK01,{0}},
注意:如果需要修改电流等级和double current,请修改leds.c
brightness_set_pmic()和led_blink_pmic()
电流等级接口:upmu_set_isinks_chx_step(0x0);//0x0 4mA;0x01 8mA;0x2 12mA;0x03 16mA 0x04 20mA;0x05 24mA
double current接口:upmu_set_isinks_chx_double_en(0x1); PWM1~5
{"button-backlight", MT65XX_LED_MODE_PWM, PWM1,{0,0,0,0,0}}, LED
MT6589
1.Pre-charger(PCH_DET) LED
主要使用由于关机充电LED,插USB charger点亮,lk阶段关闭
如果需要打开PCH_DET:
在mt_leds.c(lk)和leds.c 中要打开pre-charger LED 的控制
Upmu_chr_chrind_on(1);//开启
Upmu_chr_chrind_on(0);//关闭 2.使用Isink接LED
{"red", MT65XX_LED_MODE_PMIC,MT65XX_LED_PMIC_NLED_ISINK0,{0}},
{"green", MT65XX_LED_MODE_PMIC,MT65XX_LED_PMIC_NLED_ISINK1,{0}},
{"blue", MT65XX_LED_MODE_PMIC,MT65XX_LED_PMIC_NLED_ISINK2,{0}}, 3.使用PWM控制LED
{"red", MT65XX_LED_MODE_PWM,PWM5,{0,0,0,0,1}},
{"green", MT65XX_LED_MODE_PWM,PWM6,{0,0,0,0,1}},
{"blue", MT65XX_LED_MODE_PWM,PWM7,{0,0,0,0,1}},
注意:Mt6589上的PWM在sleep的时候没有波形输出的,如果sleep需要闪烁设计,请使用PMIC Mt6320上的PWM(PWM5~PWM7) MT6572
与Mt6589的区别:
1.mt6572没有pre-charger LED的PCH_DET pin 2.Mt6572的PWM1~5在sleep的时候,都是没有波形输出的,设计请注意 3.使用Isink设计时,如果1个isink接2路LED,请注意打开double current,或者step调大 Flash light
文件:alps/mediatek/custom/<proj name>/kernel/flashlight/constant_flashlight/leds_stobe.c
实现FL_enable()和FL_disable()
MT6589有专门的flash LDO
MT6572没有Flash LDO,可以通过控制PWM,GPIO,ISINK等控制Flash light 上层JNI lib文件
alps/mediatek/hardware/liblights/lights.c
如果需要同时打开2个以上的LED,请修改set_speaker_light_locked()里面的逻辑 adb shell调试LCD背光和LED adb命令查看LED或者backlight的亮度status
cd /sys/class/leds/xxx/brightness
(xxx表示的是light的名字,例如green,blue,red分别表示绿灯、蓝灯和红灯,lcd-backlight表示的是lcd背光。)
如果出现LED或Backlight不正常时,可以通过进入到相应的folder执行如下命令去检测是否driver有问题:
echo brightness_level > brightness 检查是否按照你设置的亮度显示。 对于LED来说brightness_level只要不是0,driver都会让led on。 LCD背光不支持blink,测试LED blink可以执行如下命令:
cd /sys/class/leds/xxx/
echo timer > trigger 这个命令会创建delay_on和delay_off两个文件。
echo on_time > delay_on 这个命令用于设置LED on的时间
echo off_time > delay_on 这个命令用于设置LED off的时间(On和off的时间都是以毫秒为单位的。)
echo timer > trigger 命令清除delay_on和delay_off时间,让led off。
echo none > trigger 删除delay_on/delay_off 节点 在kernel_log 可以看到leds.s中函数调用的情况
如 printk("mt65xx_leds_set_cust: set brightness, name:%s, mode:%d, level:%d\n", cust->name, cust->mode, level);
如何配置LCD背光和LED,调试方法相关推荐
- [LED]如何配置LCD背光和LED,调试方法
[LED]如何配置LCD背光和LED,调试方法 [DESCRIPTION] 如何配置LCD背光和LED,调试方法 [SOLUTION] LCD背光和LED配置文件 alps/custom/<pr ...
- MTK6572平台lcd背光配置、调试
自己总结和参考了这篇文章的内容:http://blog.csdn.net/zhufuronglovewenzhen/article/details/46627767 以及大神的文章:http://bl ...
- linux 内核配置lcd,Linux-2.6.32.2内核在mini2440上的移植---添加LCD背光驱动
移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容) 1,主机环境:VMare下CentOS 5.5 ,1G内存. 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linu ...
- ZXR10 1809 路由器 1800开启WEB配置界面调试方法
ZXR10 1809 路由器 1800开启WEB配置界面调试方法 中兴ZXR10 1800 1809路由器,昨天配置时发现了个命令可以实现WEB配置,以前一直用超级终端配置. WEB配置相比超级终端 ...
- 教你如何快速学会全彩LED显示屏的调试方法
今天优色专显教你如何快速学会全彩LED显示屏的调试方法.全彩LED显示屏的调试分为3步:调试之前的准备工作;调试单个接收卡所控制的LED电子屏区域(一般为一个箱体);调试大屏幕. 一. 调试之前的准备 ...
- LCD背光驱动 --Backlight
显示屏按其显示原理大致可分为CRT(显像管).LCD(液晶)及OLED三类,从市场应用看,手机中使用的显示屏主流是LCD,OLED只在翻盖机的小屏中占有少量份额,而CRT在手机中没有用到. ...
- linux pwm 调屏_基于嵌入式Linux的LCD背光调节及驱动的实现
0 引言 在手持式设备中,液晶显示屏的使用越来越广泛.由于LCD自身是不能发光的,它需要一个强劲的光源来给它提供背光,以便清晰地显示信息.这样的光源是非常耗电的,通常液晶显示屏的功耗常常占到系统总功耗 ...
- asp功放怎么装_汽车功放怎么安装 汽车功放安装调试方法【详解】
摘要:汽车功放怎么安装调试?汽车功放安装位置考虑安装到座椅下面,或者是后排座椅后面,或者是吊装在后隔板上面.下面,就来了解下汽车功放安装与调试知识. [汽车功放安装教程]汽车功放安装调试 汽车功放接线 ...
- linux蜂鸣器控制实验,【Linux公开课】蜂鸣器使用、LCD背光控制、触摸屏校准、GPIO操作...
摘要为方便使用蜂鸣器,系统为蜂鸣器提供类似LED的操作接口,对应的操作文件是/sys/class/leds/beep/brightness.写入1使蜂鸣器鸣叫,写入0停止鸣叫- 8.12 蜂鸣器使用 ...
最新文章
- 软件行业里学历和资历哪个更重要?
- kubernetes相关概念
- hdu1316 水大数
- docker基础入门和docker compose实战
- 【洛谷1985】【USACO07OPEN】翻转棋
- HDFView 3.1.2win10百度云资源
- 康末otdr测试软件丢失,利用OTDR快速定位光缆线路故障-测试测量-与非网
- 测试报告包含哪些内容?(超详细,带图)
- 【libnice】艰难的meson+ ninja手动编译过,vs2022 v143 debug
- 学习笔记(04):程序员的数学:微积分-常用导数(一):最常用到的技巧
- kazoo在多进程下使用全局连接死锁问题
- 广东:让“数据跑路”代替“民众跑腿”
- WLC license管理
- Java小农养成记第二十三天
- [刷题] 关于LeetCode的前言
- Source Insight乱码解决方案
- android XML文件加注释
- 原型工具介绍———墨刀以及Axure RP比较
- Python每日一学 08——get()方法学习
- 【Unity小游戏】一款类似“恐龙快打”的《横版街机格斗游戏》 该如何制作?| 一起来学习 顺便送源码
热门文章
- 018_html文件路径
- Mac下Unity5x的安装
- rhel7安装oracle11g 的配置和安装过程
- Mysql根据日期查询
- 正则截取指定字符串 php,php截取指定字符串除了正则还有什么方法
- pythonsklearn乳腺癌数据集_使用sklearn的样本数据集
- mysql 分组占比_含泪整理MySQL索引
- 卡片的sak为不支持的类型_“师傅”两字是不能随便叫的!78%的网友不支持称顺风车主为“师傅”...
- asp论坛回复功能怎么实现_在asp.netcore中使用中间件(middleware)实现api拦截及验证功能
- Python基础之数据类型(一)