📄 pmic_regulator.cpp
字号:
UINT8 dvsspeed)
{
PMIC_PARAM_LLA_WRITE_REG param;
DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));
// check input parameter
if (dvsspeed > MC13783_SW_DVSSPEED_MAX){
DEBUGMSG(ZONE_ERROR, (_T("PmicSwitchModeRegulatorSetDVSSpeed: Invalid Parameter\r\n")));
return PMIC_PARAMETER_ERROR;
}
switch (regulator)
{
case SW1A:
param.addr = MC13783_SW4_ADDR;
param.data = CSP_BITFVAL(MC13783_SW4_SW1ADVSSPEED, dvsspeed);
param.mask = CSP_BITFMASK(MC13783_SW4_SW1ADVSSPEED);
break;
case SW1B:
param.addr = MC13783_SW4_ADDR;
param.data = CSP_BITFVAL(MC13783_SW4_SW1BDVSSPEED, dvsspeed);
param.mask = CSP_BITFMASK(MC13783_SW4_SW1BDVSSPEED);
break;
case SW2A:
param.addr = MC13783_SW5_ADDR;
param.data = CSP_BITFVAL(MC13783_SW5_SW2ADVSSPEED, dvsspeed);
param.mask = CSP_BITFMASK(MC13783_SW5_SW2ADVSSPEED);
break;
case SW2B:
param.addr = MC13783_SW5_ADDR;
param.data = CSP_BITFVAL(MC13783_SW5_SW2BDVSSPEED, dvsspeed);
param.mask = CSP_BITFMASK(MC13783_SW5_SW2BDVSSPEED);
break;
case SW3: // Switch 3 don't have dvs speed setting.
DEBUGMSG(ZONE_ERROR, (_T("PmicSwitchModeRegulatorSetDVSSpeed:SW3 don't have dvs speed setting\r\n")));
return PMIC_PARAMETER_ERROR;
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: PmicSwitchModeRegulatorEnablePanicMode
//
// This function is used to enable the panic mode.
//
// Parameters:
// regulator [in] the regulator to be set
//
// Returns:
// status
// PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicSwitchModeRegulatorEnablePanicMode(PMIC_REGULATOR_SREG regulator)
{
PMIC_PARAM_LLA_WRITE_REG param;
DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));
switch (regulator)
{
case SW1A:
param.addr = MC13783_SW4_ADDR;
param.data = CSP_BITFVAL(MC13783_SW4_SW1APANIC, ENABLE);
param.mask = CSP_BITFMASK(MC13783_SW4_SW1APANIC);
break;
case SW1B:
param.addr = MC13783_SW4_ADDR;
param.data = CSP_BITFVAL(MC13783_SW4_SW1BPANIC, ENABLE);
param.mask = CSP_BITFMASK(MC13783_SW4_SW1BPANIC);
break;
case SW2A:
param.addr = MC13783_SW5_ADDR;
param.data = CSP_BITFVAL(MC13783_SW5_SW2APANIC, ENABLE);
param.mask = CSP_BITFMASK(MC13783_SW5_SW2APANIC);
break;
case SW2B:
param.addr = MC13783_SW5_ADDR;
param.data = CSP_BITFVAL(MC13783_SW5_SW2BPANIC, ENABLE);
param.mask = CSP_BITFMASK(MC13783_SW5_SW2BPANIC);
break;
case SW3: // Switch 3 don't have this mode.
DEBUGMSG(ZONE_ERROR, (_T("PmicSwitchModeRegulatorEnablePanicMode:SW3 don't have this mode\r\n")));
return PMIC_PARAMETER_ERROR;
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: PmicSwitchModeRegulatorDisablePanicMode
//
// This function is used to disable the panic mode.
//
// Parameters:
// regulator [in] the regulator to be set
//
// Returns:
// status
// PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicSwitchModeRegulatorDisablePanicMode(PMIC_REGULATOR_SREG regulator)
{
PMIC_PARAM_LLA_WRITE_REG param;
DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));
switch (regulator)
{
case SW1A:
param.addr = MC13783_SW4_ADDR;
param.data = CSP_BITFVAL(MC13783_SW4_SW1APANIC, DISABLE);
param.mask = CSP_BITFMASK(MC13783_SW4_SW1APANIC);
break;
case SW1B:
param.addr = MC13783_SW4_ADDR;
param.data = CSP_BITFVAL(MC13783_SW4_SW1BPANIC, DISABLE);
param.mask = CSP_BITFMASK(MC13783_SW4_SW1BPANIC);
break;
case SW2A:
param.addr = MC13783_SW5_ADDR;
param.data = CSP_BITFVAL(MC13783_SW5_SW2APANIC, DISABLE);
param.mask = CSP_BITFMASK(MC13783_SW5_SW2APANIC);
break;
case SW2B:
param.addr = MC13783_SW5_ADDR;
param.data = CSP_BITFVAL(MC13783_SW5_SW2BPANIC, DISABLE);
param.mask = CSP_BITFMASK(MC13783_SW5_SW2BPANIC);
break;
case SW3: // Switch 3 don't have this mode.
DEBUGMSG(ZONE_ERROR, (_T("PmicSwitchModeRegulatorDisablePanicMode:SW3 don't have this mode\r\n")));
return PMIC_PARAMETER_ERROR;
default:
break;
}
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: PmicSwitchModeRegulatorEnableSoftStart
//
// This function is used to enable soft start.
//
// Parameters:
// regulator [in] the regulator to be set
//
// Returns:
// status
// PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicSwitchModeRegulatorEnableSoftStart(PMIC_REGULATOR_SREG regulator)
{
PMIC_PARAM_LLA_WRITE_REG param;
DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));
switch (regulator)
{
case SW1A:
param.addr = MC13783_SW4_ADDR;
param.data = CSP_BITFVAL(MC13783_SW4_SW1ASFST, ENABLE);
param.mask = CSP_BITFMASK(MC13783_SW4_SW1ASFST);
break;
case SW1B:
param.addr = MC13783_SW4_ADDR;
param.data = CSP_BITFVAL(MC13783_SW4_SW1BSFST, ENABLE);
param.mask = CSP_BITFMASK(MC13783_SW4_SW1BSFST);
break;
case SW2A:
param.addr = MC13783_SW5_ADDR;
param.data = CSP_BITFVAL(MC13783_SW5_SW2ASFST, ENABLE);
param.mask = CSP_BITFMASK(MC13783_SW5_SW2ASFST);
break;
case SW2B:
param.addr = MC13783_SW5_ADDR;
param.data = CSP_BITFVAL(MC13783_SW5_SW2BSFST, ENABLE);
param.mask = CSP_BITFMASK(MC13783_SW5_SW2BSFST);
break;
case SW3: // Switch 3 don't have this mode.
DEBUGMSG(ZONE_ERROR, (_T("PmicSwitchModeRegulatorEnableSoftStart:SW3 don't have this mode\r\n")));
return PMIC_PARAMETER_ERROR;
default:
break;
}
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: PmicSwitchModeRegulatorDisableSoftStart
//
// This function is used to disable soft start.
//
// Parameters:
// regulator [in] the regulator to be set
//
// Returns:
// status
// PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicSwitchModeRegulatorDisableSoftStart(PMIC_REGULATOR_SREG regulator)
{
PMIC_PARAM_LLA_WRITE_REG param;
DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));
switch (regulator)
{
case SW1A:
param.addr = MC13783_SW4_ADDR;
param.data = CSP_BITFVAL(MC13783_SW4_SW1ASFST, DISABLE);
param.mask = CSP_BITFMASK(MC13783_SW4_SW1ASFST);
break;
case SW1B:
param.addr = MC13783_SW4_ADDR;
param.data = CSP_BITFVAL(MC13783_SW4_SW1BSFST, DISABLE);
param.mask = CSP_BITFMASK(MC13783_SW4_SW1BSFST);
break;
case SW2A:
param.addr = MC13783_SW5_ADDR;
param.data = CSP_BITFVAL(MC13783_SW5_SW2ASFST, DISABLE);
param.mask = CSP_BITFMASK(MC13783_SW5_SW2ASFST);
break;
case SW2B:
param.addr = MC13783_SW5_ADDR;
param.data = CSP_BITFVAL(MC13783_SW5_SW2BSFST, DISABLE);
param.mask = CSP_BITFMASK(MC13783_SW5_SW2BSFST);
break;
case SW3: // Switch 3 don't have this mode.
DEBUGMSG(ZONE_ERROR, (_T("PmicSwitchModeRegulatorDisableSoftStart:SW3 don't have this mode\r\n")));
return PMIC_PARAMETER_ERROR;
default:
break;
}
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: PmicVoltageRegulatorOn
//
// This function is used to turn on the voltage regulator
//
// Parameters:
// regulator [in] which voltage regulator to turn on
//
// Returns:
// status
// PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicVoltageRegulatorOn (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, ENABLE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -