int disp_aal_set_param(DISP_AAL_PARAM __user *param, void *cmdq) { int ret = -EFAULT; int backlight_value = 0; /* Not need to protect g_aal_param, since only AALService can set AAL parameters. */ if (copy_from_user(&g_aal_param, param, sizeof(DISP_AAL_PARAM)) == 0) { ret = disp_aal_write_param_to_reg(cmdq, &g_aal_param); backlight_value = g_aal_param.FinalBacklight; } if (g_aal_backlight_notified == 0) backlight_value = 0; if (ret == 0) { ret |= disp_pwm_set_backlight_cmdq(DISP_PWM0, backlight_value, cmdq); } AAL_DBG("disp_aal_set_param(CABC = %d, DRE[0,8] = %d,%d): ret = %d", g_aal_param.cabc_fltgain_force, g_aal_param.DREGainFltStatus[0], g_aal_param.DREGainFltStatus[8], ret); backlight_brightness_set(backlight_value); disp_aal_trigger_refresh(); return ret; }
void disp_aal_notify_backlight_changed(int bl_1024) { unsigned long flags; int max_backlight; unsigned int service_flags; printk(KERN_DEBUG "disp_aal_notify_backlight_changed: %d/1023", bl_1024); #ifdef MTK_DISP_IDLE_LP disp_exit_idle_ex("disp_aal_notify_backlight_changed"); #endif max_backlight = disp_pwm_get_max_backlight(DISP_PWM0); if (bl_1024 > max_backlight) bl_1024 = max_backlight; g_aal_backlight_notified = bl_1024; service_flags = 0; if (bl_1024 == 0) { backlight_brightness_set(0); /* set backlight = 0 may be not from AAL, we have to let AALService can turn on backlight on phone resumption */ service_flags = AAL_SERVICE_FORCE_UPDATE; } else if (!g_aal_is_init_regs_valid) { /* AAL Service is not running */ backlight_brightness_set(bl_1024); } spin_lock_irqsave(&g_aal_hist_lock, flags); g_aal_hist.backlight = bl_1024; g_aal_hist.serviceFlags |= service_flags; spin_unlock_irqrestore(&g_aal_hist_lock, flags); if (g_aal_is_init_regs_valid) { disp_aal_set_interrupt(1); disp_aal_trigger_refresh(); } }
/* this is the plugin entry point */ enum plugin_status plugin_start(const void* parameter) { enum plugin_status status = PLUGIN_OK; long button; bool quit = false; (void)parameter; #ifdef HAVE_LCD_COLOR int cs = 0; bool update = false; #endif /* HAVE_LCD_COLOR */ #if LCD_DEPTH > 1 unsigned bg_color = rb->lcd_get_background(); rb->lcd_set_backdrop(NULL); rb->lcd_set_background(LCD_WHITE); #endif #ifdef HAVE_BACKLIGHT_BRIGHTNESS int current_brightness = MAX_BRIGHTNESS_SETTING; backlight_brightness_set(MAX_BRIGHTNESS_SETTING); #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS buttonlight_brightness_set(MAX_BRIGHTNESS_SETTING); #endif /* HAVE_BUTTONLIGHT_BRIGHTNESS */ #ifdef HAVE_LCD_INVERT #ifdef HAVE_NEGATIVE_LCD rb->lcd_set_invert_display(true); #else rb->lcd_set_invert_display(false); #endif /* HAVE_NEGATIVE_LCD */ #endif /* HAVE_LCD_INVERT */ backlight_force_on(); #ifdef HAVE_BUTTON_LIGHT buttonlight_force_on(); #endif /* HAVE_BUTTON_LIGHT */ rb->lcd_clear_display(); rb->lcd_update(); do { #ifdef HAVE_LCD_COLOR if(update) { if(cs < 0) cs = NUM_COLORSETS-1; if(cs >= NUM_COLORSETS) cs = 0; rb->lcd_set_background(colorset[cs]); rb->lcd_clear_display(); rb->lcd_update(); update = false; } #endif /* HAVE_LCD_COLOR */ switch((button = rb->button_get_w_tmo(HZ*30))) { #ifdef HAVE_LCD_COLOR case LAMP_RIGHT: #ifdef LAMP_NEXT case LAMP_NEXT: #endif /* LAMP_NEXT */ cs++; update = true; break; case LAMP_LEFT: #ifdef LAMP_PREV case LAMP_PREV: #endif /* LAMP_PREV */ cs--; update = true; break; #endif /* HAVE_LCD_COLOR */ #ifdef HAVE_BACKLIGHT_BRIGHTNESS case LAMP_UP: case (LAMP_UP|BUTTON_REPEAT): if (current_brightness < MAX_BRIGHTNESS_SETTING) backlight_brightness_set(++current_brightness); break; case LAMP_DOWN: case (LAMP_DOWN|BUTTON_REPEAT): if (current_brightness > MIN_BRIGHTNESS_SETTING) backlight_brightness_set(--current_brightness); break; #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ case BUTTON_NONE: /* time out */ break; default: if(rb->default_event_handler(button) == SYS_USB_CONNECTED) { status = PLUGIN_USB_CONNECTED; quit = true; } if(!(button & (BUTTON_REL|BUTTON_REPEAT)) && !IS_SYSEVENT(button)) quit = true; break; } rb->reset_poweroff_timer(); } while (!quit); /* restore */ backlight_use_settings(); #ifdef HAVE_BUTTON_LIGHT buttonlight_use_settings(); #endif /* HAVE_BUTTON_LIGHT */ #ifdef HAVE_LCD_INVERT rb->lcd_set_invert_display(rb->global_settings->invert); #endif /* HAVE_LCD_INVERT */ #ifdef HAVE_BACKLIGHT_BRIGHTNESS backlight_brightness_use_setting(); #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS buttonlight_brightness_use_setting(); #endif /* HAVE_BUTTONLIGHT_BRIGHTNESS */ #if LCD_DEPTH > 1 rb->lcd_set_background(bg_color); #endif return status; }