Android Qcom Display学习(十)
admin
2024-02-24 06:57:28

该系列文章总目录链接与各部分简介: Android Qcom Display学习(零)
本章主要是基于高通平台不同的背光类型处理的学习,包含XBL和Kernel两大部分。

Kernel

- qcom,mdss-dsi-bl-pmic-control-type:	A string that specifies the implementation of backlightcontrol for this panel."bl_ctrl_pwm" = Backlight controlled by PWM gpio.         "bl_ctrl_wled" = Backlight controlled by WLED."bl_ctrl_dcs" = Backlight controlled by DCS commands."bl_ctrl_external" = Backlight controlled by externallyother: Unknown backlight control. (default)
pmic qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";    DSI_BACKLIGHT_PWM       
wledqcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";   DSI_BACKLIGHT_WLED       
amoledqcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs";    DSI_BACKLIGHT_DCS

LPG是Light PulseGenerator,对应PWM ,qcom-spmi-pmic.c pwm-qti-lpg.c
WLED是White Light Emitting Diode(白光二极管) qcom-spmi-wled.c + leds-qpnp-wled.c

PMI632 Display LCDB only, WLED need externl driver 
qcom,pmi632@2 {compatible = "qcom,spmi-pmic";	pmi632_lcdb: qpnp-lcdb@ec00 compatible = "qcom,qpnp-lcdb-regulator";PMI6150 或 PM660等 Support WLED 需要看平台芯片支持,不支持需外接
pm660l_3: qcom,pm660l@3 {compatible ="qcom,spmi-pmic";pm660l_wled: qcom,leds@d800 {compatible = "qcom,pm660l-spmi-wled";   label = "backlight";		

backlight ic

Android Qcom Display学习(一)原理图中的背光IC就是LV52207,单纯的转换芯片,非I2C,非PMIC,单路输出,如果仅使用CABC那么上层无法使用亮度控制,如果要支持CABC,还是使用平台的PMIC WLED或者I2C器件 AW99703或LM36922双路控制的背光IC

LV52207 only support pwm input, not I2C,AW99703CSR  The LED current is adjusted via an I2C interface or through a logic level PWM input. LM36922 Brightness mode: 00 I2C only/ 01 PWM only/ 10 I2C + PWM / 11 I2C + PWM 结合方式有所不同In brightness control mode 00 the I2C Brightness registers control LED current, and the PWM input is disabled.In brightness control mode 11 both the I2C brightness code and the PWM duty cycle control the LED current. 

register backlight

dsi_panel_bl_registerswitch (bl->type) {case DSI_BACKLIGHT_WLED:rc = dsi_panel_wled_register(panel, bl);backlight_device_get_by_type(BACKLIGHT_RAW);  由wled驱动注册并获取到blacklight_deviceBACKLIGHT_RAW: The backlight is controlled using hardware registers.wled_probe -> devm_backlight_device_register	qcom-spmi-wled.c -> backlight.csys/class/backlight/backlight  (wled->name = dtsi lable = backlight)			break;case DSI_BACKLIGHT_DCS:break;case DSI_BACKLIGHT_EXTERNAL:break;case DSI_BACKLIGHT_PWM:rc = dsi_panel_pwm_register(panel);devm_of_pwm_get(panel->parent, panel->panel_of_node, NULL);of_pwm_get -> of_parse_phandle_with_args(np, "pwms", "#pwm-cells", index, &args);cells_name = "#pwm-cells" phandle 指向的节点所含的 cells 个数;index代表索引pm6125_pwm 中 #pwm-cells = 2 对应 所以devicetree: pwms = <&pm6125_pwm 0 0>pmi632_gpios 6 BLK_EN   pm6125_gpios 8 WLED_PWM  WLED_PWM can be replaced by CABCBOOT.XF.4.1/boot_images/QcomPkg/SocPkg/KamortaPkg/Settings/PMIC/pm_spmi_config.c{0, 0xC7, SPMI_OWNER_APPS,    SPMI_OWNER_APPS},   /* GPIO08 PWM_OUT FOR BACKLIGHT */

set backlight

dsi_panel_set_backlight		switch (bl->type) {case DSI_BACKLIGHT_WLED:rc = backlight_device_set_brightness(bl->raw_bd, bl_lvl);backlight_update_status ->  bd->ops->update_status -> wled_update_status	break;case DSI_BACKLIGHT_DCS:rc = dsi_panel_update_backlight(panel, bl_lvl);mipi_dsi_dcs_set_display_brightness + MIPI_DCS_SET_DISPLAY_BRIGHTNESSbreak;case DSI_BACKLIGHT_EXTERNAL:break;case DSI_BACKLIGHT_PWM:rc = dsi_panel_update_pwm_backlight(panel, bl_lvl);pwm_enable -> pwm_apply_state -> pwm->chip->ops -> enablepwm_config -> pwm_apply_state -> pwm->chip->ops -> config_extend ↓↓↓ devicetree:pm6125_pwm compatible = "qcom,pwm-lpg";  -> pwm-qti-lpg.c  -> qpnp_lpg_pwm_config_extend

backlight node

 sde_backlight_setup   sde_connector.c -> backlight.cbacklight_device_register   "/sys/class/backlight/panel0-backlight"static const struct backlight_ops sde_backlight_device_ops = {.update_status = sde_backlight_device_update_status,.get_brightness = sde_backlight_device_get_brightness,}static struct attribute *bl_device_attrs[] = {&dev_attr_bl_power.attr,&dev_attr_brightness.attr, &dev_attr_actual_brightness.attr,&dev_attr_max_brightness.attr,&dev_attr_type.attr,NULL,};bringtness节点控制brightness_store           >>   backlight_device_set_brightness backlight_update_status    >>   bd->ops->update_status -> sde_backlight_device_update_statusc_conn->ops.set_backlight  >>   dsi_display_set_backlight/sys/class/backlight/panel0-backlight # ls                                                                        
actual_brightness  bl_power  brightness  device  max_brightness  power  subsystem  type  ueventhardware/qcom/display/liblight/lights.c
char const*const LCD_FILE = "/sys/class/leds/lcd-backlight/brightness";                fd  architecture(mdss_fb_probe)
char const*const LCD_FILE2  = "/sys/class/backlight/panel0-backlight/brightness";      drm architecture(sde_backlight_setup)

XBL

configue define

boot_images/boot/QcomPkg/Library/MDPLib/MDPEDID.c   
boot_images/boot/QcomPkg/Include/Library/MDPTypes.h 
MDPDetectPanel-> pPanelXMLConfig ->  XML_Parser -> sXmlTagsListXML_CREATE_TAG_ENTRY("BacklightType",              XML_TAG_DATATYPE_INTEGER, gPanelConfig.sBacklightConfig.eBacklightType),XML_CREATE_TAG_ENTRY("BacklightPmicControlType",   XML_TAG_DATATYPE_INTEGER, gPanelConfig.sBacklightConfig.uBacklightCntrl.eBacklightCtrl),1                             //MDP_Panel_BacklightType      MDP_PANEL_BACKLIGHTTYPE_PMIC2       //MDP_PmicBacklightControlType MDP_PMIC_BACKLIGHT_CONTROLTYPE_WLED

control interface

Library/MDPPlatformLib/MDPPlatformLibPanelCommon.c 
Panel_Default_Brightness_Enable  Panel_Default_Brightness_Level
MDP_PANEL_BACKLIGHTTYPE_PMICMDP_PMIC_BACKLIGHT_CONTROLTYPE_LPG    -> EFI_QCOM_PMIC_PWM_PROTOCOLPMICPWMProtocol->PwmConfigMDP_PMIC_BACKLIGHT_CONTROLTYPE_WLED   ->  EFI_QCOM_PMIC_WLED_PROTOCOLPmicWledProtocol->EnableCurrentSinkPmicWledProtocol->SetLedDutyCycleMDP_PANEL_BACKLIGHTTYPE_I2Ci2c_open i2c_read i2c_write i2c_close + i2c_slave_config

相关内容

热门资讯

山水皆有情!丽江两山一江的千年... 去过丽江、走过虎跳峡的人,大概率都听过哈巴雪山和金沙江的传说。很多人站在峡谷之下,望着奔腾不息的金沙...
活力中国调研行丨“殷”你而来 ... 9月12日,游客在殷墟博物馆“甲骨文展厅”内参观。位于河南省安阳市的殷墟博物馆新馆是首个全景式展现商...
浦江之夜赴美好相逢,第37届上... 9月12日晚,黄浦江畔灯火璀璨,第37届上海旅游节大巡游在外滩中山东一路上演。不少观众早早便来到外滩...
美丽中国丨秋韵紫鹊界 梯田入画... 这是9月11日拍摄的紫鹊界梯田(无人机照片)。 金秋九月,湖南省娄底市新化县紫鹊界梯田稻谷渐次成熟。...
中国之巅奏响《共同的节日》,千... 千吨阻尼器,“迎世赛、游上海旅游节”。9月13日,由上海市文化和旅游局指导推出上海旅游·会客│巅峰之...