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

📄 pmic_pwrctrl.cpp

📁 i.mx27 soc for wince 6.0
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    }
    
    addr = MC13783_PWR_CTL1_ADDR;

    if(!DeviceIoControl(hPMI, PMIC_IOCTL_LLA_READ_REG, &addr, sizeof(addr),
              &temp, sizeof(temp), NULL, NULL))
        return PMIC_ERROR;

    *counter = CSP_BITFEXT(temp, MC13783_PWRCTRL1_PCMAXCNT);

    DEBUGMSG(ZONE_FUNC, (TEXT("-%s()\r\n"), __WFUNCTION__));

    return PMIC_SUCCESS;
}



//------------------------------------------------------------------------------
//
// Function: PmicPwrctrlEnableCounter
//
// The power cut register provides a method for disabling power cuts if this situation 
// manifests itself. If PC_COUNT >= PC_MAX_COUNT, then the number of resets that 
// have occurred since the power cut counter was last initialized exceeds the established 
// limit, and power cuts will be disabled.
// This function can be disabled by setting PC_COUNT_EN=0. In this case, each power cut 
// event will increment the power cut counter, but power cut coverage will not be disabled, 
// even if PC_COUNT exceeds PC_MAX_COUNT.
//
// This PmicPwrctrlEnableCounter function will set PC_COUNT_EN=1.
//
// Parameters:
//             none
// 
// Returns:
//          status 
//                  PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicPwrctrlEnableCounter(void)
{
    PMIC_PARAM_LLA_WRITE_REG param;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_PWR_CTL0_ADDR;
    param.data = CSP_BITFVAL(MC13783_PWRCTRL0_PCCOUNTEN, MC13783_PWRCTRL0_PCCOUNTEN_ENABLE);
    param.mask = CSP_BITFMASK(MC13783_PWRCTRL0_PCCOUNTEN);

    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: PmicPwrctrlDisableCounter
//
// The power cut register provides a method for disabling power cuts if this situation 
// manifests itself. If PC_COUNT >= PC_MAX_COUNT, then the number of resets that 
// have occurred since the power cut counter was last initialized exceeds the established 
// limit, and power cuts will be disabled.
// This function can be disabled by setting PC_COUNT_EN=0. In this case, each power cut 
// event will increment the power cut counter, but power cut coverage will not be disabled, 
// even if PC_COUNT exceeds PC_MAX_COUNT.
//
// This PmicPwrctrlEnableCounter function will set PC_COUNT_EN=0.
//
// Parameters:
//             none
// 
// Returns:
//          status 
//                  PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicPwrctrlDisableCounter (void)
{
    PMIC_PARAM_LLA_WRITE_REG param;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_PWR_CTL0_ADDR;
    param.data = CSP_BITFVAL(MC13783_PWRCTRL0_PCCOUNTEN, MC13783_PWRCTRL0_PCCOUNTEN_DISABLE);
    param.mask = CSP_BITFMASK(MC13783_PWRCTRL0_PCCOUNTEN);

    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: PmicPwrctrlSetMemHoldTimer
//
// This function is used to set the duration of memory hold timer. 
//
// Parameters:
//             duration [in]             The value to set to memory hold timer register. It's from 
//                                            0 to 15.
//                                            The resolution of the memory hold timer is 32 seconds 
//                                            for a maximum duration of 512 seconds.
// 
// Returns:
//          status 
//                  PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicPwrctrlSetMemHoldTimer (UINT8 duration)
{
    PMIC_PARAM_LLA_WRITE_REG param;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_PWR_CTL1_ADDR;           
    
    // check input parameter
    if (duration > MC13783_PWRCTRL1_MEMTMR_MAX){
        DEBUGMSG(ZONE_ERROR, (_T("PmicPwrctrlSetMemHoldTimer:Invalid Parameter\r\n")));
        return PMIC_PARAMETER_ERROR;
    }    
    param.data = CSP_BITFVAL(MC13783_PWRCTRL1_MEMTMR, duration);
    param.mask = CSP_BITFMASK(MC13783_PWRCTRL1_MEMTMR);

    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: PmicPwrctrlGetMemHoldTimer
//
// This function is used to get the setting of memory hold timer 
//
// Parameters:
//             duration [out]            to get the duration of the timer
// 
// Returns:
//          status 
//                  PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicPwrctrlGetMemHoldTimer (UINT8* duration)
{
    UINT32 addr, temp;

    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    // check input parameter
    if (duration == NULL){
        DEBUGMSG(ZONE_ERROR, (_T("PmicPwrctrlGetMemHoldTimer:Invalid Parameter\r\n")));
        return PMIC_PARAMETER_ERROR;
    }
    
    addr = MC13783_PWR_CTL1_ADDR;          

    if(!DeviceIoControl(hPMI, PMIC_IOCTL_LLA_READ_REG, &addr, sizeof(addr),
              &temp, sizeof(temp), NULL, NULL))
        return PMIC_ERROR;

    *duration = CSP_BITFEXT(temp, MC13783_PWRCTRL1_MEMTMR);

    DEBUGMSG(ZONE_FUNC, (TEXT("-%s()\r\n"), __WFUNCTION__));

    return PMIC_SUCCESS;
}


//------------------------------------------------------------------------------
//
// Function: PmicPwrctrlSetMemHoldTimerAllOn
//
// This function is used to set the duration of the memory hold timer to infinity 
//
// Parameters:
//             none
// 
// Returns:
//          status 
//                  PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicPwrctrlSetMemHoldTimerAllOn (void)
{
    PMIC_PARAM_LLA_WRITE_REG param;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_PWR_CTL1_ADDR;            
    param.data = CSP_BITFVAL(MC13783_PWRCTRL1_MEMALLON, MC13783_PWRCTRL1_MEMALLON_ENABLE);
    param.mask = CSP_BITFMASK(MC13783_PWRCTRL1_MEMALLON);

    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: PmicPwrctrlClearMemHoldTimerAllOn
//
// This function is used to clear the infinity duration of the memory hold timer
//
// Parameters:
//             none
// 
// Returns:
//          status 
//                  PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicPwrctrlClearMemHoldTimerAllOn (void)
{
    PMIC_PARAM_LLA_WRITE_REG param;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_PWR_CTL1_ADDR;            
    param.data = CSP_BITFVAL(MC13783_PWRCTRL1_MEMALLON, MC13783_PWRCTRL1_MEMALLON_DISABLE);
    param.mask = CSP_BITFMASK(MC13783_PWRCTRL1_MEMALLON);

    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: PmicPwrctrlEnableClk32kMCU
//
// This function is used to enable the CLK32KMCU
//
// Parameters:
//             none
// 
// Returns:
//          status 
//                  PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicPwrctrlEnableClk32kMCU (void)
{
    PMIC_PARAM_LLA_WRITE_REG param;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_PWR_CTL0_ADDR;
    param.data = CSP_BITFVAL(MC13783_PWRCTRL0_CLK32KMCUEN, MC13783_PWRCTRL0_CLK32KMCUEN_ENABLE);
    param.mask = CSP_BITFMASK(MC13783_PWRCTRL0_CLK32KMCUEN);

    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: PmicPwrctrlDisableClk32kMCU
//
// This function is used to disable the CLK32KMCU
//
// Parameters:
//             none
// 
// Returns:
//          status 
//                  PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicPwrctrlDisableClk32kMCU (void)
{
    PMIC_PARAM_LLA_WRITE_REG param;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_PWR_CTL0_ADDR;
    param.data = CSP_BITFVAL(MC13783_PWRCTRL0_CLK32KMCUEN, MC13783_PWRCTRL0_CLK32KMCUEN_DISABLE);
    param.mask = CSP_BITFMASK(MC13783_PWRCTRL0_CLK32KMCUEN);

    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: PmicPwrctrlEnableUserOffModeWhenDelay
//
// This function is used to place the phone in User Off Mode after a delay.
//
// Parameters:
//             none
// 
// Returns:
//          status 
//                  PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicPwrctrlEnableUserOffModeWhenDelay (void)
{
    PMIC_PARAM_LLA_WRITE_REG param;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_PWR_CTL0_ADDR;
    param.data = CSP_BITFVAL(MC13783_PWRCTRL0_USEROFFSPI, MC13783_PWRCTRL0_USEROFFSPI_ENABLE);
    param.mask = CSP_BITFMASK(MC13783_PWRCTRL0_USEROFFSPI);

    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: PmicPwrctrlDisableUserOffModeWhenDelay
//
// This function is used to set not to place the phone in User Off Mode after a delay.
//
// Parameters:
//             none
// 
// Returns:
//          status 
//                  PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicPwrctrlDisableUserOffModeWhenDelay (void)
{
    PMIC_PARAM_LLA_WRITE_REG param;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_PWR_CTL0_ADDR;
    param.data = CSP_BITFVAL(MC13783_PWRCTRL0_USEROFFSPI, MC13783_PWRCTRL0_USEROFFSPI_DISABLE);
    param.mask = CSP_BITFMASK(MC13783_PWRCTRL0_USEROFFSPI);

    if(!DeviceIoControl(hPMI, PMIC_IOCTL_LLA_WRITE_REG, &param,
            sizeof(param), NULL, 0, NULL, NULL))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -