diff options
Diffstat (limited to 'drivers/iio/light/apds9960.c')
| -rw-r--r-- | drivers/iio/light/apds9960.c | 16 | 
1 files changed, 7 insertions, 9 deletions
| diff --git a/drivers/iio/light/apds9960.c b/drivers/iio/light/apds9960.c index df0647856e5d..4141c0fa7bc4 100644 --- a/drivers/iio/light/apds9960.c +++ b/drivers/iio/light/apds9960.c @@ -988,7 +988,6 @@ static int apds9960_probe(struct i2c_client *client,  			  const struct i2c_device_id *id)  {  	struct apds9960_data *data; -	struct iio_buffer *buffer;  	struct iio_dev *indio_dev;  	int ret; @@ -996,19 +995,18 @@ static int apds9960_probe(struct i2c_client *client,  	if (!indio_dev)  		return -ENOMEM; -	buffer = devm_iio_kfifo_allocate(&client->dev); -	if (!buffer) -		return -ENOMEM; - -	iio_device_attach_buffer(indio_dev, buffer); -  	indio_dev->info = &apds9960_info;  	indio_dev->name = APDS9960_DRV_NAME;  	indio_dev->channels = apds9960_channels;  	indio_dev->num_channels = ARRAY_SIZE(apds9960_channels);  	indio_dev->available_scan_masks = apds9960_scan_masks; -	indio_dev->modes = (INDIO_BUFFER_SOFTWARE | INDIO_DIRECT_MODE); -	indio_dev->setup_ops = &apds9960_buffer_setup_ops; +	indio_dev->modes = INDIO_DIRECT_MODE; + +	ret = devm_iio_kfifo_buffer_setup(&client->dev, indio_dev, +					  INDIO_BUFFER_SOFTWARE, +					  &apds9960_buffer_setup_ops); +	if (ret) +		return ret;  	data = iio_priv(indio_dev);  	i2c_set_clientdata(client, indio_dev); | 
