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

Last change on this file since 14637 was 14637, checked in by juhosg, 7 years ago

[ar71xx] TL-WR941ND: add DSA device for the Marvell 88E6060 switch

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.3 KB
Line 
1/*
2 *  TP-LINK TL-WR941ND board support
3 *
4 *  Copyright (C) 2009 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/platform_device.h>
12#include <linux/mtd/mtd.h>
13#include <linux/mtd/partitions.h>
14#include <linux/spi/spi.h>
15#include <linux/spi/flash.h>
16#include <linux/input.h>
17
18#include <asm/mips_machine.h>
19
20#include <asm/mach-ar71xx/ar71xx.h>
21
22#include "devices.h"
23
24#define TL_WR941ND_GPIO_LED_SYSTEM      2
25#define TL_WR941ND_GPIO_LED_QSS         5
26
27#define TL_WR941ND_GPIO_BTN_RESET       3
28#define TL_WR941ND_GPIO_BTN_QSS         7
29
30#define TL_WR941ND_BUTTONS_POLL_INTERVAL        20
31
32#ifdef CONFIG_MTD_PARTITIONS
33static struct mtd_partition tl_wr941nd_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           = 0x100000,
43        } , {
44                .name           = "rootfs",
45                .offset         = 0x120000,
46                .size           = 0x2c0000,
47        } , {
48                .name           = "config",
49                .offset         = 0x3e0000,
50                .size           = 0x010000,
51        } , {
52                .name           = "art",
53                .offset         = 0x3f0000,
54                .size           = 0x010000,
55                .mask_flags     = MTD_WRITEABLE,
56        } , {
57                .name           = "firmware",
58                .offset         = 0x020000,
59                .size           = 0x3c0000,
60        }
61};
62#endif /* CONFIG_MTD_PARTITIONS */
63
64static struct flash_platform_data tl_wr941nd_flash_data = {
65#ifdef CONFIG_MTD_PARTITIONS
66        .parts          = tl_wr941nd_partitions,
67        .nr_parts       = ARRAY_SIZE(tl_wr941nd_partitions),
68#endif
69};
70
71static struct spi_board_info tl_wr941nd_spi_info[] = {
72        {
73                .bus_num        = 0,
74                .chip_select    = 0,
75                .max_speed_hz   = 25000000,
76                .modalias       = "m25p80",
77                .platform_data  = &tl_wr941nd_flash_data,
78        }
79};
80
81static struct gpio_led tl_wr941nd_leds_gpio[] __initdata = {
82        {
83                .name           = "tl-wr941nd:green:system",
84                .gpio           = TL_WR941ND_GPIO_LED_SYSTEM,
85                .active_low     = 1,
86        }, {
87                .name           = "tl-wr941nd:red:qss",
88                .gpio           = TL_WR941ND_GPIO_LED_QSS,
89                .active_low     = 1,
90        }
91};
92
93static struct gpio_button tl_wr941nd_gpio_buttons[] __initdata = {
94        {
95                .desc           = "reset",
96                .type           = EV_KEY,
97                .code           = BTN_0,
98                .threshold      = 5,
99                .gpio           = TL_WR941ND_GPIO_BTN_RESET,
100                .active_low     = 1,
101        }, {
102                .desc           = "qss",
103                .type           = EV_KEY,
104                .code           = BTN_1,
105                .threshold      = 5,
106                .gpio           = TL_WR941ND_GPIO_BTN_QSS,
107                .active_low     = 1,
108        }
109};
110
111static struct dsa_platform_data tl_wr941nd_dsa_data = {
112        .port_names[0]  = "wan",
113        .port_names[1]  = "lan1",
114        .port_names[2]  = "lan2",
115        .port_names[3]  = "lan3",
116        .port_names[4]  = "lan4",
117        .port_names[5]  = "cpu",
118};
119
120static void __init tl_wr941nd_setup(void)
121{
122        u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
123
124        ar71xx_set_mac_base(mac);
125
126        ar71xx_add_device_mdio(0x0);
127
128        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
129        ar71xx_eth0_data.phy_mask = 0x0;
130        ar71xx_eth0_data.speed = SPEED_100;
131        ar71xx_eth0_data.duplex = DUPLEX_FULL;
132
133        ar71xx_add_device_eth(0);
134        ar71xx_add_device_dsa(0, &tl_wr941nd_dsa_data);
135
136        ar71xx_add_device_spi(NULL, tl_wr941nd_spi_info,
137                                        ARRAY_SIZE(tl_wr941nd_spi_info));
138
139        ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(tl_wr941nd_leds_gpio),
140                                        tl_wr941nd_leds_gpio);
141
142        ar71xx_add_device_gpio_buttons(-1, TL_WR941ND_BUTTONS_POLL_INTERVAL,
143                                        ARRAY_SIZE(tl_wr941nd_gpio_buttons),
144                                        tl_wr941nd_gpio_buttons);
145        ar91xx_add_device_wmac();
146}
147
148MIPS_MACHINE(AR71XX_MACH_TL_WR941ND, "TP-LINK TL-WR941ND", tl_wr941nd_setup);
Note: See TracBrowser for help on using the repository browser.