static int lm3533_backlight_set_with_edp(struct backlight_device *bd, int brightness) { static bool first_flag = 0;//when cellphone startup first time, don't init the lm3533 again,so init as 0 static int old_brightness = -1; struct lm3533_bl *bl = bl_get_data(bd); if(0 == brightness) { if(old_brightness == brightness) { return 0; } lm3533_ctrlbank_set_brightness(&bl->cb, (u8)brightness); pr_err("In %s, brightness=%d \n",__func__,brightness); mutex_lock(&(bl->lm3533->lock)); if(NULL != bl->lm3533) { if((!button_bl_open_flag)&&lcd_bl_open_flag) { lm3533_disable(bl->lm3533); } } else { pr_err("In %s, NULL Pointer! \n",__func__); } lcd_bl_open_flag = false; first_flag = 1; mutex_unlock(&(bl->lm3533->lock)); } else { mutex_lock(&(bl->lm3533->lock)); if(first_flag) { pr_err("In %s, brightness=%d \n",__func__,brightness); first_flag = 0; if(NULL != bl->lm3533) { if((!lcd_bl_open_flag)&&(!button_bl_open_flag)) { lm3533_enable(bl->lm3533); mdelay(2); lm3533_init(bl->lm3533); } } else { pr_err("In %s, NULL Pointer! \n",__func__); } } lcd_bl_open_flag = true; mutex_unlock(&(bl->lm3533->lock)); lm3533_ctrlbank_set_brightness(&bl->cb, (u8)brightness); } old_brightness = brightness; return 0; }
static int lm3533_bl_update_status(struct backlight_device *bd) { struct lm3533_bl *bl = bl_get_data(bd); int brightness = bd->props.brightness; if (bd->props.power != FB_BLANK_UNBLANK) brightness = 0; if (bd->props.fb_blank != FB_BLANK_UNBLANK) brightness = 0; return lm3533_ctrlbank_set_brightness(&bl->cb, (u8)brightness); }