Pushpal Sidhu schrieb am 09.10.2014 02:51:
> This fix is for anyone on 3.10 using the pca953x driver. A regression
> was introduced when this driver was converted to using 8-bit
> reads/writes the bitmask in pca953x_gpio_get_value wasn't adjusted with
> the modulus BANK_SZ and consequently looks at the wrong bits in the
> input register.
> 
> This backports the following commit from the mainline linux kernel:
> 40a625daa88653d7942dc85483f6f289cd687cb7
I totally support getting this fix in, but I think the format you attempt to 
use is in conflict to what target/linux/generic/PATCHES states. First, I would 
recommend to number it according to "0xx - upstream backports", 004 seems to be 
free. Second, I would actually put the content of [1] into that patch file, as 
it contains all the useful information of when it was created originally and 
who was involved.

[1] 
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/patch/drivers/gpio/gpio-pca953x.c?id=40a625daa88653d7942dc85483f6f289cd687cb7
> 
> Signed-off-by: Pushpal Sidhu <psi...@gateworks.com>
> ---
>  .../350-gpio-pca953x-fix_gpio_input_on_gpio_offsets.patch   | 13 
> +++++++++++++
>  1 file changed, 13 insertions(+)
>  create mode 100644 
> target/linux/generic/patches-3.10/350-gpio-pca953x-fix_gpio_input_on_gpio_offsets.patch
> 
> diff --git 
> a/target/linux/generic/patches-3.10/350-gpio-pca953x-fix_gpio_input_on_gpio_offsets.patch
>  
> b/target/linux/generic/patches-3.10/350-gpio-pca953x-fix_gpio_input_on_gpio_offsets.patch
> new file mode 100644
> index 0000000..654fccf
> --- /dev/null
> +++ 
> b/target/linux/generic/patches-3.10/350-gpio-pca953x-fix_gpio_input_on_gpio_offsets.patch
> @@ -0,0 +1,13 @@
> +Index: linux-3.10.49/drivers/gpio/gpio-pca953x.c
> +===================================================================
> +--- linux-3.10.49.orig/drivers/gpio/gpio-pca953x.c   2014-07-17 
> 15:58:15.000000000 -0700
> ++++ linux-3.10.49/drivers/gpio/gpio-pca953x.c        2014-10-08 
> 14:49:46.974913692 -0700
> +@@ -308,7 +308,7 @@
> +             return 0;
> +     }
> + 
> +-    return (reg_val & (1u << off)) ? 1 : 0;
> ++    return (reg_val & (1u << (off % BANK_SZ))) ? 1 : 0;
> + }
> + 
> + static void pca953x_gpio_set_value(struct gpio_chip *gc, unsigned off, int 
> val)
> 
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to