[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