diff options
Diffstat (limited to 'arch/arm/mach-omap2/devices.c')
-rw-r--r-- | arch/arm/mach-omap2/devices.c | 59 |
1 files changed, 25 insertions, 34 deletions
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index c00c68961bb8..1b7e1c6e5359 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
@@ -17,21 +17,21 @@ | |||
17 | #include <linux/err.h> | 17 | #include <linux/err.h> |
18 | #include <linux/slab.h> | 18 | #include <linux/slab.h> |
19 | #include <linux/of.h> | 19 | #include <linux/of.h> |
20 | #include <linux/pinctrl/machine.h> | ||
20 | #include <linux/platform_data/omap4-keypad.h> | 21 | #include <linux/platform_data/omap4-keypad.h> |
21 | 22 | ||
22 | #include <mach/hardware.h> | ||
23 | #include <mach/irqs.h> | ||
24 | #include <asm/mach-types.h> | 23 | #include <asm/mach-types.h> |
25 | #include <asm/mach/map.h> | 24 | #include <asm/mach/map.h> |
26 | #include <asm/pmu.h> | 25 | #include <asm/pmu.h> |
27 | 26 | ||
28 | #include "iomap.h" | 27 | #include "iomap.h" |
29 | #include <plat/board.h> | ||
30 | #include <plat/dma.h> | 28 | #include <plat/dma.h> |
31 | #include <plat/omap_hwmod.h> | 29 | #include <plat/omap_hwmod.h> |
32 | #include <plat/omap_device.h> | 30 | #include <plat/omap_device.h> |
33 | #include <plat/omap4-keypad.h> | 31 | #include <plat/omap4-keypad.h> |
34 | 32 | ||
33 | #include "soc.h" | ||
34 | #include "common.h" | ||
35 | #include "mux.h" | 35 | #include "mux.h" |
36 | #include "control.h" | 36 | #include "control.h" |
37 | #include "devices.h" | 37 | #include "devices.h" |
@@ -112,7 +112,7 @@ static struct resource omap2cam_resources[] = { | |||
112 | .flags = IORESOURCE_MEM, | 112 | .flags = IORESOURCE_MEM, |
113 | }, | 113 | }, |
114 | { | 114 | { |
115 | .start = INT_24XX_CAM_IRQ, | 115 | .start = 24 + OMAP_INTC_START, |
116 | .flags = IORESOURCE_IRQ, | 116 | .flags = IORESOURCE_IRQ, |
117 | } | 117 | } |
118 | }; | 118 | }; |
@@ -201,7 +201,7 @@ static struct resource omap3isp_resources[] = { | |||
201 | .flags = IORESOURCE_MEM, | 201 | .flags = IORESOURCE_MEM, |
202 | }, | 202 | }, |
203 | { | 203 | { |
204 | .start = INT_34XX_CAM_IRQ, | 204 | .start = 24 + OMAP_INTC_START, |
205 | .flags = IORESOURCE_IRQ, | 205 | .flags = IORESOURCE_IRQ, |
206 | } | 206 | } |
207 | }; | 207 | }; |
@@ -434,37 +434,24 @@ static void omap_init_mcspi(void) | |||
434 | static inline void omap_init_mcspi(void) {} | 434 | static inline void omap_init_mcspi(void) {} |
435 | #endif | 435 | #endif |
436 | 436 | ||
437 | static struct resource omap2_pmu_resource = { | 437 | /** |
438 | .start = 3, | 438 | * omap_init_rng - bind the RNG hwmod to the RNG omap_device |
439 | .end = 3, | 439 | * |
440 | .flags = IORESOURCE_IRQ, | 440 | * Bind the RNG hwmod to the RNG omap_device. No return value. |
441 | }; | 441 | */ |
442 | 442 | static void omap_init_rng(void) | |
443 | static struct resource omap3_pmu_resource = { | ||
444 | .start = INT_34XX_BENCH_MPU_EMUL, | ||
445 | .end = INT_34XX_BENCH_MPU_EMUL, | ||
446 | .flags = IORESOURCE_IRQ, | ||
447 | }; | ||
448 | |||
449 | static struct platform_device omap_pmu_device = { | ||
450 | .name = "arm-pmu", | ||
451 | .id = ARM_PMU_DEVICE_CPU, | ||
452 | .num_resources = 1, | ||
453 | }; | ||
454 | |||
455 | static void omap_init_pmu(void) | ||
456 | { | 443 | { |
457 | if (cpu_is_omap24xx()) | 444 | struct omap_hwmod *oh; |
458 | omap_pmu_device.resource = &omap2_pmu_resource; | 445 | struct platform_device *pdev; |
459 | else if (cpu_is_omap34xx()) | 446 | |
460 | omap_pmu_device.resource = &omap3_pmu_resource; | 447 | oh = omap_hwmod_lookup("rng"); |
461 | else | 448 | if (!oh) |
462 | return; | 449 | return; |
463 | 450 | ||
464 | platform_device_register(&omap_pmu_device); | 451 | pdev = omap_device_build("omap_rng", -1, oh, NULL, 0, NULL, 0, 0); |
452 | WARN(IS_ERR(pdev), "Can't build omap_device for omap_rng\n"); | ||
465 | } | 453 | } |
466 | 454 | ||
467 | |||
468 | #if defined(CONFIG_CRYPTO_DEV_OMAP_SHAM) || defined(CONFIG_CRYPTO_DEV_OMAP_SHAM_MODULE) | 455 | #if defined(CONFIG_CRYPTO_DEV_OMAP_SHAM) || defined(CONFIG_CRYPTO_DEV_OMAP_SHAM_MODULE) |
469 | 456 | ||
470 | #ifdef CONFIG_ARCH_OMAP2 | 457 | #ifdef CONFIG_ARCH_OMAP2 |
@@ -475,7 +462,7 @@ static struct resource omap2_sham_resources[] = { | |||
475 | .flags = IORESOURCE_MEM, | 462 | .flags = IORESOURCE_MEM, |
476 | }, | 463 | }, |
477 | { | 464 | { |
478 | .start = INT_24XX_SHA1MD5, | 465 | .start = 51 + OMAP_INTC_START, |
479 | .flags = IORESOURCE_IRQ, | 466 | .flags = IORESOURCE_IRQ, |
480 | } | 467 | } |
481 | }; | 468 | }; |
@@ -493,7 +480,7 @@ static struct resource omap3_sham_resources[] = { | |||
493 | .flags = IORESOURCE_MEM, | 480 | .flags = IORESOURCE_MEM, |
494 | }, | 481 | }, |
495 | { | 482 | { |
496 | .start = INT_34XX_SHA1MD52_IRQ, | 483 | .start = 49 + OMAP_INTC_START, |
497 | .flags = IORESOURCE_IRQ, | 484 | .flags = IORESOURCE_IRQ, |
498 | }, | 485 | }, |
499 | { | 486 | { |
@@ -631,6 +618,10 @@ static inline void omap_init_vout(void) {} | |||
631 | 618 | ||
632 | static int __init omap2_init_devices(void) | 619 | static int __init omap2_init_devices(void) |
633 | { | 620 | { |
621 | /* Enable dummy states for those platforms without pinctrl support */ | ||
622 | if (!of_have_populated_dt()) | ||
623 | pinctrl_provide_dummies(); | ||
624 | |||
634 | /* | 625 | /* |
635 | * please keep these calls, and their implementations above, | 626 | * please keep these calls, and their implementations above, |
636 | * in alphabetical order so they're easier to sort through. | 627 | * in alphabetical order so they're easier to sort through. |
@@ -645,8 +636,8 @@ static int __init omap2_init_devices(void) | |||
645 | omap_init_mcpdm(); | 636 | omap_init_mcpdm(); |
646 | omap_init_mcspi(); | 637 | omap_init_mcspi(); |
647 | } | 638 | } |
648 | omap_init_pmu(); | ||
649 | omap_init_sti(); | 639 | omap_init_sti(); |
640 | omap_init_rng(); | ||
650 | omap_init_sham(); | 641 | omap_init_sham(); |
651 | omap_init_aes(); | 642 | omap_init_aes(); |
652 | omap_init_vout(); | 643 | omap_init_vout(); |