由调试AMOLED屏的重要点在于给屏提供的两个电,OVDD(4.6V)与OVSS(-2.9V),电是由平台的PMU pm8996提供的,由SWIRE信号控制,主要修改了供电的方式,先写在内核中点亮的过程。
点亮内核
在项目的dtsi文件中修改如下几个属性,其他的与LCD屏调试一样。
1.在msm-pmi8994.dtsi文件中添加如下属性。添加最后一行: qcom,disp-type-amoled;
注释掉属性
/qcom,en-ext-pfet-sc-pro;/
qcom,leds@d800 {compatible = "qcom,qpnp-wled";reg = <0xd800 0x100>,..qcom,en-ext-pfet-sc-pro;qcom,cons-sync-write-delay-us = <1000>;/*qcom,en-ext-pfet-sc-pro;*/qcom,disp-type-amoled;};
2.在项目dtsi中修如下属性。
labibb {qpnp,qpnp-labibb-mode = “lcd"; /* remove this line */qpnp,qpnp-labibb-mode = "amoled"; /* add this line */qpnp,swire-control; /* add this line*/};
增加如下的节点,
&lab_regulator {/delete-property/ qcom,qpnp-lab-ps-enable;};
4.增加如下的节点,名字添加的屏的dtsi文件决定
&dsi_XXXX_1080p_video {qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs";qcom,mdss-dsi-bl-min-level = <1>;qcom,mdss-dsi-bl-max-level = <255>;qcom,mdss-brightness-max-level = <255>;qcom,cont-splash-enabled;qcom,panel-supply-entries = <&dsi_panel_pwr_supply_amoled>;};
5.修改dsi_panel_pwr_supply_amoled 的电压lab(4.6V)ibb(-2.9V)
qcom,supply-max-voltage = <46000000>;qcom,supply-min-voltage = <2900000>;qcom,supply-max-voltage = <2900000>;
点亮bootloader(lk)
1.在lk中只需要在panel_XXX_video.h 中增加如下数据结构
static struct labibb_desc panel_truly_1080p_video_labibb = {1, // lcd = 0, amoled = 11, // force_config 0 to use default value2900000, // IBB minimum voltage in µV 这个电压由屏的SPEC决定。2900000, // IBB maximum voltage in µV4600000, // LAB minimum voltage in µV4600000, // LAB maximum voltage in µV3, // power up delay3, //power down delay1, //IBB discharge enable1 // SWIRE control};
增加了这个节点后还是不能点亮。器测量电压发现LAB与IBB不受SWIRE信号控制。通过对比旧基线与新基线发现是高通代码bug,缺失了一部分代码,然后发现AVDD上电比较早导致时序不对.是mpp信号不对.在xbl中增加代码,拉低mpp.就可以了。
调节avdd的电压为5.8V,默认值为7.6V
在节点qcom,leds@d800中增加属性
qcom,ovp-mv = <17800>; //原来值29500qcom,avdd-target-voltage-mv = <5800>;
在lk中修改如下
dev/qpnp_wled/include/qpnp_wled.h#define QPNP_WLED_AVDD_DEFAULT_VOLTAGE_MV 5800dev/qpnp_wled/qpnp_wled.cwled->ovp_mv = QPNP_WLED_OVP_17800_MV;