7ec80ddf |
1 | /* |
2 | * arch/arm/mach-w90x900/cpu.h |
3 | * |
4 | * Based on linux/include/asm-arm/plat-s3c24xx/cpu.h by Ben Dooks |
5 | * |
6 | * Copyright (c) 2008 Nuvoton technology corporation |
7 | * All rights reserved. |
8 | * |
9 | * Header file for W90X900 CPU support |
10 | * |
11 | * Wan ZongShun <mcuos.com@gmail.com> |
12 | * |
13 | * This program is free software; you can redistribute it and/or modify |
14 | * it under the terms of the GNU General Public License version 2 as |
15 | * published by the Free Software Foundation. |
16 | * |
17 | */ |
18 | |
19 | #define IODESC_ENT(y) \ |
20 | { \ |
21 | .virtual = (unsigned long)W90X900_VA_##y, \ |
22 | .pfn = __phys_to_pfn(W90X900_PA_##y), \ |
23 | .length = W90X900_SZ_##y, \ |
24 | .type = MT_DEVICE, \ |
25 | } |
26 | |
27 | /*Cpu identifier register*/ |
28 | |
29 | #define W90X900PDID W90X900_VA_GCR |
30 | #define W90P910_CPUID 0x02900910 |
31 | #define W90P920_CPUID 0x02900920 |
32 | #define W90P950_CPUID 0x02900950 |
33 | #define W90N960_CPUID 0x02900960 |
34 | |
35 | struct w90x900_uartcfg; |
36 | struct map_desc; |
37 | struct sys_timer; |
38 | |
39 | /* core initialisation functions */ |
40 | |
41 | extern void w90x900_init_irq(void); |
42 | extern void w90p910_init_io(struct map_desc *mach_desc, int size); |
43 | extern void w90p910_init_uarts(struct w90x900_uartcfg *cfg, int no); |
44 | extern void w90p910_init_clocks(int xtal); |
45 | extern void w90p910_map_io(struct map_desc *mach_desc, int size); |
46 | extern struct sys_timer w90x900_timer; |
47 | |
48 | #define W90X900_RES(name) \ |
49 | struct resource w90x900_##name##_resource[] = { \ |
50 | [0] = { \ |
51 | .start = name##_PA, \ |
52 | .end = name##_PA + 0x0ff, \ |
53 | .flags = IORESOURCE_MEM, \ |
54 | }, \ |
55 | [1] = { \ |
56 | .start = IRQ_##name, \ |
57 | .end = IRQ_##name, \ |
58 | .flags = IORESOURCE_IRQ, \ |
59 | } \ |
60 | } |
61 | |
62 | #define W90X900_DEVICE(devname, regname, devid, platdevname) \ |
63 | struct platform_device w90x900_##devname = { \ |
64 | .name = platdevname, \ |
65 | .id = devid, \ |
66 | .num_resources = ARRAY_SIZE(w90x900_##regname##_resource), \ |
67 | .resource = w90x900_##regname##_resource, \ |
68 | } |
69 | |
70 | #define W90X900_UARTCFG(port, flag, uc, ulc, ufc) \ |
71 | { \ |
72 | .hwport = port, \ |
73 | .flags = flag, \ |
74 | .ucon = uc, \ |
75 | .ulcon = ulc, \ |
76 | .ufcon = ufc, \ |
77 | } |