blob: 240d5dc5892896e3064efbbe3699881b87e1eec2 [file] [log] [blame]
Olof Johansson85940b42011-02-19 16:26:18 -08001/*
2 * Copyright (C) 2010,2011 Google, Inc.
3 *
4 * Author:
5 * Colin Cross <ccross@android.com>
6 * Erik Gilling <ccross@android.com>
7 *
8 * This software is licensed under the terms of the GNU General Public
9 * License version 2, as published by the Free Software Foundation, and
10 * may be copied, distributed, and modified under those terms.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 */
18
19
20#include <linux/resource.h>
21#include <linux/platform_device.h>
22#include <linux/dma-mapping.h>
23#include <linux/fsl_devices.h>
24#include <linux/serial_8250.h>
Colin Cross78702e42011-07-10 14:37:22 -070025#include <linux/i2c-tegra.h>
Colin Cross681e6ed2011-07-10 14:59:45 -070026#include <linux/platform_data/tegra_usb.h>
Olof Johansson85940b42011-02-19 16:26:18 -080027#include <asm/pmu.h>
28#include <mach/irqs.h>
29#include <mach/iomap.h>
30#include <mach/dma.h>
Colin Cross681e6ed2011-07-10 14:59:45 -070031#include <mach/usb_phy.h>
32#include "gpio-names.h"
Olof Johansson85940b42011-02-19 16:26:18 -080033
Stephen Warren940dd962011-10-11 16:16:12 -060034static struct resource gpio_resource[] = {
35 [0] = {
36 .start = TEGRA_GPIO_BASE,
37 .end = TEGRA_GPIO_BASE + TEGRA_GPIO_SIZE-1,
38 .flags = IORESOURCE_MEM,
39 },
40 [1] = {
41 .start = INT_GPIO1,
42 .end = INT_GPIO1,
43 .flags = IORESOURCE_IRQ,
44 },
45 [2] = {
46 .start = INT_GPIO2,
47 .end = INT_GPIO2,
48 .flags = IORESOURCE_IRQ,
49 },
50 [3] = {
51 .start = INT_GPIO3,
52 .end = INT_GPIO3,
53 .flags = IORESOURCE_IRQ,
54 },
55 [4] = {
56 .start = INT_GPIO4,
57 .end = INT_GPIO4,
58 .flags = IORESOURCE_IRQ,
59 },
60 [5] = {
61 .start = INT_GPIO5,
62 .end = INT_GPIO5,
63 .flags = IORESOURCE_IRQ,
64 },
65 [6] = {
66 .start = INT_GPIO6,
67 .end = INT_GPIO6,
68 .flags = IORESOURCE_IRQ,
69 },
70 [7] = {
71 .start = INT_GPIO7,
72 .end = INT_GPIO7,
73 .flags = IORESOURCE_IRQ,
74 },
75};
76
77struct platform_device tegra_gpio_device = {
78 .name = "tegra-gpio",
79 .id = -1,
80 .resource = gpio_resource,
81 .num_resources = ARRAY_SIZE(gpio_resource),
82};
83
84static struct resource pinmux_resource[] = {
85 [0] = {
86 /* Tri-state registers */
87 .start = TEGRA_APB_MISC_BASE + 0x14,
88 .end = TEGRA_APB_MISC_BASE + 0x20 + 3,
89 .flags = IORESOURCE_MEM,
90 },
91 [1] = {
92 /* Mux registers */
93 .start = TEGRA_APB_MISC_BASE + 0x80,
94 .end = TEGRA_APB_MISC_BASE + 0x9c + 3,
95 .flags = IORESOURCE_MEM,
96 },
97 [2] = {
98 /* Pull-up/down registers */
99 .start = TEGRA_APB_MISC_BASE + 0xa0,
100 .end = TEGRA_APB_MISC_BASE + 0xb0 + 3,
101 .flags = IORESOURCE_MEM,
102 },
103 [3] = {
104 /* Pad control registers */
105 .start = TEGRA_APB_MISC_BASE + 0x868,
106 .end = TEGRA_APB_MISC_BASE + 0x90c + 3,
107 .flags = IORESOURCE_MEM,
108 },
109};
110
111struct platform_device tegra_pinmux_device = {
112 .name = "tegra-pinmux",
113 .id = -1,
114 .resource = pinmux_resource,
115 .num_resources = ARRAY_SIZE(pinmux_resource),
116};
117
Olof Johansson85940b42011-02-19 16:26:18 -0800118static struct resource i2c_resource1[] = {
119 [0] = {
120 .start = INT_I2C,
121 .end = INT_I2C,
122 .flags = IORESOURCE_IRQ,
123 },
124 [1] = {
125 .start = TEGRA_I2C_BASE,
126 .end = TEGRA_I2C_BASE + TEGRA_I2C_SIZE-1,
127 .flags = IORESOURCE_MEM,
128 },
129};
130
131static struct resource i2c_resource2[] = {
132 [0] = {
133 .start = INT_I2C2,
134 .end = INT_I2C2,
135 .flags = IORESOURCE_IRQ,
136 },
137 [1] = {
138 .start = TEGRA_I2C2_BASE,
139 .end = TEGRA_I2C2_BASE + TEGRA_I2C2_SIZE-1,
140 .flags = IORESOURCE_MEM,
141 },
142};
143
144static struct resource i2c_resource3[] = {
145 [0] = {
146 .start = INT_I2C3,
147 .end = INT_I2C3,
148 .flags = IORESOURCE_IRQ,
149 },
150 [1] = {
151 .start = TEGRA_I2C3_BASE,
152 .end = TEGRA_I2C3_BASE + TEGRA_I2C3_SIZE-1,
153 .flags = IORESOURCE_MEM,
154 },
155};
156
157static struct resource i2c_resource4[] = {
158 [0] = {
159 .start = INT_DVC,
160 .end = INT_DVC,
161 .flags = IORESOURCE_IRQ,
162 },
163 [1] = {
164 .start = TEGRA_DVC_BASE,
165 .end = TEGRA_DVC_BASE + TEGRA_DVC_SIZE-1,
166 .flags = IORESOURCE_MEM,
167 },
168};
169
Colin Cross78702e42011-07-10 14:37:22 -0700170static struct tegra_i2c_platform_data tegra_i2c1_platform_data = {
171 .bus_clk_rate = 400000,
172};
173
174static struct tegra_i2c_platform_data tegra_i2c2_platform_data = {
175 .bus_clk_rate = 400000,
176};
177
178static struct tegra_i2c_platform_data tegra_i2c3_platform_data = {
179 .bus_clk_rate = 400000,
180};
181
182static struct tegra_i2c_platform_data tegra_dvc_platform_data = {
183 .bus_clk_rate = 400000,
184};
185
Olof Johansson85940b42011-02-19 16:26:18 -0800186struct platform_device tegra_i2c_device1 = {
187 .name = "tegra-i2c",
188 .id = 0,
189 .resource = i2c_resource1,
190 .num_resources = ARRAY_SIZE(i2c_resource1),
191 .dev = {
Colin Cross78702e42011-07-10 14:37:22 -0700192 .platform_data = &tegra_i2c1_platform_data,
Olof Johansson85940b42011-02-19 16:26:18 -0800193 },
194};
195
196struct platform_device tegra_i2c_device2 = {
197 .name = "tegra-i2c",
198 .id = 1,
199 .resource = i2c_resource2,
200 .num_resources = ARRAY_SIZE(i2c_resource2),
201 .dev = {
Colin Cross78702e42011-07-10 14:37:22 -0700202 .platform_data = &tegra_i2c2_platform_data,
Olof Johansson85940b42011-02-19 16:26:18 -0800203 },
204};
205
206struct platform_device tegra_i2c_device3 = {
207 .name = "tegra-i2c",
208 .id = 2,
209 .resource = i2c_resource3,
210 .num_resources = ARRAY_SIZE(i2c_resource3),
211 .dev = {
Colin Cross78702e42011-07-10 14:37:22 -0700212 .platform_data = &tegra_i2c3_platform_data,
Olof Johansson85940b42011-02-19 16:26:18 -0800213 },
214};
215
216struct platform_device tegra_i2c_device4 = {
217 .name = "tegra-i2c",
218 .id = 3,
219 .resource = i2c_resource4,
220 .num_resources = ARRAY_SIZE(i2c_resource4),
221 .dev = {
Colin Cross78702e42011-07-10 14:37:22 -0700222 .platform_data = &tegra_dvc_platform_data,
Olof Johansson85940b42011-02-19 16:26:18 -0800223 },
224};
225
226static struct resource spi_resource1[] = {
227 [0] = {
228 .start = INT_S_LINK1,
229 .end = INT_S_LINK1,
230 .flags = IORESOURCE_IRQ,
231 },
232 [1] = {
233 .start = TEGRA_SPI1_BASE,
234 .end = TEGRA_SPI1_BASE + TEGRA_SPI1_SIZE-1,
235 .flags = IORESOURCE_MEM,
236 },
237};
238
239static struct resource spi_resource2[] = {
240 [0] = {
241 .start = INT_SPI_2,
242 .end = INT_SPI_2,
243 .flags = IORESOURCE_IRQ,
244 },
245 [1] = {
246 .start = TEGRA_SPI2_BASE,
247 .end = TEGRA_SPI2_BASE + TEGRA_SPI2_SIZE-1,
248 .flags = IORESOURCE_MEM,
249 },
250};
251
252static struct resource spi_resource3[] = {
253 [0] = {
254 .start = INT_SPI_3,
255 .end = INT_SPI_3,
256 .flags = IORESOURCE_IRQ,
257 },
258 [1] = {
259 .start = TEGRA_SPI3_BASE,
260 .end = TEGRA_SPI3_BASE + TEGRA_SPI3_SIZE-1,
261 .flags = IORESOURCE_MEM,
262 },
263};
264
265static struct resource spi_resource4[] = {
266 [0] = {
267 .start = INT_SPI_4,
268 .end = INT_SPI_4,
269 .flags = IORESOURCE_IRQ,
270 },
271 [1] = {
272 .start = TEGRA_SPI4_BASE,
273 .end = TEGRA_SPI4_BASE + TEGRA_SPI4_SIZE-1,
274 .flags = IORESOURCE_MEM,
275 },
276};
277
278struct platform_device tegra_spi_device1 = {
279 .name = "spi_tegra",
280 .id = 0,
281 .resource = spi_resource1,
282 .num_resources = ARRAY_SIZE(spi_resource1),
283 .dev = {
284 .coherent_dma_mask = 0xffffffff,
285 },
286};
287
288struct platform_device tegra_spi_device2 = {
289 .name = "spi_tegra",
290 .id = 1,
291 .resource = spi_resource2,
292 .num_resources = ARRAY_SIZE(spi_resource2),
293 .dev = {
294 .coherent_dma_mask = 0xffffffff,
295 },
296};
297
298struct platform_device tegra_spi_device3 = {
299 .name = "spi_tegra",
300 .id = 2,
301 .resource = spi_resource3,
302 .num_resources = ARRAY_SIZE(spi_resource3),
303 .dev = {
304 .coherent_dma_mask = 0xffffffff,
305 },
306};
307
308struct platform_device tegra_spi_device4 = {
309 .name = "spi_tegra",
310 .id = 3,
311 .resource = spi_resource4,
312 .num_resources = ARRAY_SIZE(spi_resource4),
313 .dev = {
314 .coherent_dma_mask = 0xffffffff,
315 },
316};
317
318
319static struct resource sdhci_resource1[] = {
320 [0] = {
321 .start = INT_SDMMC1,
322 .end = INT_SDMMC1,
323 .flags = IORESOURCE_IRQ,
324 },
325 [1] = {
326 .start = TEGRA_SDMMC1_BASE,
327 .end = TEGRA_SDMMC1_BASE + TEGRA_SDMMC1_SIZE-1,
328 .flags = IORESOURCE_MEM,
329 },
330};
331
332static struct resource sdhci_resource2[] = {
333 [0] = {
334 .start = INT_SDMMC2,
335 .end = INT_SDMMC2,
336 .flags = IORESOURCE_IRQ,
337 },
338 [1] = {
339 .start = TEGRA_SDMMC2_BASE,
340 .end = TEGRA_SDMMC2_BASE + TEGRA_SDMMC2_SIZE-1,
341 .flags = IORESOURCE_MEM,
342 },
343};
344
345static struct resource sdhci_resource3[] = {
346 [0] = {
347 .start = INT_SDMMC3,
348 .end = INT_SDMMC3,
349 .flags = IORESOURCE_IRQ,
350 },
351 [1] = {
352 .start = TEGRA_SDMMC3_BASE,
353 .end = TEGRA_SDMMC3_BASE + TEGRA_SDMMC3_SIZE-1,
354 .flags = IORESOURCE_MEM,
355 },
356};
357
358static struct resource sdhci_resource4[] = {
359 [0] = {
360 .start = INT_SDMMC4,
361 .end = INT_SDMMC4,
362 .flags = IORESOURCE_IRQ,
363 },
364 [1] = {
365 .start = TEGRA_SDMMC4_BASE,
366 .end = TEGRA_SDMMC4_BASE + TEGRA_SDMMC4_SIZE-1,
367 .flags = IORESOURCE_MEM,
368 },
369};
370
371/* board files should fill in platform_data register the devices themselvs.
372 * See board-harmony.c for an example
373 */
374struct platform_device tegra_sdhci_device1 = {
375 .name = "sdhci-tegra",
376 .id = 0,
377 .resource = sdhci_resource1,
378 .num_resources = ARRAY_SIZE(sdhci_resource1),
379};
380
381struct platform_device tegra_sdhci_device2 = {
382 .name = "sdhci-tegra",
383 .id = 1,
384 .resource = sdhci_resource2,
385 .num_resources = ARRAY_SIZE(sdhci_resource2),
386};
387
388struct platform_device tegra_sdhci_device3 = {
389 .name = "sdhci-tegra",
390 .id = 2,
391 .resource = sdhci_resource3,
392 .num_resources = ARRAY_SIZE(sdhci_resource3),
393};
394
395struct platform_device tegra_sdhci_device4 = {
396 .name = "sdhci-tegra",
397 .id = 3,
398 .resource = sdhci_resource4,
399 .num_resources = ARRAY_SIZE(sdhci_resource4),
400};
401
402static struct resource tegra_usb1_resources[] = {
403 [0] = {
404 .start = TEGRA_USB_BASE,
405 .end = TEGRA_USB_BASE + TEGRA_USB_SIZE - 1,
406 .flags = IORESOURCE_MEM,
407 },
408 [1] = {
409 .start = INT_USB,
410 .end = INT_USB,
411 .flags = IORESOURCE_IRQ,
412 },
413};
414
415static struct resource tegra_usb2_resources[] = {
416 [0] = {
417 .start = TEGRA_USB2_BASE,
418 .end = TEGRA_USB2_BASE + TEGRA_USB2_SIZE - 1,
419 .flags = IORESOURCE_MEM,
420 },
421 [1] = {
422 .start = INT_USB2,
423 .end = INT_USB2,
424 .flags = IORESOURCE_IRQ,
425 },
426};
427
428static struct resource tegra_usb3_resources[] = {
429 [0] = {
430 .start = TEGRA_USB3_BASE,
431 .end = TEGRA_USB3_BASE + TEGRA_USB3_SIZE - 1,
432 .flags = IORESOURCE_MEM,
433 },
434 [1] = {
435 .start = INT_USB3,
436 .end = INT_USB3,
437 .flags = IORESOURCE_IRQ,
438 },
439};
440
Colin Cross681e6ed2011-07-10 14:59:45 -0700441static struct tegra_ulpi_config tegra_ehci2_ulpi_phy_config = {
442 /* All existing boards use GPIO PV0 for phy reset */
443 .reset_gpio = TEGRA_GPIO_PV0,
444 .clk = "cdev2",
445};
446
447static struct tegra_ehci_platform_data tegra_ehci1_pdata = {
448 .operating_mode = TEGRA_USB_OTG,
449 .power_down_on_bus_suspend = 1,
450};
451
452static struct tegra_ehci_platform_data tegra_ehci2_pdata = {
453 .phy_config = &tegra_ehci2_ulpi_phy_config,
454 .operating_mode = TEGRA_USB_HOST,
455 .power_down_on_bus_suspend = 1,
456};
457
458static struct tegra_ehci_platform_data tegra_ehci3_pdata = {
459 .operating_mode = TEGRA_USB_HOST,
460 .power_down_on_bus_suspend = 1,
461};
462
Olof Johansson85940b42011-02-19 16:26:18 -0800463static u64 tegra_ehci_dmamask = DMA_BIT_MASK(32);
464
465struct platform_device tegra_ehci1_device = {
466 .name = "tegra-ehci",
467 .id = 0,
468 .dev = {
469 .dma_mask = &tegra_ehci_dmamask,
470 .coherent_dma_mask = DMA_BIT_MASK(32),
Colin Cross681e6ed2011-07-10 14:59:45 -0700471 .platform_data = &tegra_ehci1_pdata,
Olof Johansson85940b42011-02-19 16:26:18 -0800472 },
473 .resource = tegra_usb1_resources,
474 .num_resources = ARRAY_SIZE(tegra_usb1_resources),
475};
476
477struct platform_device tegra_ehci2_device = {
478 .name = "tegra-ehci",
479 .id = 1,
480 .dev = {
481 .dma_mask = &tegra_ehci_dmamask,
482 .coherent_dma_mask = DMA_BIT_MASK(32),
Colin Cross681e6ed2011-07-10 14:59:45 -0700483 .platform_data = &tegra_ehci2_pdata,
Olof Johansson85940b42011-02-19 16:26:18 -0800484 },
485 .resource = tegra_usb2_resources,
486 .num_resources = ARRAY_SIZE(tegra_usb2_resources),
487};
488
489struct platform_device tegra_ehci3_device = {
490 .name = "tegra-ehci",
491 .id = 2,
492 .dev = {
493 .dma_mask = &tegra_ehci_dmamask,
494 .coherent_dma_mask = DMA_BIT_MASK(32),
Colin Cross681e6ed2011-07-10 14:59:45 -0700495 .platform_data = &tegra_ehci3_pdata,
Olof Johansson85940b42011-02-19 16:26:18 -0800496 },
497 .resource = tegra_usb3_resources,
498 .num_resources = ARRAY_SIZE(tegra_usb3_resources),
499};
500
501static struct resource tegra_pmu_resources[] = {
502 [0] = {
503 .start = INT_CPU0_PMU_INTR,
504 .end = INT_CPU0_PMU_INTR,
505 .flags = IORESOURCE_IRQ,
506 },
507 [1] = {
508 .start = INT_CPU1_PMU_INTR,
509 .end = INT_CPU1_PMU_INTR,
510 .flags = IORESOURCE_IRQ,
511 },
512};
513
514struct platform_device tegra_pmu_device = {
515 .name = "arm-pmu",
516 .id = ARM_PMU_DEVICE_CPU,
517 .num_resources = ARRAY_SIZE(tegra_pmu_resources),
518 .resource = tegra_pmu_resources,
519};
520
521static struct resource tegra_uarta_resources[] = {
522 [0] = {
523 .start = TEGRA_UARTA_BASE,
524 .end = TEGRA_UARTA_BASE + TEGRA_UARTA_SIZE - 1,
525 .flags = IORESOURCE_MEM,
526 },
527 [1] = {
528 .start = INT_UARTA,
529 .end = INT_UARTA,
530 .flags = IORESOURCE_IRQ,
531 },
532};
533
534static struct resource tegra_uartb_resources[] = {
535 [0] = {
536 .start = TEGRA_UARTB_BASE,
537 .end = TEGRA_UARTB_BASE + TEGRA_UARTB_SIZE - 1,
538 .flags = IORESOURCE_MEM,
539 },
540 [1] = {
541 .start = INT_UARTB,
542 .end = INT_UARTB,
543 .flags = IORESOURCE_IRQ,
544 },
545};
546
547static struct resource tegra_uartc_resources[] = {
548 [0] = {
549 .start = TEGRA_UARTC_BASE,
550 .end = TEGRA_UARTC_BASE + TEGRA_UARTC_SIZE - 1,
551 .flags = IORESOURCE_MEM,
552 },
553 [1] = {
554 .start = INT_UARTC,
555 .end = INT_UARTC,
556 .flags = IORESOURCE_IRQ,
557 },
558};
559
560static struct resource tegra_uartd_resources[] = {
561 [0] = {
562 .start = TEGRA_UARTD_BASE,
563 .end = TEGRA_UARTD_BASE + TEGRA_UARTD_SIZE - 1,
564 .flags = IORESOURCE_MEM,
565 },
566 [1] = {
567 .start = INT_UARTD,
568 .end = INT_UARTD,
569 .flags = IORESOURCE_IRQ,
570 },
571};
572
573static struct resource tegra_uarte_resources[] = {
574 [0] = {
575 .start = TEGRA_UARTE_BASE,
576 .end = TEGRA_UARTE_BASE + TEGRA_UARTE_SIZE - 1,
577 .flags = IORESOURCE_MEM,
578 },
579 [1] = {
580 .start = INT_UARTE,
581 .end = INT_UARTE,
582 .flags = IORESOURCE_IRQ,
583 },
584};
585
586struct platform_device tegra_uarta_device = {
587 .name = "tegra_uart",
588 .id = 0,
589 .num_resources = ARRAY_SIZE(tegra_uarta_resources),
590 .resource = tegra_uarta_resources,
591 .dev = {
592 .coherent_dma_mask = DMA_BIT_MASK(32),
593 },
594};
595
596struct platform_device tegra_uartb_device = {
597 .name = "tegra_uart",
598 .id = 1,
599 .num_resources = ARRAY_SIZE(tegra_uartb_resources),
600 .resource = tegra_uartb_resources,
601 .dev = {
602 .coherent_dma_mask = DMA_BIT_MASK(32),
603 },
604};
605
606struct platform_device tegra_uartc_device = {
607 .name = "tegra_uart",
608 .id = 2,
609 .num_resources = ARRAY_SIZE(tegra_uartc_resources),
610 .resource = tegra_uartc_resources,
611 .dev = {
612 .coherent_dma_mask = DMA_BIT_MASK(32),
613 },
614};
615
616struct platform_device tegra_uartd_device = {
617 .name = "tegra_uart",
618 .id = 3,
619 .num_resources = ARRAY_SIZE(tegra_uartd_resources),
620 .resource = tegra_uartd_resources,
621 .dev = {
622 .coherent_dma_mask = DMA_BIT_MASK(32),
623 },
624};
625
626struct platform_device tegra_uarte_device = {
627 .name = "tegra_uart",
628 .id = 4,
629 .num_resources = ARRAY_SIZE(tegra_uarte_resources),
630 .resource = tegra_uarte_resources,
631 .dev = {
632 .coherent_dma_mask = DMA_BIT_MASK(32),
633 },
634};
Stephen Warrenb9652c22011-03-04 22:44:27 -0700635
636static struct resource i2s_resource1[] = {
637 [0] = {
638 .start = INT_I2S1,
639 .end = INT_I2S1,
640 .flags = IORESOURCE_IRQ
641 },
642 [1] = {
643 .start = TEGRA_DMA_REQ_SEL_I2S_1,
644 .end = TEGRA_DMA_REQ_SEL_I2S_1,
645 .flags = IORESOURCE_DMA
646 },
647 [2] = {
648 .start = TEGRA_I2S1_BASE,
649 .end = TEGRA_I2S1_BASE + TEGRA_I2S1_SIZE - 1,
650 .flags = IORESOURCE_MEM
651 }
652};
653
654static struct resource i2s_resource2[] = {
655 [0] = {
656 .start = INT_I2S2,
657 .end = INT_I2S2,
658 .flags = IORESOURCE_IRQ
659 },
660 [1] = {
661 .start = TEGRA_DMA_REQ_SEL_I2S2_1,
662 .end = TEGRA_DMA_REQ_SEL_I2S2_1,
663 .flags = IORESOURCE_DMA
664 },
665 [2] = {
666 .start = TEGRA_I2S2_BASE,
667 .end = TEGRA_I2S2_BASE + TEGRA_I2S2_SIZE - 1,
668 .flags = IORESOURCE_MEM
669 }
670};
671
672struct platform_device tegra_i2s_device1 = {
673 .name = "tegra-i2s",
674 .id = 0,
675 .resource = i2s_resource1,
676 .num_resources = ARRAY_SIZE(i2s_resource1),
677};
678
679struct platform_device tegra_i2s_device2 = {
680 .name = "tegra-i2s",
681 .id = 1,
682 .resource = i2s_resource2,
683 .num_resources = ARRAY_SIZE(i2s_resource2),
684};
685
686static struct resource tegra_das_resources[] = {
687 [0] = {
688 .start = TEGRA_APB_MISC_DAS_BASE,
689 .end = TEGRA_APB_MISC_DAS_BASE + TEGRA_APB_MISC_DAS_SIZE - 1,
690 .flags = IORESOURCE_MEM,
691 },
692};
693
694struct platform_device tegra_das_device = {
695 .name = "tegra-das",
696 .id = -1,
697 .num_resources = ARRAY_SIZE(tegra_das_resources),
698 .resource = tegra_das_resources,
699};
700
701struct platform_device tegra_pcm_device = {
702 .name = "tegra-pcm-audio",
703 .id = -1,
704};