aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorMagnus Damm <damm@igel.co.jp>2009-05-08 04:32:18 -0400
committerPaul Mundt <lethal@linux-sh.org>2009-05-08 04:47:16 -0400
commit47dd6f4439811c6c83d9abf2f364bcb6d2684640 (patch)
tree1acc7e40e087a1fb76c04b87b61fb776c2dbc74d /arch
parent583d1d549ff107500481461cec0325189c5349ec (diff)
sh: TMU platform data for sh7723
This patch adds TMU platform data for sh7723. Both clockevent and clocksource support is enabled. While at it, adjust the CMT clocksource rating to prioritize the TMU. Signed-off-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7723.c196
1 files changed, 195 insertions, 1 deletions
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c
index fb9b5427a068..484ca2dabdeb 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c
@@ -107,7 +107,7 @@ static struct sh_timer_config cmt_platform_data = {
107 .timer_bit = 5, 107 .timer_bit = 5,
108 .clk = "cmt0", 108 .clk = "cmt0",
109 .clockevent_rating = 125, 109 .clockevent_rating = 125,
110 .clocksource_rating = 200, 110 .clocksource_rating = 125,
111}; 111};
112 112
113static struct resource cmt_resources[] = { 113static struct resource cmt_resources[] = {
@@ -133,6 +133,188 @@ static struct platform_device cmt_device = {
133 .num_resources = ARRAY_SIZE(cmt_resources), 133 .num_resources = ARRAY_SIZE(cmt_resources),
134}; 134};
135 135
136static struct sh_timer_config tmu0_platform_data = {
137 .name = "TMU0",
138 .channel_offset = 0x04,
139 .timer_bit = 0,
140 .clk = "tmu0",
141 .clockevent_rating = 200,
142};
143
144static struct resource tmu0_resources[] = {
145 [0] = {
146 .name = "TMU0",
147 .start = 0xffd80008,
148 .end = 0xffd80013,
149 .flags = IORESOURCE_MEM,
150 },
151 [1] = {
152 .start = 16,
153 .flags = IORESOURCE_IRQ,
154 },
155};
156
157static struct platform_device tmu0_device = {
158 .name = "sh_tmu",
159 .id = 0,
160 .dev = {
161 .platform_data = &tmu0_platform_data,
162 },
163 .resource = tmu0_resources,
164 .num_resources = ARRAY_SIZE(tmu0_resources),
165};
166
167static struct sh_timer_config tmu1_platform_data = {
168 .name = "TMU1",
169 .channel_offset = 0x10,
170 .timer_bit = 1,
171 .clk = "tmu0",
172 .clocksource_rating = 200,
173};
174
175static struct resource tmu1_resources[] = {
176 [0] = {
177 .name = "TMU1",
178 .start = 0xffd80014,
179 .end = 0xffd8001f,
180 .flags = IORESOURCE_MEM,
181 },
182 [1] = {
183 .start = 17,
184 .flags = IORESOURCE_IRQ,
185 },
186};
187
188static struct platform_device tmu1_device = {
189 .name = "sh_tmu",
190 .id = 1,
191 .dev = {
192 .platform_data = &tmu1_platform_data,
193 },
194 .resource = tmu1_resources,
195 .num_resources = ARRAY_SIZE(tmu1_resources),
196};
197
198static struct sh_timer_config tmu2_platform_data = {
199 .name = "TMU2",
200 .channel_offset = 0x1c,
201 .timer_bit = 2,
202 .clk = "tmu0",
203};
204
205static struct resource tmu2_resources[] = {
206 [0] = {
207 .name = "TMU2",
208 .start = 0xffd80020,
209 .end = 0xffd8002b,
210 .flags = IORESOURCE_MEM,
211 },
212 [1] = {
213 .start = 18,
214 .flags = IORESOURCE_IRQ,
215 },
216};
217
218static struct platform_device tmu2_device = {
219 .name = "sh_tmu",
220 .id = 2,
221 .dev = {
222 .platform_data = &tmu2_platform_data,
223 },
224 .resource = tmu2_resources,
225 .num_resources = ARRAY_SIZE(tmu2_resources),
226};
227
228static struct sh_timer_config tmu3_platform_data = {
229 .name = "TMU3",
230 .channel_offset = 0x04,
231 .timer_bit = 0,
232 .clk = "tmu1",
233};
234
235static struct resource tmu3_resources[] = {
236 [0] = {
237 .name = "TMU3",
238 .start = 0xffd90008,
239 .end = 0xffd90013,
240 .flags = IORESOURCE_MEM,
241 },
242 [1] = {
243 .start = 57,
244 .flags = IORESOURCE_IRQ,
245 },
246};
247
248static struct platform_device tmu3_device = {
249 .name = "sh_tmu",
250 .id = 3,
251 .dev = {
252 .platform_data = &tmu3_platform_data,
253 },
254 .resource = tmu3_resources,
255 .num_resources = ARRAY_SIZE(tmu3_resources),
256};
257
258static struct sh_timer_config tmu4_platform_data = {
259 .name = "TMU4",
260 .channel_offset = 0x10,
261 .timer_bit = 1,
262 .clk = "tmu1",
263};
264
265static struct resource tmu4_resources[] = {
266 [0] = {
267 .name = "TMU4",
268 .start = 0xffd90014,
269 .end = 0xffd9001f,
270 .flags = IORESOURCE_MEM,
271 },
272 [1] = {
273 .start = 58,
274 .flags = IORESOURCE_IRQ,
275 },
276};
277
278static struct platform_device tmu4_device = {
279 .name = "sh_tmu",
280 .id = 4,
281 .dev = {
282 .platform_data = &tmu4_platform_data,
283 },
284 .resource = tmu4_resources,
285 .num_resources = ARRAY_SIZE(tmu4_resources),
286};
287
288static struct sh_timer_config tmu5_platform_data = {
289 .name = "TMU5",
290 .channel_offset = 0x1c,
291 .timer_bit = 2,
292 .clk = "tmu1",
293};
294
295static struct resource tmu5_resources[] = {
296 [0] = {
297 .name = "TMU5",
298 .start = 0xffd90020,
299 .end = 0xffd9002b,
300 .flags = IORESOURCE_MEM,
301 },
302 [1] = {
303 .start = 57,
304 .flags = IORESOURCE_IRQ,
305 },
306};
307
308static struct platform_device tmu5_device = {
309 .name = "sh_tmu",
310 .id = 5,
311 .dev = {
312 .platform_data = &tmu5_platform_data,
313 },
314 .resource = tmu5_resources,
315 .num_resources = ARRAY_SIZE(tmu5_resources),
316};
317
136static struct plat_sci_port sci_platform_data[] = { 318static struct plat_sci_port sci_platform_data[] = {
137 { 319 {
138 .mapbase = 0xffe00000, 320 .mapbase = 0xffe00000,
@@ -255,6 +437,12 @@ static struct platform_device iic_device = {
255 437
256static struct platform_device *sh7723_devices[] __initdata = { 438static struct platform_device *sh7723_devices[] __initdata = {
257 &cmt_device, 439 &cmt_device,
440 &tmu0_device,
441 &tmu1_device,
442 &tmu2_device,
443 &tmu3_device,
444 &tmu4_device,
445 &tmu5_device,
258 &sci_device, 446 &sci_device,
259 &rtc_device, 447 &rtc_device,
260 &iic_device, 448 &iic_device,
@@ -282,6 +470,12 @@ __initcall(sh7723_devices_setup);
282 470
283static struct platform_device *sh7723_early_devices[] __initdata = { 471static struct platform_device *sh7723_early_devices[] __initdata = {
284 &cmt_device, 472 &cmt_device,
473 &tmu0_device,
474 &tmu1_device,
475 &tmu2_device,
476 &tmu3_device,
477 &tmu4_device,
478 &tmu5_device,
285}; 479};
286 480
287void __init plat_early_device_setup(void) 481void __init plat_early_device_setup(void)