Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+14 −14
Original line number Diff line number Diff line
@@ -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);