ar71xx: Use private version of ath79_setup_qca955x_eth_cfg for MR1750
[openwrt.git] / target / linux / ar71xx / files / arch / mips / ath79 / mach-mr600.c
index b05df66..701330c 100644 (file)
 #include "machtypes.h"
 
 #define MR600_GPIO_LED_WLAN58          12
-#define MR600_GPIO_LED_WPS             13
-#define MR600_GPIO_LED_POWER           14
-#define MR600_GPIO_LED_WLAN24          15
-#define MR600_GPIO_LED_LAN             16
+#define MR600_GPIO_LED_WPS                     13
+#define MR600_GPIO_LED_POWER                   14
+
+#define MR600V2_GPIO_LED_WLAN58_RED            12
+#define MR600V2_GPIO_LED_WPS                   13
+#define MR600V2_GPIO_LED_POWER                 14
+#define MR600V2_GPIO_LED_WLAN24_GREEN          18
+#define MR600V2_GPIO_LED_WLAN24_YELLOW         19
+#define MR600V2_GPIO_LED_WLAN24_RED            20
+#define MR600V2_GPIO_LED_WLAN58_GREEN          21
+#define MR600V2_GPIO_LED_WLAN58_YELLOW         22
 
 #define MR600_GPIO_BTN_RESET           17
 
@@ -61,18 +68,51 @@ static struct gpio_led mr600_leds_gpio[] __initdata = {
                .active_low     = 1,
        },
        {
+               .name           = "mr600:green:wlan58",
+               .gpio           = MR600_GPIO_LED_WLAN58,
+               .active_low     = 1,
+       },
+};
+
+static struct gpio_led mr600v2_leds_gpio[] __initdata = {
+       {
+               .name           = "mr600:blue:power",
+               .gpio           = MR600V2_GPIO_LED_POWER,
+               .active_low     = 1,
+       },
+       {
+               .name           = "mr600:blue:wps",
+               .gpio           = MR600V2_GPIO_LED_WPS,
+               .active_low     = 1,
+       },
+       {
+               .name           = "mr600:red:wlan24",
+               .gpio           = MR600V2_GPIO_LED_WLAN24_RED,
+               .active_low     = 1,
+       },
+       {
+               .name           = "mr600:yellow:wlan24",
+               .gpio           = MR600V2_GPIO_LED_WLAN24_YELLOW,
+               .active_low     = 1,
+       },
+       {
                .name           = "mr600:green:wlan24",
-               .gpio           = MR600_GPIO_LED_WLAN24,
+               .gpio           = MR600V2_GPIO_LED_WLAN24_GREEN,
                .active_low     = 1,
        },
        {
-               .name           = "mr600:green:wlan58",
-               .gpio           = MR600_GPIO_LED_WLAN58,
+               .name           = "mr600:red:wlan58",
+               .gpio           = MR600V2_GPIO_LED_WLAN58_RED,
                .active_low     = 1,
        },
        {
-               .name           = "mr600:blue:lan",
-               .gpio           = MR600_GPIO_LED_LAN,
+               .name           = "mr600:yellow:wlan58",
+               .gpio           = MR600V2_GPIO_LED_WLAN58_YELLOW,
+               .active_low     = 1,
+       },
+       {
+               .name           = "mr600:green:wlan58",
+               .gpio           = MR600V2_GPIO_LED_WLAN58_GREEN,
                .active_low     = 1,
        },
 };
@@ -88,26 +128,22 @@ static struct gpio_keys_button mr600_gpio_keys[] __initdata = {
        },
 };
 
-static void __init mr600_setup(void)
+static void __init mr600_base_setup(unsigned num_leds, struct gpio_led *leds)
 {
-       u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
+       u8 *art = (u8 *)KSEG1ADDR(0x1fff0000);
        u8 mac[6];
 
-       ath79_gpio_output_select(MR600_GPIO_LED_LAN, AR934X_GPIO_OUT_GPIO);
-       ath79_gpio_output_select(MR600_GPIO_LED_WLAN24, AR934X_GPIO_OUT_GPIO);
-
        ath79_register_m25p80(NULL);
 
-       ath79_register_leds_gpio(-1, ARRAY_SIZE(mr600_leds_gpio),
-                                mr600_leds_gpio);
+       ath79_register_leds_gpio(-1, num_leds, leds);
        ath79_register_gpio_keys_polled(-1, MR600_KEYS_POLL_INTERVAL,
                                        ARRAY_SIZE(mr600_gpio_keys),
                                        mr600_gpio_keys);
 
-       ath79_init_mac(mac, art + MR600_MAC_OFFSET, -1);
+       ath79_init_mac(mac, art + MR600_MAC_OFFSET, 1);
        ath79_register_wmac(art + MR600_WMAC_CALDATA_OFFSET, mac);
 
-       ath79_init_mac(mac, art + MR600_MAC_OFFSET, -2);
+       ath79_init_mac(mac, art + MR600_MAC_OFFSET, 8);
        ap91_pci_init(art + MR600_PCIE_CALDATA_OFFSET, mac);
 
        ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
@@ -115,7 +151,7 @@ static void __init mr600_setup(void)
 
        ath79_register_mdio(0, 0x0);
 
-       ath79_init_mac(ath79_eth0_data.mac_addr, art + MR600_MAC_OFFSET, -2);
+       ath79_init_mac(ath79_eth0_data.mac_addr, art + MR600_MAC_OFFSET, 0);
 
        /* GMAC0 is connected to an external PHY */
        ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
@@ -125,4 +161,17 @@ static void __init mr600_setup(void)
        ath79_register_eth(0);
 }
 
+static void __init mr600_setup(void)
+{
+       mr600_base_setup(ARRAY_SIZE(mr600_leds_gpio), mr600_leds_gpio);
+       ap9x_pci_setup_wmac_led_pin(0, 0);
+}
+
 MIPS_MACHINE(ATH79_MACH_MR600, "MR600", "OpenMesh MR600", mr600_setup);
+
+static void __init mr600v2_setup(void)
+{
+       mr600_base_setup(ARRAY_SIZE(mr600v2_leds_gpio), mr600v2_leds_gpio);
+}
+
+MIPS_MACHINE(ATH79_MACH_MR600V2, "MR600v2", "OpenMesh MR600v2", mr600v2_setup);