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

该系列文章总目录链接与各部分简介: 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

相关内容

热门资讯

广厦万千下一句是什么? 广厦万千下一句是什么?广厦万千,卧眠七尺;弱水三千,只取一瓢。大庇天下寒士俱欢颜大庇天下寒士俱欢颜,...
谁能介绍几首好听的歌? 谁能介绍几首好听的歌?一些不是有名的歌手唱的,但很好听不了了之潜意识失忆棉花糖——至上励合繁星——至...
韩语翻译!等你来翻译啊朋友们 韩语翻译!等你来翻译啊朋友们wow 这么长 才20币
剑域神帝主角有多少个妻子 剑域神帝主角有多少个妻子有一个,叫凌妃霜。经查询《剑域神帝》的作者是剑走偏锋最新液闹圆写的一本玄幻小...
四大混沌有什么 四大混沌有什么四大混沌:阴阳混沌、五行混沌、天地混沌、日月混沌。
煤气灶点燃后会熄灭,这是什么原... 煤气灶点燃后会熄灭,这是什么原因造成的?可能是因为煤气灶的风门没有调节好,所以才会出现这样的情况。很...
如果父母不同意我嫁到外地去的话... 如果父母不同意我嫁到外地去的话我男朋友说直接带我走!我要不要跟他走啊那就看在你心里男朋友重要还是父母...
讲三男三女的校园言情小说 讲三男三女的校园言情小说天使街23号《G小调进行曲》《214度恶龙王子》《他们的肥皂剧》《我们的最终...
暗黑破坏神3 我已经买完游戏了... 暗黑破坏神3 我已经买完游戏了 显示也是最高的版本 为什么游戏里面还是试玩 求大神知道输入CD-KE...
怎样改变电影配音 怎样改变电影配音用暴风影音的 音频流 选项 一定可以的
猴子英语怎么说monkey 猴子英语怎么说monkey 猴子英语怎么说monkey:英 ['mʌŋkɪ]  美 ['mʌŋki]...
健康美胸中心林老师 都是骗人的... 健康美胸中心林老师 都是骗人的大家千万别上当,当她收到了钱就不回信息了,而且一点效果也没有,打电话这...
玉帝是什么生肖 玉帝是什么生肖你好,答案是狗: 做事敏捷、忠诚,有吉祥狗、富贵狗、欢喜狗的说法。拳拳之心,前程有望。...
出行同意书公证需要什么材料 当未成年人需要单独出境或由父母一方陪同出境时,许多国家要求不同行的法定监护人出具出行同意书,并经过公...
在衍晟坊民俗体验馆四合院里,触... 北京中轴线申遗成功,让世界看到了中国古都的壮美秩序。而在这条壮丽轴线的北段,胡同深处,一座承载着老北...
在这些奇幻空间,发现“魔都”的... 上海,这座包罗万象的都市,不仅有着繁华的街道和摩登的天际线,更是一座充满几何韵律与空间诗意的巨型建筑...
7月感受张家界的夏日凉韵,让清... 张家界是夏日里的一块绿宝石,被大自然以峰为骨、以水为魂精心雕琢。当城市的热浪让人喘不过气时,这里的山...
点燃暑期档 | 暑期档电影取景... 暑假来袭,无论是电影市场,还是旅游经济都“热力十足”。“影视+文旅”成为新风尚,跟着这份暑期观影指南...
是见鬼还是精神病?大家帮忙看看 是见鬼还是精神病?大家帮忙看看我和你差不多 感觉很真实 遇过一些事还是有其他人在旁边的时候 我觉得遇...