ar71xx: provide support for RB-941-2nD via mach-rbspi.c

This patch implements support for the hAP lite in mach-rbspi.c

hAP lite was supported via mach-rb941.c, so this file is removed
as well as the corresponding build bits.

Signed-off-by: Thibaut VARENE <hacks@slashdirt.org>
This commit is contained in:
Thibaut VARENE 2017-02-07 15:23:30 +01:00 committed by Felix Fietkau
parent c59fa94eee
commit b18bae37a4
8 changed files with 44 additions and 194 deletions

View file

@ -223,7 +223,7 @@ rb-750)
ucidef_set_led_switch "port5" "port5" "rb750:green:port5" "switch0" "0x02" ucidef_set_led_switch "port5" "port5" "rb750:green:port5" "switch0" "0x02"
;; ;;
rb-941-2nd) rb-941-2nd)
ucidef_set_led_timer "act" "act" "rb:green:act" "1000" "1000" ucidef_set_led_timer "user" "USR/ACT" "rb:green:user" "1000" "1000"
;; ;;
rb-2011l|\ rb-2011l|\
rb-2011uas|\ rb-2011uas|\

View file

@ -298,10 +298,11 @@ get_status_led() {
rb-911g-5hpnd|\ rb-911g-5hpnd|\
rb-912uag-2hpnd|\ rb-912uag-2hpnd|\
rb-912uag-5hpnd|\ rb-912uag-5hpnd|\
rb-941-2nd|\
rb-mapl-2nd) rb-mapl-2nd)
status_led="rb:green:user" status_led="rb:green:user"
;; ;;
rb-951ui-2hnd | rb-941-2nd) rb-951ui-2hnd)
status_led="rb:green:act" status_led="rb:green:act"
;; ;;
rb-sxt2n|\ rb-sxt2n|\

View file

@ -147,7 +147,6 @@ CONFIG_ATH79_MACH_R6100=y
# CONFIG_ATH79_MACH_RB750 is not set # CONFIG_ATH79_MACH_RB750 is not set
# CONFIG_ATH79_MACH_RB91X is not set # CONFIG_ATH79_MACH_RB91X is not set
# CONFIG_ATH79_MACH_RB922 is not set # CONFIG_ATH79_MACH_RB922 is not set
# CONFIG_ATH79_MACH_RB941 is not set
# CONFIG_ATH79_MACH_RB95X is not set # CONFIG_ATH79_MACH_RB95X is not set
# CONFIG_ATH79_MACH_RBSPI is not set # CONFIG_ATH79_MACH_RBSPI is not set
# CONFIG_ATH79_MACH_RBSXTLITE is not set # CONFIG_ATH79_MACH_RBSXTLITE is not set

View file

@ -895,16 +895,6 @@ config ATH79_MACH_RB922
select ATH79_ROUTERBOOT select ATH79_ROUTERBOOT
select RLE_DECOMPRESS select RLE_DECOMPRESS
config ATH79_MACH_RB941
bool "MikroTik RouterBOARD 941-2nd support"
select SOC_QCA953X
select ATH79_DEV_ETH
select ATH79_DEV_GPIO_BUTTONS
select ATH79_DEV_LEDS_GPIO
select ATH79_DEV_M25P80
select ATH79_DEV_WMAC
select ATH79_ROUTERBOOT
config ATH79_MACH_RB95X config ATH79_MACH_RB95X
bool "MikroTik RouterBOARD 95X support" bool "MikroTik RouterBOARD 95X support"
select SOC_AR934X select SOC_AR934X
@ -936,6 +926,7 @@ config ATH79_MACH_RBSPI
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
MikroTik RouterBOARD mAP lite MikroTik RouterBOARD mAP lite
MikroTik RouterBOARD hAP lite
config ATH79_MACH_RBSXTLITE config ATH79_MACH_RBSXTLITE
bool "MikroTik RouterBOARD SXT Lite" bool "MikroTik RouterBOARD SXT Lite"

View file

