This patch adds support for the MikroTik RouterBOARD SXT Lite.

The new RB911L series is also supported as a result.

Signed-off-by: Matthew Reeve <mre...@tenxnetworks.com>

--- target/linux/ar71xx/patches-3.10/710-MIPS-ath79-add-RBSXTLite-support.patch 
2014-05-12 18:49:06.902842033 +0000
+++ target/linux/ar71xx/patches-3.10/710-MIPS-ath79-add-RBSXTLite-support.patch 
2014-05-21 20:34:52.209118569 +0000
@@ -0,0 +1,38 @@
+--- a/arch/mips/ath79/Kconfig  2014-05-21 20:25:24.801106234 +0000
++++ b/arch/mips/ath79/Kconfig  2014-05-21 20:28:20.489109814 +0000
+@@ -432,6 +432,14 @@ config ATH79_MACH_RB2011
+       select ATH79_ROUTERBOOT
+       select RLE_DECOMPRESS
+ 
++config ATH79_MACH_RBSXTLITE
++      bool "MikroTik RouterBOARD SXT Lite"
++      select SOC_AR934x
++      select ATH79_DEV_ETH
++      select ATH79_DEV_NFC
++      select ATH79_DEV_WMAC
++      select ATH79_ROUTERBOOT
++
+ config ATH79_MACH_WNDAP360
+       bool "NETGEAR WNDAP360 board support"
+       select SOC_AR71XX
+--- a/arch/mips/ath79/machtypes.h      2014-05-21 20:25:24.801106234 +0000
++++ b/arch/mips/ath79/machtypes.h      2014-05-21 20:30:04.829111865 +0000
+@@ -87,6 +87,8 @@ enum ath79_mach_type {
+       ATH79_MACH_RB_2011G,            /* Mikrotik RouterBOARD 2011UAS-2HnD */
+       ATH79_MACH_RB_2011L,            /* Mikrotik RouterBOARD 2011L */
+       ATH79_MACH_RB_2011US,           /* Mikrotik RouterBOARD 2011UAS */
++      ATH79_MACH_RB_SXTLITE2ND,       /* Mikrotik RouterBOARD SXT Lite 2nD */
++      ATH79_MACH_RB_SXTLITE5ND,       /* Mikrotik RouterBOARD SXT Lite 5nD */
+       ATH79_MACH_RW2458N,             /* Redwave RW2458N */
+       ATH79_MACH_TEW_632BRP,          /* TRENDnet TEW-632BRP */
+       ATH79_MACH_TEW_673GRU,          /* TRENDnet TEW-673GRU */
+--- a/arch/mips/ath79/Makefile 2014-05-21 20:25:24.801106234 +0000
++++ b/arch/mips/ath79/Makefile 2014-05-21 20:31:37.169113830 +0000
+@@ -82,6 +82,7 @@ obj-$(CONFIG_ATH79_MACH_RB750)               += mach-
+ obj-$(CONFIG_ATH79_MACH_RB91X)                += mach-rb91x.o
+ obj-$(CONFIG_ATH79_MACH_RB95X)                += mach-rb95x.o
+ obj-$(CONFIG_ATH79_MACH_RB2011)               += mach-rb2011.o
++obj-$(CONFIG_ATH79_MACH_RBSXTLITE)    += mach-rbsxtlite.o
+ obj-$(CONFIG_ATH79_MACH_RW2458N)      += mach-rw2458n.o
+ obj-$(CONFIG_ATH79_MACH_TEW_632BRP)   += mach-tew-632brp.o
+ obj-$(CONFIG_ATH79_MACH_TEW_673GRU)   += mach-tew-673gru.o
--- target/linux/ar71xx/files/arch/mips/ath79/mach-rbsxtlite.c  2014-05-12 
18:49:06.902842033 +0000
+++ target/linux/ar71xx/files/arch/mips/ath79/mach-rbsxtlite.c  2014-05-21 
19:50:48.073064837 +0000
@@ -0,0 +1,238 @@
+/*
+ *  MikroTik RouterBOARD SXT Lite support
+ *
+ *  Copyright (C) 2012 Stijn Tintel <st...@linux-ipv6.be>
+ *  Copyright (C) 2012 Gabor Juhos <juh...@openwrt.org>
+ *  Copyright (C) 2013 Vyacheslav Adamanov <adama...@gmail.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License version 2 as published
+ *  by the Free Software Foundation.
+ */
+
+#define pr_fmt(fmt) "sxtlite: " fmt
+
+#include <linux/phy.h>
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+#include <linux/ath9k_platform.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/nand.h>
+#include <linux/mtd/partitions.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/flash.h>
+#include <linux/rle.h>
+#include <linux/routerboot.h>
+#include <linux/gpio.h>
+
+#include <asm/mach-ath79/ath79.h>
+#include <asm/mach-ath79/ar71xx_regs.h>
+#include "common.h"
+#include "dev-ap9x-pci.h"
+#include "dev-gpio-buttons.h"
+#include "dev-leds-gpio.h"
+#include "dev-eth.h"
+#include "dev-m25p80.h"
+#include "dev-nfc.h"
+#include "dev-wmac.h"
+#include "dev-usb.h"
+#include "machtypes.h"
+#include "routerboot.h"
+#include <linux/ar8216_platform.h>
+
+#define SXTLITE_GPIO_NAND_NCE  14
+#define SXTLITE_GPIO_LED_USER 3
+#define SXTLITE_GPIO_LED_1 13
+#define SXTLITE_GPIO_LED_2 12
+#define SXTLITE_GPIO_LED_3 4
+#define SXTLITE_GPIO_LED_4 21
+#define SXTLITE_GPIO_LED_5 18
+#define SXTLITE_GPIO_LED_POWER 11
+
+#define SXTLITE_GPIO_BUZZER 19
+
+#define SXTLITE_GPIO_BTN_RESET 15
+
+#define SXTLITE_KEYS_POLL_INTERVAL 20
+#define SXTLITE_KEYS_DEBOUNCE_INTERVAL (3 * SXTLITE_KEYS_POLL_INTERVAL)
+
+static struct mtd_partition rbsxtlite_nand_partitions[] = {
+       {
+               .name   = "booter",
+               .offset = 0,
+               .size   = (256 * 1024),
+               .mask_flags = MTD_WRITEABLE,
+       },
+       {
+               .name   = "kernel",
+               .offset = (256 * 1024),
+               .size   = (4 * 1024 * 1024) - (256 * 1024),
+       },
+       {
+               .name   = "rootfs",
+               .offset = MTDPART_OFS_NXTBLK,
+               .size   = MTDPART_SIZ_FULL,
+       },
+};
+
+static struct gpio_led rbsxtlite_leds_gpio[] __initdata = {
+       {
+               .name           =       "rb:green:user",
+               .gpio           =       SXTLITE_GPIO_LED_USER,
+               .active_low     =       1,
+       },
+       {
+               .name           =       "rb:green:led1",
+               .gpio           =       SXTLITE_GPIO_LED_1,
+               .active_low     =       1,
+       },
+       {
+               .name           =       "rb:green:led2",
+               .gpio           =       SXTLITE_GPIO_LED_2,
+               .active_low     =       1,
+       },
+       {
+               .name           =       "rb:green:led3",
+               .gpio           =       SXTLITE_GPIO_LED_3,
+               .active_low     =       1,
+       },
+       {
+               .name           =       "rb:green:led4",
+               .gpio           =       SXTLITE_GPIO_LED_4,
+               .active_low     =       1,
+       },
+       {
+               .name           =       "rb:green:led5",
+               .gpio           =       SXTLITE_GPIO_LED_5,
+               .active_low     =       1,
+       },
+       {
+               .name           =       "rb:green:power",
+               .gpio           =       SXTLITE_GPIO_LED_POWER,
+       },
+};
+
+static struct gpio_keys_button rbsxtlite_gpio_keys[] __initdata = {
+       {
+               .desc           =       "Reset button",
+               .type           =       EV_KEY,
+               .code           =       KEY_RESTART,
+               .debounce_interval      =       SXTLITE_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           =       SXTLITE_GPIO_BTN_RESET,
+               .active_low     =       0,
+       },
+};
+
+static int __init rbsxtlite_rbinfo_init(void)
+{
+       const struct rb_info *info;
+
+       info = rb_init_info((void *)(KSEG1ADDR(AR71XX_SPI_BASE)), 0x10000);
+       if (!info)
+               return -EINVAL;
+       return 0;
+
+}
+
+void __init rbsxtlite_wlan_init(void)
+{
+       char *art_buf;
+       u8 wlan_mac[ETH_ALEN];
+
+       art_buf = rb_get_wlan_data();
+       if (art_buf == NULL)
+               return;
+
+       ath79_init_mac(wlan_mac, ath79_mac_base, 11);
+       ath79_register_wmac(art_buf + 0x1000, wlan_mac);
+
+       kfree(art_buf);
+}
+
+static void rbsxtlite_nand_select_chip(int chip_no)
+{
+       switch (chip_no) {
+       case 0:
+               gpio_set_value(SXTLITE_GPIO_NAND_NCE, 0);
+               break;
+       default:
+               gpio_set_value(SXTLITE_GPIO_NAND_NCE, 1);
+               break;
+       }
+       ndelay(500);
+}
+
+static struct nand_ecclayout rbsxtlite_nand_ecclayout = {
+       .eccbytes       = 6,
+       .eccpos  = { 8, 9, 10, 13, 14, 15 },
+       .oobavail       = 9,
+       .oobfree        = { { 0, 4 }, { 6, 2 }, { 11, 2 }, { 4, 1 } }
+};
+
+static int rbsxtlite_nand_scan_fixup(struct mtd_info *mtd)
+{
+       struct nand_chip *chip = mtd->priv;
+
+       if (mtd->writesize == 512) {
+               /*
+               * Use the OLD Yaffs-1 OOB layout, otherwise RouterBoot
+               * will not be able to find the kernel that we load.
+               */
+               chip->ecc.layout = &rbsxtlite_nand_ecclayout;
+       }
+
+       return 0;
+}
+
+void __init rbsxtlite_gpio_init(void)
+{
+       gpio_request_one(SXTLITE_GPIO_NAND_NCE, GPIOF_OUT_INIT_HIGH, "NAND 
nCE");
+}
+
+void __init rbsxtlite_nand_init(void)
+{
+       ath79_nfc_set_scan_fixup(rbsxtlite_nand_scan_fixup);
+       ath79_nfc_set_parts(rbsxtlite_nand_partitions,
+                          ARRAY_SIZE(rbsxtlite_nand_partitions));
+       ath79_nfc_set_select_chip(rbsxtlite_nand_select_chip);
+       ath79_nfc_set_swap_dma(true);
+       ath79_register_nfc();
+}
+
+
+static void __init rbsxtlite_setup(void)
+{
+       if(rbsxtlite_rbinfo_init())
+               return;
+       rbsxtlite_nand_init();
+       rbsxtlite_wlan_init();
+
+       ath79_register_leds_gpio(-1, ARRAY_SIZE(rbsxtlite_leds_gpio),
+                                rbsxtlite_leds_gpio);
+       ath79_register_gpio_keys_polled(-1, SXTLITE_KEYS_POLL_INTERVAL,
+                                       ARRAY_SIZE(rbsxtlite_gpio_keys),
+                                       rbsxtlite_gpio_keys);
+
+       ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE);
+
+       ath79_register_mdio(1, 0x0);
+
+       /* GMAC0 is left unused */
+
+       /* GMAC1 is connected to MAC0 on the internal switch */
+       /* The ethernet port connects to PHY P0, which connects to MAC1
+          on the internal switch */
+       ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 0);
+       ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
+       ath79_register_eth(1);
+
+
+}
+
+
+MIPS_MACHINE(ATH79_MACH_RB_SXTLITE2ND, "sxt2n", "Mikrotik RouterBOARD SXT 
Lite2",
+           rbsxtlite_setup);
+
+MIPS_MACHINE(ATH79_MACH_RB_SXTLITE5ND, "sxt5n", "Mikrotik RouterBOARD SXT 
Lite5",
+           rbsxtlite_setup);
+
--- target/linux/ar71xx/base-files/lib/ar71xx.sh        2014-05-21 
19:59:33.077075183 +0000
+++ target/linux/ar71xx/base-files/lib/ar71xx.sh        2014-05-21 
20:38:40.797122100 +0000
@@ -436,6 +436,12 @@ ar71xx_board_detect() {
        *"RouterBOARD 2011UAS-2HnD")
                name="rb-2011uas-2hnd"
                ;;
