unsigned int Cust_SetBacklight(int level, int div) { mtkfb_set_backlight_pwm(div); mtkfb_set_backlight_level(brightness_mapping(level)); disp_bls_set_backlight(brightness_mapping(level)); return 0; }
unsigned int Cust_SetBacklight(int level, int div) { #if !defined(CUST_BLS_PWM) mtkfb_set_backlight_pwm(div); mtkfb_set_backlight_level(brightness_mapping(level)); #else disp_bls_set_backlight(brightness_mapping(level)); #endif return 0; }
int disp_bls_set_backlight(unsigned int level) { printf("[DDP] disp_bls_set_backlight: %d, CG = 0x%x, BLS_EN = 0x%x, PWM_DUTY = %d\n", level, DISP_REG_GET(DISP_REG_CONFIG_MMSYS_CG_CON0), DISP_REG_GET(DISP_REG_BLS_EN), DISP_REG_GET(DISP_REG_BLS_PWM_DUTY)); if (level && (!(DISP_REG_GET(DISP_REG_BLS_EN) & 0x10000))) { disp_bls_config(); } #ifdef USE_DISP_BLS_MUTEX disp_bls_get_mutex(); #else DISP_REG_SET(DISP_REG_BLS_DEBUG, 0x3); #endif DISP_REG_SET(DISP_REG_BLS_PWM_DUTY, brightness_mapping(level)); printf("[DDP] PWM_DUTY: %x\n", DISP_REG_GET(DISP_REG_BLS_PWM_DUTY)); #ifdef USE_DISP_BLS_MUTEX disp_bls_release_mutex(); #else DISP_REG_SET(DISP_REG_BLS_DEBUG, 0x0); #endif return 0; }
int disp_bls_set_backlight(unsigned int level) { unsigned int mapped_level; DISP_MSG("disp_bls_set_backlight: %d, gBLSPowerOn = %d\n", level, gBLSPowerOn); mutex_lock(&backlight_mutex); if(level && !clock_is_on(MT_CG_PWM_MM_SW_CG)) enable_clock(MT_CG_PWM_MM_SW_CG, "DDP"); if (level && !clock_is_on(MT_CG_MDP_BLS_26M_SW_CG)) { // remove CG control to DDP path ASSERT(0); if (!gBLSPowerOn) { // config BLS parameter disp_bls_config(); } } #ifdef USE_DISP_BLS_MUTEX disp_bls_get_mutex(); #else DISP_REG_SET(DISP_REG_BLS_DEBUG, 0x3); #endif mapped_level = brightness_mapping(level); DISP_MSG("after mapping, mapped_level: %d\n", mapped_level); DISP_REG_SET(DISP_REG_BLS_PWM_DUTY, mapped_level); if (mapped_level) // enable PWM generator DISP_REG_SET(DISP_REG_BLS_EN, DISP_REG_GET(DISP_REG_BLS_EN) | 0x10000); else // disable PWM generator DISP_REG_SET(DISP_REG_BLS_EN, DISP_REG_GET(DISP_REG_BLS_EN) & 0xFFFEFFFF); DISP_MSG("after SET, PWM_DUTY: %d\n", DISP_REG_GET(DISP_REG_BLS_PWM_DUTY)); #ifdef USE_DISP_BLS_MUTEX disp_bls_release_mutex(); #else DISP_REG_SET(DISP_REG_BLS_DEBUG, 0x0); #endif if(!level && clock_is_on(MT_CG_PWM_MM_SW_CG)) disable_clock(MT_CG_PWM_MM_SW_CG, "DDP"); if (!level && gBLSPowerOn) { DISP_MSG("disp_bls_set_backlight: disable clock\n"); // disable_clock(MT_CG_DISP0_SMI_LARB0 , "DDP"); gBLSPowerOn = 0; } mutex_unlock(&backlight_mutex); return 0; }
int disp_bls_set_backlight(unsigned int level) { DISP_AAL_PARAM *param; DISP_MSG("disp_bls_set_backlight: %d\n", level); mutex_lock(&backlight_mutex); disp_aal_lock(); param = get_aal_config(); param->pwmDuty = brightness_mapping(level); disp_aal_unlock(); mutex_unlock(&backlight_mutex); return 0; }
int disp_bls_set_backlight(unsigned int level) { unsigned int regVal; unsigned int mapped_level; BLS_MSG("disp_bls_set_backlight: %d, gBLSPowerOn = %d\n", level, gBLSPowerOn); mutex_lock(&backlight_mutex); // if (level && (!clock_is_on(MT_CG_DISP0_MDP_BLS_26M) || !gBLSPowerOn)) // { // disp_bls_config(); // } #ifdef USE_DISP_BLS_MUTEX disp_bls_get_mutex(); #else DISP_REG_SET(DISP_REG_BLS_DEBUG, 0x3); #endif mapped_level = brightness_mapping(level); BLS_MSG("after mapping, mapped_level: %d\n", mapped_level); DISP_REG_SET(DISP_REG_BLS_PWM_DUTY, mapped_level); if(level != 0) { regVal = DISP_REG_GET(DISP_REG_BLS_EN); if (!(regVal & 0x10000)) DISP_REG_SET(DISP_REG_BLS_EN, regVal | 0x10000); } else { regVal = DISP_REG_GET(DISP_REG_BLS_EN); if (regVal & 0x10000) DISP_REG_SET(DISP_REG_BLS_EN, regVal & 0xFFFEFFFF); } BLS_MSG("after SET, PWM_DUTY: %d\n", DISP_REG_GET(DISP_REG_BLS_PWM_DUTY)); #ifdef USE_DISP_BLS_MUTEX disp_bls_release_mutex(); #else DISP_REG_SET(DISP_REG_BLS_DEBUG, 0x0); #endif // if (!level && (clock_is_on(MT_CG_DISP0_MDP_BLS_26M) && gBLSPowerOn)) // { // BLS_MSG("disp_bls_set_backlight: disable clock\n"); // disable_clock(MT_CG_DISP0_MDP_BLS_26M , "DDP"); // disable_clock(MT_CG_DISP0_SMI_LARB0 , "DDP"); // gBLSPowerOn = 0; // } mutex_unlock(&backlight_mutex); return 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); } }