UEFI PMIC部分研究

1、PMIC驱动结构

高通UEFI研究[六]

2、

Driver Source path Functionality
AdcDxe <src root> \uefi\edk2\QcomPkg\
Drivers\AdcDxe
 Provides abstraction of ADC functionality through
protocols
 Not platform-specific
AdcLib <src root> \uefi\edk2\QcomPkg\
Library\AdcLibB
 Implements register-level access of ADC functionalities
 Platform-specific
QcomChargerDxe <src root> \uefi\edk2\QcomPkg\
Drivers\QcomChargerDxe
 Provides abstraction of charging and gauge
functionality of the system
 Interface between Microsoft® UEFI charger applications
or other high-level UEFI applications (such as FLASH)
 Battery management customization
PmicShutdownLib <src root> \uefi\edk2\QcomPkg\
Library\PmicShutdownLib
 Implementation of boot time and runtime
shutdown/reset functionality
PmicDxe <src root> \uefi\edk2\QcomPkg\
Drivers\PmicDxe
 Provides abstraction of most PMIC functionalities
through protocols (see Section 3.3.1)
 Not platform-specific
PmicLib <src root> \uefi\edk2\QcomPkg\
Library\PmicLib
 Implements register-level access of PMIC functionality
 Platform-specific
SPMIDxe <src root> \uefi\edk2\QcomPkg\
Drivers\SPMIDxe
 Implementation of SPMI communication with PMIC

3、UEFI PMIC protocols

PMIC protocols Header file Usage
PMIC_CLKBUFF_PROTOCOL EFIPmicClkBuff.h Protocol for the PMIC CLK buffer
PMIC_GPIO_PROTOCOL EFIPmicGpio.h Protocol for PMIC GPIO
PMIC_IBB_PROTOCOL EFIPmicIbb.h Protocol for PMIC IBB
PMIC_LAB_PROTOCOL EFIPmicLab.h Protocol for PMIC LAB
PMIC_LPG_PROTOCOL EFIPmicLpg.h Protocol for PMIC LPG
PMIC_MIPIBIF_PROTOCOL EFIPmicMipiBif.h Protocol for PMIC MipiBif
PMIC_MPP_PROTOCOL EFIPmicMpp.h Protocol for PMIC MPP
PMIC_PWM_PROTOCOL EFIPmicPwm.h Protocol for PMIC PWM
PMIC_PWRON_PROTOCOL EFIPmicPwrOn.h Protocol for PMIC PON
PMIC_RGB_LED_PROTOCOL EFIPmicRgbLed.h Protocol for PMIC RGB
PMIC_RTC_PROTOCOL EFIPmicRTC.h Protocol for PMIC RTC
PMIC_SCHG_PROTOCOL EFIPmicSchg.h Protocol for PMIC SCHG
PMIC_FG_PROTOCOL EFIPmicFg.h Protocol for PMIC FG
PMIC_VIB_PROTOCOL EFIPmicVib.h Protocol for PMIC VIB
PMIC_VREG_PROTOCOL EFIPmicVreg.h Protocol for PMIC LPG
PMIC_PWM_PROTOCOL EFIPmicPwm.h Protocol for PMIC VREG
PMIC_WLED_PROTOCOL EFIPmicWled.h Protocol for PMIC WLED

4、UEFI PMIC driver call flow

@RealTimeLib @PmicDxe
EFI_QCOM_PMIC_PWRON_PROTOCOL *pmic_pwron;
Status = gBS->LocateProtocol(&gQcomPmicPwrOnProtocolGuid, NULL, (VOID**)
&pmic_pwron;
Status = pmic_pwron->GetPonPblStatus (
RTCInternal.nPmicIndex,
EFI_PM_PWRON_PON_PBL_STATUS_XVDD_RB_OCCURRED,
&pmicWasBatteryRemoved);
EFI_QCOM_PMIC_PWRON_PROTOCOL
PmicPwronProtocolImplementation =
{
PMIC_PWRON_REVISION,

EFI_PmicPwronGetPonPblStatus,
};
struct _EFI_QCOM_PMIC_PWRON_PROTOCOL {
UINT32 Revision;

EFI_PM_PWRON_GET_PON_PBL_STATUS GetPonPblStatus;
};
EFI_STATUS EFIAPI EFI_PmicPwronGetPonPblStatus
(
IN UINT32 PmicDeviceIndex,
IN EFI_PM_PWRON_PON_PBL_STATUS_TYPE PblStatusType,
OUT BOOLEAN *Status
) {

errFlag = pm_pon_pbl_status_get(PmicDeviceIndex,
(pm_pwron_pon_pbl_status_type)PblStatusType, Status);

return EFI_SUCCESS;
}
@PmicLib
pm_err_flag_type pm_pon_pbl_status_get(unsigned pmic_device_index,
pm_pwron_pon_pbl_status_type pbl_status_type, boolean *status)
{

return ((pm_pwron_data_type*)mappedResource)->ipwron_get_pon_pbl_status(
mappedResource,
pbl_status_type, status,
(uint8)resourceIndex);

}
pmiC_PmicResource* pm_pwron_driver_init( pmiC_PmicDevice *device )
{
...
pmiC_PmicResource_Init(pwron, PWRON_ModuleType, device);

((pm_pwron_data_type*)pwron)->ipwron_get_pon_pbl_status
= pm_pwron_get_pon_pbl_status_alg;

 

5、

高通UEFI研究[六]

 

相关文章:

  • 2021-11-20
  • 2021-10-20
  • 2021-09-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-30
猜你喜欢
  • 2022-12-23
  • 2021-12-22
  • 2021-06-23
  • 2021-12-11
  • 2022-02-10
  • 2022-12-23
  • 2021-11-08
相关资源
相似解决方案