From d19b868b12a3d76addbf0d16a854f2d5976f7608 Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Thu, 20 Feb 2014 17:07:51 +0000 Subject: [PATCH] ar71xx: Add support for MikroTik RB951Ui-2HnD I noticed that the patch at http://patchwork.openwrt.org/patch/4017/ for adding support for the MikroTik RouterBOARD 951Ui-2HnD had been abandoned because it wasn't generated and sent to the mailing list correctly and doesn't apply as a result. I have cleaned up this patch. When testing this on real hardware, I also noticed that wireless didn't work, so this patch fixes that as well. This patch applies cleanly to SVN 39392. Signed-off-by: Matthew Reeve Patchwork: http://patchwork.openwrt.org/patch/4773/ [juhosg: - drop the 'rb951ui_wlan_init' function and rework the code to use the recently introduced rb95x_wlan_init function instead, - fix GPIO number of the port5 LED, - rename LEDs according to the standard LED naming conventions, and use 'rb' prefix in the names] Signed-off-by: Gabor Juhos SVN-Revision: 39641 --- .../ar71xx/files/arch/mips/ath79/mach-rb95x.c | 87 +++++++++++++++++-- ...-MIPS-ath79-add-RB951Ui-2HnD-support.patch | 10 +++ 2 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 target/linux/ar71xx/patches-3.10/704-MIPS-ath79-add-RB951Ui-2HnD-support.patch diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-rb95x.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-rb95x.c index 8213c47c10..f6de80ab81 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-rb95x.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-rb95x.c @@ -36,6 +36,7 @@ #include "dev-wmac.h" #include "machtypes.h" #include "routerboot.h" +#include "dev-leds-gpio.h" #define RB95X_GPIO_NAND_NCE 14 @@ -58,6 +59,38 @@ static struct mtd_partition rb95x_nand_partitions[] = { }, }; +static struct gpio_led rb951ui_leds_gpio[] __initdata = { + { + .name = "rb:green:wlan", + .gpio = 11, + .active_low = 1, + }, { + .name = "rb:green:act", + .gpio = 3, + .active_low = 1, + }, { + .name = "rb:green:port1", + .gpio = 13, + .active_low = 1, + }, { + .name = "rb:green:port2", + .gpio = 12, + .active_low = 1, + }, { + .name = "rb:green:port3", + .gpio = 4, + .active_low = 1, + }, { + .name = "rb:green:port4", + .gpio = 21, + .active_low = 1, + }, { + .name = "rb:green:port5", + .gpio = 16, + .active_low = 1, + } +}; + static struct ar8327_pad_cfg rb95x_ar8327_pad0_cfg = { .mode = AR8327_PAD_MAC_RGMII, .txclk_delay_en = true, @@ -157,6 +190,14 @@ static int __init rb95x_setup(void) rb95x_nand_init(); + return 0; +} + +static void __init rb951g_setup(void) +{ + if (rb95x_setup()) + return; + ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 | AR934X_ETH_CFG_SW_ONLY_MODE); @@ -171,17 +212,47 @@ static int __init rb95x_setup(void) ath79_register_eth(0); - return 0; -} - -static void __init rb951g_setup(void) -{ - if (rb95x_setup()) - return; - rb95x_wlan_init(); ath79_register_usb(); } MIPS_MACHINE(ATH79_MACH_RB_951G, "951G", "MikroTik RouterBOARD 951G-2HnD", rb951g_setup); + +static void __init rb951ui_setup(void) +{ + if (rb95x_setup()) + return; + + 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_FIXED, + "USB power"); + + gpio_request_one(2, GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED, + "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); diff --git a/target/linux/ar71xx/patches-3.10/704-MIPS-ath79-add-RB951Ui-2HnD-support.patch b/target/linux/ar71xx/patches-3.10/704-MIPS-ath79-add-RB951Ui-2HnD-support.patch new file mode 100644 index 0000000000..509c947cfc --- /dev/null +++ b/target/linux/ar71xx/patches-3.10/704-MIPS-ath79-add-RB951Ui-2HnD-support.patch @@ -0,0 +1,10 @@ +--- a/arch/mips/ath79/machtypes.h ++++ b/arch/mips/ath79/machtypes.h +@@ -81,6 +81,7 @@ enum ath79_mach_type { + 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 951Ui-2HnD */ + ATH79_MACH_RB_2011G, /* Mikrotik RouterBOARD 2011UAS-2HnD */ + ATH79_MACH_RB_2011L, /* Mikrotik RouterBOARD 2011L */ + ATH79_MACH_RB_2011US, /* Mikrotik RouterBOARD 2011UAS */