Lines Matching refs:chip
171 static int lm355x_chip_init(struct lm355x_chip_data *chip) in lm355x_chip_init() argument
175 struct lm355x_platform_data *pdata = chip->pdata; in lm355x_chip_init()
178 switch (chip->type) { in lm355x_chip_init()
181 ret = regmap_update_bits(chip->regmap, 0xE0, 0x28, reg_val); in lm355x_chip_init()
185 ret = regmap_update_bits(chip->regmap, 0xA0, 0x04, reg_val); in lm355x_chip_init()
192 ret = regmap_update_bits(chip->regmap, 0x0A, 0xC4, reg_val); in lm355x_chip_init()
202 dev_err(chip->dev, "%s:i2c access fail to register\n", __func__); in lm355x_chip_init()
207 static void lm355x_control(struct lm355x_chip_data *chip, in lm355x_control() argument
212 struct lm355x_platform_data *pdata = chip->pdata; in lm355x_control()
213 struct lm355x_reg_data *preg = chip->regs; in lm355x_control()
215 ret = regmap_read(chip->regmap, preg[REG_FLAG].regno, &chip->last_flag); in lm355x_control()
218 if (chip->last_flag & preg[REG_FLAG].mask) in lm355x_control()
219 dev_info(chip->dev, "%s Last FLAG is 0x%x\n", in lm355x_control()
220 lm355x_name[chip->type], in lm355x_control()
221 chip->last_flag & preg[REG_FLAG].mask); in lm355x_control()
229 regmap_update_bits(chip->regmap, preg[REG_TORCH_CTRL].regno, in lm355x_control()
238 regmap_update_bits(chip->regmap, in lm355x_control()
246 dev_info(chip->dev, in lm355x_control()
254 regmap_update_bits(chip->regmap, preg[REG_FLASH_CTRL].regno, in lm355x_control()
262 if (chip->type == CHIP_LM3554) in lm355x_control()
267 regmap_update_bits(chip->regmap, in lm355x_control()
275 dev_info(chip->dev, in lm355x_control()
282 regmap_update_bits(chip->regmap, preg[REG_INDI_CTRL].regno, in lm355x_control()
291 regmap_update_bits(chip->regmap, in lm355x_control()
307 ret = regmap_update_bits(chip->regmap, preg[REG_OPMODE].regno, in lm355x_control()
314 dev_err(chip->dev, "%s:i2c access fail to register\n", __func__); in lm355x_control()
321 struct lm355x_chip_data *chip = in lm355x_deferred_torch_brightness_set() local
324 mutex_lock(&chip->lock); in lm355x_deferred_torch_brightness_set()
325 lm355x_control(chip, chip->br_torch, MODE_TORCH); in lm355x_deferred_torch_brightness_set()
326 mutex_unlock(&chip->lock); in lm355x_deferred_torch_brightness_set()
332 struct lm355x_chip_data *chip = in lm355x_torch_brightness_set() local
335 chip->br_torch = brightness; in lm355x_torch_brightness_set()
336 schedule_work(&chip->work_torch); in lm355x_torch_brightness_set()
342 struct lm355x_chip_data *chip = in lm355x_deferred_strobe_brightness_set() local
345 mutex_lock(&chip->lock); in lm355x_deferred_strobe_brightness_set()
346 lm355x_control(chip, chip->br_flash, MODE_FLASH); in lm355x_deferred_strobe_brightness_set()
347 mutex_unlock(&chip->lock); in lm355x_deferred_strobe_brightness_set()
353 struct lm355x_chip_data *chip = in lm355x_strobe_brightness_set() local
356 chip->br_flash = brightness; in lm355x_strobe_brightness_set()
357 schedule_work(&chip->work_flash); in lm355x_strobe_brightness_set()
363 struct lm355x_chip_data *chip = in lm355x_deferred_indicator_brightness_set() local
366 mutex_lock(&chip->lock); in lm355x_deferred_indicator_brightness_set()
367 lm355x_control(chip, chip->br_indicator, MODE_INDIC); in lm355x_deferred_indicator_brightness_set()
368 mutex_unlock(&chip->lock); in lm355x_deferred_indicator_brightness_set()
374 struct lm355x_chip_data *chip = in lm355x_indicator_brightness_set() local
377 chip->br_indicator = brightness; in lm355x_indicator_brightness_set()
378 schedule_work(&chip->work_indicator); in lm355x_indicator_brightness_set()
388 struct lm355x_chip_data *chip = in lm3556_indicator_pattern_store() local
398 ret = regmap_write(chip->regmap, 0x04, in lm3556_indicator_pattern_store()
403 ret = regmap_write(chip->regmap, 0x05, in lm3556_indicator_pattern_store()
410 dev_err(chip->dev, "%s:i2c access fail to register\n", __func__); in lm3556_indicator_pattern_store()
433 struct lm355x_chip_data *chip; in lm355x_probe() local
447 chip = devm_kzalloc(&client->dev, in lm355x_probe()
449 if (!chip) in lm355x_probe()
452 chip->dev = &client->dev; in lm355x_probe()
453 chip->type = id->driver_data; in lm355x_probe()
456 chip->regs = lm3554_regs; in lm355x_probe()
459 chip->regs = lm3556_regs; in lm355x_probe()
464 chip->pdata = pdata; in lm355x_probe()
466 chip->regmap = devm_regmap_init_i2c(client, &lm355x_regmap); in lm355x_probe()
467 if (IS_ERR(chip->regmap)) { in lm355x_probe()
468 err = PTR_ERR(chip->regmap); in lm355x_probe()
474 mutex_init(&chip->lock); in lm355x_probe()
475 i2c_set_clientdata(client, chip); in lm355x_probe()
477 err = lm355x_chip_init(chip); in lm355x_probe()
482 INIT_WORK(&chip->work_flash, lm355x_deferred_strobe_brightness_set); in lm355x_probe()
483 chip->cdev_flash.name = "flash"; in lm355x_probe()
484 chip->cdev_flash.max_brightness = 16; in lm355x_probe()
485 chip->cdev_flash.brightness_set = lm355x_strobe_brightness_set; in lm355x_probe()
486 chip->cdev_flash.default_trigger = "flash"; in lm355x_probe()
488 &client->dev, &chip->cdev_flash); in lm355x_probe()
492 INIT_WORK(&chip->work_torch, lm355x_deferred_torch_brightness_set); in lm355x_probe()
493 chip->cdev_torch.name = "torch"; in lm355x_probe()
494 chip->cdev_torch.max_brightness = 8; in lm355x_probe()
495 chip->cdev_torch.brightness_set = lm355x_torch_brightness_set; in lm355x_probe()
496 chip->cdev_torch.default_trigger = "torch"; in lm355x_probe()
498 &client->dev, &chip->cdev_torch); in lm355x_probe()
502 INIT_WORK(&chip->work_indicator, in lm355x_probe()
504 chip->cdev_indicator.name = "indicator"; in lm355x_probe()
506 chip->cdev_indicator.max_brightness = 4; in lm355x_probe()
508 chip->cdev_indicator.max_brightness = 8; in lm355x_probe()
509 chip->cdev_indicator.brightness_set = lm355x_indicator_brightness_set; in lm355x_probe()
512 chip->cdev_indicator.groups = lm355x_indicator_groups; in lm355x_probe()
514 &client->dev, &chip->cdev_indicator); in lm355x_probe()
523 led_classdev_unregister(&chip->cdev_torch); in lm355x_probe()
525 led_classdev_unregister(&chip->cdev_flash); in lm355x_probe()
532 struct lm355x_chip_data *chip = i2c_get_clientdata(client); in lm355x_remove() local
533 struct lm355x_reg_data *preg = chip->regs; in lm355x_remove()
535 regmap_write(chip->regmap, preg[REG_OPMODE].regno, 0); in lm355x_remove()
536 led_classdev_unregister(&chip->cdev_indicator); in lm355x_remove()
537 flush_work(&chip->work_indicator); in lm355x_remove()
538 led_classdev_unregister(&chip->cdev_torch); in lm355x_remove()
539 flush_work(&chip->work_torch); in lm355x_remove()
540 led_classdev_unregister(&chip->cdev_flash); in lm355x_remove()
541 flush_work(&chip->work_flash); in lm355x_remove()
542 dev_info(&client->dev, "%s is removed\n", lm355x_name[chip->type]); in lm355x_remove()