void disp_onConfig_bls(DISP_AAL_PARAM *param)
{
    unsigned long prevSetting = DISP_REG_GET(DISP_REG_BLS_BLS_SETTING);
    unsigned long regVal = 0;
    
    DISP_DBG("disp_onConfig_bls!\n");

    DISP_DBG("pwm duty = %lu\n", param->pwmDuty);
    if (param->pwmDuty == 0)
        DISP_REG_SET(DISP_REG_BLS_PWM_DUTY, 0);
    else if (param->pwmDuty > gMaxLevel)
        DISP_REG_SET(DISP_REG_BLS_PWM_DUTY, gMaxLevel);
    else
        DISP_REG_SET(DISP_REG_BLS_PWM_DUTY, param->pwmDuty);

    DISP_DBG("bls setting = %lu\n", param->setting);
#if defined(DDP_GAMMA_SUPPORT)
    if (param->setting & ENUM_FUNC_GAMMA)
        regVal |= 0x7;
    else
#endif
        regVal &= ~0x7;

    if (param->setting & ENUM_FUNC_BLS)
        regVal |= 0x10100;
    else
        regVal &= ~0x10100;
    DISP_REG_SET(DISP_REG_BLS_BLS_SETTING, regVal | 0x100000);

    if (param->setting & ENUM_FUNC_BLS)
    {
        DISP_DBG("distion threshold = %lu\n", param->maxClrDistThd);
        DISP_DBG("predistion threshold = %lu\n", param->preDistThd);
        // TODO: BLS porting
    }

    if (prevSetting & 0x10100) 
    {
        // TODO: BLS porting
    }
    else if (param->setting & ENUM_FUNC_BLS)
    {
        disp_set_aal_alarm(1);
    }

    if (aal_debug_flag == 0)
    {
        DISP_REG_SET(DISP_REG_BLS_EN, 0x00010001);
    }
    else
    {
        DISP_REG_SET(DISP_REG_BLS_EN, 0x00010000);
    }

}
示例#2
0
void disp_onConfig_bls(DISP_AAL_PARAM *param)
{
    unsigned long prevSetting = DISP_REG_GET(DISP_REG_BLS_BLS_SETTING);
    unsigned int regVal;
    unsigned int level = brightness_mapping(param->pwmDuty);
    
    BLS_DBG("disp_onConfig_bls!\n");

    BLS_DBG("pwm duty = %lu => %u \n", param->pwmDuty, level);
    regVal = DISP_REG_GET(DISP_REG_BLS_EN);
    if (level == 0)
    {
        DISP_REG_SET(DISP_REG_BLS_PWM_DUTY, 0);
        if (regVal & 0x10000)
            DISP_REG_SET(DISP_REG_BLS_EN, regVal & 0xFFFEFFFF); 
    }
    else
    {
        DISP_REG_SET(DISP_REG_BLS_PWM_DUTY, level);
        if (!(regVal & 0x10000))
            DISP_REG_SET(DISP_REG_BLS_EN, regVal | 0x10000);
    }


    BLS_DBG("bls setting = %lu\n", param->setting);

    if (param->setting & ENUM_FUNC_BLS)
    {
        BLS_DBG("distion threshold = %lu\n", param->maxClrDistThd);
        BLS_DBG("predistion threshold = %lu\n", param->preDistThd);
        // TODO: BLS porting
    }

    if (prevSetting & 0x10100) 
    {
        // TODO: BLS porting
    }
    else if (param->setting & ENUM_FUNC_BLS)
    {
        disp_set_aal_alarm(1);
    }

}