Пример #1
0
//LGE_UPDATE_S [email protected] Exponential BL level applied 20120731
static void lm3530_set_main_current_level(struct i2c_client *client, int level)
{
	struct lm3530_device *dev;
	int cal_value = 0;
	int max_brightness 		= main_lm3530_dev->max_brightness;

	dev = (struct lm3530_device *)i2c_get_clientdata(client);

	dev->bl_dev->props.brightness = level;

	mutex_lock(&main_lm3530_dev->bl_mutex);

	if (level != 0) {
		if (level > 0 && level < MIN_LEVEL)
			cal_value = 0;
		else if (level >= MIN_LEVEL && level <= MAX_LEVEL)
		{
			cal_value = mapped_value[level-MIN_LEVEL];
		}
		else if (level > MAX_LEVEL)
			cal_value = max_brightness;

		cur_main_lcd_level = cal_value;
		lm3530_write_reg(client, 0xA0, cal_value);
		/* printk("%s() :level is : %d, cal_value is :
		 * 0x%x\n", __func__, level, cal_value); */
	} else
		lm3530_write_reg(client, 0x10, 0x00);

	msleep(1);

	mutex_unlock(&main_lm3530_dev->bl_mutex);
}
Пример #2
0
static void lm3530_set_main_current_level(struct i2c_client *client, int level)
{
	struct lm3530_device *dev = i2c_get_clientdata(client);
	int cal_value = 0;
	int min_brightness = dev->min_brightness;
	int max_brightness = dev->max_brightness;

	dev->bl_dev->props.brightness = cur_main_lcd_level = level;

	if (level != 0) {
		if (level > 0 && level <= min_brightness)
			cal_value = min_brightness;
		else if (level > min_brightness && level <= max_brightness)
			cal_value = level;
		else if (level > max_brightness)
			cal_value = max_brightness;

		if (dev->blmap) {
			if (cal_value < dev->blmap_size)
				lm3530_write_reg(client, 0xA0,
						dev->blmap[cal_value]);
			else
				dev_warn(&client->dev, "invalid index %d:%d\n",
						dev->blmap_size,
						cal_value);
		} else {
			lm3530_write_reg(client, 0xA0, cal_value);
		}
	} else
		lm3530_write_reg(client, 0x10, 0x00);

	mdelay(1);
}
Пример #3
0
static void lm3530_backlight_on(struct i2c_client *client, int level)
{
	struct lm3530_device *dev = i2c_get_clientdata(client);

	mutex_lock(&backlight_mtx);
	if (backlight_status == BL_OFF) {
		pr_info("%s, ++ lm3530_backlight_on  \n",__func__);
		lm3530_hw_reset(client);

		lm3530_write_reg(dev->client, 0xA0, 0x00);
		lm3530_write_reg(dev->client, 0x10, 
			(pwm_status == BL_OFF) ? dev->max_current & 0x1F 
                               : dev->max_current );
	}

	if (first_boot) {
		lm3530_write_reg(dev->client, 0x10, 
			(pwm_status == BL_OFF) ? dev->max_current & 0x1F 
                               : dev->max_current );
		first_boot = false;
	}

	lm3530_set_main_current_level(dev->client, level);
	backlight_status = BL_ON;
	mutex_unlock(&backlight_mtx);
}
Пример #4
0
void lm3530_backlight_on(int level)
{

	if (backlight_status == BL_OFF) {
		msleep(17);
		printk("%s, ++ lm3530_backlight_on  \n",__func__);
		lm3530_hw_reset();

		lm3530_write_reg(main_lm3530_dev->client, 0xA0, 0x00);
		/* reset 0 brightness */
		lm3530_write_reg(main_lm3530_dev->client, 0x10,
				main_lm3530_dev->max_current);
		lm3530_write_reg(main_lm3530_dev->client, 0x30, 0x00);
		/* fade in, out */

		/* msleep(100); */
	}

	/* printk("%s received (prev backlight_status: %s)\n",
	 * __func__, backlight_status?"ON":"OFF");*/
	lm3530_set_main_current_level(main_lm3530_dev->client, level);
	backlight_status = BL_ON;

	return;
}
Пример #5
0
void lm3530_backlight_on(int level)
{
	if (backlight_status == LM3530_BL_OFF) {
		lm3530_hw_reset();
		lm3530_write_reg(main_lm3530_dev->client, 0x10, 0xB5);
		lm3530_write_reg(main_lm3530_dev->client, 0x30, 0x09); 
	}
	backlight_status = LM3530_BL_ON;
	return;
}
Пример #6
0
void lm3530_lcd_backlight_enable(int level)
{
	int ret=0;
	if (backlight_status == LM3530_BL_OFF) {
		ret = lm3530_write_reg(main_lm3530_dev->client, 0x10, 0xB5);
		ret |= lm3530_write_reg(main_lm3530_dev->client, 0x30, 0x09);
	}
	ret |= lm3530_write_reg(main_lm3530_dev->client, 0xA0, level);
	backlight_status = LM3530_BL_ON;
	return;
}
Пример #7
0
void lm3530_lcd_backlight_set_level2(int level)
{
	if (level > LM3530_MAX_LEVEL)
		level = LM3530_MAX_LEVEL;
	lm3530_write_reg(main_lm3530_dev->client, 0xA0, level);
	msleep(130);
}
Пример #8
0
void lm3530_lcd_backlight_disable(int level)
{
	int ret;
	if (backlight_status == LM3530_BL_OFF)
		return;
	backlight_status = LM3530_BL_OFF;
	ret = lm3530_write_reg(main_lm3530_dev->client, 0xA0, level);
	return;
}
Пример #9
0
static void lm3530_lcd_backlight_pwm_enable(void)
{
	struct i2c_client *client = lm3530_i2c_client;
	struct lm3530_device *dev = i2c_get_clientdata(client);

	if (backlight_status == BL_OFF)
		return;

	lm3530_write_reg(client, 0x10, dev->max_current);
}
Пример #10
0
void lm3530_backlight_on(int level)
{
	if (lm3530_suspension.suspended)
		return;

	if(backlight_status == BL_OFF){
		lm3530_hw_reset();

		lm3530_write_reg(main_lm3530_dev->client, 0xA0, 0x00); //reset 0 brightness
		lm3530_write_reg(main_lm3530_dev->client, 0x10, main_lm3530_dev->max_current);
#ifndef CONFIG_LGIT_VIDEO_CABC
		lm3530_write_reg(main_lm3530_dev->client, 0x30, 0x2d); //fade in, out
#endif
	}

	lm3530_set_main_current_level(main_lm3530_dev->client, level);
	backlight_status = BL_ON;

	return;
}
Пример #11
0
static void lm3530_set_main_current_level(struct i2c_client *client, int level)
{
	struct lm3530_device *dev;
	int cal_value;
	int min_brightness 		= main_lm3530_dev->min_brightness;
	int max_brightness 		= main_lm3530_dev->max_brightness;

	dev = (struct lm3530_device *)i2c_get_clientdata(client);
	dev->bl_dev->props.brightness = cur_main_lcd_level = level;

	mutex_lock(&main_lm3530_dev->bl_mutex);

	if(level!= 0){
		if (level <= MIN_LEVEL)
			cal_value = min_brightness;
		else if(level > MIN_LEVEL && level < MAX_LEVEL_BL)
			cal_value = level;
		else if(level >=MAX_LEVEL_BL)
			cal_value = max_brightness;

#ifdef CONFIG_LGE_PM_FACTORY_CURRENT_DOWN
		if((0 == battery_info_get())&&((usb_cable_info == 6) ||(usb_cable_info == 7)||(usb_cable_info == 11)))
		{
			cal_value = min_brightness;
		}
#endif

		lm3530_write_reg(client, 0xA0, cal_value);
		printk ("level=%d,cal_value=%d\n",level,cal_value);
	}
	else{

		lm3530_write_reg(client, 0x10, 0x00);
	}	

	mutex_unlock(&main_lm3530_dev->bl_mutex);
}
Пример #12
0
static void lm3530_set_main_current_level(struct i2c_client *client, int level)
{
	struct lm3530_device *dev;
	int cal_value;
	int min_brightness 		= main_lm3530_dev->min_brightness;
	int max_brightness 		= main_lm3530_dev->max_brightness;

	int ret; //                                  

	dev = (struct lm3530_device *)i2c_get_clientdata(client);
	dev->bl_dev->props.brightness = cur_main_lcd_level = level;

	mutex_lock(&main_lm3530_dev->bl_mutex);

	if(level!= 0){
		if (level <= MIN_LEVEL)
			cal_value = min_brightness;
		else if(level > MIN_LEVEL && level < MAX_LEVEL_BL)

#ifdef LOG_SCALE_MAPPING // for log scale mapping
			if(level*2 <= 84)  // hardware request :  level <  UI level: 84
				cal_value=(int)(level*2*5/10 + 42);
			else
				cal_value=(int)((2323*level*2/10000)+66); //for log scale mapping
#else // for linear scale mapping
			//cal_value =(max_brightness- min_brightness)*level/(MAX_LEVEL_BL- MIN_LEVEL)
			//		-((max_brightness- min_brightness)*MIN_LEVEL/(MAX_LEVEL_BL- MIN_LEVEL)-min_brightness);
			cal_value = level;
#endif

		else if(level >=MAX_LEVEL_BL)
			cal_value = max_brightness;

#ifdef CONFIG_LGE_PM_FACTORY_CURRENT_DOWN
		if(((usb_cable_info == 6) ||(usb_cable_info == 7)||(usb_cable_info == 11)))
		{
			cal_value = min_brightness;
		}
#endif

		lm3530_write_reg(client, 0xA0, cal_value);
		//printk ("................... level=%d,cal_value=%d\n",level,cal_value);
	}
Пример #13
0
static ssize_t lcd_store_br_mode(struct device *dev,
		struct device_attribute *attr, const char *buf, size_t count)
{
	struct i2c_client *client = lm3530_i2c_client;
	struct lm3530_device *ldev = i2c_get_clientdata(client);
	int mode;

	if (!count)
		return -EINVAL;

	mode = simple_strtoul(buf, NULL, 10);
	if (mode < 0 || mode > 1)
		return -EINVAL;

	if (mode == 1)
		ldev->max_current |= BR_MODE;
	else
		ldev->max_current &= ~(BR_MODE);
	lm3530_write_reg(ldev->client, 0x10, ldev->max_current);
	br_mode = mode;

	return count;
}