This source file includes following definitions.
- platform_devices_setup
1
2
3
4
5
6
7 #include <linux/init.h>
8 #include <linux/kernel.h>
9 #include <linux/types.h>
10 #include <linux/ioport.h>
11 #include <linux/serial_8250.h>
12 #include <linux/mtd/physmap.h>
13
14 #include <asm/cpu.h>
15 #include <asm/bootinfo.h>
16 #include <asm/addrspace.h>
17 #include <asm/time.h>
18 #include <asm/bcache.h>
19 #include <asm/irq.h>
20 #include <asm/reboot.h>
21 #include <asm/traps.h>
22
23 #include <asm/emma/emma2rh.h>
24
25
26 #define I2C_EMMA2RH "emma2rh-iic"
27
28 static struct resource i2c_emma_resources_0[] = {
29 {
30 .name = NULL,
31 .start = EMMA2RH_IRQ_PIIC0,
32 .end = EMMA2RH_IRQ_PIIC0,
33 .flags = IORESOURCE_IRQ
34 }, {
35 .name = NULL,
36 .start = EMMA2RH_PIIC0_BASE,
37 .end = EMMA2RH_PIIC0_BASE + 0x1000,
38 .flags = 0
39 },
40 };
41
42 struct resource i2c_emma_resources_1[] = {
43 {
44 .name = NULL,
45 .start = EMMA2RH_IRQ_PIIC1,
46 .end = EMMA2RH_IRQ_PIIC1,
47 .flags = IORESOURCE_IRQ
48 }, {
49 .name = NULL,
50 .start = EMMA2RH_PIIC1_BASE,
51 .end = EMMA2RH_PIIC1_BASE + 0x1000,
52 .flags = 0
53 },
54 };
55
56 struct resource i2c_emma_resources_2[] = {
57 {
58 .name = NULL,
59 .start = EMMA2RH_IRQ_PIIC2,
60 .end = EMMA2RH_IRQ_PIIC2,
61 .flags = IORESOURCE_IRQ
62 }, {
63 .name = NULL,
64 .start = EMMA2RH_PIIC2_BASE,
65 .end = EMMA2RH_PIIC2_BASE + 0x1000,
66 .flags = 0
67 },
68 };
69
70 struct platform_device i2c_emma_devices[] = {
71 [0] = {
72 .name = I2C_EMMA2RH,
73 .id = 0,
74 .resource = i2c_emma_resources_0,
75 .num_resources = ARRAY_SIZE(i2c_emma_resources_0),
76 },
77 [1] = {
78 .name = I2C_EMMA2RH,
79 .id = 1,
80 .resource = i2c_emma_resources_1,
81 .num_resources = ARRAY_SIZE(i2c_emma_resources_1),
82 },
83 [2] = {
84 .name = I2C_EMMA2RH,
85 .id = 2,
86 .resource = i2c_emma_resources_2,
87 .num_resources = ARRAY_SIZE(i2c_emma_resources_2),
88 },
89 };
90
91 #define EMMA2RH_SERIAL_CLOCK 18544000
92 #define EMMA2RH_SERIAL_FLAGS UPF_BOOT_AUTOCONF | UPF_SKIP_TEST
93
94 static struct plat_serial8250_port platform_serial_ports[] = {
95 [0] = {
96 .membase= (void __iomem*)KSEG1ADDR(EMMA2RH_PFUR0_BASE + 3),
97 .mapbase = EMMA2RH_PFUR0_BASE + 3,
98 .irq = EMMA2RH_IRQ_PFUR0,
99 .uartclk = EMMA2RH_SERIAL_CLOCK,
100 .regshift = 4,
101 .iotype = UPIO_MEM,
102 .flags = EMMA2RH_SERIAL_FLAGS,
103 }, [1] = {
104 .membase = (void __iomem*)KSEG1ADDR(EMMA2RH_PFUR1_BASE + 3),
105 .mapbase = EMMA2RH_PFUR1_BASE + 3,
106 .irq = EMMA2RH_IRQ_PFUR1,
107 .uartclk = EMMA2RH_SERIAL_CLOCK,
108 .regshift = 4,
109 .iotype = UPIO_MEM,
110 .flags = EMMA2RH_SERIAL_FLAGS,
111 }, [2] = {
112 .membase = (void __iomem*)KSEG1ADDR(EMMA2RH_PFUR2_BASE + 3),
113 .mapbase = EMMA2RH_PFUR2_BASE + 3,
114 .irq = EMMA2RH_IRQ_PFUR2,
115 .uartclk = EMMA2RH_SERIAL_CLOCK,
116 .regshift = 4,
117 .iotype = UPIO_MEM,
118 .flags = EMMA2RH_SERIAL_FLAGS,
119 }, [3] = {
120 .flags = 0,
121 },
122 };
123
124 static struct platform_device serial_emma = {
125 .name = "serial8250",
126 .dev = {
127 .platform_data = &platform_serial_ports,
128 },
129 };
130
131 static struct mtd_partition markeins_parts[] = {
132 [0] = {
133 .name = "RootFS",
134 .offset = 0x00000000,
135 .size = 0x00c00000,
136 },
137 [1] = {
138 .name = "boot code area",
139 .offset = MTDPART_OFS_APPEND,
140 .size = 0x00100000,
141 },
142 [2] = {
143 .name = "kernel image",
144 .offset = MTDPART_OFS_APPEND,
145 .size = 0x00300000,
146 },
147 [3] = {
148 .name = "RootFS2",
149 .offset = MTDPART_OFS_APPEND,
150 .size = 0x00c00000,
151 },
152 [4] = {
153 .name = "boot code area2",
154 .offset = MTDPART_OFS_APPEND,
155 .size = 0x00100000,
156 },
157 [5] = {
158 .name = "kernel image2",
159 .offset = MTDPART_OFS_APPEND,
160 .size = MTDPART_SIZ_FULL,
161 },
162 };
163
164 static struct physmap_flash_data markeins_flash_data = {
165 .width = 2,
166 .nr_parts = ARRAY_SIZE(markeins_parts),
167 .parts = markeins_parts
168 };
169
170 static struct resource markeins_flash_resource = {
171 .start = 0x1e000000,
172 .end = 0x02000000,
173 .flags = IORESOURCE_MEM
174 };
175
176 static struct platform_device markeins_flash_device = {
177 .name = "physmap-flash",
178 .id = 0,
179 .dev = {
180 .platform_data = &markeins_flash_data,
181 },
182 .num_resources = 1,
183 .resource = &markeins_flash_resource,
184 };
185
186 static struct platform_device *devices[] = {
187 i2c_emma_devices,
188 i2c_emma_devices + 1,
189 i2c_emma_devices + 2,
190 &serial_emma,
191 &markeins_flash_device,
192 };
193
194 static int __init platform_devices_setup(void)
195 {
196 return platform_add_devices(devices, ARRAY_SIZE(devices));
197 }
198
199 arch_initcall(platform_devices_setup);