#define ARCHER_C7_GPIO_LED_USB1 18
#define ARCHER_C7_GPIO_LED_USB2 19
-#define ARCHER_C7_GPIO_BTN_RFKILL 13
+#define ARCHER_C7_GPIO_BTN_RFKILL 23
+#define ARCHER_C7_V2_GPIO_BTN_RFKILL 23
#define ARCHER_C7_GPIO_BTN_RESET 16
#define ARCHER_C7_GPIO_USB1_POWER 22
static struct gpio_led archer_c7_leds_gpio[] __initdata = {
{
- .name = "tp-link:blue:qss",
+ .name = "tp-link:green:qss",
.gpio = ARCHER_C7_GPIO_LED_QSS,
.active_low = 1,
},
{
- .name = "tp-link:blue:system",
+ .name = "tp-link:green:system",
.gpio = ARCHER_C7_GPIO_LED_SYSTEM,
.active_low = 1,
},
{
- .name = "tp-link:blue:wlan2g",
+ .name = "tp-link:green:wlan2g",
.gpio = ARCHER_C7_GPIO_LED_WLAN2G,
.active_low = 1,
},
{
- .name = "tp-link:blue:wlan5g",
+ .name = "tp-link:green:wlan5g",
.gpio = ARCHER_C7_GPIO_LED_WLAN5G,
.active_low = 1,
},
},
};
+static struct gpio_led wdr4900_leds_gpio[] __initdata = {
+ {
+ .name = "tp-link:blue:qss",
+ .gpio = ARCHER_C7_GPIO_LED_QSS,
+ .active_low = 1,
+ },
+ {
+ .name = "tp-link:blue:system",
+ .gpio = ARCHER_C7_GPIO_LED_SYSTEM,
+ .active_low = 1,
+ },
+ {
+ .name = "tp-link:blue:wlan2g",
+ .gpio = ARCHER_C7_GPIO_LED_WLAN2G,
+ .active_low = 1,
+ },
+ {
+ .name = "tp-link:green:usb1",
+ .gpio = ARCHER_C7_GPIO_LED_USB1,
+ .active_low = 1,
+ },
+ {
+ .name = "tp-link:green:usb2",
+ .gpio = ARCHER_C7_GPIO_LED_USB2,
+ .active_low = 1,
+ },
+};
+
static struct gpio_keys_button archer_c7_gpio_keys[] __initdata = {
{
.desc = "Reset button",
},
};
-static const struct ar8327_led_info archer_c7_leds_ar8327[] __initconst = {
- AR8327_LED_INFO(PHY0_0, HW, "tp-link:blue:wan"),
- AR8327_LED_INFO(PHY1_0, HW, "tp-link:blue:lan1"),
- AR8327_LED_INFO(PHY2_0, HW, "tp-link:blue:lan2"),
- AR8327_LED_INFO(PHY3_0, HW, "tp-link:blue:lan3"),
- AR8327_LED_INFO(PHY4_0, HW, "tp-link:blue:lan4"),
+static struct gpio_keys_button archer_c7_v2_gpio_keys[] __initdata = {
+ {
+ .desc = "Reset button",
+ .type = EV_KEY,
+ .code = KEY_WPS_BUTTON,
+ .debounce_interval = ARCHER_C7_KEYS_DEBOUNCE_INTERVAL,
+ .gpio = ARCHER_C7_GPIO_BTN_RESET,
+ .active_low = 1,
+ },
+ {
+ .desc = "RFKILL switch",
+ .type = EV_SW,
+ .code = KEY_RFKILL,
+ .debounce_interval = ARCHER_C7_KEYS_DEBOUNCE_INTERVAL,
+ .gpio = ARCHER_C7_V2_GPIO_BTN_RFKILL,
+ },
+};
+
+static struct gpio_keys_button wdr4900_gpio_keys[] __initdata = {
+ {
+ .desc = "Reset button",
+ .type = EV_KEY,
+ .code = KEY_WPS_BUTTON,
+ .debounce_interval = ARCHER_C7_KEYS_DEBOUNCE_INTERVAL,
+ .gpio = ARCHER_C7_GPIO_BTN_RESET,
+ .active_low = 1,
+ },
+};
+
+static const struct ar8327_led_info archer_c7_leds_ar8327[] = {
+ AR8327_LED_INFO(PHY0_0, HW, "tp-link:green:wan"),
+ AR8327_LED_INFO(PHY1_0, HW, "tp-link:green:lan1"),
+ AR8327_LED_INFO(PHY2_0, HW, "tp-link:green:lan2"),
+ AR8327_LED_INFO(PHY3_0, HW, "tp-link:green:lan3"),
+ AR8327_LED_INFO(PHY4_0, HW, "tp-link:green:lan4"),
};
/* GMAC0 of the AR8327 switch is connected to the QCA9558 SoC via SGMII */
static struct mdio_board_info archer_c7_mdio0_info[] = {
{
.bus_id = "ag71xx-mdio.0",
- .phy_addr = 0,
+ .mdio_addr = 0,
.platform_data = &archer_c7_ar8327_data,
},
};
u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
u8 tmpmac[ETH_ALEN];
+ u8 tmpmac2[ETH_ALEN];
ath79_register_m25p80(&archer_c7_flash_data);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c7_leds_gpio),
- archer_c7_leds_gpio);
- ath79_register_gpio_keys_polled(-1, ARCHER_C7_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(archer_c7_gpio_keys),
- archer_c7_gpio_keys);
-
- ath79_init_mac(tmpmac, mac, -1);
- ath79_register_wmac(art + ARCHER_C7_WMAC_CALDATA_OFFSET, tmpmac);
if (pcie_slot) {
+ ath79_register_wmac(art + ARCHER_C7_WMAC_CALDATA_OFFSET, mac);
ath79_register_pci();
} else {
ath79_init_mac(tmpmac, mac, -1);
+ ath79_register_wmac(art + ARCHER_C7_WMAC_CALDATA_OFFSET, tmpmac);
+
+ ath79_init_mac(tmpmac2, mac, -2);
ap9x_pci_setup_wmac_led_pin(0, 0);
- ap91_pci_init(art + ARCHER_C7_PCIE_CALDATA_OFFSET, tmpmac);
+ ap91_pci_init(art + ARCHER_C7_PCIE_CALDATA_OFFSET, tmpmac2);
}
mdiobus_register_board_info(archer_c7_mdio0_info,
static void __init archer_c5_setup(void)
{
+ ath79_register_gpio_keys_polled(-1, ARCHER_C7_KEYS_POLL_INTERVAL,
+ ARRAY_SIZE(archer_c7_gpio_keys),
+ archer_c7_gpio_keys);
+ ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c7_leds_gpio),
+ archer_c7_leds_gpio);
common_setup(true);
}
static void __init archer_c7_setup(void)
{
+ ath79_register_gpio_keys_polled(-1, ARCHER_C7_KEYS_POLL_INTERVAL,
+ ARRAY_SIZE(archer_c7_gpio_keys),
+ archer_c7_gpio_keys);
+ ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c7_leds_gpio),
+ archer_c7_leds_gpio);
common_setup(true);
}
MIPS_MACHINE(ATH79_MACH_ARCHER_C7, "ARCHER-C7", "TP-LINK Archer C7",
archer_c7_setup);
+static void __init archer_c7_v2_setup(void)
+{
+ ath79_register_gpio_keys_polled(-1, ARCHER_C7_KEYS_POLL_INTERVAL,
+ ARRAY_SIZE(archer_c7_v2_gpio_keys),
+ archer_c7_v2_gpio_keys);
+ ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c7_leds_gpio),
+ archer_c7_leds_gpio);
+ common_setup(true);
+}
+
+MIPS_MACHINE(ATH79_MACH_ARCHER_C7_V2, "ARCHER-C7-V2", "TP-LINK Archer C7",
+ archer_c7_v2_setup);
+
static void __init tl_wdr4900_v2_setup(void)
{
+ ath79_register_gpio_keys_polled(-1, ARCHER_C7_KEYS_POLL_INTERVAL,
+ ARRAY_SIZE(wdr4900_gpio_keys),
+ wdr4900_gpio_keys);
+ ath79_register_leds_gpio(-1, ARRAY_SIZE(wdr4900_leds_gpio),
+ wdr4900_leds_gpio);
common_setup(false);
}