X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=target%2Flinux%2Far71xx%2Ffiles%2Farch%2Fmips%2Far71xx%2Fmach-wrt160nl.c;h=0cc560a40ccd0e8a8625a0a9de5a39ee9d17436f;hb=11a837ce029534fc38f6deb2a2f31d80fe5a1f7f;hp=bf3f3c297244be48754bd33eba14e013e4fa0d88;hpb=611c750d3e30b0cd4d77f9a649575a87f0668458;p=openwrt.git diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wrt160nl.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wrt160nl.c index bf3f3c2972..0cc560a40c 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wrt160nl.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wrt160nl.c @@ -8,18 +8,16 @@ * by the Free Software Foundation. */ -#include -#include - -#include #include +#include "machtype.h" #include "devices.h" #include "dev-m25p80.h" -#include "dev-ar913x-wmac.h" +#include "dev-ar9xxx-wmac.h" #include "dev-gpio-buttons.h" #include "dev-leds-gpio.h" #include "dev-usb.h" +#include "nvram.h" #define WRT160NL_GPIO_LED_POWER 14 #define WRT160NL_GPIO_LED_WPS_AMBER 9 @@ -29,46 +27,19 @@ #define WRT160NL_GPIO_BTN_WPS 7 #define WRT160NL_GPIO_BTN_RESET 21 -#define WRT160NL_BUTTONS_POLL_INTERVAL 20 +#define WRT160NL_KEYS_POLL_INTERVAL 20 /* msecs */ +#define WRT160NL_KEYS_DEBOUNCE_INTERVAL (3 * WRT160NL_KEYS_POLL_INTERVAL) -#ifdef CONFIG_MTD_PARTITIONS -static struct mtd_partition wrt160nl_partitions[] = { - { - .name = "u-boot", - .offset = 0, - .size = 0x040000, - .mask_flags = MTD_WRITEABLE, - } , { - .name = "kernel", - .offset = 0x040000, - .size = 0x0e0000, - } , { - .name = "filesytem", - .offset = 0x120000, - .size = 0x6c0000, - } , { - .name = "nvram", - .offset = 0x7e0000, - .size = 0x010000, - .mask_flags = MTD_WRITEABLE, - } , { - .name = "ART", - .offset = 0x7f0000, - .size = 0x010000, - .mask_flags = MTD_WRITEABLE, - } , { - .name = "firmware", - .offset = 0x040000, - .size = 0x7a0000, - } +#define WRT160NL_NVRAM_ADDR 0x1f7e0000 +#define WRT160NL_NVRAM_SIZE 0x10000 + +static const char *wrt160nl_part_probes[] = { + "wrt160nl", + NULL, }; -#endif /* CONFIG_MTD_PARTITIONS */ static struct flash_platform_data wrt160nl_flash_data = { -#ifdef CONFIG_MTD_PARTITIONS - .parts = wrt160nl_partitions, - .nr_parts = ARRAY_SIZE(wrt160nl_partitions), -#endif + .part_probes = wrt160nl_part_probes, }; static struct gpio_led wrt160nl_leds_gpio[] __initdata = { @@ -92,19 +63,19 @@ static struct gpio_led wrt160nl_leds_gpio[] __initdata = { } }; -static struct gpio_button wrt160nl_gpio_buttons[] __initdata = { +static struct gpio_keys_button wrt160nl_gpio_keys[] __initdata = { { .desc = "reset", .type = EV_KEY, - .code = BTN_0, - .threshold = 5, + .code = KEY_RESTART, + .debounce_interval = WRT160NL_KEYS_DEBOUNCE_INTERVAL, .gpio = WRT160NL_GPIO_BTN_RESET, .active_low = 1, }, { .desc = "wps", .type = EV_KEY, - .code = BTN_1, - .threshold = 5, + .code = KEY_WPS_BUTTON, + .debounce_interval = WRT160NL_KEYS_DEBOUNCE_INTERVAL, .gpio = WRT160NL_GPIO_BTN_WPS, .active_low = 1, } @@ -112,7 +83,17 @@ static struct gpio_button wrt160nl_gpio_buttons[] __initdata = { static void __init wrt160nl_setup(void) { - ar71xx_add_device_mdio(0x0); + const char *nvram = (char *) KSEG1ADDR(WRT160NL_NVRAM_ADDR); + u8 *eeprom = (u8 *) KSEG1ADDR(0x1fff1000); + u8 mac[6]; + + if (nvram_parse_mac_addr(nvram, WRT160NL_NVRAM_SIZE, + "lan_hwaddr=", mac) == 0) { + ar71xx_init_mac(ar71xx_eth0_data.mac_addr, mac, 0); + ar71xx_init_mac(ar71xx_eth1_data.mac_addr, mac, 1); + } + + ar71xx_add_device_mdio(0, 0x0); ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; ar71xx_eth0_data.phy_mask = 0x01; @@ -126,14 +107,21 @@ static void __init wrt160nl_setup(void) ar71xx_add_device_m25p80(&wrt160nl_flash_data); ar71xx_add_device_usb(); - ar913x_add_device_wmac(); + + if (nvram_parse_mac_addr(nvram, WRT160NL_NVRAM_SIZE, + "wl0_hwaddr=", mac) == 0) + ar9xxx_add_device_wmac(eeprom, mac); + else + ar9xxx_add_device_wmac(eeprom, NULL); ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(wrt160nl_leds_gpio), wrt160nl_leds_gpio); - ar71xx_add_device_gpio_buttons(-1, WRT160NL_BUTTONS_POLL_INTERVAL, - ARRAY_SIZE(wrt160nl_gpio_buttons), - wrt160nl_gpio_buttons); + ar71xx_register_gpio_keys_polled(-1, WRT160NL_KEYS_POLL_INTERVAL, + ARRAY_SIZE(wrt160nl_gpio_keys), + wrt160nl_gpio_keys); + } -MIPS_MACHINE(AR71XX_MACH_WRT160NL, "Linksys WRT160NL", wrt160nl_setup); +MIPS_MACHINE(AR71XX_MACH_WRT160NL, "WRT160NL", "Linksys WRT160NL", + wrt160nl_setup);