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

📄 pmic_bklight.cpp

📁 i.mx27 soc for wince 6.0
💻 CPP
📖 第 1 页 / 共 2 页
字号:

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

    return PMIC_SUCCESS;
}


//------------------------------------------------------------------------------
//
//  Function: PmicBacklightGetCurrentLevel
//
//  This function returns the current level for backlight channel.
//
//  Parameters:
//      channel[IN]    backlight channel
//      level[OUT]    pointer to current level
//
//  Returns:
//      PMIC_STATUS.
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicBacklightGetCurrentLevel(BACKLIGHT_CHANNEL channel, UINT8* level)
{
    PMIC_PARAM_LLA_WRITE_REG param;
    UINT32 temp;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_LED_CTL2_ADDR;
    param.data = 0;
    param.mask = 0;

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

    switch (channel)
    {
        case BACKLIGHT_MAIN_DISPLAY:
            *level  = CSP_BITFEXT(temp, MC13783_LED_CTL2_LEDMD);
            break;

        case BACKLIGHT_AUX_DISPLAY:
            *level  = CSP_BITFEXT(temp, MC13783_LED_CTL2_LEDAD);
            break;

        case BACKLIGHT_KEYPAD:
            *level  = CSP_BITFEXT(temp, MC13783_LED_CTL2_LEDKP);
            break;
    }

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

    return PMIC_SUCCESS;
}


//------------------------------------------------------------------------------
//
//  Function: PmicBacklightSetDutyCycle
//
//  This function program the duty cycle for backlight channel.
//
//  Parameters:
//      channel[IN]    backlight channel
//      cycle[IN]    duty cycle
//
//  Returns:
//      PMIC_STATUS.
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicBacklightSetDutyCycle(BACKLIGHT_CHANNEL channel, UINT8 cycle)
{
    PMIC_PARAM_LLA_WRITE_REG param;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    // check duty cycle parameter
    if (cycle > MC13783_LED_MAX_BACKLIGHT_DUTY_CYCLE)
    {
        ERRORMSG(1, (_T("PmicBacklightSetDutyCycle Invalid Parameter\r\n")));
        return PMIC_PARAMETER_ERROR;
    }

    param.addr = MC13783_LED_CTL2_ADDR;

    switch (channel)
    {
        case BACKLIGHT_MAIN_DISPLAY:
            param.data = CSP_BITFVAL(MC13783_LED_CTL2_LEDMDDC, cycle);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL2_LEDMDDC);
            break;

        case BACKLIGHT_AUX_DISPLAY:
            param.data = CSP_BITFVAL(MC13783_LED_CTL2_LEDADDC, cycle);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL2_LEDADDC);
            break;

        case BACKLIGHT_KEYPAD:
            param.data = CSP_BITFVAL(MC13783_LED_CTL2_LEDKPDC, cycle);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL2_LEDKPDC);
            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: PmicBacklightGetDutyCycle
//
//  This function returns the duty cycle for backlight channel.
//
//  Parameters:
//      channel[IN]    backlight channel
//      cycle[OUT]    duty cycle
//
//  Returns:
//      PMIC_STATUS.
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicBacklightGetDutyCycle(BACKLIGHT_CHANNEL channel, UINT8* cycle)
{
    PMIC_PARAM_LLA_WRITE_REG param;
    UINT32 temp;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_LED_CTL2_ADDR;
    param.data = 0;
    param.mask = 0;

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

    switch (channel)
    {
        case BACKLIGHT_MAIN_DISPLAY:
            *cycle  = CSP_BITFEXT(temp, MC13783_LED_CTL2_LEDMDDC);
            break;

        case BACKLIGHT_AUX_DISPLAY:
            *cycle  = CSP_BITFEXT(temp, MC13783_LED_CTL2_LEDADDC);
            break;

        case BACKLIGHT_KEYPAD:
            *cycle  = CSP_BITFEXT(temp, MC13783_LED_CTL2_LEDKPDC);
            break;
    }

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

    return PMIC_SUCCESS;
}


