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

John Crispin john at phrozen.org
Sat Jun 28 05:53:02 EDT 2014



On 26/06/2014 21:47, 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 v4 refreshes the patch
> against r41353 and fixes the patch path issue to make git am work
> correctly
> 
> Signed-off-by: Matthew Reeve <mreeve at tenxnetworks.com>
> 

Hi,

while trying to merge this i noticed that this router board is not
part of the mikrotik profile. why is this so ? looking at the platform
code, you do register a nand driver so the generic profile seems incorrect

	John





> ---
> trunk/target/linux/ar71xx/patches-3.10/713-MIPS-ath79-add-RBSXTLite-support.patch
> 2014-05-12 18:49:06.902842033 +0000 +++
> trunk/target/linux/ar71xx/patches-3.10/713-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 +@@
> -462,6 +462,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 +@@ -93,6 +93,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 +@@
> -85,6 +85,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 ---
> trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-rbsxtlite.c
> 2014-05-12 18:49:06.902842033 +0000 +++
> trunk/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); + ---
> trunk/target/linux/ar71xx/base-files/lib/ar71xx.sh	2014-05-21
> 19:59:33.077075183 +0000 +++
> trunk/target/linux/ar71xx/base-files/lib/ar71xx.sh	2014-05-21
> 20:38:40.797122100 +0000 @@ -466,6 +466,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" ;; ---
> trunk/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
> 2014-05-21 19:59:33.121075184 +0000 +++
> trunk/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
> 2014-05-21 20:39:41.449123331 +0000 @@ -259,6 +259,8 @@  eap7660d
> |\ mr600 |\ mr600v2 |\ rb-411 |\ +rb-sxt2n |\ +rb-sxt5n |\ tl-mr10u
> |\ tl-mr11u |\ tl-mr13u |\ ---
> trunk/target/linux/ar71xx/config-3.10	2014-05-21 19:59:33.201075185
> +0000 +++ trunk/target/linux/ar71xx/config-3.10	2014-05-21
> 20:40:22.877124249 +0000 @@ -72,6 +72,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 ---
> trunk/target/linux/ar71xx/base-files/etc/diag.sh	2014-06-11
> 20:57:03.325451764 +0000 +++
> trunk/target/linux/ar71xx/base-files/etc/diag.sh	2014-06-11
> 20:57:48.193452732 +0000 @@ -135,6 +135,10 @@ get_status_led() { 
> rb-951ui-2hnd) status_led="rb:green:act" ;; +	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