On Sat, Aug 3, 2013 at 5:24 AM, Graeme Smecher <[email protected]> wrote: > The pca957x driver supports a handful of I2C GPIO expanders from NXP, Maxim, > and TI. For the PCA9574 and PCA9575 devices only, the driver resets the GPIO > level and direction in the pca957x_probe function. This seems like the wrong > thing to do, since it can cause hardware bit twiddles during warm reboots when > the chip state and reset values don't match. > > This kind of initialization is best left upstream (in a bootloader) or > downstream (in userspace). It's also an inconsistency across devices supported > by this driver. > > Signed-off-by: Graeme Smecher <[email protected]> > Cc: Grant Likely <[email protected]> > Cc: Haojian Zhuang <[email protected]> > --- > drivers/gpio/gpio-pca953x.c | 11 ----------- > 1 file changed, 11 deletions(-) > > diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c > index 426c51d..47c08d8 100644 > --- a/drivers/gpio/gpio-pca953x.c > +++ b/drivers/gpio/gpio-pca953x.c > @@ -683,17 +683,6 @@ static int device_pca957x_init(struct pca953x_chip > *chip, u32 invert) > int ret; > u8 val[MAX_BANK]; > > - /* Let every port in proper state, that could save power */ > - memset(val, 0, NBANK(chip)); > - pca953x_write_regs(chip, PCA957X_PUPD, val); > - memset(val, 0xFF, NBANK(chip)); > - pca953x_write_regs(chip, PCA957X_CFG, val); > - memset(val, 0, NBANK(chip)); > - pca953x_write_regs(chip, PCA957X_OUT, val); > - > - ret = pca953x_read_regs(chip, PCA957X_IN, val); > - if (ret) > - goto out; > ret = pca953x_read_regs(chip, PCA957X_OUT, chip->reg_output); > if (ret) > goto out; > -- > 1.7.10.4 >
Acked-by: Haojian Zhuang <[email protected]> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

