static ssize_t attr_flash_enable_store(struct device *dev,
					struct device_attribute *attr,
					const char *buf, size_t size)
{
	struct lm3561_drv_data *data = dev_get_drvdata(dev);
	unsigned long enable;
	int result;

	result = strict_strtoul(buf, 10, &enable);
	if (result) {
		dev_err(&data->client->dev,
			"%s(): strtoul failed, result=%d\n",
				__func__, result);
		return -EINVAL;
	}

	if (1 < enable) {
		dev_err(&data->client->dev,
			"%s(): 1 < enable, enable=%d\n",
				__func__, enable);
		return -EINVAL;
	}

	result = lm3561_flash_mode(data, (unsigned)enable);

	if (result)
		return result;

	return size;
}
static ssize_t attr_flash_enable_store(struct device *dev,
					struct device_attribute *attr,
					const char *buf, size_t size)
{
	struct lm3561_drv_data *data = dev_get_drvdata(dev);
	unsigned long enable;
	int result;

	result = strict_strtoul(buf, 10, &enable);
	if (result) {
		dev_err(&data->client->dev,
			"%s(): strtoul failed, result=%d\n",
				__func__, result);
		return -EINVAL;
	}

	if (1 < enable) {
		dev_err(&data->client->dev,
			"%s(): 1 < enable, enable=%ld\n",
				__func__, enable);
		return -EINVAL;
	}
	mutex_lock(&data->lock);
	if (data->on_duty == DUTY_ON_NOTHING)
		result = pm_runtime_get_sync(&data->client->dev);
	else
		data->on_duty = DUTY_ON_NOTHING;
	mutex_unlock(&data->lock);
	if (result < 0)
		goto err;
	result = lm3561_flash_mode(data, (unsigned)enable);
	pm_runtime_mark_last_busy(&data->client->dev);
	pm_runtime_put_autosuspend(&data->client->dev);
err:
	return result ? result : size;
}