Root/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-pwh2004.c

1/*
2 * Prolink PWH2004 support (or Abocom WR5205)
3 *
4 * Copyright (C) 2010 Esa Hyytia <esa@netlab.tkk.fi>
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 PWH2004_GPIO_BUTTON_WPS 12
26#define PWH2004_GPIO_LED_POWER 9
27#define PWH2004_GPIO_LED_WIFI 14
28#define PWH2004_BUTTONS_POLL_INTERVAL 20
29
30#ifdef CONFIG_MTD_PARTITIONS
31static struct mtd_partition pwh2004_partitions[] = {
32    {
33        .name = "u-boot",
34        .offset = 0,
35        .size = 0x030000,
36        .mask_flags = MTD_WRITEABLE,
37    }, {
38        .name = "config",
39        .offset = 0x030000,
40        .size = 0x010000,
41        .mask_flags = MTD_WRITEABLE,
42    }, {
43        .name = "factory",
44        .offset = 0x040000,
45        .size = 0x010000,
46        .mask_flags = MTD_WRITEABLE,
47    }, {
48        .name = "kernel",
49        .offset = 0x050000,
50        .size = 0x7b0000,
51    }, {
52        .name = "openwrt",
53        .offset = 0x050000,
54        .size = 0x7b0000,
55    }
56};
57#endif /* CONFIG_MTD_PARTITIONS */
58
59static struct physmap_flash_data pwh2004_flash_data = {
60#ifdef CONFIG_MTD_PARTITIONS
61    .nr_parts = ARRAY_SIZE(pwh2004_partitions),
62    .parts = pwh2004_partitions,
63#endif
64};
65
66static struct gpio_led pwh2004_leds_gpio[] __initdata = {
67    {
68        .name = "pwh2004:red:wifi",
69        .gpio = PWH2004_GPIO_LED_WIFI,
70        .active_low = 1,
71    }, {
72        .name = "pwh2004:green:power",
73        .gpio = PWH2004_GPIO_LED_POWER,
74        .active_low = 1,
75    }
76};
77
78static struct gpio_button pwh2004_gpio_buttons[] __initdata = {
79    {
80        .desc = "wps",
81        .type = EV_KEY,
82        .code = KEY_RESTART,
83        .threshold = 3,
84        .gpio = PWH2004_GPIO_BUTTON_WPS,
85        .active_low = 1,
86    }
87};
88
89static void __init pwh2004_init(void)
90{
91    rt305x_gpio_init(RT305X_GPIO_MODE_GPIO << RT305X_GPIO_MODE_UART0_SHIFT);
92    rt305x_register_flash(0, &pwh2004_flash_data);
93    ramips_register_gpio_leds(-1, ARRAY_SIZE(pwh2004_leds_gpio),
94                  pwh2004_leds_gpio);
95    ramips_register_gpio_buttons(-1, PWH2004_BUTTONS_POLL_INTERVAL,
96                     ARRAY_SIZE(pwh2004_gpio_buttons),
97                     pwh2004_gpio_buttons);
98    rt305x_register_ethernet();
99    rt305x_register_wifi();
100    rt305x_register_wdt();
101}
102
103MIPS_MACHINE(RAMIPS_MACH_PWH2004, "PWH2004", "Prolink PWH2004",
104         pwh2004_init);
105

Archive Download this file



interactive