/*2012-09-26 junghoon-kim([email protected]) porting from bu61800 driver [END]*/ static int rt9396_get_intensity(struct rt9396_driver_data *drvdata) { return drvdata->intensity; } #if 0 /*2012-09-26 junghoon-kim([email protected]) V3 not use [START]*/ int rt9396_force_set(void) { struct rt9396_driver_data *drvdata = rt9396_ref; int brightness; brightness = rt9396_get_intensity(drvdata); if (drvdata->mode == NORMAL_MODE) { if(brightness) { rt9396_write(drvdata->client, drvdata->reg_addrs.led_set_on, brightness); Is_Backlight_Set = 1; /* LGE_CHANGE_S: E0 [email protected] [2011-11-22] : BL control error fix */ } else { rt9396_write(drvdata->client, drvdata->reg_addrs.led_set_off, brightness); Is_Backlight_Set = 0; /* LGE_CHANGE_S: E0 [email protected] [2011-11-22] : BL control error fix */ } } else { dprintk("A manual setting for intensity is only permitted in normal mode\n"); } return 0; }
static int rt9396_send_intensity(struct rt9396_driver_data *drvdata, int next) { if (next > drvdata->max_intensity) next = drvdata->max_intensity; if (next < LCD_LED_MIN) next = LCD_LED_MIN; #if 0/*2012-09-10 junghoon-kim([email protected]) porting from bu61800 driver [START]*/ if (drvdata->state == NORMAL_STATE && drvdata->intensity != next){ rt9396_write(drvdata->client, drvdata->reg_addrs.led_set_on, next); } #else if ((drvdata->intensity != next) && (next != 0)) { rt9396_write(drvdata->client, drvdata->reg_addrs.led_set_on, next); printk("[%s] LCD-backlight ON !!!!! val:%d \n", __func__,next); Is_Backlight_Set = 1; /* LGE_CHANGE_S: E0 [email protected] [2011-11-22] : BL control error fix */ } else if(next ==0) { printk("[%s] LCD-backlight OFF !!!!!\n", __func__); rt9396_write(drvdata->client, drvdata->reg_addrs.led_set_off, next); Is_Backlight_Set = 0; /* LGE_CHANGE_S: E0 [email protected] [2011-11-22] : BL control error fix */ } #endif /*2012-09-10 junghoon-kim([email protected]) porting from bu61800 driver[END]*/ drvdata->intensity = next; return 0; }
static int rt9396_set_ldos(struct i2c_client *i2c_dev, unsigned num, int enable) { int err = 0; struct rt9396_driver_data *drvdata = i2c_get_clientdata(i2c_dev); if (drvdata) { if (enable) { switch(num) { case 1 : drvdata->reg_addrs.ldo_1 = RT9396BL_REG_LDO1_ON; err = rt9396_write(i2c_dev, drvdata->reg_addrs.ldo_1, RT9396BL_VAL_LDO1); break; case 2 : drvdata->reg_addrs.ldo_2 = RT9396BL_REG_LDO2_ON; err = rt9396_write(i2c_dev, drvdata->reg_addrs.ldo_2, RT9396BL_VAL_LDO2); break; case 3 : drvdata->reg_addrs.ldo_3 = RT9396BL_REG_LDO3_ON; err = rt9396_write(i2c_dev, drvdata->reg_addrs.ldo_3, RT9396BL_VAL_LDO3); break; case 4 : drvdata->reg_addrs.ldo_4 = RT9396BL_REG_LDO4_ON; err = rt9396_write(i2c_dev, drvdata->reg_addrs.ldo_4, RT9396BL_VAL_LDO4); break; default: break; } } else { switch(num) { case 1 : drvdata->reg_addrs.ldo_1 = RT9396BL_REG_LDO1_OFF; err = rt9396_write(i2c_dev, drvdata->reg_addrs.ldo_1, RT9396BL_VAL_LDO1); break; case 2 : drvdata->reg_addrs.ldo_2 = RT9396BL_REG_LDO2_OFF; err = rt9396_write(i2c_dev, drvdata->reg_addrs.ldo_2, RT9396BL_VAL_LDO2); break; case 3 : drvdata->reg_addrs.ldo_3 = RT9396BL_REG_LDO3_OFF; err = rt9396_write(i2c_dev, drvdata->reg_addrs.ldo_3, RT9396BL_VAL_LDO3); break; case 4 : drvdata->reg_addrs.ldo_4 = RT9396BL_REG_LDO4_OFF; err = rt9396_write(i2c_dev, drvdata->reg_addrs.ldo_4, RT9396BL_VAL_LDO4); break; default: break; } } return err; } return -ENODEV; }
static int rt9396_set_table(struct rt9396_driver_data *drvdata, struct rt9396_ctrl_tbl *ptbl) { unsigned int i = 0; unsigned long delay = 0; if (ptbl == NULL) { eprintk("input ptr is null\n"); return -EIO; } for( ;;) { if (ptbl->reg == 0xFF) { if (ptbl->val != 0xFE) { delay = (unsigned long)ptbl->val; udelay(delay); } else break; } else { if (rt9396_write(drvdata->client, ptbl->reg, ptbl->val) != 0) dprintk("i2c failed addr:%d, value:%d\n", ptbl->reg, ptbl->val); } ptbl++; i++; } return 0; }
int rt9396_send_intensity_button(struct rt9396_driver_data *drvdata, int level) { // [Caio99BR][[email protected]] Workaround for bug of screen still awake after lock #ifndef CONFIG_MACH_LGE_2ND_GEN_KK_WORKAROUD if(level) { printk("[%s] key-backlight ON ! \n", __func__); rt9396_write(drvdata->client, RT9396BL_REG_KEYLED_ON, RT9396BL_VAL_KEYLED_SET); } else { printk("[%s] key-backlight OFF !\n", __func__); rt9396_write(drvdata->client, RT9396BL_REG_KEYLED_OFF, RT9396BL_VAL_KEYLED_SET); } #endif return 0; }
int rt9396_send_intensity_button(struct rt9396_driver_data *drvdata, int level) { /*[12-12-30][[email protected]] key led disable at rev_11(except single EU) [START]*/ #if !defined( CONFIG_MACH_MSM7X25A_V3EU_REV_11) && !defined( CONFIG_MACH_MSM7X25A_V3BR_REV_11) if(level) { printk("[%s] key-backlight ON !!!!! \n", __func__); rt9396_write(drvdata->client, RT9396BL_REG_KEYLED_ON, RT9396BL_VAL_KEYLED_SET); } else { printk("[%s] key-backlight OFF !!!!!\n", __func__); rt9396_write(drvdata->client, RT9396BL_REG_KEYLED_OFF, RT9396BL_VAL_KEYLED_SET); } #endif /*[12-12-30][[email protected]] key led disable at rev_11(except single EU) [END]*/ return 0; }
static int rt9396_send_intensity(struct rt9396_driver_data *drvdata, int next) { if (next > drvdata->max_intensity) next = drvdata->max_intensity; if (next < LCD_LED_MIN) next = LCD_LED_MIN; if ((drvdata->intensity != next) && (next != 0)) { rt9396_write(drvdata->client, drvdata->reg_addrs.led_set_on, next); // printk("[%s] LCD-backlight ON ! val:%d \n", __func__,next); Is_Backlight_Set = 1; } else if(next ==0) { rt9396_write(drvdata->client, drvdata->reg_addrs.led_set_off, next); // printk("[%s] LCD-backlight OFF !\n", __func__); Is_Backlight_Set = 0; } drvdata->intensity = next; return 0; }