Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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);
}