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 = 0x180000,
57    }, {
58        .name = "rootfs",
59        .offset = 0x1d0000,
60        .size = 0x580000,
61    }, {
62        .name = "user",
63        .offset = 0x750000,
64        .size = 0x0b0000,
65    }, {
66        .name = "firmware",
67        .offset = 0x050000,
68        .size = 0x700000,
69    }
70};
71#endif /* CONFIG_MTD_PARTITIONS */
72
73static struct physmap_flash_data hw550_3g_flash_data = {
74#ifdef CONFIG_MTD_PARTITIONS
75    .nr_parts = ARRAY_SIZE(hw550_3g_partitions),
76    .parts = hw550_3g_partitions,
77#endif
78};
79
80static struct gpio_led hw550_3g_leds_gpio[] __initdata = {
81    {
82        .name = "hw550-3g:green:usb",
83        .gpio = HW550_3G_GPIO_LED_USB,
84        .active_low = 1,
85    }, {
86        .name = "hw550-3g:green:3g",
87        .gpio = HW550_3G_GPIO_LED_3G,
88        .active_low = 1,
89    }, {
90        .name = "hw550-3g:green:status",
91        .gpio = HW550_3G_GPIO_LED_STATUS,
92        .active_low = 1,
93    }, {
94        .name = "hw550-3g:green:wps",
95        .gpio = HW550_3G_GPIO_LED_WPS,
96        .active_low = 1,
97    }
98};
99
100static struct gpio_button hw550_3g_gpio_buttons[] __initdata = {
101    {
102        .desc = "reset",
103        .type = EV_KEY,
104        .code = KEY_RESTART,
105        .threshold = 3,
106        .gpio = HW550_3G_GPIO_BUTTON_RESET,
107        .active_low = 1,
108    }, {
109        .desc = "connect",
110        .type = EV_KEY,
111        .code = KEY_CONNECT,
112        .threshold = 3,
113        .gpio = HW550_3G_GPIO_BUTTON_CONNECT,
114        .active_low = 1,
115    }, {
116        .desc = "wps",
117        .type = EV_KEY,
118        .code = KEY_WPS_BUTTON,
119        .threshold = 3,
120        .gpio = HW550_3G_GPIO_BUTTON_WPS,
121        .active_low = 1,
122    }
123};
124
125#define HW550_3G_GPIO_MODE \
126    ((RT305X_GPIO_MODE_GPIO << RT305X_GPIO_MODE_UART0_SHIFT) | \
127     RT305X_GPIO_MODE_MDIO)
128
129static void __init hw550_3g_init(void)
130{
131    rt305x_gpio_init(HW550_3G_GPIO_MODE);
132
133    rt305x_register_flash(0, &hw550_3g_flash_data);
134    rt305x_register_ethernet();
135    ramips_register_gpio_leds(-1, ARRAY_SIZE(hw550_3g_leds_gpio),
136                  hw550_3g_leds_gpio);
137    ramips_register_gpio_buttons(-1, HW550_3G_BUTTONS_POLL_INTERVAL,
138                     ARRAY_SIZE(hw550_3g_gpio_buttons),
139                     hw550_3g_gpio_buttons);
140    rt305x_register_wifi();
141    rt305x_register_wdt();
142}
143
144MIPS_MACHINE(RAMIPS_MACH_HW550_3G, "HW550-3G", "Aztech HW550-3G",
145         hw550_3g_init);
146

Archive Download this file



interactive