This patch enables OpenWRT to be ran on the RouterBOARD 951Ui-2HnD.
GPIO 2 enables or disables the POE on port 5. By default we enable
GPIO2. GPIO 20 controls the USB Power, by default it enables the USB
port.

GPIO 20 is also exposed on the RouterBOARD 951G if anyone was curious.
I did not include that in this patch.

I need some assistance creating a proper patch for the RouterBOARD
951U. I have the RouterBOARD 951U working, and will include all of the
code necessary.

First the architecture:

--- target/linux/ar71xx/files/arch/mips/ath79/mach-rb95x.c
+++ target/linux/ar71xx/files/arch/mips/ath79/mach-rb95x.c
@@ -37,6 +37,7 @@
 #include "dev-wmac.h"
 #include "machtypes.h"
 #include "routerboot.h"
+#include "dev-leds-gpio.h"

 #define RB95X_GPIO_NAND_NCE    14

@@ -86,6 +95,39 @@

+
+static struct gpio_led rb951ui_leds_gpio[] __initdata = {
+    {
+        .name        = "rb951ui:wlan",
+        .gpio        = 11,
+        .active_low    = 1,
+    }, {
+        .name        = "rb951ui:act",
+        .gpio        = 3,
+        .active_low    = 1,
+    }, {
+        .name        = "rb951ui:lan:port1",
+        .gpio        = 13,
+        .active_low    = 1,
+    }, {
+        .name        = "rb951ui:lan:port2",
+        .gpio        = 12,
+        .active_low    = 1,
+    }, {
+        .name        = "rb951ui:lan:port3",
+        .gpio        = 4,
+        .active_low    = 1,
+    }, {
+        .name        = "rb951ui:lan:port4",
+        .gpio        = 21,
+        .active_low    = 1,
+    }, {
+        .name        = "rb951ui:lan:port5",
+        .gpio        = 16,
+        .active_low    = 1,
     }
 };

@@ -212,3 +254,35 @@

 MIPS_MACHINE(ATH79_MACH_RB_951G, "951G", "MikroTik RouterBOARD 951G-2HnD",
          rb951g_setup);
+
+static void __init rb951ui_setup(void)
+{
+    rb95x_gpio_init();
+    rb95x_nand_init();
+
+    ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE);
+
+        ath79_register_mdio(1, 0x0);
+
+        ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
+        ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 1);
+
+        ath79_switch_data.phy4_mii_en = 1;
+        ath79_switch_data.phy_poll_mask = BIT(4);
+        ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+        ath79_eth0_data.phy_mask = BIT(4);
+        ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
+        ath79_register_eth(0);
+
+        ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
+        ath79_register_eth(1);
+
+        gpio_request_one(20,
+                       GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_CHANGEABLE,
+                       "USB power");
+
+        gpio_request_one(2,
+                        GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_CHANGEABLE,
+                        "POE power");
+
+    rb95x_wlan_init();
+    ath79_register_usb();
+
+    ath79_register_leds_gpio(-1, ARRAY_SIZE(rb951ui_leds_gpio),
+                                 rb951ui_leds_gpio);
+}
+
+MIPS_MACHINE(ATH79_MACH_RB_951U, "951HnD", "MikroTik RouterBOARD 951Ui-2HnD",
+         rb951ui_setup);

Here is the part I am confused on. There are two files "machtypes.h"
and "prom.c". We need to add "ATH79_MACH_RB_951U" to "machtypes.h".
I'm not sure where in the target directory "machtypes.h" is. It
appears that both files are managed by a *.patch file in the patches
directory. Does the PATCH submitted need to be a patch of a patch
file? or a new patch? Should
target/linux/ar71xx/ath79/patches/610-MIPS-ath79-openwrt-machines.patch
be modified, or add a 612-MIPS-ath79-openwrt-rb951u.patch ?

Here are the changes that need to happen:

+++ machtypes.h
@@ -74,6 +74,7 @@
     ATH79_MACH_RB_751,        /* MikroTik RouterBOARD 751 */
     ATH79_MACH_RB_751G,        /* Mikrotik RouterBOARD 751G */
     ATH79_MACH_RB_951G,        /* Mikrotik RouterBOARD 951G */
+    ATH79_MACH_RB_951U,        /* Mikrotik RouterBOARD 951U */
     ATH79_MACH_RB_2011G,        /* Mikrotik RouterBOARD 2011UAS-2HnD */
     ATH79_MACH_RB_2011L,        /* Mikrotik RouterBOARD 2011L */
     ATH79_MACH_RB_2011US,        /* Mikrotik RouterBOARD 2011UAS */

Now to enable serial:

+++ prom.c
@@ -183,6 +183,7 @@

     if (strstr(arcs_cmdline, "board=750Gr3") ||
         strstr(arcs_cmdline, "board=951G") ||
+        strstr(arcs_cmdline, "board=951HnD") ||
         strstr(arcs_cmdline, "board=2011L"))
         ath79_prom_append_cmdline("console", "ttyS0,115200");
 }


Signed-off-by: Davey Hutchison <dhutchi...@bluemesh.net>
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to