高通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可能負載了多路設備,設置的電壓值過高可能會燒壞其他負載設備,切記!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章