Root/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-hw550-3g.c

1/*
2 * Aztech HW550-3G board support
3 *
4 * Copyright (C) 2011 Layne Edwards <ledwards76@gmail.com>
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/init.h>
12#include <linux/platform_device.h>
13#include <linux/mtd/mtd.h>
14#include <linux/mtd/partitions.h>
15#include <linux/mtd/physmap.h>
16
17#include <asm/mach-ralink/machine.h>
18#include <asm/mach-ralink/dev-gpio-buttons.h>
19#include <asm/mach-ralink/dev-gpio-leds.h>
20#include <asm/mach-ralink/rt305x.h>
21#include <asm/mach-ralink/rt305x_regs.h>
22
23#include "devices.h"
24
25#define HW550_3G_GPIO_LED_USB 8
26#define HW550_3G_GPIO_LED_3G 11
27#define HW550_3G_GPIO_LED_STATUS 12
28#define HW550_3G_GPIO_LED_WPS 14
29
30#define HW550_3G_GPIO_BUTTON_RESET 10
31#define HW550_3G_GPIO_BUTTON_CONNECT 7
32#define HW550_3G_GPIO_BUTTON_WPS 0
33
34#define HW550_3G_BUTTONS_POLL_INTERVAL 20
35
36#ifdef CONFIG_MTD_PARTITIONS
37static struct mtd_partition hw550_3g_partitions[] = {
38    {
39        .name = "u-boot",
40        .offset = 0,
41        .size = 0x030000,
42        .mask_flags = MTD_WRITEABLE,
43    }, {
44        .name = "config",
45        .offset = 0x030000,
46        .size = 0x010000,
47        .mask_flags = MTD_WRITEABLE,
48    }, {
49        .name = "factory",
50        .offset = 0x040000,
51        .size = 0x010000,
52        .mask_flags = MTD_WRITEABLE,
53    }, {
54        .name = "kernel",
55        .offset = 0x050000,
56        .size = 0x0d0000,
57    }, {
58        .name = "rootfs",
59        .offset = 0x120000,
60        .size = 0x6e0000,
61    }, {
62        .name = "firmware",
63        .offset = 0x050000,
64        .size = 0x7b0000,
65    }
66};
67#endif /* CONFIG_MTD_PARTITIONS */
68
69static struct physmap_flash_data hw550_3g_flash_data = {
70#ifdef CONFIG_MTD_PARTITIONS
71    .nr_parts = ARRAY_SIZE(hw550_3g_partitions),
72    .parts = hw550_3g_partitions,
73#endif
74};
75
76static struct gpio_led hw550_3g_leds_gpio[] __initdata = {
77    {
78        .name = "hw550-3g:green:usb",
79        .gpio = HW550_3G_GPIO_LED_USB,
80        .active_low = 1,
81    }, {
82        .name = "hw550-3g:green:3g",
83        .gpio = HW550_3G_GPIO_LED_3G,
84        .active_low = 1,
85    }, {
86        .name = "hw550-3g:green:status",
87        .gpio = HW550_3G_GPIO_LED_STATUS,
88        .active_low = 1,
89    }, {
90        .name = "hw550-3g:green:wps",
91        .gpio = HW550_3G_GPIO_LED_WPS,
92        .active_low = 1,
93    }
94};
95
96static struct gpio_button hw550_3g_gpio_buttons[] __initdata = {
97    {
98        .desc = "reset",
99        .type = EV_KEY,
100        .code = KEY_RESTART,
101        .threshold = 3,
102        .gpio = HW550_3G_GPIO_BUTTON_RESET,
103        .active_low = 1,
104    }, {
105        .desc = "connect",
106        .type = EV_KEY,
107        .code = KEY_CONNECT,
108        .threshold = 3,
109        .gpio = HW550_3G_GPIO_BUTTON_CONNECT,
110        .active_low = 1,
111    }, {
112        .desc = "wps",
113        .type = EV_KEY,
114        .code = KEY_WPS_BUTTON,
115        .threshold = 3,
116        .gpio = HW550_3G_GPIO_BUTTON_WPS,
117        .active_low = 1,
118    }
119};
120
121#define HW550_3G_GPIO_MODE \
122    ((RT305X_GPIO_MODE_GPIO << RT305X_GPIO_MODE_UART0_SHIFT) | \
123     RT305X_GPIO_MODE_MDIO)
124
125static void __init hw550_3g_init(void)
126{
127    rt305x_gpio_init(HW550_3G_GPIO_MODE);
128
129    rt305x_register_flash(0, &hw550_3g_flash_data);
130    rt305x_esw_data.vlan_config = RT305X_ESW_VLAN_CONFIG_LLLLW;
131    rt305x_register_ethernet();
132    ramips_register_gpio_leds(-1, ARRAY_SIZE(hw550_3g_leds_gpio),
133                  hw550_3g_leds_gpio);
134    ramips_register_gpio_buttons(-1, HW550_3G_BUTTONS_POLL_INTERVAL,
135                     ARRAY_SIZE(hw550_3g_gpio_buttons),
136                     hw550_3g_gpio_buttons);
137    rt305x_register_wifi();
138    rt305x_register_wdt();
139    rt305x_register_usb();
140}
141
142MIPS_MACHINE(RAMIPS_MACH_HW550_3G, "HW550-3G", "Aztech HW550-3G",
143         hw550_3g_init);
144

Archive Download this file



interactive