ar71xx: WNR2200: enable control of all LEDs and buttons
[openwrt/staging/wigyori.git] / target / linux / ar71xx / files / arch / mips / ath79 / mach-mynet-rext.c
index d20dbe0a875677c2a84b5744a13acea5e4aac0e0..3d48ca8fa5de21582d3d0c72ccaecc84d4c00e73 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/platform_device.h>
 #include <linux/ath9k_platform.h>
 #include <linux/ar8216_platform.h>
+#include <linux/platform_data/phy-at803x.h>
 
 #include <asm/mach-ath79/ar71xx_regs.h>
 
 
 #define MYNET_REXT_ART_ADDR            0x1f7f0000
 
+static const char *mynet_rext_part_probes[] = {
+       "cybertan",
+       NULL,
+};
+
+static struct flash_platform_data mynet_rext_flash_data = {
+       .type           = "s25fl064k",
+       .part_probes    = mynet_rext_part_probes,
+};
+
 static struct gpio_led mynet_rext_leds_gpio[] __initdata = {
        {
                .name           = "wd:blue:power",
@@ -114,6 +125,21 @@ static struct gpio_keys_button mynet_rext_gpio_keys[] __initdata = {
        },
 };
 
+static struct at803x_platform_data mynet_rext_at803x_data = {
+       .disable_smarteee = 0,
+       .enable_rgmii_rx_delay = 1,
+       .enable_rgmii_tx_delay = 0,
+       .fixup_rgmii_tx_delay = 1,
+};
+
+static struct mdio_board_info mynet_rext_mdio0_info[] = {
+        {
+                .bus_id = "ag71xx-mdio.0",
+                .phy_addr = 4,
+                .platform_data = &mynet_rext_at803x_data,
+        },
+};
+
 static void mynet_rext_get_mac(const char *name, char *mac)
 {
        u8 *nvram = (u8 *) KSEG1ADDR(MYNET_REXT_NVRAM_ADDR);
@@ -130,7 +156,7 @@ static void __init mynet_rext_setup(void)
        u8 *art = (u8 *) KSEG1ADDR(MYNET_REXT_ART_ADDR);
        u8 tmpmac[ETH_ALEN];
 
-       ath79_register_m25p80(NULL);
+       ath79_register_m25p80(&mynet_rext_flash_data);
 
        /* GPIO configuration from drivers/char/GPIO8.c */
 
@@ -153,22 +179,29 @@ static void __init mynet_rext_setup(void)
                                        ARRAY_SIZE(mynet_rext_gpio_keys),
                                        mynet_rext_gpio_keys);
 
-       mynet_rext_get_mac("wl0_hwaddr=", tmpmac);
-       ath79_register_wmac(art + MYNET_REXT_WMAC_CALDATA_OFFSET, tmpmac);
-
-       ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0);
+       ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
+                                  AR934X_ETH_CFG_RXD_DELAY |
+                                  AR934X_ETH_CFG_RDV_DELAY);
 
        ath79_register_mdio(0, 0x0);
 
+       mdiobus_register_board_info(mynet_rext_mdio0_info,
+                                   ARRAY_SIZE(mynet_rext_mdio0_info));
+
        /* LAN */
        mynet_rext_get_mac("et0macaddr=", ath79_eth0_data.mac_addr);
 
        /* GMAC0 is connected to an external PHY on Port 4 */
        ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
        ath79_eth0_data.phy_mask = BIT(4);
+       ath79_eth0_pll_data.pll_10   = 0x00001313; /* athrs_mac.c */
        ath79_eth0_pll_data.pll_1000 = 0x0e000000; /* athrs_mac.c */
        ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
        ath79_register_eth(0);
+
+       /* WLAN */
+       mynet_rext_get_mac("wl0_hwaddr=", tmpmac);
+       ap91_pci_init(art + MYNET_REXT_WMAC_CALDATA_OFFSET, tmpmac);
 }
 
 MIPS_MACHINE(ATH79_MACH_MYNET_REXT, "MYNET-REXT",