summaryrefslogtreecommitdiff
path: root/target/linux/ar71xx/files
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/ar71xx/files')
-rw-r--r--target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt2
-rw-r--r--target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c97
-rw-r--r--target/linux/ar71xx/files/arch/mips/ath79/machtypes.h1
3 files changed, 100 insertions, 0 deletions
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
index 3ca7755..caaaf97 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
+++ b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
@@ -1054,6 +1054,8 @@ config ATH79_MACH_RBSPI
select ATH79_ROUTERBOOT
help
Say 'Y' here if you want your kernel to support the
+ MikroTik ROuterBOARD 911-2Hn (911 Lite2)
+ MikroTik ROuterBOARD 911-5Hn (911 Lite5)
MikroTik RouterBOARD mAP
MikroTik RouterBOARD mAP lite
MikroTik RouterBOARD hAP lite
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c
index 25e920f..f7f3b02 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c
@@ -3,6 +3,8 @@
*
* - MikroTik RouterBOARD mAP 2nD
* - MikroTik RouterBOARD mAP L-2nD
+ * - MikroTik RouterBOARD 911-2Hn (911 Lite2)
+ * - MikroTik RouterBOARD 911-5Hn (911 Lite5)
* - MikroTik RouterBOARD 941L-2nD
* - MikroTik RouterBOARD 951Ui-2nD
* - MikroTik RouterBOARD 952Ui-5ac2nD
@@ -509,6 +511,56 @@ static struct platform_device rbwapgsc_phy_device = {
},
};
+/* RB911L GPIOs */
+#define RB911L_GPIO_BTN_RESET 15
+#define RB911L_GPIO_LED_1 13
+#define RB911L_GPIO_LED_2 12
+#define RB911L_GPIO_LED_3 4
+#define RB911L_GPIO_LED_4 21
+#define RB911L_GPIO_LED_5 18
+#define RB911L_GPIO_LED_ETH 20
+#define RB911L_GPIO_LED_POWER 11
+#define RB911L_GPIO_LED_USER 3
+#define RB911L_GPIO_PIN_HOLE 14 /* for reference */
+
+static struct gpio_led rb911l_leds[] __initdata = {
+ {
+ .name = "rb:green:eth",
+ .gpio = RB911L_GPIO_LED_ETH,
+ .active_low = 1,
+ }, {
+ .name = "rb:green:led1",
+ .gpio = RB911L_GPIO_LED_1,
+ .active_low = 1,
+ }, {
+ .name = "rb:green:led2",
+ .gpio = RB911L_GPIO_LED_2,
+ .active_low = 1,
+ }, {
+ .name = "rb:green:led3",
+ .gpio = RB911L_GPIO_LED_3,
+ .active_low = 1,
+ }, {
+ .name = "rb:green:led4",
+ .gpio = RB911L_GPIO_LED_4,
+ .active_low = 1,
+ }, {
+ .name = "rb:green:led5",
+ .gpio = RB911L_GPIO_LED_5,
+ .active_low = 1,
+ }, {
+ .name = "rb:green:power",
+ .gpio = RB911L_GPIO_LED_POWER,
+ .default_state = LEDS_GPIO_DEFSTATE_ON,
+ .open_drain = 1,
+ }, {
+ .name = "rb:green:user",
+ .gpio = RB911L_GPIO_LED_USER,
+ .active_low = 1,
+ .open_drain = 1,
+ },
+};
+
static struct gen_74x164_chip_platform_data rbspi_ssr_data = {
.base = RBSPI_SSR_GPIO_BASE,
.num_registers = 1,
@@ -1015,8 +1067,53 @@ static void __init rbwapgsc_setup(void)
rbwapgsc_leds);
}
+/*
+ * Setup the 911L hardware (AR9344).
+ */
+static void __init rb911l_setup(void)
+{
+ const struct rb_info *info;
+
+ info = rbspi_platform_setup();
+ if (!info)
+ return;
+
+ if (!rb_has_hw_option(info, RB_HW_OPT_NO_NAND)) {
+ /*
+ * Old hardware revisions might be equipped with a NAND flash
+ * chip instead of the 16MiB SPI NOR device. Those boards are
+ * not supported at the moment, so throw a warning and skip
+ * the peripheral setup to avoid messing up the data in the
+ * flash chip.
+ */
+ WARN(1, "The NAND flash on this board is not supported.\n");
+ } else {
+ rbspi_peripherals_setup(0);
+ }
+
+ ath79_register_mdio(1, 0x0);
+
+ ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 0);
+
+ ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
+ ath79_eth1_data.speed = SPEED_1000;
+ ath79_eth1_data.duplex = DUPLEX_FULL;
+
+ ath79_register_eth(1);
+
+ rbspi_wlan_init(0, 1);
+
+ rbspi_register_reset_button(RB911L_GPIO_BTN_RESET);
+
+ /* Make the eth LED controllable by software. */
+ ath79_gpio_output_select(RB911L_GPIO_LED_ETH, AR934X_GPIO_OUT_GPIO);
+
+ ath79_register_leds_gpio(-1, ARRAY_SIZE(rb911l_leds), rb911l_leds);
+}
+
MIPS_MACHINE_NONAME(ATH79_MACH_RB_MAPL, "map-hb", rbmapl_setup);
MIPS_MACHINE_NONAME(ATH79_MACH_RB_941, "H951L", rbhapl_setup);
+MIPS_MACHINE_NONAME(ATH79_MACH_RB_911L, "911L", rb911l_setup);
MIPS_MACHINE_NONAME(ATH79_MACH_RB_952, "952-hb", rb952_setup);
MIPS_MACHINE_NONAME(ATH79_MACH_RB_962, "962", rb962_setup);
MIPS_MACHINE_NONAME(ATH79_MACH_RB_750UPR2, "750-hb", rb750upr2_setup);
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
index a621fe2..394be00 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
+++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
@@ -190,6 +190,7 @@ enum ath79_mach_type {
ATH79_MACH_RB_750UPR2, /* MikroTik RouterBOARD 750UP r2 */
ATH79_MACH_RB_751, /* MikroTik RouterBOARD 751 */
ATH79_MACH_RB_751G, /* Mikrotik RouterBOARD 751G */
+ ATH79_MACH_RB_911L, /* Mikrotik RouterBOARD 911-2Hn/911-5Hn boards */
ATH79_MACH_RB_922GS, /* Mikrotik RouterBOARD 911/922GS boards */
ATH79_MACH_RB_941, /* MikroTik RouterBOARD 941-2nD */
ATH79_MACH_RB_951G, /* Mikrotik RouterBOARD 951G */