+       *"RouterBOARD SXT Lite2")
+               name="rb-sxt2n"
+               ;;
+       *"RouterBOARD SXT Lite5")
+               name="rb-sxt5n"
+               ;;
        *"Rocket M")
                name="rocket-m"
                ;;
--- target/linux/ar71xx/base-files/etc/uci-defaults/02_network  2014-05-21 
19:59:33.121075184 +0000
+++ target/linux/ar71xx/base-files/etc/uci-defaults/02_network  2014-05-21 
20:39:41.449123331 +0000
@@ -245,6 +245,8 @@ eap7660d |\
 mr600 |\
 mr600v2 |\
 rb-411 |\
+rb-sxt2n |\
+rb-sxt5n |\
 tl-mr10u |\
 tl-mr11u |\
 tl-mr13u |\
--- target/linux/ar71xx/config-3.10     2014-05-21 19:59:33.201075185 +0000
+++ target/linux/ar71xx/config-3.10     2014-05-21 20:40:22.877124249 +0000
@@ -69,6 +69,7 @@ CONFIG_ATH79_MACH_PB92=y
 # CONFIG_ATH79_MACH_RB750 is not set
 # CONFIG_ATH79_MACH_RB91X is not set
 # CONFIG_ATH79_MACH_RB95X is not set
+CONFIG_ATH79_MACH_RBSXTLITE=y
 CONFIG_ATH79_MACH_RW2458N=y
 CONFIG_ATH79_MACH_TEW_632BRP=y
 CONFIG_ATH79_MACH_TEW_673GRU=y
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to