[OpenWrt-Devel] [PATCH] CC: brcm63xx: backport fix gpio ephy-reset

dani dgcbueu at gmail.com
Sat Dec 12 08:15:58 EST 2015


ephy-reset, which uses a GPIO for enabling external ethernet phys, is broken. 
This patch fix the problem. 

This problem causes in boards with external phys with a reset pin connected to gpio, are
initialized without lan interfaces. 

The line 
ephy_reset.table[0].chip_label = gpio_chip_labels[hw_gpio / 32];
always returns bcm63xx-gpio.1. As a result of this, reset pins connected to gpios <32
will return messages "gpio X out of range", and ethernet fails to initialize.

The array *gpio_chip_labels[] should be initialized with different names for each element, 
otherwise sprintf will copy the label of the gpio chip for both elements at the same time. 
And the name of both elements of the array will be the same.

Using a different name on the second array element solves the problem.
Signed-off-by: Daniel Gonzalez <dgcbueu at gmail.com>
diff --git a/target/linux/brcm63xx/patches-3.18/377-MIPS-BCM63XX-register-lookup-for-ephy-reset-gpio.patch b/target/linux/brcm63xx/patches-3.18/377-MIPS-BCM63XX-register-lookup-for-ephy-reset-gpio.patch
index 30f6ba5..40d3f3f 100644
--- a/target/linux/brcm63xx/patches-3.18/377-MIPS-BCM63XX-register-lookup-for-ephy-reset-gpio.patch
+++ b/target/linux/brcm63xx/patches-3.18/377-MIPS-BCM63XX-register-lookup-for-ephy-reset-gpio.patch
@@ -61,7 +61,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
 +/* for registering lookups; make them large enough to hold OF names */
 +static char *gpio_chip_labels[] = {
 +	"xxxxxxxx.gpio-controller",
-+	"xxxxxxxx.gpio-controller",
++	"yyyyyyyy.gpio-controller",
 +};
 +
  static void __init bcm63xx_gpio_init_one(int id, int dir, int data, int ngpio)
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list