@ -1,173 +0,0 @@
/*
* MikroTik RouterBOARD 941-2nD support
*
* Copyright (C) 2016 Sergey Sergeev <adron@yapic.net>
*
* 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.
*/
#include <linux/export.h>
#include <linux/pci.h>
#include <linux/ath9k_platform.h>
#include <linux/platform_device.h>
#include <linux/phy.h>
#include <linux/ar8216_platform.h>
#include <linux/rle.h>
#include <linux/routerboot.h>
#include <linux/gpio.h>
#include <linux/mtd/mtd.h>
//#include <linux/mtd/nand.h>
#include <linux/mtd/partitions.h>
#include <asm/mach-ath79/ar71xx_regs.h>
#include <asm/mach-ath79/ath79.h>
#include <asm/mach-ath79/irq.h>
#include "common.h"
#include "dev-ap9x-pci.h"
#include "dev-eth.h"
#include "dev-spi.h"
#include "dev-gpio-buttons.h"
#include "dev-leds-gpio.h"
#include "dev-m25p80.h"
//#include "dev-usb.h"
#include "dev-wmac.h"
#include "machtypes.h"
#include "routerboot.h"
#define RB941_GPIO_LED_ACT 14
#define RB941_GPIO_BTN_RESET 16
#define RB941_KEYS_POLL_INTERVAL 20 /* msecs */
#define RB941_KEYS_DEBOUNCE_INTERVAL (3 * RB941_KEYS_POLL_INTERVAL)
#define RB_ROUTERBOOT_OFFSET 0x0000
#define RB_ROUTERBOOT_SIZE 0xe000
#define RB_HARD_CFG_OFFSET 0xe000
#define RB_HARD_CFG_SIZE 0x1000
#define RB_BIOS_OFFSET 0xf000
#define RB_BIOS_SIZE 0x1000
#define RB_ROUTERBOOT2_OFFSET 0x10000
#define RB_ROUTERBOOT2_SIZE 0xf000
#define RB_SOFT_CFG_OFFSET 0x1f000
#define RB_SOFT_CFG_SIZE 0x1000
#define RB_ROOTFS_OFFSET 0x20000
#define RB_ROOTFS_SIZE 0x9e0000
#define RB_KERNEL_OFFSET 0xa00000
#define RB_KERNEL_SIZE MTDPART_SIZ_FULL
void __init rb941_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 struct mtd_partition rb941_spi_partitions[] = {
{
.name = "routerboot",
.offset = RB_ROUTERBOOT_OFFSET,
.mask_flags = MTD_WRITEABLE,
.size = RB_ROUTERBOOT_SIZE,
}, {
.name = "hard_config",
.offset = RB_HARD_CFG_OFFSET,
.size = RB_HARD_CFG_SIZE,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "bios",
.offset = RB_BIOS_OFFSET,
.size = RB_BIOS_SIZE,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "routerboot2",
.offset = RB_ROUTERBOOT2_OFFSET,
.size = RB_ROUTERBOOT2_SIZE,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "soft_config",
.offset = RB_SOFT_CFG_OFFSET,
.size = RB_SOFT_CFG_SIZE,
}, {
.name = "rootfs",
.offset = RB_ROOTFS_OFFSET,
.size = RB_ROOTFS_SIZE,
}, {
.name = "kernel",
.offset = RB_KERNEL_OFFSET,
.size = RB_KERNEL_SIZE,
}
};
static struct flash_platform_data rb941_spi_flash_data = {
.parts = rb941_spi_partitions,
.nr_parts = ARRAY_SIZE(rb941_spi_partitions),
};
static struct gpio_led rb941_leds[] __initdata = {
{
.name = "rb:green:act",
.gpio = RB941_GPIO_LED_ACT,
.active_low = 1,
},
};
static struct gpio_keys_button rb941_gpio_keys[] __initdata = {
{
.desc = "Reset button",
.type = EV_KEY,
.code = KEY_RESTART,
.debounce_interval = RB941_KEYS_DEBOUNCE_INTERVAL,
.gpio = RB941_GPIO_BTN_RESET,
.active_low = 1,
},
};
static void __init rb941_setup(void)
{
const struct rb_info *info;
//try to get rb_info data
info = rb_init_info((void *)(KSEG1ADDR(AR71XX_SPI_BASE)), 0x20000);
if (!info){
pr_err("%s: Can't get rb_info data from flash!\n", __func__);
//return -EINVAL; //Not critical ... continue!
}
ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE);
ath79_register_m25p80(&rb941_spi_flash_data);
ath79_register_mdio(0, 0x0);
/* WAN. We have no WAN. Only LAN. */
/*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_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
ath79_register_eth(0); */
/* LAN */
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);
//ath79_register_usb();
rb941_wlan_init();
ath79_register_leds_gpio(-1, ARRAY_SIZE(rb941_leds), rb941_leds);
ath79_register_gpio_keys_polled(-1, RB941_KEYS_POLL_INTERVAL,
ARRAY_SIZE(rb941_gpio_keys),
rb941_gpio_keys);
}
MIPS_MACHINE(ATH79_MACH_RB_941, "H951L", "MikroTik RouterBOARD 941-2nD", rb941_setup);

