Message ID | 1459320554-2455-1-git-send-email-sdliyong@gmail.com |
---|---|
State | New |
Headers | show |
On 30/03/2016 2:49 PM, Yong Li wrote: > 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 > > Signed-off-by: Yong Li <sdliyong@gmail.com> Reviewed-by: Phil Reid <preid@electromag.com.au> > --- > drivers/gpio/gpio-pca953x.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c > index d0d3065..e66084c 100644 > --- a/drivers/gpio/gpio-pca953x.c > +++ b/drivers/gpio/gpio-pca953x.c > @@ -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> > > @@ -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, >
On Wed, Mar 30, 2016 at 8:49 AM, Yong Li <sdliyong@gmail.com> wrote: > 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 > > Signed-off-by: Yong Li <sdliyong@gmail.com> Patch applied to fixes with Phil's review tag. It is a regression, right? Should it be tagged for stable? Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Yes it is a regression. I think it should be tagged for stable too Thanks, Yong 2016-04-01 20:51 GMT+08:00 Linus Walleij <linus.walleij@linaro.org>: > On Wed, Mar 30, 2016 at 8:49 AM, Yong Li <sdliyong@gmail.com> wrote: > >> 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 >> >> Signed-off-by: Yong Li <sdliyong@gmail.com> > > Patch applied to fixes with Phil's review tag. > > It is a regression, right? > > Should it be tagged for stable? > > Yours, > Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c index d0d3065..e66084c 100644 --- a/drivers/gpio/gpio-pca953x.c +++ b/drivers/gpio/gpio-pca953x.c @@ -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> @@ -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,
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 Signed-off-by: Yong Li <sdliyong@gmail.com> --- drivers/gpio/gpio-pca953x.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)