2,851
社区成员




在QCS8550中, 能否帮助说明如何从XBL引导加载程序的上下文中路由PWM1生成器来驱动PMIC“RGB_R”输出,输出PWM,以实现自定义引导加载程序LCD面板飞溅/引导徽标显示支持?
加完以上的bug信息之后, 最后使用PmicRgbLedProtocol API成功配置并启用了RGB_R和RGB_G驱动程序输出的PWM。
根据您的建议和以下文档中的数据:“HRD-PM8550-S”,我们在其中添加了一些额外的调试打印:“boot/QcomPkg/Drivers/PmicDxe/PmicPwmProtocol.c”,例如:
@@ -172,6 +172,8 @@ EFI_PmicPwmGetStatus
{
pm_err_flag_type errFlag = PM_ERR_FLAG_SUCCESS;
pm_pwm_status_type pwm_status = {0};
+
+ DEBUG((EFI_D_ERROR, "PmicDxe: PmicPwmProtocol.c -> EFI_PmicPwmGetStatus()\n"));
if (NULL == PwmStatus)
{
@@ -194,6 +196,44 @@ EFI_PmicPwmGetStatus
PwmStatus->Exp = (UINT32)pwm_status.exp;
PwmStatus->GlitchRemoval = (BOOLEAN)pwm_status.glitch_removal;
}
+ DEBUG((EFI_D_ERROR, "PwmStatus->PwmEnable = %d\n", PwmStatus->PwmEnable));
+ DEBUG((EFI_D_ERROR, "PwmStatus->PwmValue = %d\n", PwmStatus->PwmValue));
+ DEBUG((EFI_D_ERROR, "PwmStatus->BitSize = %d\n", PwmStatus->BitSize));
+ DEBUG((EFI_D_ERROR, "PwmStatus->ClkFreq = %d\n", PwmStatus->ClkFreq));
+ DEBUG((EFI_D_ERROR, "PwmStatus->PreDiv = %d\n", PwmStatus->PreDiv));
+ DEBUG((EFI_D_ERROR, "PwmStatus->Exp = %d\n", PwmStatus->Exp));
+ DEBUG((EFI_D_ERROR, "PwmStatus->GlitchRemoval = %d\n", PwmStatus->GlitchRemoval));
我们已尝试按如下方式设置PWM1输出:
+ eStatus = PmicPwmProtocol->PwmConfig(PM_DEVICE_1, EFI_PM_PWM_RSRC_PWM_1, 255, 1, 1, EFI_PM_PWM_CLK_1_0_KHZ, EFI_PM_PWM_SIZE_9BIT);
+ eStatus = PmicPwmProtocol->SetPwmValue(PM_DEVICE_1, EFI_PM_PWM_RSRC_PWM_1, 255);
+ eStatus = PmicPwmProtocol->GetStatus(PM_DEVICE_1, EFI_PM_PWM_RSRC_PWM_1, &PwmStatus);
我们的调试跟踪显示了以下输出:
PmicDxe: PmicPwmProtocol.c -> EFI_PmicPwmGetStatus()
PwmStatus->PwmEnable = 1
PwmStatus->PwmValue = 255
PwmStatus->BitSize = 3
PwmStatus->ClkFreq = 1 -> corresponds to "CLK_1kHz"
PwmStatus->PreDiv = 1 -> corresponds to "PREDIV_three"
PwmStatus->Exp = 1 -> corresponds to "EXP_one"
PwmStatus->GlitchRemoval = 0