register the watchdog on the wbd111
[openwrt.git] / target / linux / gemini / patches / 002-wbd111_support.patch
1 --- /dev/null
2 +++ b/arch/arm/mach-gemini/board-wbd111.c
3 @@ -0,0 +1,125 @@
4 +/*
5 + *  Support for Wiliboard WBD-111
6 + *
7 + *  Copyright (C) 2009 Imre Kaloz <kaloz@openwrt.org>
8 + *
9 + * This program is free software; you can redistribute it and/or modify
10 + * it under the terms of the GNU General Public License as published by
11 + * the Free Software Foundation; either version 2 of the License, or
12 + * (at your option) any later version.
13 + */
14 +#include <linux/kernel.h>
15 +#include <linux/init.h>
16 +#include <linux/platform_device.h>
17 +#include <linux/leds.h>
18 +#include <linux/input.h>
19 +#include <linux/skbuff.h>
20 +#include <linux/gpio_keys.h>
21 +#include <linux/mdio-gpio.h>
22 +#include <asm/mach-types.h>
23 +#include <asm/mach/arch.h>
24 +#include <asm/mach/time.h>
25 +
26 +#include <mach/gmac.h>
27 +
28 +#include "common.h"
29 +
30 +static struct mdio_gpio_platform_data wbd111_mdio = {
31 +       .mdc            = 22,
32 +       .mdio           = 21,
33 +       .phy_mask       = ~(1 << 1),
34 +};
35 +
36 +static struct platform_device wbd111_phy_device = {
37 +       .name   = "mdio-gpio",
38 +       .id     = 0,
39 +       .dev    = {
40 +               .platform_data = &wbd111_mdio,
41 +       },
42 +};
43 +
44 +static struct gemini_gmac_platform_data gmac_data = {
45 +       .bus_id[0] = "0:01",
46 +       .interface[0] = PHY_INTERFACE_MODE_MII,
47 +};
48 +
49 +static struct gpio_keys_button wbd111_keys[] = {
50 +       {
51 +               .code           = KEY_SETUP,
52 +               .gpio           = 5,
53 +               .active_low     = 1,
54 +               .desc           = "reset",
55 +               .type           = EV_KEY,
56 +       },
57 +};
58 +
59 +static struct gpio_keys_platform_data wbd111_keys_data = {
60 +       .buttons        = wbd111_keys,
61 +       .nbuttons       = ARRAY_SIZE(wbd111_keys),
62 +};
63 +
64 +static struct platform_device wbd111_keys_device = {
65 +       .name   = "gpio-keys",
66 +       .id     = -1,
67 +       .dev    = {
68 +               .platform_data = &wbd111_keys_data,
69 +       },
70 +};
71 +
72 +static struct gpio_led wbd111_leds[] = {
73 +       {
74 +               .name                   = "L3red",
75 +               .gpio                   = 1,
76 +       },
77 +       {
78 +               .name                   = "L4green",
79 +               .gpio                   = 2,
80 +       },
81 +       {
82 +               .name                   = "L4red",
83 +               .gpio                   = 3,
84 +       },
85 +       {
86 +               .name                   = "L3green",
87 +               .gpio                   = 5,
88 +       },
89 +};
90 +
91 +static struct gpio_led_platform_data wbd111_leds_data = {
92 +       .num_leds       = ARRAY_SIZE(wbd111_leds),
93 +       .leds           = wbd111_leds,
94 +};
95 +
96 +static struct platform_device wbd111_leds_device = {
97 +       .name   = "leds-gpio",
98 +       .id     = -1,
99 +       .dev    = {
100 +               .platform_data = &wbd111_leds_data,
101 +       },
102 +};
103 +
104 +static struct sys_timer wbd111_timer = {
105 +       .init   = gemini_timer_init,
106 +};
107 +
108 +static void __init wbd111_init(void)
109 +{
110 +       gemini_gpio_init();
111 +       platform_register_uart();
112 +       platform_register_watchdog();
113 +       platform_register_pflash(SZ_8M, NULL, 0);
114 +       platform_device_register(&wbd111_leds_device);
115 +       platform_device_register(&wbd111_keys_device);
116 +       platform_device_register(&wbd111_phy_device);
117 +       platform_register_ethernet(&gmac_data);
118 +}
119 +
120 +MACHINE_START(WBD111, "Wiliboard WBD-111")
121 +       .phys_io        = 0x7fffc000,
122 +       .io_pg_offst    = ((0xffffc000) >> 18) & 0xfffc,
123 +       .boot_params    = 0x100,
124 +       .map_io         = gemini_map_io,
125 +       .init_irq       = gemini_init_irq,
126 +       .timer          = &wbd111_timer,
127 +       .init_machine   = wbd111_init,
128 +MACHINE_END
129 --- a/arch/arm/mach-gemini/Kconfig
130 +++ b/arch/arm/mach-gemini/Kconfig
131 @@ -16,6 +16,13 @@ config MACH_RUT100
132           Say Y here if you intend to run this kernel on a
133           Teltonika 3G Router RUT100.
134  
135 +config MACH_WBD111
136 +       bool "Wiliboard WBD-111"
137 +       select GEMINI_MEM_SWAP
138 +       help
139 +         Say Y here if you intend to run this kernel on a
140 +         Wiliboard WBD-111.
141 +
142  endmenu
143  
144  config GEMINI_MEM_SWAP
145 --- a/arch/arm/mach-gemini/Makefile
146 +++ b/arch/arm/mach-gemini/Makefile
147 @@ -11,3 +11,4 @@ obj-$(CONFIG_PCI)     += pci.o
148  # Board-specific support
149  obj-$(CONFIG_MACH_NAS4220B)    += board-nas4220b.o
150  obj-$(CONFIG_MACH_RUT100)      += board-rut1xx.o
151 +obj-$(CONFIG_MACH_WBD111)      += board-wbd111.o