View file

@ -2,6 +2,7 @@
* MikroTik SPI-NOR RouterBOARDs support * MikroTik SPI-NOR RouterBOARDs support
* *
* - MikroTik RouterBOARD mAP L-2nD * - MikroTik RouterBOARD mAP L-2nD
* - MikroTik RouterBOARD 941L-2nD
* *
* Copyright (C) 2017 Thibaut VARENE <varenet@parisc-linux.org> * Copyright (C) 2017 Thibaut VARENE <varenet@parisc-linux.org>
* *
@ -155,6 +156,16 @@ static struct gpio_led rbmapl_leds[] __initdata = {
}, },
}; };
/* RB 941L-2nD gpios */
#define RBHAPL_GPIO_LED_USER 14
static struct gpio_led rbhapl_leds[] __initdata = {
{
.name = "rb:green:user",
.gpio = RBHAPL_GPIO_LED_USER,
.active_low = 1,
},
};
void __init rbspi_wlan_init(int wmac_offset) void __init rbspi_wlan_init(int wmac_offset)
{ {
char *art_buf; char *art_buf;
@ -276,4 +287,32 @@ static void __init rbmapl_setup(void)
ath79_gpio_output_select(RBMAPL_GPIO_LED_POWER, AR934X_GPIO_OUT_GPIO); ath79_gpio_output_select(RBMAPL_GPIO_LED_POWER, AR934X_GPIO_OUT_GPIO);
} }
/*
* Init the hAP lite hardware.
* The 941-2nD (hAP lite) has 4 ethernet ports, with port 2-4
* being assigned to LAN on the casing, and port 1 being assigned
* to "internet" (WAN) on the casing. Port 1 is connected to PHY3.
* Since WAN is neither PHY0 nor PHY4, we cannot use GMAC0 with this device.
*/
static void __init rbhapl_setup(void)
{
u32 flags = RBSPI_HAS_WLAN;
if (rbspi_platform_setup())
return;
rbspi_peripherals_setup(flags);
/* GMAC1 is HW MAC, WLAN MAC is HW MAC + 4 */
rbspi_network_setup(flags, 0, 4);
ath79_register_leds_gpio(-1, ARRAY_SIZE(rbhapl_leds), rbhapl_leds);
/* hAP lite has a single reset button as gpio 16 */
ath79_register_gpio_keys_polled(-1, RBSPI_KEYS_POLL_INTERVAL,
ARRAY_SIZE(rbspi_gpio_keys_reset16),
rbspi_gpio_keys_reset16);
}
MIPS_MACHINE_NONAME(ATH79_MACH_RB_MAPL, "map-hb", rbmapl_setup); MIPS_MACHINE_NONAME(ATH79_MACH_RB_MAPL, "map-hb", rbmapl_setup);
MIPS_MACHINE_NONAME(ATH79_MACH_RB_941, "H951L", rbhapl_setup);

View file

@ -37,10 +37,4 @@ define Device/rb-nor-flash-16M
IMAGE/sysupgrade.bin = append-rootfs | pad-rootfs | combined-image | check-size $$$$(IMAGE_SIZE) IMAGE/sysupgrade.bin = append-rootfs | pad-rootfs | combined-image | check-size $$$$(IMAGE_SIZE)
endef endef
define Device/rb-941-2nd TARGET_DEVICES += rb-nor-flash-16M
$(Device/rb-nor-flash-16M)
DEVICE_TITLE := hAP lite
BOARDNAME:= rb-941-2nd
endef
TARGET_DEVICES += rb-nor-flash-16M rb-941-2nd

View file

@ -112,7 +112,6 @@ CONFIG_ATH79_MACH_RB4XX=y
CONFIG_ATH79_MACH_RB750=y CONFIG_ATH79_MACH_RB750=y
CONFIG_ATH79_MACH_RB91X=y CONFIG_ATH79_MACH_RB91X=y
CONFIG_ATH79_MACH_RB922=y CONFIG_ATH79_MACH_RB922=y
CONFIG_ATH79_MACH_RB941=y
CONFIG_ATH79_MACH_RB95X=y CONFIG_ATH79_MACH_RB95X=y
CONFIG_ATH79_MACH_RBSPI=y CONFIG_ATH79_MACH_RBSPI=y
CONFIG_ATH79_MACH_RBSXTLITE=y CONFIG_ATH79_MACH_RBSXTLITE=y