mirror of https://gitee.com/openkylin/linux.git
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: York Sun <yorksun@freescale.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:
parent
a05a34e7f6
commit
5a73882fd2
|
@ -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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
ioread16(mux->data.reg);
|
||||
break;
|
||||
case 1:
|
||||
iowrite8(chan_id, mux->data.reg);
|
||||
|
|
Loading…
Reference in New Issue