blob: 31b6b30e98bf1099d6f65b5e5453faa9be82fc50 [file] [log] [blame]
Brian Swetlandbcc0f6a2008-09-10 14:00:53 -07001/* linux/arch/arm/mach-msm/devices.c
2 *
3 * Copyright (C) 2008 Google, Inc.
4 *
5 * This software is licensed under the terms of the GNU General Public
6 * License version 2, as published by the Free Software Foundation, and
7 * may be copied, distributed, and modified under those terms.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 */
15
16#include <linux/kernel.h>
17#include <linux/platform_device.h>
18
Russell King80b02c12009-01-08 10:01:47 +000019#include <mach/irqs.h>
Brian Swetlandbcc0f6a2008-09-10 14:00:53 -070020#include <mach/msm_iomap.h>
21#include "devices.h"
22
23#include <asm/mach/flash.h>
24#include <linux/mtd/nand.h>
25#include <linux/mtd/partitions.h>
26
27static struct resource resources_uart1[] = {
28 {
29 .start = INT_UART1,
30 .end = INT_UART1,
31 .flags = IORESOURCE_IRQ,
32 },
33 {
34 .start = MSM_UART1_PHYS,
35 .end = MSM_UART1_PHYS + MSM_UART1_SIZE - 1,
36 .flags = IORESOURCE_MEM,
37 },
38};
39
40static struct resource resources_uart2[] = {
41 {
42 .start = INT_UART2,
43 .end = INT_UART2,
44 .flags = IORESOURCE_IRQ,
45 },
46 {
47 .start = MSM_UART2_PHYS,
48 .end = MSM_UART2_PHYS + MSM_UART2_SIZE - 1,
49 .flags = IORESOURCE_MEM,
50 },
51};
52
53static struct resource resources_uart3[] = {
54 {
55 .start = INT_UART3,
56 .end = INT_UART3,
57 .flags = IORESOURCE_IRQ,
58 },
59 {
60 .start = MSM_UART3_PHYS,
61 .end = MSM_UART3_PHYS + MSM_UART3_SIZE - 1,
62 .flags = IORESOURCE_MEM,
63 },
64};
65
66struct platform_device msm_device_uart1 = {
67 .name = "msm_serial",
68 .id = 0,
69 .num_resources = ARRAY_SIZE(resources_uart1),
70 .resource = resources_uart1,
71};
72
73struct platform_device msm_device_uart2 = {
74 .name = "msm_serial",
75 .id = 1,
76 .num_resources = ARRAY_SIZE(resources_uart2),
77 .resource = resources_uart2,
78};
79
80struct platform_device msm_device_uart3 = {
81 .name = "msm_serial",
82 .id = 2,
83 .num_resources = ARRAY_SIZE(resources_uart3),
84 .resource = resources_uart3,
85};
86
87static struct resource resources_i2c[] = {
88 {
89 .start = MSM_I2C_PHYS,
90 .end = MSM_I2C_PHYS + MSM_I2C_SIZE - 1,
91 .flags = IORESOURCE_MEM,
92 },
93 {
94 .start = INT_PWB_I2C,
95 .end = INT_PWB_I2C,
96 .flags = IORESOURCE_IRQ,
97 },
98};
99
100struct platform_device msm_device_i2c = {
101 .name = "msm_i2c",
102 .id = 0,
103 .num_resources = ARRAY_SIZE(resources_i2c),
104 .resource = resources_i2c,
105};
106
107static struct resource resources_hsusb[] = {
108 {
109 .start = MSM_HSUSB_PHYS,
110 .end = MSM_HSUSB_PHYS + MSM_HSUSB_SIZE,
111 .flags = IORESOURCE_MEM,
112 },
113 {
114 .start = INT_USB_HS,
115 .end = INT_USB_HS,
116 .flags = IORESOURCE_IRQ,
117 },
118};
119
120struct platform_device msm_device_hsusb = {
121 .name = "msm_hsusb",
122 .id = -1,
123 .num_resources = ARRAY_SIZE(resources_hsusb),
124 .resource = resources_hsusb,
125 .dev = {
126 .coherent_dma_mask = 0xffffffff,
127 },
128};
129
130struct flash_platform_data msm_nand_data = {
131 .parts = NULL,
132 .nr_parts = 0,
133};
134
135static struct resource resources_nand[] = {
136 [0] = {
137 .start = 7,
138 .end = 7,
139 .flags = IORESOURCE_DMA,
140 },
141};
142
143struct platform_device msm_device_nand = {
144 .name = "msm_nand",
145 .id = -1,
146 .num_resources = ARRAY_SIZE(resources_nand),
147 .resource = resources_nand,
148 .dev = {
149 .platform_data = &msm_nand_data,
150 },
151};
152
153struct platform_device msm_device_smd = {
154 .name = "msm_smd",
155 .id = -1,
156};
157
158static struct resource resources_sdc1[] = {
159 {
160 .start = MSM_SDC1_PHYS,
161 .end = MSM_SDC1_PHYS + MSM_SDC1_SIZE - 1,
162 .flags = IORESOURCE_MEM,
163 },
164 {
165 .start = INT_SDC1_0,
166 .end = INT_SDC1_1,
167 .flags = IORESOURCE_IRQ,
168 },
169 {
170 .start = 8,
171 .end = 8,
172 .flags = IORESOURCE_DMA,
173 },
174};
175
176static struct resource resources_sdc2[] = {
177 {
178 .start = MSM_SDC2_PHYS,
179 .end = MSM_SDC2_PHYS + MSM_SDC2_SIZE - 1,
180 .flags = IORESOURCE_MEM,
181 },
182 {
183 .start = INT_SDC2_0,
184 .end = INT_SDC2_1,
185 .flags = IORESOURCE_IRQ,
186 },
187 {
188 .start = 8,
189 .end = 8,
190 .flags = IORESOURCE_DMA,
191 },
192};
193
194static struct resource resources_sdc3[] = {
195 {
196 .start = MSM_SDC3_PHYS,
197 .end = MSM_SDC3_PHYS + MSM_SDC3_SIZE - 1,
198 .flags = IORESOURCE_MEM,
199 },
200 {
201 .start = INT_SDC3_0,
202 .end = INT_SDC3_1,
203 .flags = IORESOURCE_IRQ,
204 },
205 {
206 .start = 8,
207 .end = 8,
208 .flags = IORESOURCE_DMA,
209 },
210};
211
212static struct resource resources_sdc4[] = {
213 {
214 .start = MSM_SDC4_PHYS,
215 .end = MSM_SDC4_PHYS + MSM_SDC4_SIZE - 1,
216 .flags = IORESOURCE_MEM,
217 },
218 {
219 .start = INT_SDC4_0,
220 .end = INT_SDC4_1,
221 .flags = IORESOURCE_IRQ,
222 },
223 {
224 .start = 8,
225 .end = 8,
226 .flags = IORESOURCE_DMA,
227 },
228};
229
230struct platform_device msm_device_sdc1 = {
231 .name = "msm_sdcc",
232 .id = 1,
233 .num_resources = ARRAY_SIZE(resources_sdc1),
234 .resource = resources_sdc1,
235 .dev = {
236 .coherent_dma_mask = 0xffffffff,
237 },
238};
239
240struct platform_device msm_device_sdc2 = {
241 .name = "msm_sdcc",
242 .id = 2,
243 .num_resources = ARRAY_SIZE(resources_sdc2),
244 .resource = resources_sdc2,
245 .dev = {
246 .coherent_dma_mask = 0xffffffff,
247 },
248};
249
250struct platform_device msm_device_sdc3 = {
251 .name = "msm_sdcc",
252 .id = 3,
253 .num_resources = ARRAY_SIZE(resources_sdc3),
254 .resource = resources_sdc3,
255 .dev = {
256 .coherent_dma_mask = 0xffffffff,
257 },
258};
259
260struct platform_device msm_device_sdc4 = {
261 .name = "msm_sdcc",
262 .id = 4,
263 .num_resources = ARRAY_SIZE(resources_sdc4),
264 .resource = resources_sdc4,
265 .dev = {
266 .coherent_dma_mask = 0xffffffff,
267 },
268};