static ssize_t attr_flash_sync_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=%lu\n",
				__func__, enable);
		return -EINVAL;
	}

	result = lm3561_set_flash_sync(data,
			       enable ? LM3561_SYNC_ON : LM3561_SYNC_OFF);

	if (result)
		return result;

	return size;
}
static int lm3561_init_cfg1_register(struct lm3561_drv_data *data,
					struct lm3561_platform_data *pdata)
{
	int result;

	result = lm3561_set_reg_data(data,
				LM3561_REG_CFG_1,
				LM3561_CFG_1_MASK,
				LM3561_CFG1_STROBE_INPUT_ENABLE);
	if (result)
		return result;

	result = lm3561_set_flash_sync(data, pdata->flash_sync);

	return result;
}
static ssize_t attr_flash_sync_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;
	}
	if (enable && data->on_duty == DUTY_ON_SYNC) {
		dev_dbg(&data->client->dev, "%s: already enabled\n", __func__);
		return size;
	}
	result = pm_enable_lock(data);
	if (result)
		goto err;
	result = lm3561_set_flash_sync(data,
			       enable ? LM3561_SYNC_ON : LM3561_SYNC_OFF);
	data->on_duty = !result && enable ? DUTY_ON_SYNC : DUTY_ON_NOTHING;
	if (!data->on_duty) {
		pm_runtime_mark_last_busy(&data->client->dev);
		pm_runtime_put_autosuspend(&data->client->dev);
	}
err:
	mutex_unlock(&data->lock);
	return result ? result : size;
}