[U-Boot] [PATCH] dm: gpio: pca953x: Support PCA953X with 40 GPIOs
Peng Fan
van.freenix at gmail.com
Tue Apr 26 03:45:58 CEST 2016
Hi Mario,
On Mon, Apr 25, 2016 at 03:25:37PM +0200, Mario Six wrote:
>A DM driver for PCA953x was recently introduced by Peng Fan, which lacked
>support for the 40 GPIO versions.
>
>This patch adds support for these chips.
>
>Signed-off-by: Mario Six <mario.six at gdsys.cc>
Looks fine to me.
Reviewed-by: Peng Fan <van.freenix at gmail.com>
>---
> drivers/gpio/pca953x_gpio.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
>diff --git a/drivers/gpio/pca953x_gpio.c b/drivers/gpio/pca953x_gpio.c
>index 987d10e..065b181 100644
>--- a/drivers/gpio/pca953x_gpio.c
>+++ b/drivers/gpio/pca953x_gpio.c
>@@ -16,8 +16,8 @@
> *
> * TODO:
> * 1. Support PCA957X_TYPE
>- * 2. Support max 40 gpio pins
>- * 3. Support Plolarity Inversion
>+ * 2. Support 24 gpio pins
>+ * 3. Support Polarity Inversion
> */
>
> #include <common.h>
>@@ -47,7 +47,7 @@ enum {
> PCA953X_DIRECTION_OUT,
> };
>
>-#define MAX_BANK 3
>+#define MAX_BANK 5
> #define BANK_SZ 8
>
> DECLARE_GLOBAL_DATA_PTR;
>@@ -121,6 +121,9 @@ static int pca953x_read_regs(struct udevice *dev, int reg, u8 *val)
> ret = dm_i2c_read(dev, reg, val, 1);
> } else if (info->gpio_count <= 16) {
> ret = dm_i2c_read(dev, reg << 1, val, info->bank_count);
>+ } else if (info->gpio_count == 40) {
>+ /* Auto increment */
>+ ret = dm_i2c_read(dev, (reg << 3) | 0x80, val, info->bank_count);
> } else {
> dev_err(dev, "Unsupported now\n");
> return -EINVAL;
>--
>2.7.0.GIT
>
More information about the U-Boot
mailing list