⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pmic_regulator.cpp

📁 i.mx27 soc for wince 6.0
💻 CPP
📖 第 1 页 / 共 5 页
字号:
                                                       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, &param,
            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, &param,
            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, &param,
            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, &param,
            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, &param,
            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 + -