Skip to content

Commit

Permalink
gpio: pca953x: Use correct u16 value for register word write
Browse files Browse the repository at this point in the history
The current implementation only uses the first byte in val,
the second byte is always 0. Change it to use cpu_to_le16
to write the two bytes into the register

Cc: [email protected]
Signed-off-by: Yong Li <[email protected]>
Reviewed-by: Phil Reid <[email protected]>
Signed-off-by: Linus Walleij <[email protected]>
  • Loading branch information
yongli3 authored and linusw committed Apr 8, 2016
1 parent 159f3cd commit 9b8e3ec
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion drivers/gpio/gpio-pca953x.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include <linux/i2c.h>
#include <linux/platform_data/pca953x.h>
#include <linux/slab.h>
#include <asm/unaligned.h>
#include <linux/of_platform.h>
#include <linux/acpi.h>

Expand Down Expand Up @@ -159,7 +160,7 @@ static int pca953x_write_regs(struct pca953x_chip *chip, int reg, u8 *val)
switch (chip->chip_type) {
case PCA953X_TYPE:
ret = i2c_smbus_write_word_data(chip->client,
reg << 1, (u16) *val);
reg << 1, cpu_to_le16(get_unaligned((u16 *)val)));
break;
case PCA957X_TYPE:
ret = i2c_smbus_write_byte_data(chip->client, reg << 1,
Expand Down

0 comments on commit 9b8e3ec

Please sign in to comment.