Author: jogo Date: 2016-01-18 11:46:50 +0100 (Mon, 18 Jan 2016) New Revision: 48303
Modified: trunk/target/linux/brcm63xx/patches-4.1/377-MIPS-BCM63XX-register-lookup-for-ephy-reset-gpio.patch trunk/target/linux/brcm63xx/patches-4.1/378-MIPS-BCM63XX-do-not-register-gpio-controller-if-pres.patch trunk/target/linux/brcm63xx/patches-4.4/377-MIPS-BCM63XX-register-lookup-for-ephy-reset-gpio.patch trunk/target/linux/brcm63xx/patches-4.4/378-MIPS-BCM63XX-do-not-register-gpio-controller-if-pres.patch Log: brcm63xx: fix platform gpio lookups for gpios < 32 Overwriting static strings is never a good idea, especially expecting identical strings to be stored in different memory locations. This caused the lookups to always return the second chip's name. Fix this by just initializing the lookup with the right values, so we don't need to modify the strings at all. Signed-off-by: Jonas Gorski <[email protected]> Modified: trunk/target/linux/brcm63xx/patches-4.1/377-MIPS-BCM63XX-register-lookup-for-ephy-reset-gpio.patch =================================================================== --- trunk/target/linux/brcm63xx/patches-4.1/377-MIPS-BCM63XX-register-lookup-for-ephy-reset-gpio.patch 2016-01-18 10:46:47 UTC (rev 48302) +++ trunk/target/linux/brcm63xx/patches-4.1/377-MIPS-BCM63XX-register-lookup-for-ephy-reset-gpio.patch 2016-01-18 10:46:50 UTC (rev 48303) @@ -42,7 +42,7 @@ } --- a/arch/mips/bcm63xx/gpio.c +++ b/arch/mips/bcm63xx/gpio.c -@@ -8,15 +8,24 @@ +@@ -8,15 +8,23 @@ * Copyright (C) Jonas Gorski <[email protected]> */ @@ -58,24 +58,15 @@ #include <bcm63xx_gpio.h> #include <bcm63xx_regs.h> -+/* for registering lookups; make them large enough to hold OF names */ -+static char *gpio_chip_labels[] = { -+ "xxxxxxxx.gpio-controller", -+ "xxxxxxxx.gpio-controller", ++static const char * const gpio_chip_labels[] = { ++ "bcm63xx-gpio.0", ++ "bcm63xx-gpio.1", +}; + static void __init bcm63xx_gpio_init_one(int id, int dir, int data, int ngpio) { struct resource res[2]; -@@ -40,6 +49,7 @@ static void __init bcm63xx_gpio_init_one - pdata.base = id * 32; - pdata.ngpio = ngpio; - -+ sprintf(gpio_chip_labels[id], "bcm63xx-gpio.%d", id); - platform_device_register_resndata(NULL, "bcm63xx-gpio", id, res, 2, - &pdata, sizeof(pdata)); - } -@@ -64,3 +74,25 @@ int __init bcm63xx_gpio_init(void) +@@ -64,3 +72,25 @@ int __init bcm63xx_gpio_init(void) return 0; } Modified: trunk/target/linux/brcm63xx/patches-4.1/378-MIPS-BCM63XX-do-not-register-gpio-controller-if-pres.patch =================================================================== --- trunk/target/linux/brcm63xx/patches-4.1/378-MIPS-BCM63XX-do-not-register-gpio-controller-if-pres.patch 2016-01-18 10:46:47 UTC (rev 48302) +++ trunk/target/linux/brcm63xx/patches-4.1/378-MIPS-BCM63XX-do-not-register-gpio-controller-if-pres.patch 2016-01-18 10:46:50 UTC (rev 48303) @@ -17,13 +17,13 @@ +#include "boards/board_common.h" + - /* for registering lookups; make them large enough to hold OF names */ - static char *gpio_chip_labels[] = { - "xxxxxxxx.gpio-controller", -@@ -50,8 +52,9 @@ static void __init bcm63xx_gpio_init_one + static const char * const gpio_chip_labels[] = { + "bcm63xx-gpio.0", + "bcm63xx-gpio.1", +@@ -48,8 +50,9 @@ static void __init bcm63xx_gpio_init_one + pdata.base = id * 32; pdata.ngpio = ngpio; - sprintf(gpio_chip_labels[id], "bcm63xx-gpio.%d", id); - platform_device_register_resndata(NULL, "bcm63xx-gpio", id, res, 2, - &pdata, sizeof(pdata)); + if (!board_of_device_present("gpio0")) Modified: trunk/target/linux/brcm63xx/patches-4.4/377-MIPS-BCM63XX-register-lookup-for-ephy-reset-gpio.patch =================================================================== --- trunk/target/linux/brcm63xx/patches-4.4/377-MIPS-BCM63XX-register-lookup-for-ephy-reset-gpio.patch 2016-01-18 10:46:47 UTC (rev 48302) +++ trunk/target/linux/brcm63xx/patches-4.4/377-MIPS-BCM63XX-register-lookup-for-ephy-reset-gpio.patch 2016-01-18 10:46:50 UTC (rev 48303) @@ -42,7 +42,7 @@ } --- a/arch/mips/bcm63xx/gpio.c +++ b/arch/mips/bcm63xx/gpio.c -@@ -8,15 +8,24 @@ +@@ -8,15 +8,23 @@ * Copyright (C) Jonas Gorski <[email protected]> */ @@ -58,24 +58,15 @@ #include <bcm63xx_gpio.h> #include <bcm63xx_regs.h> -+/* for registering lookups; make them large enough to hold OF names */ -+static char *gpio_chip_labels[] = { -+ "xxxxxxxx.gpio-controller", -+ "xxxxxxxx.gpio-controller", ++static const char * const gpio_chip_labels[] = { ++ "bcm63xx-gpio.0", ++ "bcm63xx-gpio.1", +}; + static void __init bcm63xx_gpio_init_one(int id, int dir, int data, int ngpio) { struct resource res[2]; -@@ -40,6 +49,7 @@ static void __init bcm63xx_gpio_init_one - pdata.base = id * 32; - pdata.ngpio = ngpio; - -+ sprintf(gpio_chip_labels[id], "bcm63xx-gpio.%d", id); - platform_device_register_resndata(NULL, "bcm63xx-gpio", id, res, 2, - &pdata, sizeof(pdata)); - } -@@ -64,3 +74,25 @@ int __init bcm63xx_gpio_init(void) +@@ -64,3 +72,25 @@ int __init bcm63xx_gpio_init(void) return 0; } Modified: trunk/target/linux/brcm63xx/patches-4.4/378-MIPS-BCM63XX-do-not-register-gpio-controller-if-pres.patch =================================================================== --- trunk/target/linux/brcm63xx/patches-4.4/378-MIPS-BCM63XX-do-not-register-gpio-controller-if-pres.patch 2016-01-18 10:46:47 UTC (rev 48302) +++ trunk/target/linux/brcm63xx/patches-4.4/378-MIPS-BCM63XX-do-not-register-gpio-controller-if-pres.patch 2016-01-18 10:46:50 UTC (rev 48303) @@ -17,13 +17,13 @@ +#include "boards/board_common.h" + - /* for registering lookups; make them large enough to hold OF names */ - static char *gpio_chip_labels[] = { - "xxxxxxxx.gpio-controller", -@@ -50,8 +52,9 @@ static void __init bcm63xx_gpio_init_one + static const char * const gpio_chip_labels[] = { + "bcm63xx-gpio.0", + "bcm63xx-gpio.1", +@@ -48,8 +50,9 @@ static void __init bcm63xx_gpio_init_one + pdata.base = id * 32; pdata.ngpio = ngpio; - sprintf(gpio_chip_labels[id], "bcm63xx-gpio.%d", id); - platform_device_register_resndata(NULL, "bcm63xx-gpio", id, res, 2, - &pdata, sizeof(pdata)); + if (!board_of_device_present("gpio0")) _______________________________________________ openwrt-commits mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits
