Commit 816956c3 authored by Mathieu Othacehe's avatar Mathieu Othacehe Committed by Jonathan Cameron
Browse files

iio: vcnl4000: Factorize data reading and writing.



Factorize data reading in vcnl4000_measure into a vcnl4000_read_data
function. Also add a vcnl4000_write_data function.

Signed-off-by: default avatarMathieu Othacehe <m.othacehe@gmail.com>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 18dfb532
Loading
Loading
Loading
Loading
+22 −2
Original line number Diff line number Diff line
@@ -216,6 +216,27 @@ static int vcnl4200_init(struct vcnl4000_data *data)
	return 0;
};

static int vcnl4000_read_data(struct vcnl4000_data *data, u8 data_reg, int *val)
{
	s32 ret;

	ret = i2c_smbus_read_word_swapped(data->client, data_reg);
	if (ret < 0)
		return ret;

	*val = ret;
	return 0;
}

static int vcnl4000_write_data(struct vcnl4000_data *data, u8 data_reg, int val)
{
	if (val > U16_MAX)
		return -ERANGE;

	return i2c_smbus_write_word_swapped(data->client, data_reg, val);
}


static int vcnl4000_measure(struct vcnl4000_data *data, u8 req_mask,
				u8 rdy_mask, u8 data_reg, int *val)
{
@@ -246,12 +267,11 @@ static int vcnl4000_measure(struct vcnl4000_data *data, u8 req_mask,
		goto fail;
	}

	ret = i2c_smbus_read_word_swapped(data->client, data_reg);
	ret = vcnl4000_read_data(data, data_reg, val);
	if (ret < 0)
		goto fail;

	mutex_unlock(&data->vcnl4000_lock);
	*val = ret;

	return 0;