Root/target/linux/omap24xx/patches-2.6.38/300-nokia-board.patch

1--- a/arch/arm/mach-omap2/board-n8x0.c
2+++ b/arch/arm/mach-omap2/board-n8x0.c
3@@ -15,8 +15,10 @@
4 #include <linux/delay.h>
5 #include <linux/gpio.h>
6 #include <linux/init.h>
7+#include <linux/irq.h>
8 #include <linux/io.h>
9 #include <linux/stddef.h>
10+#include <linux/platform_device.h>
11 #include <linux/i2c.h>
12 #include <linux/spi/spi.h>
13 #include <linux/usb/musb.h>
14@@ -33,6 +35,7 @@
15 #include <plat/onenand.h>
16 #include <plat/mmc.h>
17 #include <plat/serial.h>
18+#include <plat/cbus.h>
19 
20 #include "mux.h"
21 
22@@ -194,6 +197,114 @@ static struct omap_onenand_platform_data
23 };
24 #endif
25 
26+#if defined(CONFIG_CBUS) || defined(CONFIG_CBUS_MODULE)
27+
28+static struct cbus_host_platform_data n8x0_cbus_data = {
29+ .clk_gpio = 66,
30+ .dat_gpio = 65,
31+ .sel_gpio = 64,
32+};
33+
34+static struct platform_device n8x0_cbus_device = {
35+ .name = "cbus",
36+ .id = -1,
37+ .dev = {
38+ .platform_data = &n8x0_cbus_data,
39+ },
40+};
41+
42+static struct resource retu_resource[] = {
43+ {
44+ .start = -EINVAL, /* set later */
45+ .flags = IORESOURCE_IRQ,
46+ },
47+};
48+
49+static struct cbus_retu_platform_data n8x0_retu_data = {
50+ .irq_base = CBUS_RETU_IRQ_BASE,
51+ .irq_end = CBUS_RETU_IRQ_END,
52+ .devid = CBUS_RETU_DEVICE_ID,
53+};
54+
55+static struct platform_device retu_device = {
56+ .name = "retu",
57+ .id = -1,
58+ .resource = retu_resource,
59+ .num_resources = ARRAY_SIZE(retu_resource),
60+ .dev = {
61+ .platform_data = &n8x0_retu_data,
62+ },
63+};
64+
65+static struct resource tahvo_resource[] = {
66+ {
67+ .start = -EINVAL, /* set later */
68+ .flags = IORESOURCE_IRQ,
69+ }
70+};
71+
72+static struct platform_device tahvo_device = {
73+ .name = "tahvo",
74+ .id = -1,
75+ .resource = tahvo_resource,
76+ .num_resources = ARRAY_SIZE(tahvo_resource),
77+};
78+
79+static struct platform_device tahvo_usb_device = {
80+ .name = "tahvo-usb",
81+ .id = -1,
82+};
83+
84+static void __init n8x0_cbus_init(void)
85+{
86+ int ret;
87+
88+ platform_device_register(&n8x0_cbus_device);
89+
90+ ret = gpio_request(108, "RETU irq");
91+ if (ret < 0) {
92+ pr_err("retu: Unable to reserve IRQ GPIO\n");
93+ return;
94+ }
95+
96+ ret = gpio_direction_input(108);
97+ if (ret < 0) {
98+ pr_err("retu: Unable to change gpio direction\n");
99+ gpio_free(108);
100+ return;
101+ }
102+
103+ set_irq_type(gpio_to_irq(108), IRQ_TYPE_EDGE_RISING);
104+ retu_resource[0].start = gpio_to_irq(108);
105+ platform_device_register(&retu_device);
106+
107+ ret = gpio_request(111, "TAHVO irq");
108+ if (ret) {
109+ pr_err("tahvo: Unable to reserve IRQ GPIO\n");
110+ gpio_free(108);
111+ return;
112+ }
113+
114+ /* Set the pin as input */
115+ ret = gpio_direction_input(111);
116+ if (ret) {
117+ pr_err("tahvo: Unable to change direction\n");
118+ gpio_free(108);
119+ gpio_free(111);
120+ return;
121+ }
122+
123+ tahvo_resource[0].start = gpio_to_irq(111);
124+ platform_device_register(&tahvo_device);
125+ platform_device_register(&tahvo_usb_device);
126+}
127+
128+#else
129+static inline void __init n8x0_cbus_init(void)
130+{
131+}
132+#endif
133+
134 #if defined(CONFIG_MENELAUS) && \
135     (defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE))
136 
137@@ -628,11 +739,10 @@ static void __init n8x0_map_io(void)
138     omap242x_map_common_io();
139 }
140 
141-static void __init n8x0_init_irq(void)
142+static void __init n8x0_init_early(void)
143 {
144     omap2_init_common_infrastructure();
145     omap2_init_common_devices(NULL, NULL);
146- omap_init_irq();
147 }
148 
149 #ifdef CONFIG_OMAP_MUX
150@@ -686,6 +796,8 @@ static inline void board_serial_init(voi
151 static void __init n8x0_init_machine(void)
152 {
153     omap2420_mux_init(board_mux, OMAP_PACKAGE_ZAC);
154+ n8x0_cbus_init();
155+
156     /* FIXME: add n810 spi devices */
157     spi_register_board_info(n800_spi_board_info,
158                 ARRAY_SIZE(n800_spi_board_info));
159@@ -703,27 +815,30 @@ static void __init n8x0_init_machine(voi
160 
161 MACHINE_START(NOKIA_N800, "Nokia N800")
162     .boot_params = 0x80000100,
163- .map_io = n8x0_map_io,
164     .reserve = omap_reserve,
165- .init_irq = n8x0_init_irq,
166+ .map_io = n8x0_map_io,
167+ .init_early = n8x0_init_early,
168+ .init_irq = omap_init_irq,
169     .init_machine = n8x0_init_machine,
170     .timer = &omap_timer,
171 MACHINE_END
172 
173 MACHINE_START(NOKIA_N810, "Nokia N810")
174     .boot_params = 0x80000100,
175- .map_io = n8x0_map_io,
176     .reserve = omap_reserve,
177- .init_irq = n8x0_init_irq,
178+ .map_io = n8x0_map_io,
179+ .init_early = n8x0_init_early,
180+ .init_irq = omap_init_irq,
181     .init_machine = n8x0_init_machine,
182     .timer = &omap_timer,
183 MACHINE_END
184 
185 MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX")
186     .boot_params = 0x80000100,
187- .map_io = n8x0_map_io,
188     .reserve = omap_reserve,
189- .init_irq = n8x0_init_irq,
190+ .map_io = n8x0_map_io,
191+ .init_early = n8x0_init_early,
192+ .init_irq = omap_init_irq,
193     .init_machine = n8x0_init_machine,
194     .timer = &omap_timer,
195 MACHINE_END
196

Archive Download this file



interactive