Cómo modificar el voltaje especial de la plataforma Qualcomm

Reimpreso: https://blog.csdn.net/qq_36781842/article/details/103721013

Cómo configurar el voltaje LDO en la plataforma Qualcomm, tome LDO17 como ejemplo, la fuente de alimentación predeterminada para la pantalla, configurado en 2.85V y ahora configurado en 3.3V.
RPM modificadas y parte sbl del código, voltaje LDO17 modificado a 3.3V.
(1).
--- a / RPM.BF.2.2 / rpm_proc / core / systemdrivers / pmic / config / msm8937 / pm_config_target.c
+++ b / RPM.BF.2.2 / rpm_proc / core / systemdrivers / pmic / config /msm8937/pm_config_target.c
@@ -66,7 +66,7 @@ static pm_rpm_ldo_rail_info_type ldo_rail_a [] =
     {5, 50, 0, PM_ACCESS_ALLOWED, PM_NONE, PM_NPA_SW_MODE_LDO_N__IPEAK, PM_DISLING, PM_DISL, PM_DISLING, PM_DISLING, PM_DISLING, PM_DISLING, PM_DISLING, PM_DISLING, PM_DISLING, PM_DISLING, PM_DISLING, PM_DISL , 0, DAL_DIS, PM_NPA, 5, 0}, // LDO14 ULT P50
     {5, 50, 0, PM_ACCESS_ALLOWED, PM_NONE, PM_NPA_SW_MODE_LDO__IPEAK, PM_NPA_BYPASS_DISALLOWED, PM_DROOP_DETECT_DISALLOWED, PM_DROOP_DETECT_DIS, 0, 1775, 33 0, PM_SETTLING, ERR_DO, PM_SET //
     {5, 50, 0, PM_ACCESS_ALLOWED, PM_NONE, PM_NPA_SW_MODE_LDO__NPM, PM_NPA_BYPASS_DISALLOWED, PM_DROOP_DETECT_DIS, 1800, 1800, 0, PM_SETTLING_ERR_EN, PM_SETTLING_MODE_LDO__NPM, PM_NPA_BYPASS_DISALLOWED, PM_DROOP_DETECT_DIS, 1800, 1800, 0, PM_SETTLING_ERR_EN, PM_SETTLING_EN, 0950, PM_N, eliminado en
816, 0950, - PM_NPA_SW_MODE_LDO__NPM, PM_NPA_BYPASS_DISALLOWED, PM_DROOP_DETECT_DIS, 2800, 2900, 0, PM_SETTLING_ERR_DIS, PM_SETTLING_EN, 0}, // LDO17 ULT P600
+ {5, 50, 0, PM_ACCESS_ALLOWED, PM_NONE, PM_NPA_SW_MODE_LDO__NPM, PM_NPA_BYPASS_DISALLOWED, PM_DROOP_DETECT_DIS, 2800, 3300, 0, PM_SETTLING_ERR_DIS, PM_SETTLING_EN, 0}, // LDO17 ULT P600
     {5, 50, 0, PM_ACCESS_ALLOWED, PM_NONE, PM_NPA_SW_MODE_LDO__NPM, PM_NPA_BYPASS_DISALLOWED, PM_DROOP_DETECT_DIS, 2675, 2725, 0, PM_SETTLING_ERR_DIS, PM_SETTLING_EN, 0}, // LDO18 ULT P150
     {5, 62,5, 0, PM_ACCESS_ALLOWED, PM_NONE, PM_NPA_SW_MODE_LDO__IPEAK, PM_NPA_BYPASS_DISALLOWED, PM_DROOP_DETECT_DIS, 1225, 1375, 0, PM_SETTLING_ERR_DIS, PM_SETTLING_EN, 0}, // LDO19 LDO WLAN
     {5, 250, 0, PM_ACCESS_ALLOWED, PM_NONE, PM_NPA_SW_MODE_LDO__NPM, PM_NPA_BYPASS_DISALLOWED, PM_DROOP_DETECT_DIS, 1740, 1740, 0, PM_SETTLING_ERR_EN, PM_SETTLING_EN, 0}, // LDO20 LDO XO LDO - LN_LDO

(2) 、

--- a / BOOT.BF.3.3 / boot_images / core / systemdrivers / pmic / target / msm8937_pm8937_pmi8937 / system / src / pm_sbl_boot_oem.c
+++ b / BOOT.BF.3.3 / boot_images / core / systemdrivers / pmic / target /msm8937_pm8937_pmi8937/system/src/pm_sbl_boot_oem.c
@@ -75,7 +75,9 @@ pm_err_flag_type
 pm_driver_post_init (void)
 {      pm_err_flag_type err_flag = PM_ERRESS_FLAG__SUCCC. - + pm_ldo_sw_enable (0, PM_LDO_17, PM_OFF); // deshabilitar LDO + pm_ldo_volt_level (0, PM_LDO_17, 3300000); // cambia el rango LDO + pm_ldo_sw_enable (0, PM_LDO_17, PM_ON); // habilitar LDO nuevamente      return err_flag;  }  (3) 、--- a / kernel / msm-3.18 / arch / arm / boot / dts / qcom / msm8937-mdss-paneles.dtsi







 


+++ b / kernel / msm-3.18 / arch / arm / boot / dts / qcom / msm8937-mdss-paneles.dtsi
@@ -35,8 +35,8 @@
                qcom, panel-supply-entry @ 0 {                         reg = <0>;                         qcom, nombre-suministro = "vdd"; - qcom, voltaje mínimo de suministro = <2850000>; - qcom, voltaje máximo de suministro = <2850000>; + qcom, voltaje mínimo de suministro = <3300000>; + qcom, voltaje máximo de suministro = <3300000>;                         qcom, suministro-habilitación-carga = <100000>;                         qcom, suministro-desactivación-carga = <100>;                 };高 通 官方 给出 的 修改 建议 :









                
                

1. El voltaje, el rango y los dispositivos de uso predeterminados de LDO se pueden encontrar en el
documento de especificación del dispositivo PMIC,
como 80-NJ117-1, tabla 3-7 para PM8994, 80-NT390-1, tabla 3-6 para PM8952
2. Si desea cambie el voltaje LDO, verifique primero
a. no se puede configurar el voltaje LDO más grande que el rango programable máximo
b. comprobar HW, confirmar que el voltaje no afecta a otros dispositivos
c. No sugiera cambiar el LDO que usa RF o GPS predeterminado a otros dispositivos
3. Rango de comando e índice LDO
Archivo: \ rpm_proc \ core \ systemdrivers \ pmic \ config \ common \ pm_config_common.c
N1200, como PM8994 L1
pm_pwr_volt_info_type n1200_volt [3] =
{ {375000, 1537500, 12500}, // LDO 0 (rango bajo automático)

{375000, 1537500, 12500}, // LDO 1 (rango ultra bajo)
{750000, 1537500, 12500}, // LDO 2 (rango bajo)
};
N600, como L26
pm_pwr_volt_info_type n600_volt [3] =
{ {0, 0, 0}, // LDO // rango no válido - marcador de posición {375000, 1287500, 12500}, // LDO 1 (rango ultra bajo) {750000 , 1537500, 12500}, // LDO 2 (rango bajo) }; Otro, N300, como L2 pm_pwr_volt_info_type nmos_volt [3] = { {0, 0, 0}, // intervalo no válido: marcador de posición {0, 0, 0}, // intervalo no válido: marcador de posición {750000, 1537500 , 12500}, // LDO 2 (rango bajo) }; PMOS LDO, pm_pwr_volt_info_type pmos_volt [5] = {














{0, 0, 0}, // intervalo no válido: marcador de posición
{0, 0, 0}, // intervalo no válido:
marcador de posición {750000, 1537500, 12500}, // LDO 2 (intervalo bajo)
{1500000 , 3075000, 25000}, // LDO 3 (rango medio)
{1750000, 4900000, 50000}, // LDO 4 (rango alto)
};
 
 
4. Control LDO por RPM, primero
debe verificar o cambiar el rango en RPM . Debe configurar el voltaje en un rango de acuerdo con la tabla anterior, RPM lo comprobará, si no es correcto, se
bloqueará.
Como PMOS,
índice 2: 750mv a 1537MV
índice 3: 1500mv a 3075mv
índice 4: 1750mv a 4900mv
Ejemplo de L23 de PM8994,
rpm_proc \ core \ systemdrivers \ pmic \ config \ msm8996 \ pm_config_target.c
pm_rpm_ldo_raildo_info_ailtype
{ {10, 200, 0, PM_ACCESS_ALLOWED, PM_NONE, PM_NPA_SW_MODE_LDO__IPEAK, PM_NPA_BYPASS_ALLOWED, PM_DROOP_DETECT_DIS, 2700, 2900, 0, PM_SETTLING_ERR_EN, PM_SETTLING_EN, 0}, // LDO23 P600 } L23 tensión min es 2700mv, el voltaje máximo es 2900mv, De intervalo de índice , El índice de corriente L23 es 3, si cambia L23 a 3V, puede cambiar 2900 a 3075 directamente, si cambia L23 a 3.3V, para el índice PMOS 3 el voltaje máximo es 3075V, necesita cambiar al índice 4, por lo tanto, puede cambiar min 1750 max 3300 o simplemente cambie el máximo a 3300, el mínimo se mantiene en 2700 Pero no se puede cambiar el mínimo a 1700, para el índice 4, el voltaje mínimo es 1750 5. Cambie los códigos en SBL Si se cambia el rango LDO, debe cambiarlo en SBL antes de que se carguen las RPM, de lo contrario, se bloqueará a RPM durante










 
 


diferencia de índice
una. Si el índice no cambia, no necesita habilitar LDO también, no necesita cambiar ningún código en SBL,
solo necesita cambiar en el kernel
b. Si el índice no cambia, es necesario habilitar LDO en SBL
pm_ldo_volt_level (0, PM_LDO_23, 3000000); // establece el voltaje LDO
pm_ldo_sw_enable (0, PM_LDO_23, PM_ON); // habilitar LDO en SBL
c. Si el índice cambia, el LDO predeterminado está desactivado
pm_ldo_volt_level (0, PM_LDO_23, 3300000); // cambia el rango LDO
pm_ldo_sw_enable (0, PM_LDO_23, PM_ON); // habilitar LDO
d. Si el índice cambia, el LDO predeterminado está
activado, primero debe deshabilitarlo y luego cambiar el índice pm_ldo_sw_enable (0, PM_LDO_23, PM_OFF); // deshabilitar LDO
pm_ldo_volt_level (0, PM_LDO_23, 3300000); // cambiar el rango de LDO
pm_ldo_sw_enable (0, PM_LDO_23, PM_ON); // habilitar LDO de nuevo
e. ¿Dónde agregar los códigos?
1) Plataforma antigua, como msm8916, msm8939 / 8909
boot_images \ core \ systemdrivers \ pmic \ framework \ src \ pm_init.c
Al final de la función pm_oem_init ()
2) msm8952 / 53/37/76 platform
Este archivo es pm_sbl_boot_oem. c, pero necesita cambiar en la ruta de la plataforma correcta,
al final de la función pm_driver_post_init ()
Ruta para la plataforma diff,
boot_images \ core \ systemdrivers \ pmic \ target \ msm8953_pm8953_pmi8950 \ system \ src \
boot_images \ core \ systemdrivers \ pmic \ target \ msm8952_pm8950_pmi8950 \ system \ src \
boot_images \ core \ systemdrivers \ pmic \ target \ msm8976_pm8950_pmi8950_pm8004 \
system \ src
3) msm8994 / 96 cambio en XBL
\ \ boot_images QcomPkg \ Biblioteca \ PmicLib \ con \ msm8996_pm8994_pmi8994 \ system \ src \
pm_sbl_boot_oem.c
Al final de la función pm_driver_post_init ()
4) En la nueva plataforma debe añadir en pm_driver_post_init (), si complemento en pm_device_post_init (), por LDO
Don 't init, también fallará a las RPM
6. Cambie el voltaje en el kernel
Cambie el voltaje mínimo, máximo y el valor de inicio en dtsi
\ arch \ arm \ boot \ dts \ qcom \ msm8996-regulator.dtsi
rpm-regulator-ldoa23 { status = "okey"; pm8994_l23: regulador-l23 { regulador-min-microvoltio = <2800000>; regulador-max-microvolt = <2800000>; qcom, voltaje-inicio = <2800000>; status = "ok"; }; };








7. Cómo utilizar LDO en el lado del kernel
Puede comprobar el documento 80-NV610-47 para PM8952 y 80-NM328-63 para PM8994.
Una atención, debe llamar a egulator_set_optimum_mode () antes de habilitar LDO, establecerá LDO en
modo normal.
Puede verificar los códigos de muestra en msm_hsusb_ldo_enable ()
static int msm_hsusb_ldo_enable ()
{ case USB_PHY_REG_3P3_ON: ret = regulator_set_optimum_mode (hsusb_3p3, USB_PHY_3P3_HPM_LOAD); ret = regulator_enable (hsusb_3p3); descanso; caso USB_PHY_REG_3P3_OFF: ret = regulador_disable (hsusb_3p3); ret = regulator_set_optimum_mode (hsusb_3p3, 0); descanso; }










 

Supongo que te gusta

Origin blog.csdn.net/u010689853/article/details/112283914
Recomendado
Clasificación