案例:在调试qcom msm8916 + PM8916平台的时候,遇到一个bug,LCM休眠时候,vdd引脚电压没有拉低,电压还是2.85V,造成1920X1200nt51021b 京东方8寸LCM调试的时候经常因为系统休眠或者不断重启,LCM极化,造成闪屏,或者不能正常显示的问题。

调试经过:

通过查看原理图发现,vdd使用了LDO17作为电源,LDO17在系统休眠的时候没有关闭。

在/sys文件系统下面留有两个调试接口:

/sys/kernel/debug/regulator/pm8917_l17
/sys/class/regulator/regulator.27/

我们使用/sys/kernel/debug/regulator/pm8917_l17

可以看到,一共有两个设备用了l17。其实通过echo 0 >enable两次也可以实现关闭l17,但是就很奇怪为什么要两次才起作用,不禁联想到,ldo被其他设备占用了,而休眠的时候没有关闭。

第一个就是lcm用到的vdd: 1a94000.qcom,mdss_dsi_ctrl0-vdd

在LA.BR.1.2.4-05310-8x16.0\kernel\arch\arm\boot\dts\qcom\msm8916-mdss.dtsi

中配置的vdd

 mdss_dsi0:qcom,mdss_dsi@1a98000 {compatible= "qcom,mdss-dsi-ctrl";label= "MDSS DSI CTRL->0";cell-index= <0>;reg= <0x1a98000 0x25c>,<0x1a98500 0x2b0>,<0x193e000 0x30>;reg-names= "dsi_ctrl", "dsi_phy", "mmss_misc_phys";qcom,mdss-fb-map= <&mdss_fb0>;qcom,mdss-mdp= <&mdss_mdp>;gdsc-supply= <&gdsc_mdss>;vdda-supply= <&pm8916_l2>;vdd-supply = <&pm8916_l17>;vddio-supply= <&pm8916_l6>;

Mdss_mdp.c (drivers\video\msm\mdss)中解析vdd(注意devm_regulator_get函数会将vdd补全为vdd-supply):

mdata->fs = devm_regulator_get(&mdata->pdev->dev, "vdd");

在Mdss_mdp.c中提供了一个对mdata->fs LDO的控制方法:

static void mdss_mdp_footswitch_ctrl(struct mdss_data_type *mdata, int on)

在休眠函数里,定义了关闭LDO17的方法:

static inline intmdss_mdp_suspend_sub(struct mdss_data_type *mdata)
{mdata->suspend_fs_ena= mdata->fs_ena;mdss_mdp_footswitch_ctrl(mdata, false);pr_debug("suspenddone fs=%d\n", mdata->suspend_fs_ena);return0;
}

所以,LDO17没有正常关闭很有可能是另外一个驱动中申请使用后,suspend函数没有关闭造成的!下面分析一下3-005d-vdd。

地址为0x5d的是在

\kernel\arch\arm\boot\dts\qcom\msm8916-qrd-skui-slm755-public.dts

中定义的

      i2c@78b9000{ /* BLSP1 QUP5 */goodix@5d {compatible = "goodix,gt9xx";reg = <0x5d>;interrupt-parent = <&msm_gpio>;interrupts = <13 0x2008>;reset-gpios = <&msm_gpio 12 0x00>;interrupt-gpios = <&msm_gpio 13 0x00>;vdd-supply = <&pm8916_l17>;vcc-i2c-supply = <&pm8916_l6>;……};

在驱动中:kernel/drivers/input/touchscreen/gt9xx/gt928.c

static int goodix_ts_suspend(struct device*dev)函数里面并没有出现关闭LDO的操作,所以我们在里面加入一行代码:

regulator_disable(ts->vdd);

当然,也需要在resume中打开ldo17

在函数static int goodix_ts_resume(struct device *dev)加入:

         ret= regulator_enable(ts->vdd);if(ret) {printk(KERN_ERR"eliot regulator_enable err...\n");}

重新编译,打包下载实验。LDO17在lcm休眠的时候关闭了!!!

除了上述在使用ldo17驱动的suspend函数中关闭ldo的做法外,还有休眠的时候统一关闭LDO17的方法,qcom回复如下:

Dear customer
Try :
rpm_proc/core/systemdrivers/pmic/config/msm8916/pm_config_target.c
#if 1
sleep_register_type sleep_enter_info[] =
{
{1,0x5046,0x00}, //disable LDO17
{0, 0xFFFF, 0x00}, //invalid setting, used to check the end of the array.
};

sleep_register_type sleep_exit_info[] =
{
{1,0x15046,0x80},
{0, 0xFFFF, 0x00},
};
#endif

因为是modem部分的代码,没有权限访问,所以就没有实验这种方法是否可行了。

总结:休眠关闭电源是驱动应该要做的,也是平台功耗问题应该尽量避免的。高通建议使用第一种方法,谁使用谁关闭的做法,如果一组LDO被多个驱动所使用,还是应该在驱动的suspend中加入regulator_disable操作。

高通8916 PMIC休眠关闭LDO 解决LCM极化问题相关推荐

  1. 高通SM8450使用PCAT烧录失败解决办法

    报错: ERROR =====: Failed to load the software build on the device - Qualcomm HS-USB QDLoader 9008 (CO ...

  2. 切换基站+android+高通,你以为手机信号不好只是基站问题,高通骁龙modem也能解决你的信号难题...

    如今手机内部结构越来越复杂,个中包含的芯片数量不比当年的台式电脑差多少.但是不少用户在遇见手机信号差.甚至手机没信号等问题时,第一时间还是想到把问题推给运营商. 你以为运营商辛苦架设的基站应该为信号不 ...

  3. 高通平台 pmic—gpio修改(2)

    根据上一篇文章中的结论:如果在xbl阶段希望修改pmic相关的gpio,可以查看这个gpio是否已经有功能对其进行初始化.那么需要考虑一种情况:如果这个gpio从未被用过呢?因此本篇就是从根本上解决这 ...

  4. [高通MSM8953_64][Android10]默认关闭蓝牙以及开启蓝牙状态栏不显示图标

    文章目录 开发平台基本信息 问题描述 解决方法 1.默认关闭蓝牙 2.开启蓝牙状态栏不显示图标 开发平台基本信息 芯片: MSM8953_64 版本: Android 10 kernel: msm-4 ...

  5. android camera(3)--- 高通平台8916 camera移植

    物联网即将到来的明天,是各个岗位都需要人才的明天,不是别的不重要,是硬件一样重要,系统开发一样重要,驱动开发一样重要,结构MD一样重要...... 注:此文档以在高通8916平台移植OV5648为例, ...

  6. 新闻微软谷歌曾私下表达反对博通收购高通 害怕苹果更强

    CNBC电视台网站援引消息人士的说法称,微软和谷歌等公司都在私下里就博通收购高通的可能性表达了担忧. 消息人士表示,这些公司担心,苹果对这笔交易可能产生影响.此外,它们也担心博通更注重削减成本,而不是 ...

  7. 高通SDM450平台的LDO 输出与电压调节

    开始之前,首先我们要知道什么是LDO?有什么作用?LDO调试需要调哪些? 什么是LDO,有什么作用? LDO为 低压线性稳压器,高通平台有多路LDO电压输出,以SDM450 为例 共有 LDO1~LD ...

  8. 美团百度联合布局无人驾驶外卖;高通裁员千人;英特尔关闭可穿戴业务 | CSDN极客头条...

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 「CSDN 极客头条」是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报 ...

  9. iPhone最让人头疼的问题有望解决了,2020年将使用高通基带

    11月27日,据外媒消息,2020年新的iPhone将会换用高通基带,全面取消现用的英特尔基带.今年上半年,苹果公司已经和高通和解并达成了合作协议. 据悉,2020年的iPhone产品将全面搭载高通最 ...

最新文章

  1. 对话吴恩达:为什么说制造业会是首个聚焦AI转型的行业?
  2. 基于大数据的Uber数据实时监控(Part 2:Kafka和Spark Streaming)
  3. R语言使用reshape2包的melt函数将dataframe从宽表到长表(Wide- to long-format)、指定行标识符变量、并自定义生成的长表的标识符列的名称
  4. 杭电多校(四)2019.7.31--暑假集训
  5. 关于 UDP Hole Punching 的资料
  6. 在中WebBrowser加载Excel后获取excel对象
  7. for each循环_Power Query — 循环初步
  8. php checkbox 保存,PHP中在数据库中保存Checkbox数据
  9. 【MySQL】MySQL常见的读写分离方法
  10. 1041. 考试座位号(15)-PAT乙级真题
  11. android导航使用教程,android BottomNavigationView的简单使用教程
  12. Proteus添加新的元件库
  13. “狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
  14. 毕业设计写作基本步骤
  15. 计算机网络篇- 网络层
  16. html5 LivePlayer 实时播放rtmp
  17. STM32F103系列的单片机一共有11个定时器
  18. 日期转换 例如 二零零六年十二月二十一日 转换成 2006年12月21日
  19. Mac电脑下Chorm浏览器preflight(预检)的调整
  20. 本月,我最推荐的重疾保险性价比排行榜

热门文章

  1. SPOJ 78 Marbles 组合数学
  2. 基于k8s的纵向扩容介绍(VPA)
  3. Stripes视图框架与Struts2之间的比较
  4. Android6.0 PackageManagerService卸载应用
  5. Android 推出隐私沙盒
  6. 猿创征文|基于物联网的门禁与考勤系统_阿里云_2022
  7. GitHub图标SVG版本
  8. oracle很常用的语句
  9. Your task is to find for a given phone number any of its divisions into groups of two or three digit
  10. 20145326蔡馨熠 实验三 敏捷开发与XP实践