/branches/18.06.1/target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c |
@@ -5,7 +5,6 @@ |
* - MikroTik RouterBOARD mAP L-2nD |
* - MikroTik RouterBOARD 911-2Hn (911 Lite2) |
* - MikroTik RouterBOARD 911-5Hn (911 Lite5) |
* - MikroTik RouterBOARD 931-2nD (hAP mini) |
* - MikroTik RouterBOARD 941L-2nD |
* - MikroTik RouterBOARD 951Ui-2nD |
* - MikroTik RouterBOARD 952Ui-5ac2nD |
@@ -16,7 +15,6 @@ |
* - MikroTik RouterBOARD LHG 5nD |
* - MikroTik RouterBOARD wAP2nD |
* - MikroTik RouterBOARD wAP G-5HacT2HnDwAP (wAP AC) |
* - MikroTik RouterBOARD wAP R-2nD |
* |
* Preliminary support for the following hardware |
* - MikroTik RouterBOARD cAP2nD |
@@ -24,7 +22,7 @@ |
* hardware as the mAP L-2nD. It is unknown if they share the same board |
* identifier. |
* |
* Copyright (C) 2017-2018 Thibaut VARENE <varenet@parisc-linux.org> |
* Copyright (C) 2017 Thibaut VARENE <varenet@parisc-linux.org> |
* Copyright (C) 2016 David Hutchison <dhutchison@bluemesh.net> |
* Copyright (C) 2017 Ryan Mounce <ryan@mounce.com.au> |
* |
@@ -213,7 +211,7 @@ |
#define RB952_GPIO_POE_POWER 14 |
#define RB952_GPIO_POE_STATUS 12 |
#define RB952_GPIO_BTN_RESET 16 |
#define RB952_GPIO_USB_PWROFF RBSPI_SSR_GPIO(RB952_SSR_BIT_USB_POWER) |
#define RB952_GPIO_USB_POWER RBSPI_SSR_GPIO(RB952_SSR_BIT_USB_POWER) |
#define RB952_GPIO_LED_LAN1 RBSPI_SSR_GPIO(RB952_SSR_BIT_LED_LAN1) |
#define RB952_GPIO_LED_LAN2 RBSPI_SSR_GPIO(RB952_SSR_BIT_LED_LAN2) |
#define RB952_GPIO_LED_LAN3 RBSPI_SSR_GPIO(RB952_SSR_BIT_LED_LAN3) |
@@ -255,12 +253,10 @@ |
|
|
/* RB 962UiGS-5HacT2HnT gpios */ |
#define RB962_WIFI_LED_1 1 |
#define RB962_WIFI_LED_2 2 |
#define RB962_GPIO_POE_STATUS 2 |
#define RB962_GPIO_POE_POWER 3 |
#define RB962_GPIO_LED_USER 12 |
#define RB962_GPIO_USB_PWROFF 13 |
#define RB962_GPIO_USB_POWER 13 |
#define RB962_GPIO_BTN_RESET 20 |
|
static struct gpio_led rb962_leds_gpio[] __initdata = { |
@@ -328,7 +324,7 @@ |
static struct mdio_board_info rb962_mdio0_info[] = { |
{ |
.bus_id = "ag71xx-mdio.0", |
.mdio_addr = 0, |
.phy_addr = 0, |
.platform_data = &rb962_ar8327_data, |
}, |
}; |
@@ -390,7 +386,7 @@ |
#define RBMAP_GPIO_LED_POWER 4 |
#define RBMAP_GPIO_POE_POWER 14 |
#define RBMAP_GPIO_POE_STATUS 12 |
#define RBMAP_GPIO_USB_PWROFF RBSPI_SSR_GPIO(RBMAP_SSR_BIT_USB_POWER) |
#define RBMAP_GPIO_USB_POWER RBSPI_SSR_GPIO(RBMAP_SSR_BIT_USB_POWER) |
#define RBMAP_GPIO_LED_LAN1 RBSPI_SSR_GPIO(RBMAP_SSR_BIT_LED_LAN1) |
#define RBMAP_GPIO_LED_LAN2 RBSPI_SSR_GPIO(RBMAP_SSR_BIT_LED_LAN2) |
#define RBMAP_GPIO_LED_POEO RBSPI_SSR_GPIO(RBMAP_SSR_BIT_LED_POEO) |
@@ -522,7 +518,7 @@ |
#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, active low */ |
#define RB911L_GPIO_PIN_HOLE 14 /* for reference */ |
|
static struct gpio_led rb911l_leds[] __initdata = { |
{ |
@@ -553,7 +549,6 @@ |
.name = "rb:green:power", |
.gpio = RB911L_GPIO_LED_POWER, |
.default_state = LEDS_GPIO_DEFSTATE_ON, |
.active_low = 1, |
.open_drain = 1, |
}, { |
.name = "rb:green:user", |
@@ -563,67 +558,6 @@ |
}, |
}; |
|
/* RB 931-2nD gpios */ |
#define RB931_GPIO_BTN_RESET 0 |
#define RB931_GPIO_BTN_MODE 9 |
#define RB931_GPIO_LED_USER 1 |
|
static struct gpio_keys_button rb931_gpio_keys[] __initdata = { |
{ |
.desc = "Reset button", |
.type = EV_KEY, |
.code = KEY_RESTART, |
.debounce_interval = RBSPI_KEYS_DEBOUNCE_INTERVAL, |
.gpio = RB931_GPIO_BTN_RESET, |
.active_low = 1, |
}, { |
.desc = "Mode button", |
.type = EV_KEY, |
.code = BTN_0, |
.debounce_interval = RBSPI_KEYS_DEBOUNCE_INTERVAL, |
.gpio = RB931_GPIO_BTN_MODE, |
.active_low = 1, |
} |
}; |
|
static struct gpio_led rb931_leds[] __initdata = { |
{ |
.name = "rb:green:user", |
.gpio = RB931_GPIO_LED_USER, |
.active_low = 1, |
}, |
}; |
|
/* RB wAP R-2nD (wAP R) gpios*/ |
#define RBWAPR_GPIO_LED_USER 14 |
#define RBWAPR_GPIO_LED1 12 |
#define RBWAPR_GPIO_LED2 13 |
#define RBWAPR_GPIO_LED3 3 |
#define RBWAPR_GPIO_PCIE_PWROFF 15 |
#define RBWAPR_GPIO_CONTROL 10 |
#define RBWAPR_GPIO_BTN_RESET 16 |
|
static struct gpio_led rbwapr_leds[] __initdata = { |
{ |
.name = "rb:green:user", |
.gpio = RBWAPR_GPIO_LED_USER, |
.active_low = 0, |
},{ |
.name = "rb:green:led1", |
.gpio = RBWAPR_GPIO_LED1, |
.active_low = 1, |
},{ |
.name = "rb:green:led2", |
.gpio = RBWAPR_GPIO_LED2, |
.active_low = 1, |
},{ |
.name = "rb:green:led3", |
.gpio = RBWAPR_GPIO_LED3, |
.active_low = 0, |
}, |
}; |
|
|
static struct gen_74x164_chip_platform_data rbspi_ssr_data = { |
.base = RBSPI_SSR_GPIO_BASE, |
.num_registers = 1, |
@@ -858,9 +792,9 @@ |
rbspi_network_setup(flags, 1, 5, 6); |
|
if (flags & RBSPI_HAS_USB) |
gpio_request_one(RB952_GPIO_USB_PWROFF, GPIOF_ACTIVE_LOW | |
gpio_request_one(RB952_GPIO_USB_POWER, |
GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED, |
"USB power off"); |
"USB power"); |
|
if (flags & RBSPI_HAS_POE) |
gpio_request_one(RB952_GPIO_POE_POWER, |
@@ -968,9 +902,9 @@ |
rbspi_wlan_init(1, 7); |
|
if (flags & RBSPI_HAS_USB) |
gpio_request_one(RB962_GPIO_USB_PWROFF, GPIOF_ACTIVE_LOW | |
gpio_request_one(RB962_GPIO_USB_POWER, |
GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED, |
"USB power off"); |
"USB power"); |
|
/* PoE output GPIO is inverted, set GPIOF_ACTIVE_LOW for consistency */ |
if (flags & RBSPI_HAS_POE) |
@@ -1077,11 +1011,12 @@ |
GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED, |
"POE power"); |
|
/* USB power GPIO is inverted, set GPIOF_ACTIVE_LOW for consistency */ |
if (flags & RBSPI_HAS_USB) |
gpio_request_one(RBMAP_GPIO_USB_PWROFF, |
gpio_request_one(RBMAP_GPIO_USB_POWER, |
GPIOF_OUT_INIT_HIGH | GPIOF_ACTIVE_LOW | |
GPIOF_EXPORT_DIR_FIXED, |
"USB power off"); |
"USB power"); |
|
ath79_register_leds_gpio(-1, ARRAY_SIZE(rbmap_leds), rbmap_leds); |
|
@@ -1173,64 +1108,6 @@ |
ath79_register_leds_gpio(-1, ARRAY_SIZE(rb911l_leds), rb911l_leds); |
} |
|
/* |
* Init the hAP mini hardware (QCA953x). |
* The 931-2nD (hAP mini) has 3 ethernet ports, with port 2-3 |
* being assigned to LAN on the casing, and port 1 being assigned |
* to "internet" (WAN) on the casing. Port 1 is connected to PHY2. |
* Since WAN is neither PHY0 nor PHY4, we cannot use GMAC0 with this device. |
*/ |
static void __init rb931_setup(void) |
{ |
u32 flags = RBSPI_HAS_WLAN0; |
|
if (!rbspi_platform_setup()) |
return; |
|
rbspi_peripherals_setup(flags); |
|
/* GMAC1 is HW MAC, WLAN0 MAC is HW MAC + 3 */ |
rbspi_network_setup(flags, 0, 3, 0); |
|
ath79_register_leds_gpio(-1, ARRAY_SIZE(rb931_leds), rb931_leds); |
|
/* hAP mini has two buttons */ |
ath79_register_gpio_keys_polled(-1, RBSPI_KEYS_POLL_INTERVAL, |
ARRAY_SIZE(rb931_gpio_keys), |
rb931_gpio_keys); |
} |
|
/* |
* Init the wAP R hardware. |
* The wAP R-2nD has a single ethernet port and a mini PCIe slot. |
* The OEM source shows it has usb (used over PCIe for LTE devices), |
* and the 'control' GPIO is assumed to be an output pin not tied to an LED. |
*/ |
static void __init rbwapr_setup(void) |
{ |
u32 flags = RBSPI_HAS_WLAN0 | RBSPI_HAS_USB | RBSPI_HAS_PCI; |
|
if (!rbspi_platform_setup()) |
return; |
|
rbspi_peripherals_setup(flags); |
|
/* GMAC1 is HW MAC, WLAN0 MAC is HW MAC + 1 */ |
rbspi_network_setup(flags, 0, 1, 0); |
|
ath79_register_leds_gpio(-1, ARRAY_SIZE(rbwapr_leds), rbwapr_leds); |
|
gpio_request_one(RBWAPR_GPIO_PCIE_PWROFF, GPIOF_OUT_INIT_HIGH | |
GPIOF_ACTIVE_LOW | GPIOF_EXPORT_DIR_FIXED, |
"PCIE power off"); |
|
gpio_request_one(RBWAPR_GPIO_CONTROL, GPIOF_OUT_INIT_LOW | |
GPIOF_ACTIVE_LOW | GPIOF_EXPORT_DIR_FIXED, |
"control"); |
|
rbspi_register_reset_button(RBWAPR_GPIO_BTN_RESET); |
} |
|
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); |
@@ -1239,8 +1116,6 @@ |
MIPS_MACHINE_NONAME(ATH79_MACH_RB_750UPR2, "750-hb", rb750upr2_setup); |
MIPS_MACHINE_NONAME(ATH79_MACH_RB_LHG5, "lhg", rblhg_setup); |
MIPS_MACHINE_NONAME(ATH79_MACH_RB_WAP, "wap-hb", rbwap_setup); |
MIPS_MACHINE_NONAME(ATH79_MACH_RB_WAPR, "wap-lte", rbwapr_setup); |
MIPS_MACHINE_NONAME(ATH79_MACH_RB_CAP, "cap-hb", rbcap_setup); |
MIPS_MACHINE_NONAME(ATH79_MACH_RB_MAP, "map2-hb", rbmap_setup); |
MIPS_MACHINE_NONAME(ATH79_MACH_RB_WAPAC, "wapg-sc", rbwapgsc_setup); |
MIPS_MACHINE_NONAME(ATH79_MACH_RB_931, "931", rb931_setup); |