📄 pmic_bklight.cpp
字号:
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, ¶m, 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, ¶m,
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, ¶m, 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, ¶m,
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, ¶m, 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, ¶m,
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, ¶m,
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, ¶m,
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, ¶m,
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, ¶m,
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, ¶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 + -