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); }
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); }
static __devinit int max8971_probe(struct i2c_client *client, const struct i2c_device_id *id) { struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent); struct max8971_chip *chip; int ret; dev_info(&client->dev, "%s..\n", __func__); if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE)) { dev_err(&client->dev, "%s i2c check failed..\n", __func__); return -EIO; } chip = kzalloc(sizeof(*chip), GFP_KERNEL); if (!chip) { dev_err(&client->dev, "Memory allocation failed\n"); return -ENOMEM; } /* */ max8971_chg = chip; /* */ #ifdef MAX8971_TOPOFF_WORKAROUND dev_info(&client->dev, "Starting delayed workd queue..\n"); INIT_DELAYED_WORK(&chip->topoff_work, max8971_topoff_work); //printk(KERN_DEBUG "%s(%d)\n", __func__, __LINE__); chip->start_topoff_work = 0; chip->prev_chg_dtl = 0; #endif chip->client = client; chip->pdata = client->dev.platform_data; i2c_set_clientdata(client, chip); if(chip->pdata->gpio_init) chip->pdata->gpio_init(); else printk("max8971_probe : Failed to gpio init\n"); chip->charger.name = "charger"; chip->charger.type = POWER_SUPPLY_TYPE_BATTERY; chip->charger.properties = max8971_charger_props; chip->charger.num_properties = ARRAY_SIZE(max8971_charger_props); chip->charger.get_property = max8971_charger_get_property; chip->charger.set_property = max8971_charger_set_property; ret = power_supply_register(&client->dev, &chip->charger); if (ret) { dev_err(&client->dev, "power supply register failed : %d\n", ret); goto err_power_supply_register; } //INIT_WORK(&max8971_wq, max8971_charger_wq); //kkk_test INIT_DELAYED_WORK_DEFERRABLE(&chip->monitor_work, lge_charger_setting_work); //schedule_delayed_work(&chip->monitor_work, 0); if(is_tegra_batteryexistWhenBoot() == 1) { ret = request_threaded_irq(client->irq, NULL, max8971_charger_wq, IRQF_ONESHOT | IRQF_TRIGGER_LOW, client->name, chip); if (ret < 0) { printk(KERN_INFO "[max8971_probe] MAX8971_IRQB_GPIO set up failed!\n"); free_irq(client->irq, &client->dev); return -ENOSYS; } } /* chip->chg_online = 0; ret = max8971_read_reg(chip->client, MAX8971_REG_CHG_STAT); if (ret >= 0) { chip->chg_online = (ret & MAX8971_DCUVP_MASK) ? 0 : 1; if (chip->chg_online) { // Set IRQ MASK register max8971_write_reg(chip->client, MAX8971_REG_CHGINT_MASK, chip->pdata->int_mask); max8971_set_reg(chip, 1); } } else { dev_err(&client->dev, "i2c reading err : %d\n", ret); goto err; } */ chip->chgcc_forced = 0; chip->dcilmt_forced = 60; ret = device_create_file(&client->dev, &dev_attr_chgcc_ta); if (ret < 0) { printk("device_create_file(chgcc_ta) error!\n"); goto err; } ret = device_create_file(&client->dev, &dev_attr_chgcc_forced); if (ret < 0) { printk("device_create_file(chgcc_forced) error!\n"); goto err_chgcc_forced; } ret = device_create_file(&client->dev, &dev_attr_dcilmt_forced); if (ret < 0) { printk("device_create_file(dcilmt_forced) error!\n"); goto err_dcilmt_forced; } dev_info(&client->dev, "%s finish...\n", __func__); return 0; err_dcilmt_forced: device_remove_file(&client->dev, &dev_attr_chgcc_forced); err_chgcc_forced: device_remove_file(&client->dev, &dev_attr_chgcc_ta); err: free_irq(client->irq, chip); err_irq_request: err_gpio_register_2: gpio_free(client->irq); err_gpio_register_1: power_supply_unregister(&chip->charger); err_power_supply_register: i2c_set_clientdata(client, NULL); kfree(chip); return ret; }