MT6572 ISINK控制LCD背光问题
[LEDS]LK: mt65xx_backlight_on
[LEDS]LK: lcd-backlight level is 255
[LEDS]LK: PMIC Type: 2, Level: 255
[LEDS]LK: Level Mapping = 80
[LEDS]LK: ISINK DIM Duty = 31
[LEDS]LK: ISINK Current = 5
进入kernel的时候,很奇怪,先震动了一下,log如下:
[ 28.489915] (0)[587:er.ServerThread][vibrator]vibrator_enable: vibrator first in value = 0
[ 28.491112]-(0)[587:er.ServerThread][vibrator]vibrator_enable: shutdown_flag = 0
[ 28.492035] (0)[587:er.ServerThread][vibrator]vibrator_enable: vibrator start: 0
[ 28.494402] (0)[671:Thread-90][vibrator]vibrator_enable: vibrator first in value = 1
[ 28.495545]-(0)[671:Thread-90][vibrator]vibrator_enable: vibrator cust timer: 50
[ 28.496490] (0)[671:Thread-90][vibrator]vibrator_enable: vibrator start: 1
[ 28.497418] (1)[37:kworker/u:1][vibrator]vibr_Enable before
[ 28.498240] (1)[37:kworker/u:1][power/PMIC] [hwPowerOn] acquire powerId:13 index:0 mod_name: VIBR powerVolt:2800
[ 28.50029] (1)[37:kwK瓡山u:1][Power/PMIC] [13\ PMU LDO Enable
[ 28.501215] (1)[37:kworker/u:1][Power/PMIC] ****[dct_pmic_VIBR_sel] value=2800
[ 08.40216W
[ 28.525078] (0)[37:kworker/u:1][Power/PMIC] [13] PMU LDO Enable
[ 28.525848] (0)[37:kworker/u:1][Power/PMIC] ****[dct_pmic_VIBR_sel] value=2800
[ 28.526784] (0)[37:kworker/u:1][Power/PMIC] [dct_pmic_VIBR_enable] 1
[ 28.527609] (0)[37:kworker/u:1]vibrator enable register = 0x8004
[ 28.528359] (0)[37:kworker/u:1][vibrator]vibr_Enable After
然后背光就暗下来了,ISINK Current变为最低了,log如下:
[ 28.739288] (1)[603:PowerManagerSer]mt65xx_leds_set_cust: set brightness, name:lcd-backlight, mode:3, level:102
[ 28.739303] (1)[603:PowerManagerSer][LED]PMIC#2:102
[ 28.739311] (1)[603:PowerManagerSer][LED]Backlight Init
[ 28.739577] (1)[603:PowerManagerSer][LED]Level Mapping = 9
[ 28.739587] (1)[603:PowerManagerSer][LED]ISINK DIM Duty = 8
[ 28.739596] (1)[603:PowerManagerSer][LED]ISINK Current = 0
大家谁遇到过如此情况了?指点一下吧,谢谢了!也不知道是不是共性问题哎
暗下来是肯定的啊。
因为lk设为最亮了。
系统起来后,就把用户设置的背光设下来了。如果用户设置为102,那么过程就是这样的
开机之后最亮,系统起来后设为102就变暗了。
你好!现在亮度明显差了很多啊,72平台别的背光方式的手机,都没什么感觉的。
而且开机之后,吧背光调到最亮,也没有LK那个效果,不知道为什么
那你在kernel设都255的时候打一下log看看是不是和LK的一样、
[LEDS]LK: mt65xx_backlight_on
[LEDS]LK: lcd-backlight level is 255
[LEDS]LK: PMIC Type: 2, Level: 255
[LEDS]LK: Level Mapping = 80
[LEDS]LK: ISINK DIM Duty = 31
[LEDS]LK: ISINK Current = 5
如果日志是一样的还有问题,那有可能是PMIC的供电有问题。
让硬件查ISINK的电是谁供的,因为背光耗的电太大,有可能是供电不稳定
软件能做的就是查看LK和KERNEL设置的寄存器的值是否一样。
改为默认最亮以后,还是会变暗,log如下:
[ 26.606803] (0)[603:PowerManagerSer][LED]Set Backlight directly 255 at time 4294939949
[ 26.608217] (0)[603:PowerManagerSer]mt65xx_leds_set_cust: set brightness, name:lcd-backlight, mode:3, level:255
[ 26.610478] (0)[603:PowerManagerSer][LED]PMIC#2:255
[ 26.611491] (0)[603:PowerManagerSer][LED]Backlight Init
[ 26.612764] (0)[603:PowerManagerSer][LED]Level Mapping = 21
[ 26.613476] (0)[603:PowerManagerSer][LED]ISINK DIM Duty = 20
[ 26.614190] (0)[603:PowerManagerSer][LED]ISINK Current = 0
ISINK Current不知道为什么会从24mA变为4mA
你看 leds.c中brightness_set_pmic 函数了吗?日志打的这么清楚了。
这种方式的背光由 duty 和current两个值来控制的。
有问题的地方就是这一句 Level Mapping = 21
才code上看,
if(level == 255)
{
level = 108;
}
else
{
level = ((level * 108) / 255) + 1;
}
255经过map之后是108. 你map之后变成了21,所以查数组定duty和current当然会选择level=21的值
可能是这句 level = brightness_mapping(tmp_level);有问题。
你把level值的变化debug一下。 肯定能找到问题。
非常感谢,这个问题已经OK了,ISINK应该是0--255的,第一次使用这种方式,代码还是用的之前0--64的mapping
咨询小编一下,这在背光亮点变化的时候,你有没有遇到闪屏的问题?我也是用这种做屏幕背光,现在调背光亮度会有点闪。
学习下好东西!
marking..............
