Re: [PATCH 2/4] staging:iio:dac:ad5791: Allow asymmetrical reference voltages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Oct 19, 2011 at 05:47:50PM +0200, Lars-Peter Clausen wrote:
> @@ -225,6 +226,7 @@ static int ad5791_read_raw(struct iio_dev *indio_dev,
>  			   long m)
>  {
>  	struct ad5791_state *st = iio_priv(indio_dev);
> +	u64 val64;
>  	int ret;
>  
>  	switch (m) {
> @@ -234,12 +236,16 @@ static int ad5791_read_raw(struct iio_dev *indio_dev,
>  			return ret;
>  		*val &= AD5791_DAC_MASK;
>  		*val >>= chan->scan_type.shift;
> -		*val -= (1 << (chan->scan_type.realbits - 1));
>  		return IIO_VAL_INT;
>  	case (1 << IIO_CHAN_INFO_SCALE_SHARED):
>  		*val = 0;
>  		*val2 = (st->vref_mv * 1000) >> chan->scan_type.realbits;
>  		return IIO_VAL_INT_PLUS_MICRO;
> +	case (1 << IIO_CHAN_INFO_OFFSET_SHARED):
> +		val64 = (((u64)st->vref_neg_mv) << chan->scan_type.realbits);
> +		do_div(val64, st->vref_mv);
> +		*val = -val64;
> +		return IIO_VAL_INT;

Why does iio use switch over a bitfield?  If the values are mutually
exclusive then why not just use an enum?

Hm...  "m" stands for mask and it gets created using the
IIO_UNMOD_EVENT_CODE() macro or sometimes it's just one bit at a
time copied from &chan->info_mask...  Odd.

regards,
dan carpenter

_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel


[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux