问题描述
客户反馈问题:
机顶盒连接tv;
tv str 关机,机顶盒一直开着;
过了几个小时(一次),或者第二天过来(一次),str开机,出现tv 黑屏。
抓取分析log
考虑到开了ac logleve 7后比较难复制问题,麻烦这样操作:
开机停到mboot,输入下面命令:
ac hwwp io,0x1f001e00,repeat
saveenv;
2.重新开机,复制问题前输入下面命令:
su
echo /sys/power/str_max_cnt 0
echo set dispout_dbginfo 0x40 > /sys/kernel/mik/MI_DISP
dmesg -C && dmesg --follow > /data/test_str.log &
logcat -c;logcat -v time > /data/logcat_str.log&
开始复制问题,同时保留串口log;
复制到问题后:
cat /proc/utopia_mdb/pnl
cat /proc/utopia_mdb/xc
echo dump,0x111E > /proc/utopia_mdb/riuinfo
echo dump,0x1032 > /proc/utopia_mdb/riuinfo
echo dump,0x1031 > /proc/utopia_mdb/riuinfo
echo dump,0x1310 > /proc/utopia_mdb/riuinfo
echo dump,0x1368 > /proc/utopia_mdb/riuinfo
echo dump,0x130F > /proc/utopia_mdb/riuinfo
echo dump,0x14 > /proc/utopia_mdb/riuinfo
echo dump,0x111E > /proc/utopia_mdb/riuinfo
4.提取串口log,logcat_str.log,test_str.log
问题原因
Panel的power on时序需要2 s左右(屏时序要求);
STR待机后开机,会是Utopia这边来负责点屏(panel resume),跑到panel power后按照1要求需要等2 s后再开背光;
Panel resume是另起线程来处理,在这等开背光的时间内,android的resume流程已跑完;
Android Light Hal模块负责suspend的关屏和early suspend下的开屏;
在resume过程中,Light Hal层会等Utopia这边完成点屏后才开始动作,但这个过程只等待1s(20x50 ms)就默认点好了,而这个屏要求2 s,导致提前跑起响应关屏动作;
后面Utopia再去开背光,这样就造成背光亮而panel power off的问题;
解决办法:
兼容这种panel的时序,将等待时间改为5 s(100 x 50 ms),保证Utopia做完后Light Hal才动作;