On 09/04/16 12:12, Slawomir Stepien wrote:
> On Apr 08, 2016 23:27, Slawomir Stepien wrote:
>> +static int ds1803_read_raw(struct iio_dev *indio_dev,
>> +                        struct iio_chan_spec const *chan,
>> +                        int *val, int *val2, long mask)
>> +{
>> +    struct ds1803_data *data = iio_priv(indio_dev);
>> +    int pot = chan->channel;
>> +    int ret;
>> +    u16 result;
>> +
>> +    switch (mask) {
>> +    case IIO_CHAN_INFO_RAW:
>> +            ret = i2c_master_recv(data->client, (char *)&result,
>> +                            indio_dev->num_channels);
>> +            if (ret < 0)
>> +                    return ret;
>> +
>> +            /* Get bits for given pot */
>> +            *val = (pot == 0 ? result & 0xff : result >> 8);
>> +            return IIO_VAL_INT;
>> +
>> +    case IIO_CHAN_INFO_SCALE:
>> +            *val = 1000 * data->cfg->kohms;
>> +            *val2 = DS1803_MAX_POS;
>> +            return IIO_VAL_FRACTIONAL;
>> +    }
>> +
>> +    return -EINVAL;
>> +}
> 
> Or maybe this is more clean?
> 
> static int ds1803_read_raw(struct iio_dev *indio_dev,
>                           struct iio_chan_spec const *chan,
>                           int *val, int *val2, long mask)
> {
>       struct ds1803_data *data = iio_priv(indio_dev);
>       int pot = chan->channel;
>       int ret;
>       unsigned char result[indio_dev->num_channels];
I'd use  u8 to make it of an explicit size but otherwise this is indeed
a little bit cleaner.

> 
>       switch (mask) {
>       case IIO_CHAN_INFO_RAW:
>               ret = i2c_master_recv(data->client, result,
>                               indio_dev->num_channels);
>               if (ret < 0)
>                       return ret;
> 
>               *val = result[pot];
>               return IIO_VAL_INT;
> 
>       case IIO_CHAN_INFO_SCALE:
>               *val = 1000 * data->cfg->kohms;
>               *val2 = DS1803_MAX_POS;
>               return IIO_VAL_FRACTIONAL;
>       }
> 
>       return -EINVAL;
> }
> 
> What do you think?
> 

Reply via email to