Root/
1 | /* |
2 | * linux/arch/arm/mach-sa1100/cerf.c |
3 | * |
4 | * This program is free software; you can redistribute it and/or modify |
5 | * it under the terms of the GNU General Public License version 2 as |
6 | * published by the Free Software Foundation. |
7 | * |
8 | * Apr-2003 : Removed some old PDA crud [FB] |
9 | * Oct-2003 : Added uart2 resource [FB] |
10 | * Jan-2004 : Removed io map for flash [FB] |
11 | */ |
12 | |
13 | #include <linux/init.h> |
14 | #include <linux/kernel.h> |
15 | #include <linux/tty.h> |
16 | #include <linux/platform_device.h> |
17 | #include <linux/irq.h> |
18 | #include <linux/mtd/mtd.h> |
19 | #include <linux/mtd/partitions.h> |
20 | |
21 | #include <asm/irq.h> |
22 | #include <mach/hardware.h> |
23 | #include <asm/setup.h> |
24 | |
25 | #include <asm/mach-types.h> |
26 | #include <asm/mach/arch.h> |
27 | #include <asm/mach/flash.h> |
28 | #include <asm/mach/map.h> |
29 | #include <asm/mach/serial_sa1100.h> |
30 | |
31 | #include <mach/cerf.h> |
32 | #include <mach/mcp.h> |
33 | #include "generic.h" |
34 | |
35 | static struct resource cerfuart2_resources[] = { |
36 | [0] = { |
37 | .start = 0x80030000, |
38 | .end = 0x8003ffff, |
39 | .flags = IORESOURCE_MEM, |
40 | }, |
41 | }; |
42 | |
43 | static struct platform_device cerfuart2_device = { |
44 | .name = "sa11x0-uart", |
45 | .id = 2, |
46 | .num_resources = ARRAY_SIZE(cerfuart2_resources), |
47 | .resource = cerfuart2_resources, |
48 | }; |
49 | |
50 | static struct platform_device *cerf_devices[] __initdata = { |
51 | &cerfuart2_device, |
52 | }; |
53 | |
54 | #ifdef CONFIG_SA1100_CERF_FLASH_32MB |
55 | # define CERF_FLASH_SIZE 0x02000000 |
56 | #elif defined CONFIG_SA1100_CERF_FLASH_16MB |
57 | # define CERF_FLASH_SIZE 0x01000000 |
58 | #elif defined CONFIG_SA1100_CERF_FLASH_8MB |
59 | # define CERF_FLASH_SIZE 0x00800000 |
60 | #else |
61 | # error "Undefined flash size for CERF" |
62 | #endif |
63 | |
64 | static struct mtd_partition cerf_partitions[] = { |
65 | { |
66 | .name = "Bootloader", |
67 | .size = 0x00020000, |
68 | .offset = 0x00000000, |
69 | }, { |
70 | .name = "Params", |
71 | .size = 0x00040000, |
72 | .offset = 0x00020000, |
73 | }, { |
74 | .name = "Kernel", |
75 | .size = 0x00100000, |
76 | .offset = 0x00060000, |
77 | }, { |
78 | .name = "Filesystem", |
79 | .size = CERF_FLASH_SIZE-0x00160000, |
80 | .offset = 0x00160000, |
81 | } |
82 | }; |
83 | |
84 | static struct flash_platform_data cerf_flash_data = { |
85 | .map_name = "cfi_probe", |
86 | .parts = cerf_partitions, |
87 | .nr_parts = ARRAY_SIZE(cerf_partitions), |
88 | }; |
89 | |
90 | static struct resource cerf_flash_resource = { |
91 | .start = SA1100_CS0_PHYS, |
92 | .end = SA1100_CS0_PHYS + SZ_32M - 1, |
93 | .flags = IORESOURCE_MEM, |
94 | }; |
95 | |
96 | static void __init cerf_init_irq(void) |
97 | { |
98 | sa1100_init_irq(); |
99 | set_irq_type(CERF_ETH_IRQ, IRQ_TYPE_EDGE_RISING); |
100 | } |
101 | |
102 | static struct map_desc cerf_io_desc[] __initdata = { |
103 | { /* Crystal Ethernet Chip */ |
104 | .virtual = 0xf0000000, |
105 | .pfn = __phys_to_pfn(0x08000000), |
106 | .length = 0x00100000, |
107 | .type = MT_DEVICE |
108 | } |
109 | }; |
110 | |
111 | static void __init cerf_map_io(void) |
112 | { |
113 | sa1100_map_io(); |
114 | iotable_init(cerf_io_desc, ARRAY_SIZE(cerf_io_desc)); |
115 | |
116 | sa1100_register_uart(0, 3); |
117 | sa1100_register_uart(1, 2); /* disable this and the uart2 device for sa1100_fir */ |
118 | sa1100_register_uart(2, 1); |
119 | |
120 | /* set some GPDR bits here while it's safe */ |
121 | GPDR |= CERF_GPIO_CF_RESET; |
122 | } |
123 | |
124 | static struct mcp_plat_data cerf_mcp_data = { |
125 | .mccr0 = MCCR0_ADM, |
126 | .sclk_rate = 11981000, |
127 | }; |
128 | |
129 | static void __init cerf_init(void) |
130 | { |
131 | platform_add_devices(cerf_devices, ARRAY_SIZE(cerf_devices)); |
132 | sa11x0_register_mtd(&cerf_flash_data, &cerf_flash_resource, 1); |
133 | sa11x0_register_mcp(&cerf_mcp_data); |
134 | } |
135 | |
136 | MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube") |
137 | /* Maintainer: support@intrinsyc.com */ |
138 | .map_io = cerf_map_io, |
139 | .init_irq = cerf_init_irq, |
140 | .timer = &sa1100_timer, |
141 | .init_machine = cerf_init, |
142 | MACHINE_END |
143 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9