//------------------------------------------------------------------------------
//
//  Function: PmicBacklightSetCycleTime
//
//  This function program the cycle period for backlight controller.
//
//  Parameters:
//      period[IN]    cycle time.
//
//  Returns:
//      PMIC_STATUS.
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicBacklightSetCycleTime(UINT8 period)
{
    PMIC_PARAM_LLA_WRITE_REG param;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    // check cycle time parameter
    if (period > MC13783_LED_MAX_BACKLIGHT_PERIOD)
    {
        ERRORMSG(1, (_T("PmicBacklightSetCycleTime Invalid Parameter\r\n")));
        return PMIC_PARAMETER_ERROR;
    }

    param.addr = MC13783_LED_CTL2_ADDR;
    param.data = CSP_BITFVAL(MC13783_LED_CTL2_BLPERIOD, period);
    param.mask = CSP_BITFMASK(MC13783_LED_CTL2_BLPERIOD);

    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: PmicBacklightGetCycleTime
//
//  This function returns the cycle period for backlight controller.
//
//  Parameters:
//      period[OUT]    pointer to the cycle time.
//
//  Returns:
//      PMIC_STATUS.
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicBacklightGetCycleTime(UINT8* period)
{
    PMIC_PARAM_LLA_WRITE_REG param;
    UINT32 temp;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_LED_CTL2_ADDR;
    param.data = 0;
    param.mask = 0;

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

    *period  = CSP_BITFEXT(temp, MC13783_LED_CTL2_BLPERIOD);

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

    return PMIC_SUCCESS;
}


//------------------------------------------------------------------------------
//
// Function: PmicBacklightEnableEdgeSlow
//
// This function enables the edge slowing for backlight.
//
// Parameters:
//      None. 
//
// Returns:
//      PMIC_STATUS.
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicBacklightEnableEdgeSlow()
{
    PMIC_PARAM_LLA_WRITE_REG param;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_LED_CTL2_ADDR;
    param.data = CSP_BITFVAL(MC13783_LED_CTL2_SLEWLIMBL, MC13783_LED_CTL2_SLEWLIMBL_ENABLE);
    param.mask = CSP_BITFMASK(MC13783_LED_CTL2_SLEWLIMBL);

    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: PmicBacklightDisableEdgeSlow
//
// This function disables the edge slowing for backlight.
//
// Parameters:
//      None. 
//
// Returns:
//      PMIC_STATUS.
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicBacklightDisableEdgeSlow()
{
    PMIC_PARAM_LLA_WRITE_REG param;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_LED_CTL2_ADDR;
    param.data = CSP_BITFVAL(MC13783_LED_CTL2_SLEWLIMBL, MC13783_LED_CTL2_SLEWLIMBL_DISABLE);
    param.mask = CSP_BITFMASK(MC13783_LED_CTL2_SLEWLIMBL);

    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: PmicBacklightGetEdgeSlow
//
// This function gets the edge slowing status for backlight.
//
// Parameters:
//      edge[OUT]    pointer to status of edge slowing for backlight. 
//
// Returns:
//      PMIC_STATUS.
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicBacklightGetEdgeSlow(BOOL *edge)
{
    PMIC_PARAM_LLA_WRITE_REG param;
    UINT32                                    temp;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_LED_CTL2_ADDR;
    param.data = 0;
    param.mask = 0;

    if(! DeviceIoControl(hPMI, PMIC_IOCTL_LLA_WRITE_REG, &param,
              sizeof(param), &temp, sizeof(temp), NULL, NULL))
        return PMIC_ERROR;

    *edge  = CSP_BITFEXT(temp, MC13783_LED_CTL2_SLEWLIMBL);
			
    DEBUGMSG(ZONE_FUNC, (TEXT("-%s()\r\n"), __WFUNCTION__));

    return PMIC_SUCCESS;
}


//------------------------------------------------------------------------------
//
// Function: PmicBacklightEnableBoostMode
//
// This function enables boost mode for backlight. (Only availabe on MC13783.
//
// Parameters:
//      none
//
// Returns:
//      PMIC_STATUS.
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicBacklightEnableBoostMode()
{
    PMIC_PARAM_LLA_WRITE_REG param;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_LED_CTL0_ADDR;
    param.data = CSP_BITFVAL(MC13783_LED_CTL0_BOOSTEN, MC13783_LED_CTL0_BOOST_ENABLE);
    param.mask = CSP_BITFMASK(MC13783_LED_CTL0_BOOSTEN);

    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: PmicBacklightDisableBoostMode
//
// This function disables boost mode for backlight. (Only availabe on MC13783.
//
// Parameters:
//      none
//
// Returns:
//      PMIC_STATUS.
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicBacklightDisableBoostMode()
{
    PMIC_PARAM_LLA_WRITE_REG param;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    param.addr = MC13783_LED_CTL0_ADDR;
    param.data = CSP_BITFVAL(MC13783_LED_CTL0_BOOSTEN, MC13783_LED_CTL0_BOOST_DISABLE);
    param.mask = CSP_BITFMASK(MC13783_LED_CTL0_BOOSTEN);

    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: PmicBacklightSetBoostMode
//
// This function gets the edge slowing status for backlight.
//
// Parameters:
//      edge[OUT]    pointer to status of edge slowing for backlight. 
//
// Returns:
//      PMIC_STATUS.
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicBacklightSetBoostMode(UINT32 abms, UINT32 abr)
{
    PMIC_PARAM_LLA_WRITE_REG param;
    
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    // check adaptive boost mode selection  parameter
    if (abms > MC13783_LED_MAX_BACKLIGHT_BOOST_ABMS)
    {
        ERRORMSG(1, (_T("PmicBacklightSetBoostMode Invalid Parameter\r\n")));
        return PMIC_PARAMETER_ERROR;
    }

    // check adaptive boost reference parameter
    if (abr > MC13783_LED_MAX_BACKLIGHT_BOOST_ABR)
    {
        ERRORMSG(1, (_T("PmicBacklightSetBoostMode Invalid Parameter\r\n")));
        return PMIC_PARAMETER_ERROR;
    }

    param.addr = MC13783_LED_CTL0_ADDR;
    param.data = CSP_BITFVAL(MC13783_LED_CTL0_BOOSTABMS, abms) |
		           CSP_BITFVAL(MC13783_LED_CTL0_BOOSTABR, abr);
    param.mask = CSP_BITFMASK(MC13783_LED_CTL0_BOOSTABMS) |
		            CSP_BITFMASK(MC13783_LED_CTL0_BOOSTABR);

    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;
}


⌨️ 快捷键说明

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