Skip to content
Snippets Groups Projects
Commit daa75b34 authored by Dirk Eibach's avatar Dirk Eibach Committed by Tom Rini
Browse files

i2c: Fix pca953x endianess issue


By reading 2 consecutive bytes from i2c to an u16 value
we have an endianess issue.

Signed-off-by: default avatarDirk Eibach <dirk.eibach@gdsys.cc>
parent 37b33254
No related branches found
No related tags found
No related merge requests found
...@@ -88,8 +88,10 @@ static int pca953x_reg_write(uint8_t chip, uint addr, uint mask, uint data) ...@@ -88,8 +88,10 @@ static int pca953x_reg_write(uint8_t chip, uint addr, uint mask, uint data)
if (i2c_read(chip, addr << 1, 1, (u8*)&valw, 2)) if (i2c_read(chip, addr << 1, 1, (u8*)&valw, 2))
return -1; return -1;
valw = le16_to_cpu(valw);
valw &= ~mask; valw &= ~mask;
valw |= data; valw |= data;
valw = cpu_to_le16(valw);
return i2c_write(chip, addr << 1, 1, (u8*)&valw, 2); return i2c_write(chip, addr << 1, 1, (u8*)&valw, 2);
} }
...@@ -107,7 +109,7 @@ static int pca953x_reg_read(uint8_t chip, uint addr, uint *data) ...@@ -107,7 +109,7 @@ static int pca953x_reg_read(uint8_t chip, uint addr, uint *data)
} else { } else {
if (i2c_read(chip, addr << 1, 1, (u8*)&valw, 2)) if (i2c_read(chip, addr << 1, 1, (u8*)&valw, 2))
return -1; return -1;
*data = (int)valw; *data = (uint)le16_to_cpu(valw);
} }
return 0; return 0;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment