diff options
Diffstat (limited to 'drivers/iio/dac/ad5624r_spi.c')
| -rw-r--r-- | drivers/iio/dac/ad5624r_spi.c | 20 | 
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/iio/dac/ad5624r_spi.c b/drivers/iio/dac/ad5624r_spi.c index 714af757cd5..e8199cce2ae 100644 --- a/drivers/iio/dac/ad5624r_spi.c +++ b/drivers/iio/dac/ad5624r_spi.c @@ -50,15 +50,12 @@ static int ad5624r_read_raw(struct iio_dev *indio_dev,  			   long m)  {  	struct ad5624r_state *st = iio_priv(indio_dev); -	unsigned long scale_uv;  	switch (m) {  	case IIO_CHAN_INFO_SCALE: -		scale_uv = (st->vref_mv * 1000) >> chan->scan_type.realbits; -		*val =  scale_uv / 1000; -		*val2 = (scale_uv % 1000) * 1000; -		return IIO_VAL_INT_PLUS_MICRO; - +		*val = st->vref_mv; +		*val2 = chan->scan_type.realbits; +		return IIO_VAL_FRACTIONAL_LOG2;  	}  	return -EINVAL;  } @@ -163,8 +160,10 @@ static const struct iio_chan_spec_ext_info ad5624r_ext_info[] = {  		.name = "powerdown",  		.read = ad5624r_read_dac_powerdown,  		.write = ad5624r_write_dac_powerdown, +		.shared = IIO_SEPARATE,  	}, -	IIO_ENUM("powerdown_mode", true, &ad5624r_powerdown_mode_enum), +	IIO_ENUM("powerdown_mode", IIO_SHARED_BY_TYPE, +		 &ad5624r_powerdown_mode_enum),  	IIO_ENUM_AVAILABLE("powerdown_mode", &ad5624r_powerdown_mode_enum),  	{ },  }; @@ -177,7 +176,12 @@ static const struct iio_chan_spec_ext_info ad5624r_ext_info[] = {  	.info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \  	.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), \  	.address = (_chan), \ -	.scan_type = IIO_ST('u', (_bits), 16, 16 - (_bits)), \ +	.scan_type = { \ +		.sign = 'u', \ +		.realbits = (_bits), \ +		.storagebits = 16, \ +		.shift = 16 - (_bits), \ +	}, \  	.ext_info = ad5624r_ext_info, \  }  | 
