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: Mathieu Othacehe <m.othacehe@gmail.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
Родитель
18dfb53263
Коммит
816956c32d
|
@ -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;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче