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

Reply via email to