source: trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr741nd.c @ 22675

Last change on this file since 22675 was 22675, checked in by nbd, 6 years ago

ar71xx: add a new driver for the ar7240 switch using swconfig.
hooks directly into the ethernet driver, as MAC resets also require switch reinitializations and the switch is part of the cpu core anyway
switch only tl-wr741nd (and other devices using this board file, such as tl-wr841nd) over to using this by default, as other devices are still untested
fixes #7563

  • Property svn:eol-style set to native
File size: 3.1 KB
Line 
1/*
2 *  TP-LINK TL-WR741ND board support
3 *
4 *  Copyright (C) 2009-2010 Gabor Juhos <juhosg@openwrt.org>
5 *
6 *  This program is free software; you can redistribute it and/or modify it
7 *  under the terms of the GNU General Public License version 2 as published
8 *  by the Free Software Foundation.
9 */
10
11#include <linux/mtd/mtd.h>
12#include <linux/mtd/partitions.h>
13
14#include <asm/mach-ar71xx/ar71xx.h>
15
16#include "machtype.h"
17#include "devices.h"
18#include "dev-m25p80.h"
19#include "dev-ap91-eth.h"
20#include "dev-ap91-pci.h"
21#include "dev-gpio-buttons.h"
22#include "dev-leds-gpio.h"
23
24#define TL_WR741ND_GPIO_LED_QSS         0
25#define TL_WR741ND_GPIO_LED_SYSTEM      1
26
27#define TL_WR741ND_GPIO_BTN_RESET       11
28#define TL_WR741ND_GPIO_BTN_QSS         12
29
30#define TL_WR741ND_BUTTONS_POLL_INTERVAL        20
31
32#ifdef CONFIG_MTD_PARTITIONS
33static struct mtd_partition tl_wr741nd_partitions[] = {
34        {
35                .name           = "u-boot",
36                .offset         = 0,
37                .size           = 0x020000,
38                .mask_flags     = MTD_WRITEABLE,
39        } , {
40                .name           = "kernel",
41                .offset         = 0x020000,
42                .size           = 0x140000,
43        } , {
44                .name           = "rootfs",
45                .offset         = 0x160000,
46                .size           = 0x290000,
47        } , {
48                .name           = "art",
49                .offset         = 0x3f0000,
50                .size           = 0x010000,
51                .mask_flags     = MTD_WRITEABLE,
52        } , {
53                .name           = "firmware",
54                .offset         = 0x020000,
55                .size           = 0x3d0000,
56        }
57};
58#endif /* CONFIG_MTD_PARTITIONS */
59
60static struct flash_platform_data tl_wr741nd_flash_data = {
61#ifdef CONFIG_MTD_PARTITIONS
62        .parts          = tl_wr741nd_partitions,
63        .nr_parts       = ARRAY_SIZE(tl_wr741nd_partitions),
64#endif
65};
66
67static struct gpio_led tl_wr741nd_leds_gpio[] __initdata = {
68        {
69                .name           = "tl-wr741nd:green:system",
70                .gpio           = TL_WR741ND_GPIO_LED_SYSTEM,
71                .active_low     = 1,
72        }, {
73                .name           = "tl-wr741nd:green:qss",
74                .gpio           = TL_WR741ND_GPIO_LED_QSS,
75                .active_low     = 1,
76        }
77};
78
79static struct gpio_button tl_wr741nd_gpio_buttons[] __initdata = {
80        {
81                .desc           = "reset",
82                .type           = EV_KEY,
83                .code           = KEY_RESTART,
84                .threshold      = 3,
85                .gpio           = TL_WR741ND_GPIO_BTN_RESET,
86                .active_low     = 1,
87        }, {
88                .desc           = "qss",
89                .type           = EV_KEY,
90                .code           = KEY_WPS_BUTTON,
91                .threshold      = 3,
92                .gpio           = TL_WR741ND_GPIO_BTN_QSS,
93                .active_low     = 1,
94        }
95};
96
97static void __init tl_wr741nd_setup(void)
98{
99        u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
100        u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
101
102        ar71xx_add_device_m25p80(&tl_wr741nd_flash_data);
103
104        ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(tl_wr741nd_leds_gpio),
105                                        tl_wr741nd_leds_gpio);
106
107        ar71xx_add_device_gpio_buttons(-1, TL_WR741ND_BUTTONS_POLL_INTERVAL,
108                                        ARRAY_SIZE(tl_wr741nd_gpio_buttons),
109                                        tl_wr741nd_gpio_buttons);
110
111        ar71xx_eth1_data.has_ar7240_switch = 1;
112        ar71xx_set_mac_base(mac);
113
114        /* WAN port */
115        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
116        ar71xx_eth0_data.speed = SPEED_100;
117        ar71xx_eth0_data.duplex = DUPLEX_FULL;
118
119        /* LAN ports */
120        ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
121        ar71xx_eth1_data.speed = SPEED_1000;
122        ar71xx_eth1_data.duplex = DUPLEX_FULL;
123
124        ar71xx_add_device_mdio(0x0);
125        ar71xx_add_device_eth(1);
126        ar71xx_add_device_eth(0);
127
128        ap91_pci_init(ee, mac);
129}
130MIPS_MACHINE(AR71XX_MACH_TL_WR741ND, "TL-WR741ND", "TP-LINK TL-WR741ND",
131             tl_wr741nd_setup);
Note: See TracBrowser for help on using the repository browser.