diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2010-01-05 20:12:12 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2010-01-05 20:12:12 +0000 |
commit | de6bbad0100771a89b2091f6d01d0fc54633cf66 (patch) | |
tree | e59a0757bd6e6d0147e7f1b8f38178b9fe3b909c | |
parent | ba699cf1c13e8994c3a93aca19b5f14518b4d780 (diff) | |
download | upstream-de6bbad0100771a89b2091f6d01d0fc54633cf66.tar.gz upstream-de6bbad0100771a89b2091f6d01d0fc54633cf66.tar.bz2 upstream-de6bbad0100771a89b2091f6d01d0fc54633cf66.zip |
ar71xx: init PCI on the WRT400N board (thanks to Ben Pfountz for testing)
SVN-Revision: 19047
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig | 1 | ||||
-rw-r--r-- | target/linux/ar71xx/files/arch/mips/ar71xx/mach-wrt400n.c | 21 |
2 files changed, 20 insertions, 2 deletions
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig b/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig index 9085bc1a20..e5cf2c788c 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig @@ -86,6 +86,7 @@ config AR71XX_MACH_WRT160NL config AR71XX_MACH_WRT400N bool "Linksys WRT400N board support" + select AR71XX_DEV_AP94_PCI if PCI select AR71XX_DEV_M25P80 select AR71XX_DEV_GPIO_BUTTONS select AR71XX_DEV_LEDS_GPIO diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wrt400n.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wrt400n.c index 005828f324..6f9e82dda6 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wrt400n.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wrt400n.c @@ -1,7 +1,7 @@ /* * Linksys WRT400N board support * - * Copyright (C) 2009 Gabor Juhos <juhosg@openwrt.org> + * Copyright (C) 2009-2010 Gabor Juhos <juhosg@openwrt.org> * Copyright (C) 2009 Imre Kaloz <kaloz@openwrt.org> * * This program is free software; you can redistribute it and/or modify it @@ -16,9 +16,11 @@ #include "machtype.h" #include "devices.h" +#include "dev-ap94-pci.h" #include "dev-m25p80.h" #include "dev-gpio-buttons.h" #include "dev-leds-gpio.h" +#include "nvram.h" #define WRT400N_GPIO_LED_ORANGE 5 #define WRT400N_GPIO_LED_GREEN 4 @@ -30,6 +32,10 @@ #define WRT400N_BUTTONS_POLL_INTERVAL 20 +#define WRT400N_MAC_ADDR_OFFSET 0x120c +#define WRT400N_CALDATA0_OFFSET 0x1000 +#define WRT400N_CALDATA1_OFFSET 0x5000 + #ifdef CONFIG_MTD_PARTITIONS static struct mtd_partition wrt400n_partitions[] = { { @@ -125,6 +131,16 @@ static struct gpio_button wrt400n_gpio_buttons[] __initdata = { static void __init wrt400n_setup(void) { + u8 *art = (u8 *) KSEG1ADDR(0x1fff0000); + u8 mac[6]; + int i; + + memcpy(mac, art + WRT400N_MAC_ADDR_OFFSET, 6); + for (i = 5; i >= 3; i--) + if (++mac[i] != 0x00) break; + + ar71xx_set_mac_base(mac); + ar71xx_add_device_mdio(0x0); ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; @@ -148,7 +164,8 @@ static void __init wrt400n_setup(void) ARRAY_SIZE(wrt400n_gpio_buttons), wrt400n_gpio_buttons); - /* TODO: PCI support */ + ap94_pci_init(art + WRT400N_CALDATA0_OFFSET, NULL, + art + WRT400N_CALDATA1_OFFSET, NULL); } MIPS_MACHINE(AR71XX_MACH_WRT400N, "WRT400N", "Linksys WRT400N", wrt400n_setup); |