/*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 void leds_brightness_set(struct led_classdev *led_cdev, enum led_brightness value) { struct rt9396_driver_data *drvdata = dev_get_drvdata(led_cdev->dev->parent); int brightness; int next; if (!drvdata) { eprintk("Error getting drvier data\n"); return; } brightness = rt9396_get_intensity(drvdata); if(!value) next = value; else if(value !=0 && value < HAL_MIN_VALUE) value = HAL_MIN_VALUE; if(value == HAL_MIN_VALUE) { next = RT9396BL_MIN_BRIGHTNESS; } else if(value > HAL_MIN_VALUE && value <= HAL_20PER_VALUE) { next = RT9396BL_MIN_BRIGHTNESS + (RT9396BL_20PER_BRIGHTNESS - RT9396BL_MIN_BRIGHTNESS) *(value-HAL_MIN_VALUE)/( HAL_20PER_VALUE - HAL_MIN_VALUE); } else if(value > HAL_20PER_VALUE && value <= HAL_40PER_VALUE) { next = RT9396BL_20PER_BRIGHTNESS + (RT9396BL_40PER_BRIGHTNESS - RT9396BL_20PER_BRIGHTNESS) *(value-HAL_20PER_VALUE)/( HAL_40PER_VALUE - HAL_20PER_VALUE); } else if(value > HAL_40PER_VALUE && value <= HAL_60PER_VALUE) { next = RT9396BL_40PER_BRIGHTNESS + (RT9396BL_60PER_BRIGHTNESS - RT9396BL_40PER_BRIGHTNESS) *(value-HAL_40PER_VALUE)/( HAL_60PER_VALUE - HAL_40PER_VALUE); } else if(value > HAL_60PER_VALUE && value <= HAL_80PER_VALUE) { next = RT9396BL_60PER_BRIGHTNESS + (RT9396BL_80PER_BRIGHTNESS - RT9396BL_60PER_BRIGHTNESS) *(value-HAL_60PER_VALUE)/( HAL_80PER_VALUE - HAL_60PER_VALUE); } else if(value > HAL_80PER_VALUE) { if(value > HAL_MAX_VALUE) { value = HAL_MAX_VALUE; } if(value == HAL_MAX_VALUE) { next = RT9396BL_MAX_BRIGHTNESS; } else { next = RT9396BL_80PER_BRIGHTNESS + (RT9396BL_MAX_BRIGHTNESS - RT9396BL_80PER_BRIGHTNESS) *(value-HAL_80PER_VALUE)/( HAL_MAX_VALUE - HAL_80PER_VALUE); } } if (brightness != next) { rt9396_send_intensity(drvdata, next); } }
static int rt9396_get_brightness(struct backlight_device *bd) { struct rt9396_driver_data *drvdata = dev_get_drvdata(bd->dev.parent); return rt9396_get_intensity(drvdata); }
static void leds_brightness_set(struct led_classdev *led_cdev, enum led_brightness value) { struct rt9396_driver_data *drvdata = dev_get_drvdata(led_cdev->dev->parent); int brightness; int next; if (!drvdata) { eprintk("Error getting drvier data\n"); return; } brightness = rt9396_get_intensity(drvdata); #if 1//2012-11-14 junghoon.kim([email protected]) HW brightness tuning.[START] if(!value) next = value; else if(value !=0 && value < HAL_MIN_VALUE) value = HAL_MIN_VALUE; if(value == HAL_MIN_VALUE) { next = RT9396BL_MIN_BRIGHTNESS; } else if(value > HAL_MIN_VALUE && value <= HAL_20PER_VALUE) { next = RT9396BL_MIN_BRIGHTNESS + (RT9396BL_20PER_BRIGHTNESS - RT9396BL_MIN_BRIGHTNESS) *(value-HAL_MIN_VALUE)/( HAL_20PER_VALUE - HAL_MIN_VALUE); } else if(value > HAL_20PER_VALUE && value <= HAL_40PER_VALUE) { next = RT9396BL_20PER_BRIGHTNESS + (RT9396BL_40PER_BRIGHTNESS - RT9396BL_20PER_BRIGHTNESS) *(value-HAL_20PER_VALUE)/( HAL_40PER_VALUE - HAL_20PER_VALUE); } else if(value > HAL_40PER_VALUE && value <= HAL_60PER_VALUE) { next = RT9396BL_40PER_BRIGHTNESS + (RT9396BL_60PER_BRIGHTNESS - RT9396BL_40PER_BRIGHTNESS) *(value-HAL_40PER_VALUE)/( HAL_60PER_VALUE - HAL_40PER_VALUE); } else if(value > HAL_60PER_VALUE && value <= HAL_80PER_VALUE) { next = RT9396BL_60PER_BRIGHTNESS + (RT9396BL_80PER_BRIGHTNESS - RT9396BL_60PER_BRIGHTNESS) *(value-HAL_60PER_VALUE)/( HAL_80PER_VALUE - HAL_60PER_VALUE); } else if(value > HAL_80PER_VALUE) { if(value > HAL_MAX_VALUE) { value = HAL_MAX_VALUE; } if(value == HAL_MAX_VALUE) { next = RT9396BL_MAX_BRIGHTNESS; } else { next = RT9396BL_80PER_BRIGHTNESS + (RT9396BL_MAX_BRIGHTNESS - RT9396BL_80PER_BRIGHTNESS) *(value-HAL_80PER_VALUE)/( HAL_MAX_VALUE - HAL_80PER_VALUE); } } #else if(value < MIN_VALUE) { if(value<0) { printk("%s, old value: %d\n", __func__,value ); value=0; } next = value*RT9396BL_MIN_BRIGHTNESS/MIN_VALUE; } else if(value >= MIN_VALUE && value <= DEFAULT_VALUE) { next = RT9396BL_MIN_BRIGHTNESS + (RT9396BL_DEFAULT_BRIGHTNESS - RT9396BL_MIN_BRIGHTNESS) *(value-MIN_VALUE)/( DEFAULT_VALUE - MIN_VALUE); } else if(value >DEFAULT_VALUE) { if(value>MAX_VALUE) { printk("%s, old value: %d\n", __func__,value ); value=MAX_VALUE; } next = RT9396BL_DEFAULT_BRIGHTNESS + (RT9396BL_MAX_BRIGHTNESS - RT9396BL_DEFAULT_BRIGHTNESS) *(value-DEFAULT_VALUE)/(MAX_VALUE - DEFAULT_VALUE); } #endif//2012-11-14 junghoon.kim([email protected]) HW brightness tuning.[END] if (brightness != next) { //printk("%s, value: %d,after tuning next: %d \n", __func__, value, next ); rt9396_send_intensity(drvdata, next); } }