First round of IIO fixes for the 3.19 cycle.
* ad799x fix ad7991/ad7995/ad7999 setup as they do not have a configuration register to write to. It is written during the convesion sequence. As such we don't want to write to it at other times. * Fix iio_channel_read utility function to return to ensure it is apparent if the relevant element is not there. This avoids using a wrong value if some channels have the element and others do not. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABCAAGBQJUqvMpAAoJEFSFNJnE9BaIuCMP+gIEdqqtPZAs7TH/tkQx0aqN DerVFgVwDrXFwAPKWYdwinE/u7qyRI77tNAo2f/QR4NBG1sjHc6FHhpgDCK2jPbh 6QMQ64WH8svXlacStZTb45il2sh419tUj8BQeld8MjpqdpWK4RW8Ca4q8XjlmehG S4EyEHvYj/MQWpDy84RZEYEYlmeWhghxo2FGIWG2gKJ63Ejyo6kwjlxTJiNafj9/ YN+J+C6J9r7o2mLuDtucslnGg6rTedLW7UijLAHGxfzAJFqjaMDGD0RZXgpEpfkx wRca7M0537psXuBy3onGXQTEKy72GP3Km9A/0yojbCWMj2OKI0LPSW7oTnWQ6gCw +V1ius+wPWSJ8PdRLZvp2hsWgZK9jE0zUSHsuB41ZJARTpsbExW56y8QOHSM1oX1 3cmrhz6410qx8qe+qn8UwLIzJZCTbA71B4kdh6OiBmIUfV6CZBcwYOvrGKd9hGj/ zmNl427NwhzgxO/OXeD5+lQR1tL2wVaKlrGFcwcMghCHno/c7o8aP8QuIYHkpNmq 7f7ebIXpNHZHskGVacLFECRrZMEkVmq49b3PMIH+4zCgFTLtIBX8MS7VzGutThWw 5ok1iUaG6aXh2jY8USYt3nCRi8DQoOSjJ5SXI1U3X6gS2tworeqmtMw9yTuc1juK s+XDwVFMJao56MdrzDyO =7f+n -----END PGP SIGNATURE----- Merge tag 'iio-fixes-for-3.19a' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-linus Jonathan writes: First round of IIO fixes for the 3.19 cycle. * ad799x fix ad7991/ad7995/ad7999 setup as they do not have a configuration register to write to. It is written during the convesion sequence. As such we don't want to write to it at other times. * Fix iio_channel_read utility function to return to ensure it is apparent if the relevant element is not there. This avoids using a wrong value if some channels have the element and others do not.
This commit is contained in:
commit
8ecb55b849
|
@ -143,9 +143,15 @@ static int ad799x_write_config(struct ad799x_state *st, u16 val)
|
|||
case ad7998:
|
||||
return i2c_smbus_write_word_swapped(st->client, AD7998_CONF_REG,
|
||||
val);
|
||||
default:
|
||||
case ad7992:
|
||||
case ad7993:
|
||||
case ad7994:
|
||||
return i2c_smbus_write_byte_data(st->client, AD7998_CONF_REG,
|
||||
val);
|
||||
default:
|
||||
/* Will be written when doing a conversion */
|
||||
st->config = val;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -155,8 +161,13 @@ static int ad799x_read_config(struct ad799x_state *st)
|
|||
case ad7997:
|
||||
case ad7998:
|
||||
return i2c_smbus_read_word_swapped(st->client, AD7998_CONF_REG);
|
||||
default:
|
||||
case ad7992:
|
||||
case ad7993:
|
||||
case ad7994:
|
||||
return i2c_smbus_read_byte_data(st->client, AD7998_CONF_REG);
|
||||
default:
|
||||
/* No readback support */
|
||||
return st->config;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -449,6 +449,9 @@ static int iio_channel_read(struct iio_channel *chan, int *val, int *val2,
|
|||
if (val2 == NULL)
|
||||
val2 = &unused;
|
||||
|
||||
if(!iio_channel_has_info(chan->channel, info))
|
||||
return -EINVAL;
|
||||
|
||||
if (chan->indio_dev->info->read_raw_multi) {
|
||||
ret = chan->indio_dev->info->read_raw_multi(chan->indio_dev,
|
||||
chan->channel, INDIO_MAX_RAW_ELEMENTS,
|
||||
|
|
Loading…
Reference in New Issue