📄 pmic_regulator.cpp
字号:
param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VIOHIEN);
break;
case VIOLO:
param.addr = MC13783_REG_MOD0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE0_VIOLOEN, ENABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VIOLOEN);
break;
case VDIG:
param.addr = MC13783_REG_MOD0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE0_VDIGEN, ENABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VDIGEN);
break;
case VGEN:
param.addr = MC13783_REG_MOD0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE0_VGENEN, ENABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VGENEN);
break;
case VRFDIG:
param.addr = MC13783_REG_MOD0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE0_VRFDIGEN, ENABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VRFDIGEN);
break;
case VRFREF:
param.addr = MC13783_REG_MOD0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE0_VRFREFEN, ENABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VRFREFEN);
break;
case VRFCP:
param.addr = MC13783_REG_MOD0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE0_VRFCPEN, ENABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VRFCPEN);
break;
case VSIM:
param.addr = MC13783_REG_MOD1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE1_VSIMEN, ENABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VSIMEN);
break;
case VESIM:
param.addr = MC13783_REG_MOD1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE1_VESIMEN, ENABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VESIMEN);
break;
case VCAM:
param.addr = MC13783_REG_MOD1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE1_VCAMEN, ENABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VCAMEN);
break;
case V_VIB:
param.addr = MC13783_REG_MOD1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE1_VVIBEN, ENABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VVIBEN);
break;
case VRF1:
param.addr = MC13783_REG_MOD1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE1_VRF1EN, ENABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VRF1EN);
break;
case VRF2:
param.addr = MC13783_REG_MOD1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE1_VRF2EN, ENABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VRF2EN);
break;
case VMMC1:
param.addr = MC13783_REG_MOD1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE1_VMMC1EN, ENABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VMMC1EN);
break;
case VMMC2:
param.addr = MC13783_REG_MOD1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE1_VMMC2EN, ENABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VMMC2EN);
break;
default:
return PMIC_PARAMETER_ERROR;
}
if(!DeviceIoControl(hPMI, PMIC_IOCTL_LLA_WRITE_REG, ¶m,
sizeof(param), NULL, 0, NULL, NULL))
return PMIC_ERROR;
DEBUGMSG(ZONE_FUNC, (TEXT("-%s()\r\n"), __WFUNCTION__));
return PMIC_SUCCESS;
}
//------------------------------------------------------------------------------
//
// Function: PmicVoltageRegulatorOff
//
// This function is used to turn off the regulator
//
// Parameters:
// regulator [in] which voltage regulator to turn off
//
// Returns:
// status
// PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicVoltageRegulatorOff (PMIC_REGULATOR_VREG regulator)
{
PMIC_PARAM_LLA_WRITE_REG param;
DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));
switch (regulator)
{
case VIOHI:
param.addr = MC13783_REG_MOD0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE0_VIOHIEN, DISABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VIOHIEN);
break;
case VIOLO:
param.addr = MC13783_REG_MOD0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE0_VIOLOEN, DISABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VIOLOEN);
break;
case VDIG:
param.addr = MC13783_REG_MOD0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE0_VDIGEN, DISABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VDIGEN);
break;
case VGEN:
param.addr = MC13783_REG_MOD0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE0_VGENEN, DISABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VGENEN);
break;
case VRFDIG:
param.addr = MC13783_REG_MOD0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE0_VRFDIGEN, DISABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VRFDIGEN);
break;
case VRFREF:
param.addr = MC13783_REG_MOD0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE0_VRFREFEN, DISABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VRFREFEN);
break;
case VRFCP:
param.addr = MC13783_REG_MOD0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE0_VRFCPEN, DISABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VRFCPEN);
break;
case VSIM:
param.addr = MC13783_REG_MOD1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE1_VSIMEN, DISABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VSIMEN);
break;
case VESIM:
param.addr = MC13783_REG_MOD1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE1_VESIMEN, DISABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VESIMEN);
break;
case VCAM:
param.addr = MC13783_REG_MOD1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE1_VCAMEN, DISABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VCAMEN);
break;
case V_VIB:
param.addr = MC13783_REG_MOD1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE1_VVIBEN, DISABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VVIBEN);
break;
case VRF1:
param.addr = MC13783_REG_MOD1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE1_VRF1EN, DISABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VRF1EN);
break;
case VRF2:
param.addr = MC13783_REG_MOD1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE1_VRF2EN, DISABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VRF2EN);
break;
case VMMC1:
param.addr = MC13783_REG_MOD1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE1_VMMC1EN, DISABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VMMC1EN);
break;
case VMMC2:
param.addr = MC13783_REG_MOD1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_MODE1_VMMC2EN, DISABLE);
param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VMMC2EN);
break;
default:
return PMIC_PARAMETER_ERROR;
}
if(!DeviceIoControl(hPMI, PMIC_IOCTL_LLA_WRITE_REG, ¶m,
sizeof(param), NULL, 0, NULL, NULL))
return PMIC_ERROR;
DEBUGMSG(ZONE_FUNC, (TEXT("-%s()\r\n"), __WFUNCTION__));
return PMIC_SUCCESS;
}
//------------------------------------------------------------------------------
//
// Function: PmicVoltageRegulatorSetVoltageLevel
//
// This function is used to set voltage level for the voltage regulator.
//
// Parameters:
// regulator [in] which voltage regulator to be set
// voltage [in] the voltage level to set
//
// Returns:
// status
// PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicVoltageRegulatorSetVoltageLevel (
PMIC_REGULATOR_VREG regulator,
PMIC_REGULATOR_VREG_VOLTAGE voltage )
{
PMIC_PARAM_LLA_WRITE_REG param;
DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));
switch (regulator)
{
case VIOHI:
// VIOHI is fixed to 2.775v output.
return PMIC_SUCCESS;
case VIOLO:
param.addr = MC13783_REG_SET0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_SET0_VIOLO, voltage.violo);
param.mask = CSP_BITFMASK(MC13783_REG_SET0_VIOLO);
break;
case VDIG:
param.addr = MC13783_REG_SET0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_SET0_VDIG, voltage.vdig);
param.mask = CSP_BITFMASK(MC13783_REG_SET0_VDIG);
break;
case VGEN:
param.addr = MC13783_REG_SET0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_SET0_VGEN, voltage.vgen);
param.mask = CSP_BITFMASK(MC13783_REG_SET0_VGEN);
break;
case VRFDIG:
param.addr = MC13783_REG_SET0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_SET0_VRFDIG, voltage.vrfdig);
param.mask = CSP_BITFMASK(MC13783_REG_SET0_VRFDIG);
break;
case VRFREF:
param.addr = MC13783_REG_SET0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_SET0_VRFREF, voltage.vrfref);
param.mask = CSP_BITFMASK(MC13783_REG_SET0_VRFREF);
break;
case VRFCP:
param.addr = MC13783_REG_SET0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_SET0_VRFCP, voltage.vrfcp);
param.mask = CSP_BITFMASK(MC13783_REG_SET0_VRFCP);
break;
case VSIM:
param.addr = MC13783_REG_SET0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_SET0_VSIM, voltage.vsim);
param.mask = CSP_BITFMASK(MC13783_REG_SET0_VSIM);
break;
case VESIM:
param.addr = MC13783_REG_SET0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_SET0_VESIM, voltage.vesim);
param.mask = CSP_BITFMASK(MC13783_REG_SET0_VESIM);
break;
case VCAM:
param.addr = MC13783_REG_SET0_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_SET0_VCAM, voltage.vcam);
param.mask = CSP_BITFMASK(MC13783_REG_SET0_VCAM);
break;
case V_VIB:
param.addr = MC13783_REG_SET1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_SET1_VVIB, voltage.v_vib);
param.mask = CSP_BITFMASK(MC13783_REG_SET1_VVIB);
break;
case VRF1:
param.addr = MC13783_REG_SET1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_SET1_VRF1, voltage.vrf);
param.mask = CSP_BITFMASK(MC13783_REG_SET1_VRF1);
break;
case VRF2:
param.addr = MC13783_REG_SET1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_SET1_VRF2, voltage.vrf);
param.mask = CSP_BITFMASK(MC13783_REG_SET1_VRF2);
break;
case VMMC1:
param.addr = MC13783_REG_SET1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_SET1_VMMC1, voltage.vmmc);
param.mask = CSP_BITFMASK(MC13783_REG_SET1_VMMC1);
break;
case VMMC2:
param.addr = MC13783_REG_SET1_ADDR;
param.data = CSP_BITFVAL(MC13783_REG_SET1_VMMC2, voltage.vmmc);
param.mask = CSP_BITFMASK(MC13783_REG_SET1_VMMC2);
break;
default:
return PMIC_PARAMETER_ERROR;
}
if(!DeviceIoControl(hPMI, PMIC_IOCTL_LLA_WRITE_REG, ¶m,
sizeof(param), NULL, 0, NULL, NULL))
return PMIC_ERROR;
DEBUGMSG(ZONE_FUNC, (TEXT("-%s()\r\n"), __WFUNCTION__));
return PMIC_SUCCESS;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -