高通MSM8909平台L1系统修改LDO电压值

文档说明

本文档以SC806-CN-00(MSM8909平台)为例,说明如何修改LDO电压值。

修改方法

以修改LDO5,从1.8V改为1.9V为例。

首先查看PM8909的IC specification,确保想要修改的电压值在芯片支持的范围内,如下:

可以看出,L5支持的电压范围为1.75~3.337V,默认电源值为1.8V。

下面是软件修改方法,软件里面需要修改的地方如下:

1)修改BP源码部分RPM电源输出范围配置值。

文件路径:

rpm_proc/core/systemdrivers/pmic/config/msm8909/pm8909/pm_config_target.c

修改ldo_rail_a数组内容:

/* LpHpCurrentThreshold, SafetyHeadRoom, IsSawControlled, AccessAllowed, AlwaysOn, MinPwrMode, BypassDisallowed, DroopDetect, MinVoltage, MaxVoltage, MinSettlingTime, SettlingErrorEnabled, SettlingEnabled, Reserved */
pm_rpm_ldo_rail_info_type ldo_rail_a[] =
{
    ... ...
    {5, 150, 0, PM_ACCESS_ALLOWED, PM_ALWAYS_ON, PM_NPA_SW_MODE_LDO__IPEAK, PM_NPA_BYPASS_DISALLOWED, PM_DROOP_DETECT_DIS, 1800, 1800, 0, PM_SETTLING_ERR_EN, PM_SETTLING_EN, 0}, // LDO5   LDO LV_P300
     ... ...
};

其中 1800,1800 表示该路LDO支持的最小电压和最大电压,这里表示LDO5稳定输出1.8V;PM_ALWAYS_ON表示该路LDO上电后一直处于打开状态(灭屏休眠也有输出),与之相对的,如果需要使用时才打开,这里设置成PM_NONE。

将上面的电源范围改为1900,1900即为输出1.9V了,修改后如下:

pm_rpm_ldo_rail_info_type ldo_rail_a[] =
{
    ... ...
    {5, 150, 0, PM_ACCESS_ALLOWED, PM_ALWAYS_ON, PM_NPA_SW_MODE_LDO__IPEAK, PM_NPA_BYPASS_DISALLOWED, PM_DROOP_DETECT_DIS, 1900, 1900, 0, PM_SETTLING_ERR_EN, PM_SETTLING_EN, 0}, // LDO5   LDO LV_P300
     ... ...
};

2)修改AP源码部分DTS文件中的电源输出范围配置。

文件路径:

kernel/arch/arm/boot/dts/qcom/sc806-evk/msm8909-regulator.dtsi

【注】路径中的sc806-evk表示当前项目目录,具体配置哪个项目则进入哪个目录。

修改节点rpm-regulator-ldoa5的输出电压配置,如下:

        rpm-regulator-ldoa5 {
                        status = "okay";
                pm8909_l5: regulator-l5 {
                        status = "okay";
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <1800000>;
                        qcom,init-voltage = <1800000>;
                };
        };

将其中最小电压,最大电压和初始化电压改为1900000即可:

        rpm-regulator-ldoa5 {
                        status = "okay";
                pm8909_l5: regulator-l5 {
                        status = "okay";
                        regulator-min-microvolt = <1900000>;
                        regulator-max-microvolt = <1900000>;
                        qcom,init-voltage = <1900000>;
                };
        };

3)修改使用LDO5电源的模块对该路电源的电压配置。

【注】前面两步仅用于限制该路电源的电压输出范围以及初始输出电压。具体使用时还需要根据模块所需的电压值对该路电压进行实际配置,如果原本想要配置的电压已经在上述配的范围之内,则前两步可省略,直接在模块配置部分进行电压值修改即可(由于上述LDO5上下限电压都是1.9V,所以相关模块配置该路电源也只能配1.9V)。

一般模块对于所用电源的配置都在dts文件中完成(少数也会直接在.c源码文件中配置,这类需要根据log信息去查找配置的地方)。可以在 kernel/arch/arm/boot/dts/qcom/sc806-evk/ 目录下搜索“pm8909_l5”关键字,如下:

然后到具体引用该路LDO电源的dtsi文件中查看是否对该路电源进行了电压配置,如 msm8909-mtp.dtsi 文件中对该路电源配置如下:

&sdhc_1 {
        ... ...
        vdd-io-supply = <&pm8909_l5>;
        qcom,vdd-io-always-on;
        qcom,vdd-io-lpm-sup;
        qcom,vdd-io-voltage-level = <1800000 1800000>;
        qcom,vdd-io-current-level = <200 60000>;
        ... ...
        status = "ok";
};

可以看出,这是sd卡驱动部分的配置,将其中电压改成1900000即可:

&sdhc_1 {
        ... ...
        vdd-io-supply = <&pm8909_l5>;
        qcom,vdd-io-always-on;
        qcom,vdd-io-lpm-sup;
        qcom,vdd-io-voltage-level = <1900000 1900000>;
        qcom,vdd-io-current-level = <200 60000>;
        ... ...
        status = "ok";
};

其他dts文件中的配置修改类同。

【注】如果引用该路LDO电源的电压值未改,则开机会停留在开机logo界面无法进入系统,uart log会提示如下信息:

[ 4.603222] sdhci-pltfm: SDHCI platform and OF driver helper

[ 4.613321] pm8909_l5: requested voltage range [1800000, 1800000] does not fit within constraints: [1900000, 1900000]

[ 4.622933] sdhci_msm_vreg_set_voltage: regulator_set_voltage(vdd-io)failed. min_uV=1800000,max_uV=1800000,ret=-22

可根据这条log的上下文信息知道哪个模块使用了该路LDO且配置的电压超出了限制范围,进而进行修改即可。

【注】上述LDO5仅用于测试性修改,实际修改LDO电压时务必谨慎!因为有些LDO可能负载了多路设备,设置的电压值过高可能会烧坏其他负载设备,切记!

发布了16 篇原创文章 · 获赞 3 · 访问量 3193

猜你喜欢

转载自blog.csdn.net/qq_33790215/article/details/102573441