Commit 5a73882f authored by York Sun's avatar York Sun Committed by Wolfram Sang

i2c: mux: reg Change ioread endianness for readback

Reading the register (if allowed) after writing is to ensure writing
is completed on a posted bus. The endianness of reading doesn't matter.
Signed-off-by: default avatarYork Sun <yorksun@freescale.com>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
parent a05a34e7
......@@ -31,28 +31,28 @@ static int i2c_mux_reg_set(const struct regmux *mux, unsigned int chan_id)
if (!mux->data.reg)
return -EINVAL;
/*
* Write to the register, followed by a read to ensure the write is
* completed on a "posted" bus, for example PCI or write buffers.
* The endianness of reading doesn't matter and the return data
* is not used.
*/
switch (mux->data.reg_size) {
case 4:
if (mux->data.little_endian) {
if (mux->data.little_endian)
iowrite32(chan_id, mux->data.reg);
if (!mux->data.write_only)
ioread32(mux->data.reg);
} else {
else
iowrite32be(chan_id, mux->data.reg);
if (!mux->data.write_only)
ioread32(mux->data.reg);
}
if (!mux->data.write_only)
ioread32(mux->data.reg);
break;
case 2:
if (mux->data.little_endian) {
if (mux->data.little_endian)
iowrite16(chan_id, mux->data.reg);
if (!mux->data.write_only)
ioread16(mux->data.reg);
} else {
else
iowrite16be(chan_id, mux->data.reg);
if (!mux->data.write_only)
ioread16be(mux->data.reg);
}
if (!mux->data.write_only)
ioread16(mux->data.reg);
break;
case 1:
iowrite8(chan_id, mux->data.reg);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment