/* flash config for sm5701*/ static ssize_t sm5701_flash_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t size) { ssize_t ret; /* struct led_classdev *led_cdev = dev_get_drvdata(dev); struct SM5701_leds_data *chip = container_of(led_cdev, struct SM5701_leds_data, work_flash);*/ unsigned int state; ret = kstrtouint(buf, 10, &state); if (ret) goto out_strtoint; if (state == 0) { sm5701_led_ready(LED_DISABLE); sm5701_set_fleden(SM5701_FLEDEN_DISABLED); } else if (state == 1) { sm5701_led_ready(FLASH_MODE); sm5701_set_fleden(SM5701_FLEDEN_ON_FLASH); } else { sm5701_led_ready(LED_DISABLE); sm5701_set_fleden(SM5701_FLEDEN_DISABLED); } //sm5701_dump_register(); return size; out_strtoint: /*dev_err(chip->dev, "%s: fail to change str to int\n", __func__);*/ return ret; }
/* brightness control */ static int sm5701_brightness_control(struct SM5701_leds_data *chip, u8 brightness, enum sm5701_flash_mode flash_mode) { switch (flash_mode) { case NONE_MODE: break; case FLASH_MODE: sm5701_set_ifled(brightness); sm5701_set_fleden(SM5701_FLEDEN_ON_FLASH); break; case MOVIE_MODE: sm5701_set_imled(brightness); sm5701_set_fleden(SM5701_FLEDEN_ON_MOVIE); break; default: break; } if(0 == brightness) flash_mode = NONE_MODE; sm5701_led_ready(flash_mode); return flash_mode; }