iio: proximity: vcnl3020: remove iio_claim/release_direct
Remove iio_claim/release and change it on mutex accordingly in vcnl3020_write_proxy_samp_freq. Signed-off-by: Ivan Mikhaylov <i.mikhaylov@yadro.com> Link: https://lore.kernel.org/r/20210722154420.915082-4-i.mikhaylov@yadro.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
3363fbbe19
commit
7ff98c8afa
@ -236,10 +236,15 @@ static int vcnl3020_write_proxy_samp_freq(struct vcnl3020_data *data, int val,
|
|||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
int index = -1;
|
int index = -1;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
mutex_lock(&data->lock);
|
||||||
|
|
||||||
/* Protect against event capture. */
|
/* Protect against event capture. */
|
||||||
if (vcnl3020_is_in_periodic_mode(data))
|
if (vcnl3020_is_in_periodic_mode(data)) {
|
||||||
return -EBUSY;
|
rc = -EBUSY;
|
||||||
|
goto err_unlock;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(vcnl3020_prox_sampling_frequency); i++) {
|
for (i = 0; i < ARRAY_SIZE(vcnl3020_prox_sampling_frequency); i++) {
|
||||||
if (val == vcnl3020_prox_sampling_frequency[i][0] &&
|
if (val == vcnl3020_prox_sampling_frequency[i][0] &&
|
||||||
@ -249,10 +254,20 @@ static int vcnl3020_write_proxy_samp_freq(struct vcnl3020_data *data, int val,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (index < 0)
|
if (index < 0) {
|
||||||
return -EINVAL;
|
rc = -EINVAL;
|
||||||
|
goto err_unlock;
|
||||||
|
}
|
||||||
|
|
||||||
return regmap_write(data->regmap, VCNL_PROXIMITY_RATE, index);
|
rc = regmap_write(data->regmap, VCNL_PROXIMITY_RATE, index);
|
||||||
|
if (rc)
|
||||||
|
dev_err(data->dev,
|
||||||
|
"Error (%d) writing proximity rate register\n", rc);
|
||||||
|
|
||||||
|
err_unlock:
|
||||||
|
mutex_unlock(&data->lock);
|
||||||
|
|
||||||
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool vcnl3020_is_thr_enabled(struct vcnl3020_data *data)
|
static bool vcnl3020_is_thr_enabled(struct vcnl3020_data *data)
|
||||||
@ -513,17 +528,11 @@ static int vcnl3020_write_raw(struct iio_dev *indio_dev,
|
|||||||
struct iio_chan_spec const *chan,
|
struct iio_chan_spec const *chan,
|
||||||
int val, int val2, long mask)
|
int val, int val2, long mask)
|
||||||
{
|
{
|
||||||
int rc;
|
|
||||||
struct vcnl3020_data *data = iio_priv(indio_dev);
|
struct vcnl3020_data *data = iio_priv(indio_dev);
|
||||||
|
|
||||||
switch (mask) {
|
switch (mask) {
|
||||||
case IIO_CHAN_INFO_SAMP_FREQ:
|
case IIO_CHAN_INFO_SAMP_FREQ:
|
||||||
rc = iio_device_claim_direct_mode(indio_dev);
|
return vcnl3020_write_proxy_samp_freq(data, val, val2);
|
||||||
if (rc)
|
|
||||||
return rc;
|
|
||||||
rc = vcnl3020_write_proxy_samp_freq(data, val, val2);
|
|
||||||
iio_device_release_direct_mode(indio_dev);
|
|
||||||
return rc;
|
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user