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

相关内容

热门资讯

复刻贵州馆子味!家常泡椒炒牛肉... 贵州泡椒炒牛肉是一道充满地方特色的家常菜,它以鲜嫩的牛肉和酸辣开胃的泡椒为主要食材,成菜香气扑鼻,口...
黔寨风味“黄金派”:外酥内糯,... 在贵州连绵的群山与缭绕的云雾间,散落着许多古老村寨。这里不仅保留着深厚的民族传统,更隐藏着无数令人惊...
大妈教你东北芥菜疙瘩的腌制方法... 眼下正是腌菜的好时节,每年这个时候,我总会想起东北大娘腌的芥菜疙瘩,那味道堪称一绝。她的做法特别简单...
原创 一... 家人们谁懂啊!黑椒牛肉配杏鲍菇真的是神仙组合!软嫩多汁的牛肉裹着浓郁的黑椒酱汁,杏鲍菇吸饱了肉香变得...