Skip to content

Commit

Permalink
gpio: pca953x: Unify pca95{3,7}x_write_regs_16()
Browse files Browse the repository at this point in the history
At this point, these two functions only differ in whether they do or do not
set the address increment bit on PCA9575. Merge these two functions together
to simplify the code a bit.

Signed-off-by: Marek Vasut <[email protected]>
Cc: Bartosz Golaszewski <[email protected]>
Signed-off-by: Linus Walleij <[email protected]>
  • Loading branch information
marex authored and linusw committed Dec 14, 2018
1 parent 8958262 commit 028a219
Showing 1 changed file with 5 additions and 11 deletions.
16 changes: 5 additions & 11 deletions drivers/gpio/gpio-pca953x.c
Original file line number Diff line number Diff line change
Expand Up @@ -208,14 +208,11 @@ static int pca953x_write_regs_8(struct pca953x_chip *chip, int reg, u8 *val)

static int pca953x_write_regs_16(struct pca953x_chip *chip, int reg, u8 *val)
{
u16 word = get_unaligned((u16 *)val);
u32 regaddr = (reg << 1);

return i2c_smbus_write_word_data(chip->client, reg << 1, word);
}

static int pca957x_write_regs_16(struct pca953x_chip *chip, int reg, u8 *val)
{
u32 regaddr = (reg << 1) | REG_ADDR_AI;
/* PCA9575 needs address-increment on multi-byte writes */
if (PCA_CHIP_TYPE(chip->driver_data) == PCA957X_TYPE)
regaddr |= REG_ADDR_AI;

return i2c_smbus_write_i2c_block_data(chip->client, regaddr,
NBANK(chip), val);
Expand Down Expand Up @@ -892,10 +889,7 @@ static int pca953x_probe(struct i2c_client *client,
chip->write_regs = pca953x_write_regs_24;
chip->read_regs = pca953x_read_regs_24;
} else {
if (PCA_CHIP_TYPE(chip->driver_data) == PCA953X_TYPE)
chip->write_regs = pca953x_write_regs_16;
else
chip->write_regs = pca957x_write_regs_16;
chip->write_regs = pca953x_write_regs_16;
chip->read_regs = pca953x_read_regs_16;
}

Expand Down

0 comments on commit 028a219

Please sign in to comment.