[OpenWrt-Devel] [PATCH v3] ar71xx: Add support for MikroTik RouterBOARD SXT Lite

John Crispin john at phrozen.org
Wed Jun 18 05:57:53 EDT 2014


Hi,

this patch is generated against the wrong root directory making "git
am" fail. i had to use patch -p0 to manually apply it. Please make
sure to send a valid patch the next time.

	John




On 11/06/2014 23:05, Matthew Reeve wrote:
> This patch adds support for the MikroTik RouterBOARD SXT Lite.
> 
> The new RB911L series is also supported as a result.
> 
> v2 of this patch fixes the wmac offset to match what is on the 
> sticker. v3 refreshes the patch against r41148 and defines the 
> power led as the status led in diag.sh
> 
> Signed-off-by: Matthew Reeve <mreeve at tenxnetworks.com>
> 
> --- 
> target/linux/ar71xx/patches-3.10/712-MIPS-ath79-add-RBSXTLite-support.patch
>
> 
2014-05-12 18:49:06.902842033 +0000 +++
> target/linux/ar71xx/patches-3.10/712-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 +@@ 
> -442,6 +442,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 +@@ -91,6 +91,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
> +@@ -83,6 +83,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 <stijn at linux-ipv6.be> + *  Copyright (C) 2012 Gabor 
> Juhos <juhosg at openwrt.org> + *  Copyright (C) 2013 Vyacheslav 
> Adamanov <adamanov at 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,
> 1); + 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 @@ -451,6 +451,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 @@ -70,6 +70,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 --- 
> target/linux/ar71xx/base-files/etc/diag.sh	2014-06-11 
> 20:57:03.325451764 +0000 +++ 
> target/linux/ar71xx/base-files/etc/diag.sh	2014-06-11 
> 20:57:48.193452732 +0000 @@ -128,6 +128,10 @@ get_status_led() { 
> rb-912uag-5hpnd) status_led="rb:green:user" ;; +	rb-sxt2n|\ + 
> rb-sxt5n) +		status_led="rb:green:power" +		;; routerstation | 
> routerstation-pro) status_led="ubnt:green:rf" ;; 
> _______________________________________________ openwrt-devel 
> mailing list openwrt-devel at lists.openwrt.org 
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
> 
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list