Hi Sonic,
In some of your iio drivers you use cpu_to_be16(data) together with
i2c_smbus_write_word_data(). I think you should better use swab16().
Since cpu_to_be16(data) won’t flip bytes on BigEndian machines, however
Smbus spec by default transfers Low Byte first no matter which endian machine
is used.
case I2C_SMBUS_WORD_DATA:
if (read_write == I2C_SMBUS_READ)
msg[1].len = 2;
else {
msg[0].len=3;
msgbuf0[1] = data->word & 0xff;
msgbuf0[2] = data->word >> 8;
}
Correct me if I’m wrong - but I think bytes need to be always swapped, since
the AD parts expect high byte first.
Greetings,
Michael
Analog Devices GmbH Wilhelm-Wagenfeld-Str. 6 80807 Muenchen
Sitz der Gesellschaft Muenchen, Registergericht Muenchen HRB 4036
Geschaeftsfuehrer Thomas Wessel, William A. Martin, Margaret Seif
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits