예제 #1
0
static void lm3533_set_main_current_level(struct i2c_client *client, int level)
{
	struct lm3533_device *dev = i2c_get_clientdata(client);
	int cal_value = 0;
	int min_brightness = dev->min_brightness;
	int max_brightness = dev->max_brightness;
	int max_current = dev->max_current;
	int gpio = dev->hwen_gpio;

	pr_debug("lm3533_level[BL]:%d \n", level);

	//dev->cur_main_lcd_level = level;
	//dev->saved_main_lcd_level = dev->cur_main_lcd_level;

	mutex_lock(&lm3533dev->bl_mutex);

	if(level!= 0){
		gpio_set_value(gpio, 1);
		//cal_value = level;
		/*if(level >= 1 && level <= 255)
		{
			cal_value = (((level*2250-30*2250)/225)*251 + 4*2250)/2250; //input min=30, Max255,,, Output min 20 ; max 255
			if(cal_value < 165)
				cal_value = (cal_value*108)/100 - 38;
			else
				cal_value = (cal_value*150)/100 - 100;
		}
		else{
			mdelay(1);
			return;
		}*/
		if (level < 0)	level=0;
		if (level >255)	level=255;

		cal_value=default_160nit_53percent_lut[level];

		if (cal_value < LM3533_BL_MIN_BRIGHTNESS){
			cal_value = LM3533_BL_MIN_BRIGHTNESS;
		}
		else if (cal_value > LM3533_BL_MAX_BRIGHTNESS)
		{
			cal_value = LM3533_BL_MAX_BRIGHTNESS;
		}
#if defined(CONFIG_MACH_X3)
		//jude84.kim For Milky U and Factorymode
		if((is_tegra_batteryexistWhenBoot() != 1) && (charging_mode == CHARGING_FACTORY)){
			cal_value = LM3533_BL_MIN_BRIGHTNESS;
		}
#endif
		lm3533_bl_write_reg(client, 0x1F, dev->cur_maxcurrent);
		lm3533_bl_write_reg(client, 0x40, cal_value);
	}
	else if(level == 0){
		cal_value = level;
		lm3533_bl_write_reg(client, 0x1F, dev->cur_maxcurrent);
		lm3533_bl_write_reg(client, 0x40, cal_value);
	}
	mutex_unlock(&lm3533dev->bl_mutex);
	mdelay(1);
}
예제 #2
0
static void lm3533_set_main_current_level(struct i2c_client *client, int level)
{
	struct lm3533_device *dev = i2c_get_clientdata(client);
	int cal_value = 0;
	int gpio = dev->hwen_gpio;

	printk("lm3533_set_main_current_level *** level:%d \n", level);

	mutex_lock(&lm3533dev->bl_mutex);

	if (level != 0) {
		gpio_set_value(gpio, 1);

		if (level < 0) level = 0;
		if (level > 255) level = 255;

		cal_value = default_77_lut[level];

		if (cal_value < LM3533_BL_MIN_BRIGHTNESS) {
			cal_value = LM3533_BL_MIN_BRIGHTNESS;
		} else if (cal_value > LM3533_BL_MAX_BRIGHTNESS) {
			cal_value = LM3533_BL_MAX_BRIGHTNESS;
		}

		lm3533_bl_write_reg(client, 0x40, cal_value);
	} else if (level == 0) {
		cal_value = level;
		lm3533_bl_write_reg(client, 0x40, cal_value);
	}
	mutex_unlock(&lm3533dev->bl_mutex);
	mdelay(1);
}
예제 #3
0
static void lm3533_backlight_on(struct i2c_client *client, int level)
{
	struct lm3533_device *dev = i2c_get_clientdata(client);

	dev_dbg(&client->dev, "backlight on...\n");

	lm3533_hw_reset(dev);

	lm3533_bl_write_reg(client, 0x10, 0x0); //HVLED 1 & 2 are controlled by Bank A

#if defined(ENABLE_PWM_SIGNAL)        
	lm3533_bl_write_reg(client, 0x14, 0x1); //                                                                 
#else
	lm3533_bl_write_reg(client, 0x14, 0x0); //PWM input is disabled for CABC
#endif
	lm3533_bl_write_reg(client, 0x1A, 0x2); //Linear & Control Bank A is configured for register Current control
	lm3533_bl_write_reg(client, 0x27, 0x1); //Control Bank A is enable
#if !defined(CONFIG_MACH_HD5_LGD)        
	lm3533_bl_write_reg(client, 0x2C, 0x0A); //                                                                                   
#else
	lm3533_bl_write_reg(client, 0x2C, 0x0C); //Active High, OVP(24V), Boost Frequency(500 khz)  
#endif

	lm3533_set_main_current_level(client, level);

	//                                                                                          
		
	dev->bl_status = BL_ON;

	return;
}
예제 #4
0
static void lm3533_set_main_current_level(struct i2c_client *client, int level)
{
	struct lm3533_device *dev = i2c_get_clientdata(client);
	int cal_value = 0;
	int min_brightness = dev->min_brightness;
	int max_brightness = dev->max_brightness;
	int max_current = dev->max_current;
	int gpio = dev->hwen_gpio;

	printk("lm3533_set_main_current_level *** level:%d \n", level);
	
	mutex_lock(&lm3533dev->bl_mutex);

	if(level!= 0){
		gpio_set_value(gpio, 1);
	
		if (level < 0)	level=0;
		if (level >255)	level=255;

		
		cal_value=default_77_lut[level];

		if (cal_value < LM3533_BL_MIN_BRIGHTNESS){
			cal_value = LM3533_BL_MIN_BRIGHTNESS;
		}
		else if (cal_value > LM3533_BL_MAX_BRIGHTNESS)
		{
			cal_value = LM3533_BL_MAX_BRIGHTNESS;
		}
#if defined(CONFIG_MACH_X3) && defined(CONFIG_ARCH_TEGRA_3x_SOC)
		
		if((is_tegra_batteryexistWhenBoot() != 1) && (charging_mode == CHARGING_FACTORY)){
			cal_value = LM3533_BL_MIN_BRIGHTNESS;
		}
#endif
		lm3533_bl_write_reg(client, 0x40, cal_value);
	}
	else if(level == 0){
		cal_value = level;
		lm3533_bl_write_reg(client, 0x40, cal_value);
	}
	mutex_unlock(&lm3533dev->bl_mutex);
	mdelay(1);
}
예제 #5
0
static void lm3533_lcd_backlight_set_maxcurrent(struct i2c_client *client,
		int level)
{
	// Disable this check if you dare.
	// See README.
	if (level > LM3533_BL_MAX_MAXCURRENT)
		level = LM3533_BL_MAX_MAXCURRENT;
	if (level < LM3533_BL_MIN_MAXCURRENT)
		level = LM3533_BL_MIN_MAXCURRENT;

	if (client != NULL) {
		struct lm3533_device *lm3533_dev = i2c_get_clientdata(client);
		lm3533_bl_write_reg(client, 0x1F, level);
		lm3533_dev->cur_maxcurrent = level;
	} else {
		printk("%s : No i2c client\n", __func__);
	}
}
예제 #6
0
static void lm3533_backlight_on(struct i2c_client *client, int level)
{
	struct lm3533_device *dev = i2c_get_clientdata(client);

	dev_dbg(&client->dev, "backlight on...\n");

	lm3533_hw_reset(dev);

	lm3533_bl_write_reg(client, 0x10, 0x0); //HVLED 1 & 2 are controlled by Bank A

	lm3533_bl_write_reg(client, 0x14, 0x0); //PWM input is disabled for CABC
	lm3533_bl_write_reg(client, 0x1A, 0x2); //Linear & Control Bank A is configured for register Current control
	lm3533_bl_write_reg(client, 0x1F, dev->cur_maxcurrent); //Full-Scale Current (default 20.2mA)
	lm3533_bl_write_reg(client, 0x27, 0x1); //Control Bank A is enable
	lm3533_bl_write_reg(client, 0x2C, 0x0A); //Active High, OVP(24V), Boost Frequency(500 khz)

	lm3533_set_main_current_level(client, level);

	dev->bl_status = BL_ON;

	return;
}