Signed-off-by: Álvaro Fernández Rojas <nolt...@gmail.com>
---
diff --git a/target/linux/brcm63xx/patches-3.14/375-GPIO-DT-over-legacy.patch 
b/target/linux/brcm63xx/patches-3.14/375-GPIO-DT-over-legacy.patch
new file mode 100644
index 0000000..9c4f6ec
--- /dev/null
+++ b/target/linux/brcm63xx/patches-3.14/375-GPIO-DT-over-legacy.patch
@@ -0,0 +1,93 @@
+--- a/arch/mips/bcm63xx/boards/board_common.c
++++ b/arch/mips/bcm63xx/boards/board_common.c
+@@ -191,8 +191,6 @@ static struct of_device_id of_ids[] = {
+  */
+ int __init board_register_devices(void)
+ {
+-      int button_count = 0;
+-      int led_count = 0;
+       int usbh_ports = 0;
+ 
+ #if CONFIG_OF
+@@ -204,6 +202,10 @@ int __init board_register_devices(void)
+       }
+ #endif
+ 
++      if (!board_of_device_present("gpio0")) {
++              bcm63xx_gpio_init();
++      }
++
+       if (board.has_uart0)
+               bcm63xx_uart_register(0);
+ 
+@@ -265,30 +267,35 @@ int __init board_register_devices(void)
+ 
+       bcm63xx_flash_register();
+ 
+-      /* count number of LEDs defined by this device */
+-      while (led_count < ARRAY_SIZE(board.leds) && board.leds[led_count].name)
+-              led_count++;
+-
+-      if (led_count) {
+-              bcm63xx_led_data.num_leds = led_count;
+-              bcm63xx_led_data.leds = board.leds;
+-
+-              platform_device_register(&bcm63xx_gpio_leds);
+-      }
+-
+-      if (board.ephy_reset_gpio && board.ephy_reset_gpio_flags)
+-              gpio_request_one(board.ephy_reset_gpio,
+-                              board.ephy_reset_gpio_flags, "ephy-reset");
+-
+-      /* count number of BUTTONs defined by this device */
+-      while (button_count < ARRAY_SIZE(board.buttons) && 
board.buttons[button_count].desc)
+-              button_count++;
+-
+-      if (button_count) {
+-              bcm63xx_gpio_keys_data.nbuttons = button_count;
+-              bcm63xx_gpio_keys_data.buttons = board.buttons;
++      if (!board_of_device_present("gpio0")) {
++              int led_count = 0;
++              int button_count = 0;
++
++              /* count number of LEDs defined by this device */
++              while (led_count < ARRAY_SIZE(board.leds) && 
board.leds[led_count].name)
++                      led_count++;
++
++              if (led_count) {
++                      bcm63xx_led_data.num_leds = led_count;
++                      bcm63xx_led_data.leds = board.leds;
++
++                      platform_device_register(&bcm63xx_gpio_leds);
++              }
++
++              if (board.ephy_reset_gpio && board.ephy_reset_gpio_flags)
++                      gpio_request_one(board.ephy_reset_gpio,
++                                      board.ephy_reset_gpio_flags, 
"ephy-reset");
++
++              /* count number of BUTTONs defined by this device */
++              while (button_count < ARRAY_SIZE(board.buttons) && 
board.buttons[button_count].desc)
++                      button_count++;
++
++              if (button_count) {
++                      bcm63xx_gpio_keys_data.nbuttons = button_count;
++                      bcm63xx_gpio_keys_data.buttons = board.buttons;
+ 
+-              platform_device_register(&bcm63xx_gpio_keys_device);
++                      platform_device_register(&bcm63xx_gpio_keys_device);
++              }
+       }
+ 
+       return 0;
+--- a/arch/mips/bcm63xx/prom.c
++++ b/arch/mips/bcm63xx/prom.c
+@@ -54,9 +54,6 @@ void __init prom_init(void)
+       reg &= ~mask;
+       bcm_perf_writel(reg, PERF_CKCTL_REG);
+ 
+-      /* register gpiochip */
+-      bcm63xx_gpio_init();
+-
+       /* detect and setup flash access */
+       bcm63xx_flash_detect();
+ 
diff --git a/target/linux/brcm63xx/patches-3.18/375-GPIO-DT-over-legacy.patch 
b/target/linux/brcm63xx/patches-3.18/375-GPIO-DT-over-legacy.patch
new file mode 100755
index 0000000..9c4f6ec
--- /dev/null
+++ b/target/linux/brcm63xx/patches-3.18/375-GPIO-DT-over-legacy.patch
@@ -0,0 +1,93 @@
+--- a/arch/mips/bcm63xx/boards/board_common.c
++++ b/arch/mips/bcm63xx/boards/board_common.c
+@@ -191,8 +191,6 @@ static struct of_device_id of_ids[] = {
+  */
+ int __init board_register_devices(void)
+ {
+-      int button_count = 0;
+-      int led_count = 0;
+       int usbh_ports = 0;
+ 
+ #if CONFIG_OF
+@@ -204,6 +202,10 @@ int __init board_register_devices(void)
+       }
+ #endif
+ 
++      if (!board_of_device_present("gpio0")) {
++              bcm63xx_gpio_init();
++      }
++
+       if (board.has_uart0)
+               bcm63xx_uart_register(0);
+ 
+@@ -265,30 +267,35 @@ int __init board_register_devices(void)
+ 
+       bcm63xx_flash_register();
+ 
+-      /* count number of LEDs defined by this device */
+-      while (led_count < ARRAY_SIZE(board.leds) && board.leds[led_count].name)
+-              led_count++;
+-
+-      if (led_count) {
+-              bcm63xx_led_data.num_leds = led_count;
+-              bcm63xx_led_data.leds = board.leds;
+-
+-              platform_device_register(&bcm63xx_gpio_leds);
+-      }
+-
+-      if (board.ephy_reset_gpio && board.ephy_reset_gpio_flags)
+-              gpio_request_one(board.ephy_reset_gpio,
+-                              board.ephy_reset_gpio_flags, "ephy-reset");
+-
+-      /* count number of BUTTONs defined by this device */
+-      while (button_count < ARRAY_SIZE(board.buttons) && 
board.buttons[button_count].desc)
+-              button_count++;
+-
+-      if (button_count) {
+-              bcm63xx_gpio_keys_data.nbuttons = button_count;
+-              bcm63xx_gpio_keys_data.buttons = board.buttons;
++      if (!board_of_device_present("gpio0")) {
++              int led_count = 0;
++              int button_count = 0;
++
++              /* count number of LEDs defined by this device */
++              while (led_count < ARRAY_SIZE(board.leds) && 
board.leds[led_count].name)
++                      led_count++;
++
++              if (led_count) {
++                      bcm63xx_led_data.num_leds = led_count;
++                      bcm63xx_led_data.leds = board.leds;
++
++                      platform_device_register(&bcm63xx_gpio_leds);
++              }
++
++              if (board.ephy_reset_gpio && board.ephy_reset_gpio_flags)
++                      gpio_request_one(board.ephy_reset_gpio,
++                                      board.ephy_reset_gpio_flags, 
"ephy-reset");
++
++              /* count number of BUTTONs defined by this device */
++              while (button_count < ARRAY_SIZE(board.buttons) && 
board.buttons[button_count].desc)
++                      button_count++;
++
++              if (button_count) {
++                      bcm63xx_gpio_keys_data.nbuttons = button_count;
++                      bcm63xx_gpio_keys_data.buttons = board.buttons;
+ 
+-              platform_device_register(&bcm63xx_gpio_keys_device);
++                      platform_device_register(&bcm63xx_gpio_keys_device);
++              }
+       }
+ 
+       return 0;
+--- a/arch/mips/bcm63xx/prom.c
++++ b/arch/mips/bcm63xx/prom.c
+@@ -54,9 +54,6 @@ void __init prom_init(void)
+       reg &= ~mask;
+       bcm_perf_writel(reg, PERF_CKCTL_REG);
+ 
+-      /* register gpiochip */
+-      bcm63xx_gpio_init();
+-
+       /* detect and setup flash access */
+       bcm63xx_flash_detect();
+ 
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to