diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-02 12:31:45 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-02 12:31:45 -0400 |
commit | 97b1007a2924aaa9126398623f6755a8c3c6a616 (patch) | |
tree | b65c6edb631256e64bb3c72f083fa1be048de097 /arch/arm/mach-omap2 | |
parent | dfab34aa61a0f8c14a67d7b4c1dae28e57ba592d (diff) | |
parent | e0d20b69d3fa74a21ec363989612bddd58b930b8 (diff) |
Merge tag 'soc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC platform updates from Olof Johansson:
"This branch contains part 1 of the platform updates for 3.10. Among
the highlights:
- Support for the new Atmel Cortex-A5 based platforms (SAMA5D3)
- New support for CSR SiRFatlas6 SoCs
- A handful of updates for NVidia T114 (a.k.a. Tegra 4)
- A bunch of updates for the shmobile platforms
- A handful of updates for davinci
- A few updates for Qualcomm MSM
- Plus a handful of other patches, defconfig updates, etc."
* tag 'soc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (135 commits)
ARM: tegra: pm: fix build error w/o PM_SLEEP
ARM: davinci: ensure global variables are declared
ARM: davinci: sram.c: fix incorrect type in assignment
ARM: davinci: da8xx dt: make file local symbols static
ARM: davinci: da8xx: add remoteproc support
ARM: socfpga: Upgrade clk driver for socfpga to make use of dts clock entries
ARM: socfpga: Add clock entries into device tree
ARM: socfpga: Enable soft reset
ARM: EXYNOS: replace cpumask by the corresponding macro
ARM: EXYNOS: handle properly the return values
ARM: EXYNOS: factor out the idle states
ARM: OMAP4: Enable fix for Cortex-A9 erratas
ARM: OMAP2+: Export SoC information to userspace
ARM: OMAP2+: SoC name and revision unification
ARM: OMAP2+: Move common part of late init into common function
ARM: tegra: pm: remove duplicated include from pm.c
ARM: davinci: da850: override mmc DT node device name
ARM: davinci: da850: add mmc DT entries
mmc: davinci_mmc: add DT support
ARM: SAMSUNG: check processor type before cache restoration in resume
...
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r-- | arch/arm/mach-omap2/Kconfig | 3 | ||||
-rw-r--r-- | arch/arm/mach-omap2/cclock2430_data.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-omap2/cclock33xx_data.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-omap2/cclock3xxx_data.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/common.h | 8 | ||||
-rw-r--r-- | arch/arm/mach-omap2/devices.c | 149 | ||||
-rw-r--r-- | arch/arm/mach-omap2/id.c | 95 | ||||
-rw-r--r-- | arch/arm/mach-omap2/io.c | 34 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_2420_data.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_2430_data.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c | 36 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c | 81 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_33xx_data.c | 92 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 172 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_common_data.h | 4 |
15 files changed, 515 insertions, 179 deletions
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index 4dc34ae6a857..5c27c4747469 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
@@ -15,6 +15,7 @@ config ARCH_OMAP2PLUS | |||
15 | select OMAP_DM_TIMER | 15 | select OMAP_DM_TIMER |
16 | select PINCTRL | 16 | select PINCTRL |
17 | select PROC_DEVICETREE if PROC_FS | 17 | select PROC_DEVICETREE if PROC_FS |
18 | select SOC_BUS | ||
18 | select SPARSE_IRQ | 19 | select SPARSE_IRQ |
19 | select USE_OF | 20 | select USE_OF |
20 | help | 21 | help |
@@ -99,6 +100,8 @@ config ARCH_OMAP4 | |||
99 | select PM_RUNTIME if CPU_IDLE | 100 | select PM_RUNTIME if CPU_IDLE |
100 | select USB_ARCH_HAS_EHCI if USB_SUPPORT | 101 | select USB_ARCH_HAS_EHCI if USB_SUPPORT |
101 | select COMMON_CLK | 102 | select COMMON_CLK |
103 | select ARM_ERRATA_754322 | ||
104 | select ARM_ERRATA_775420 | ||
102 | 105 | ||
103 | config SOC_OMAP5 | 106 | config SOC_OMAP5 |
104 | bool "TI OMAP5" | 107 | bool "TI OMAP5" |
diff --git a/arch/arm/mach-omap2/cclock2430_data.c b/arch/arm/mach-omap2/cclock2430_data.c index bda353b2f7d9..5e4b037bb24c 100644 --- a/arch/arm/mach-omap2/cclock2430_data.c +++ b/arch/arm/mach-omap2/cclock2430_data.c | |||
@@ -1978,9 +1978,11 @@ static struct omap_clk omap2430_clks[] = { | |||
1978 | CLK(NULL, "sdrc_ick", &sdrc_ick), | 1978 | CLK(NULL, "sdrc_ick", &sdrc_ick), |
1979 | CLK(NULL, "des_ick", &des_ick), | 1979 | CLK(NULL, "des_ick", &des_ick), |
1980 | CLK("omap-sham", "ick", &sha_ick), | 1980 | CLK("omap-sham", "ick", &sha_ick), |
1981 | CLK("omap_rng", "ick", &rng_ick), | 1981 | CLK(NULL, "sha_ick", &sha_ick), |
1982 | CLK("omap_rng", "ick", &rng_ick), | ||
1982 | CLK(NULL, "rng_ick", &rng_ick), | 1983 | CLK(NULL, "rng_ick", &rng_ick), |
1983 | CLK("omap-aes", "ick", &aes_ick), | 1984 | CLK("omap-aes", "ick", &aes_ick), |
1985 | CLK(NULL, "aes_ick", &aes_ick), | ||
1984 | CLK(NULL, "pka_ick", &pka_ick), | 1986 | CLK(NULL, "pka_ick", &pka_ick), |
1985 | CLK(NULL, "usb_fck", &usb_fck), | 1987 | CLK(NULL, "usb_fck", &usb_fck), |
1986 | CLK("musb-omap2430", "ick", &usbhs_ick), | 1988 | CLK("musb-omap2430", "ick", &usbhs_ick), |
diff --git a/arch/arm/mach-omap2/cclock33xx_data.c b/arch/arm/mach-omap2/cclock33xx_data.c index 332c6d3e55a9..6ebc7803bc3e 100644 --- a/arch/arm/mach-omap2/cclock33xx_data.c +++ b/arch/arm/mach-omap2/cclock33xx_data.c | |||
@@ -413,6 +413,14 @@ static struct clk smartreflex1_fck; | |||
413 | DEFINE_STRUCT_CLK_HW_OMAP(smartreflex1_fck, NULL); | 413 | DEFINE_STRUCT_CLK_HW_OMAP(smartreflex1_fck, NULL); |
414 | DEFINE_STRUCT_CLK(smartreflex1_fck, dpll_core_ck_parents, clk_ops_null); | 414 | DEFINE_STRUCT_CLK(smartreflex1_fck, dpll_core_ck_parents, clk_ops_null); |
415 | 415 | ||
416 | static struct clk sha0_fck; | ||
417 | DEFINE_STRUCT_CLK_HW_OMAP(sha0_fck, NULL); | ||
418 | DEFINE_STRUCT_CLK(sha0_fck, dpll_core_ck_parents, clk_ops_null); | ||
419 | |||
420 | static struct clk aes0_fck; | ||
421 | DEFINE_STRUCT_CLK_HW_OMAP(aes0_fck, NULL); | ||
422 | DEFINE_STRUCT_CLK(aes0_fck, dpll_core_ck_parents, clk_ops_null); | ||
423 | |||
416 | /* | 424 | /* |
417 | * Modules clock nodes | 425 | * Modules clock nodes |
418 | * | 426 | * |
@@ -878,6 +886,8 @@ static struct omap_clk am33xx_clks[] = { | |||
878 | CLK(NULL, "mmu_fck", &mmu_fck), | 886 | CLK(NULL, "mmu_fck", &mmu_fck), |
879 | CLK(NULL, "smartreflex0_fck", &smartreflex0_fck), | 887 | CLK(NULL, "smartreflex0_fck", &smartreflex0_fck), |
880 | CLK(NULL, "smartreflex1_fck", &smartreflex1_fck), | 888 | CLK(NULL, "smartreflex1_fck", &smartreflex1_fck), |
889 | CLK(NULL, "sha0_fck", &sha0_fck), | ||
890 | CLK(NULL, "aes0_fck", &aes0_fck), | ||
881 | CLK(NULL, "timer1_fck", &timer1_fck), | 891 | CLK(NULL, "timer1_fck", &timer1_fck), |
882 | CLK(NULL, "timer2_fck", &timer2_fck), | 892 | CLK(NULL, "timer2_fck", &timer2_fck), |
883 | CLK(NULL, "timer3_fck", &timer3_fck), | 893 | CLK(NULL, "timer3_fck", &timer3_fck), |
diff --git a/arch/arm/mach-omap2/cclock3xxx_data.c b/arch/arm/mach-omap2/cclock3xxx_data.c index 438d13341e23..45cd26430d1f 100644 --- a/arch/arm/mach-omap2/cclock3xxx_data.c +++ b/arch/arm/mach-omap2/cclock3xxx_data.c | |||
@@ -3471,8 +3471,10 @@ static struct omap_clk omap3xxx_clks[] = { | |||
3471 | CLK("usbhs_tll", "usb_tll_hs_usb_ch1_clk", &dummy_ck), | 3471 | CLK("usbhs_tll", "usb_tll_hs_usb_ch1_clk", &dummy_ck), |
3472 | CLK(NULL, "init_60m_fclk", &dummy_ck), | 3472 | CLK(NULL, "init_60m_fclk", &dummy_ck), |
3473 | CLK(NULL, "gpt1_fck", &gpt1_fck), | 3473 | CLK(NULL, "gpt1_fck", &gpt1_fck), |
3474 | CLK(NULL, "aes2_ick", &aes2_ick), | ||
3474 | CLK(NULL, "wkup_32k_fck", &wkup_32k_fck), | 3475 | CLK(NULL, "wkup_32k_fck", &wkup_32k_fck), |
3475 | CLK(NULL, "gpio1_dbck", &gpio1_dbck), | 3476 | CLK(NULL, "gpio1_dbck", &gpio1_dbck), |
3477 | CLK(NULL, "sha12_ick", &sha12_ick), | ||
3476 | CLK(NULL, "wdt2_fck", &wdt2_fck), | 3478 | CLK(NULL, "wdt2_fck", &wdt2_fck), |
3477 | CLK("omap_wdt", "ick", &wdt2_ick), | 3479 | CLK("omap_wdt", "ick", &wdt2_ick), |
3478 | CLK(NULL, "wdt2_ick", &wdt2_ick), | 3480 | CLK(NULL, "wdt2_ick", &wdt2_ick), |
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h index 14522d077c88..df00e7580aa7 100644 --- a/arch/arm/mach-omap2/common.h +++ b/arch/arm/mach-omap2/common.h | |||
@@ -110,6 +110,14 @@ void am35xx_init_late(void); | |||
110 | void ti81xx_init_late(void); | 110 | void ti81xx_init_late(void); |
111 | int omap2_common_pm_late_init(void); | 111 | int omap2_common_pm_late_init(void); |
112 | 112 | ||
113 | #ifdef CONFIG_SOC_BUS | ||
114 | void omap_soc_device_init(void); | ||
115 | #else | ||
116 | static inline void omap_soc_device_init(void) | ||
117 | { | ||
118 | } | ||
119 | #endif | ||
120 | |||
113 | #if defined(CONFIG_SOC_OMAP2420) || defined(CONFIG_SOC_OMAP2430) | 121 | #if defined(CONFIG_SOC_OMAP2420) || defined(CONFIG_SOC_OMAP2430) |
114 | void omap2xxx_restart(char mode, const char *cmd); | 122 | void omap2xxx_restart(char mode, const char *cmd); |
115 | #else | 123 | #else |
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 1ec7f0597710..4269fc145698 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
@@ -504,140 +504,31 @@ static void omap_init_rng(void) | |||
504 | WARN(IS_ERR(pdev), "Can't build omap_device for omap_rng\n"); | 504 | WARN(IS_ERR(pdev), "Can't build omap_device for omap_rng\n"); |
505 | } | 505 | } |
506 | 506 | ||
507 | #if defined(CONFIG_CRYPTO_DEV_OMAP_SHAM) || defined(CONFIG_CRYPTO_DEV_OMAP_SHAM_MODULE) | 507 | static void __init omap_init_sham(void) |
508 | |||
509 | #ifdef CONFIG_ARCH_OMAP2 | ||
510 | static struct resource omap2_sham_resources[] = { | ||
511 | { | ||
512 | .start = OMAP24XX_SEC_SHA1MD5_BASE, | ||
513 | .end = OMAP24XX_SEC_SHA1MD5_BASE + 0x64, | ||
514 | .flags = IORESOURCE_MEM, | ||
515 | }, | ||
516 | { | ||
517 | .start = 51 + OMAP_INTC_START, | ||
518 | .flags = IORESOURCE_IRQ, | ||
519 | } | ||
520 | }; | ||
521 | static int omap2_sham_resources_sz = ARRAY_SIZE(omap2_sham_resources); | ||
522 | #else | ||
523 | #define omap2_sham_resources NULL | ||
524 | #define omap2_sham_resources_sz 0 | ||
525 | #endif | ||
526 | |||
527 | #ifdef CONFIG_ARCH_OMAP3 | ||
528 | static struct resource omap3_sham_resources[] = { | ||
529 | { | ||
530 | .start = OMAP34XX_SEC_SHA1MD5_BASE, | ||
531 | .end = OMAP34XX_SEC_SHA1MD5_BASE + 0x64, | ||
532 | .flags = IORESOURCE_MEM, | ||
533 | }, | ||
534 | { | ||
535 | .start = 49 + OMAP_INTC_START, | ||
536 | .flags = IORESOURCE_IRQ, | ||
537 | }, | ||
538 | { | ||
539 | .start = OMAP34XX_DMA_SHA1MD5_RX, | ||
540 | .flags = IORESOURCE_DMA, | ||
541 | } | ||
542 | }; | ||
543 | static int omap3_sham_resources_sz = ARRAY_SIZE(omap3_sham_resources); | ||
544 | #else | ||
545 | #define omap3_sham_resources NULL | ||
546 | #define omap3_sham_resources_sz 0 | ||
547 | #endif | ||
548 | |||
549 | static struct platform_device sham_device = { | ||
550 | .name = "omap-sham", | ||
551 | .id = -1, | ||
552 | }; | ||
553 | |||
554 | static void omap_init_sham(void) | ||
555 | { | 508 | { |
556 | if (cpu_is_omap24xx()) { | 509 | struct omap_hwmod *oh; |
557 | sham_device.resource = omap2_sham_resources; | 510 | struct platform_device *pdev; |
558 | sham_device.num_resources = omap2_sham_resources_sz; | ||
559 | } else if (cpu_is_omap34xx()) { | ||
560 | sham_device.resource = omap3_sham_resources; | ||
561 | sham_device.num_resources = omap3_sham_resources_sz; | ||
562 | } else { | ||
563 | pr_err("%s: platform not supported\n", __func__); | ||
564 | return; | ||
565 | } | ||
566 | platform_device_register(&sham_device); | ||
567 | } | ||
568 | #else | ||
569 | static inline void omap_init_sham(void) { } | ||
570 | #endif | ||
571 | |||
572 | #if defined(CONFIG_CRYPTO_DEV_OMAP_AES) || defined(CONFIG_CRYPTO_DEV_OMAP_AES_MODULE) | ||
573 | |||
574 | #ifdef CONFIG_ARCH_OMAP2 | ||
575 | static struct resource omap2_aes_resources[] = { | ||
576 | { | ||
577 | .start = OMAP24XX_SEC_AES_BASE, | ||
578 | .end = OMAP24XX_SEC_AES_BASE + 0x4C, | ||
579 | .flags = IORESOURCE_MEM, | ||
580 | }, | ||
581 | { | ||
582 | .start = OMAP24XX_DMA_AES_TX, | ||
583 | .flags = IORESOURCE_DMA, | ||
584 | }, | ||
585 | { | ||
586 | .start = OMAP24XX_DMA_AES_RX, | ||
587 | .flags = IORESOURCE_DMA, | ||
588 | } | ||
589 | }; | ||
590 | static int omap2_aes_resources_sz = ARRAY_SIZE(omap2_aes_resources); | ||
591 | #else | ||
592 | #define omap2_aes_resources NULL | ||
593 | #define omap2_aes_resources_sz 0 | ||
594 | #endif | ||
595 | 511 | ||
596 | #ifdef CONFIG_ARCH_OMAP3 | 512 | oh = omap_hwmod_lookup("sham"); |
597 | static struct resource omap3_aes_resources[] = { | 513 | if (!oh) |
598 | { | 514 | return; |
599 | .start = OMAP34XX_SEC_AES_BASE, | ||
600 | .end = OMAP34XX_SEC_AES_BASE + 0x4C, | ||
601 | .flags = IORESOURCE_MEM, | ||
602 | }, | ||
603 | { | ||
604 | .start = OMAP34XX_DMA_AES2_TX, | ||
605 | .flags = IORESOURCE_DMA, | ||
606 | }, | ||
607 | { | ||
608 | .start = OMAP34XX_DMA_AES2_RX, | ||
609 | .flags = IORESOURCE_DMA, | ||
610 | } | ||
611 | }; | ||
612 | static int omap3_aes_resources_sz = ARRAY_SIZE(omap3_aes_resources); | ||
613 | #else | ||
614 | #define omap3_aes_resources NULL | ||
615 | #define omap3_aes_resources_sz 0 | ||
616 | #endif | ||
617 | 515 | ||
618 | static struct platform_device aes_device = { | 516 | pdev = omap_device_build("omap-sham", -1, oh, NULL, 0); |
619 | .name = "omap-aes", | 517 | WARN(IS_ERR(pdev), "Can't build omap_device for omap-sham\n"); |
620 | .id = -1, | 518 | } |
621 | }; | ||
622 | 519 | ||
623 | static void omap_init_aes(void) | 520 | static void __init omap_init_aes(void) |
624 | { | 521 | { |
625 | if (cpu_is_omap24xx()) { | 522 | struct omap_hwmod *oh; |
626 | aes_device.resource = omap2_aes_resources; | 523 | struct platform_device *pdev; |
627 | aes_device.num_resources = omap2_aes_resources_sz; | 524 | |
628 | } else if (cpu_is_omap34xx()) { | 525 | oh = omap_hwmod_lookup("aes"); |
629 | aes_device.resource = omap3_aes_resources; | 526 | if (!oh) |
630 | aes_device.num_resources = omap3_aes_resources_sz; | ||
631 | } else { | ||
632 | pr_err("%s: platform not supported\n", __func__); | ||
633 | return; | 527 | return; |
634 | } | ||
635 | platform_device_register(&aes_device); | ||
636 | } | ||
637 | 528 | ||
638 | #else | 529 | pdev = omap_device_build("omap-aes", -1, oh, NULL, 0); |
639 | static inline void omap_init_aes(void) { } | 530 | WARN(IS_ERR(pdev), "Can't build omap_device for omap-aes\n"); |
640 | #endif | 531 | } |
641 | 532 | ||
642 | /*-------------------------------------------------------------------------*/ | 533 | /*-------------------------------------------------------------------------*/ |
643 | 534 | ||
@@ -764,11 +655,11 @@ static int __init omap2_init_devices(void) | |||
764 | omap_init_dmic(); | 655 | omap_init_dmic(); |
765 | omap_init_mcpdm(); | 656 | omap_init_mcpdm(); |
766 | omap_init_mcspi(); | 657 | omap_init_mcspi(); |
658 | omap_init_sham(); | ||
659 | omap_init_aes(); | ||
767 | } | 660 | } |
768 | omap_init_sti(); | 661 | omap_init_sti(); |
769 | omap_init_rng(); | 662 | omap_init_rng(); |
770 | omap_init_sham(); | ||
771 | omap_init_aes(); | ||
772 | omap_init_vout(); | 663 | omap_init_vout(); |
773 | omap_init_ocp2scp(); | 664 | omap_init_ocp2scp(); |
774 | 665 | ||
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c index ff0bc9e51aa7..2fb17caa8683 100644 --- a/arch/arm/mach-omap2/id.c +++ b/arch/arm/mach-omap2/id.c | |||
@@ -18,6 +18,11 @@ | |||
18 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/io.h> | 20 | #include <linux/io.h> |
21 | #include <linux/slab.h> | ||
22 | |||
23 | #ifdef CONFIG_SOC_BUS | ||
24 | #include <linux/sys_soc.h> | ||
25 | #endif | ||
21 | 26 | ||
22 | #include <asm/cputype.h> | 27 | #include <asm/cputype.h> |
23 | 28 | ||
@@ -31,8 +36,11 @@ | |||
31 | #define OMAP4_SILICON_TYPE_STANDARD 0x01 | 36 | #define OMAP4_SILICON_TYPE_STANDARD 0x01 |
32 | #define OMAP4_SILICON_TYPE_PERFORMANCE 0x02 | 37 | #define OMAP4_SILICON_TYPE_PERFORMANCE 0x02 |
33 | 38 | ||
39 | #define OMAP_SOC_MAX_NAME_LENGTH 16 | ||
40 | |||
34 | static unsigned int omap_revision; | 41 | static unsigned int omap_revision; |
35 | static const char *cpu_rev; | 42 | static char soc_name[OMAP_SOC_MAX_NAME_LENGTH]; |
43 | static char soc_rev[OMAP_SOC_MAX_NAME_LENGTH]; | ||
36 | u32 omap_features; | 44 | u32 omap_features; |
37 | 45 | ||
38 | unsigned int omap_rev(void) | 46 | unsigned int omap_rev(void) |
@@ -169,9 +177,12 @@ void __init omap2xxx_check_revision(void) | |||
169 | j = i; | 177 | j = i; |
170 | } | 178 | } |
171 | 179 | ||
172 | pr_info("OMAP%04x", omap_rev() >> 16); | 180 | sprintf(soc_name, "OMAP%04x", omap_rev() >> 16); |
181 | sprintf(soc_rev, "ES%x", (omap_rev() >> 12) & 0xf); | ||
182 | |||
183 | pr_info("%s", soc_name); | ||
173 | if ((omap_rev() >> 8) & 0x0f) | 184 | if ((omap_rev() >> 8) & 0x0f) |
174 | pr_info("ES%x", (omap_rev() >> 12) & 0xf); | 185 | pr_info("%s", soc_rev); |
175 | pr_info("\n"); | 186 | pr_info("\n"); |
176 | } | 187 | } |
177 | 188 | ||
@@ -211,8 +222,10 @@ static void __init omap3_cpuinfo(void) | |||
211 | cpu_name = "OMAP3503"; | 222 | cpu_name = "OMAP3503"; |
212 | } | 223 | } |
213 | 224 | ||
225 | sprintf(soc_name, "%s", cpu_name); | ||
226 | |||
214 | /* Print verbose information */ | 227 | /* Print verbose information */ |
215 | pr_info("%s ES%s (", cpu_name, cpu_rev); | 228 | pr_info("%s %s (", soc_name, soc_rev); |
216 | 229 | ||
217 | OMAP3_SHOW_FEATURE(l2cache); | 230 | OMAP3_SHOW_FEATURE(l2cache); |
218 | OMAP3_SHOW_FEATURE(iva); | 231 | OMAP3_SHOW_FEATURE(iva); |
@@ -291,6 +304,7 @@ void __init ti81xx_check_features(void) | |||
291 | 304 | ||
292 | void __init omap3xxx_check_revision(void) | 305 | void __init omap3xxx_check_revision(void) |
293 | { | 306 | { |
307 | const char *cpu_rev; | ||
294 | u32 cpuid, idcode; | 308 | u32 cpuid, idcode; |
295 | u16 hawkeye; | 309 | u16 hawkeye; |
296 | u8 rev; | 310 | u8 rev; |
@@ -438,6 +452,7 @@ void __init omap3xxx_check_revision(void) | |||
438 | cpu_rev = "1.2"; | 452 | cpu_rev = "1.2"; |
439 | pr_warn("Warning: unknown chip type; assuming OMAP3630ES1.2\n"); | 453 | pr_warn("Warning: unknown chip type; assuming OMAP3630ES1.2\n"); |
440 | } | 454 | } |
455 | sprintf(soc_rev, "ES%s", cpu_rev); | ||
441 | } | 456 | } |
442 | 457 | ||
443 | void __init omap4xxx_check_revision(void) | 458 | void __init omap4xxx_check_revision(void) |
@@ -512,8 +527,10 @@ void __init omap4xxx_check_revision(void) | |||
512 | omap_revision = OMAP4430_REV_ES2_3; | 527 | omap_revision = OMAP4430_REV_ES2_3; |
513 | } | 528 | } |
514 | 529 | ||
515 | pr_info("OMAP%04x ES%d.%d\n", omap_rev() >> 16, | 530 | sprintf(soc_name, "OMAP%04x", omap_rev() >> 16); |
516 | ((omap_rev() >> 12) & 0xf), ((omap_rev() >> 8) & 0xf)); | 531 | sprintf(soc_rev, "ES%d.%d", (omap_rev() >> 12) & 0xf, |
532 | (omap_rev() >> 8) & 0xf); | ||
533 | pr_info("%s %s\n", soc_name, soc_rev); | ||
517 | } | 534 | } |
518 | 535 | ||
519 | void __init omap5xxx_check_revision(void) | 536 | void __init omap5xxx_check_revision(void) |
@@ -553,8 +570,10 @@ void __init omap5xxx_check_revision(void) | |||
553 | omap_revision = OMAP5430_REV_ES2_0; | 570 | omap_revision = OMAP5430_REV_ES2_0; |
554 | } | 571 | } |
555 | 572 | ||
556 | pr_info("OMAP%04x ES%d.0\n", | 573 | sprintf(soc_name, "OMAP%04x", omap_rev() >> 16); |
557 | omap_rev() >> 16, ((omap_rev() >> 12) & 0xf)); | 574 | sprintf(soc_rev, "ES%d.0", (omap_rev() >> 12) & 0xf); |
575 | |||
576 | pr_info("%s %s\n", soc_name, soc_rev); | ||
558 | } | 577 | } |
559 | 578 | ||
560 | /* | 579 | /* |
@@ -575,3 +594,63 @@ void __init omap2_set_globals_tap(u32 class, void __iomem *tap) | |||
575 | else | 594 | else |
576 | tap_prod_id = 0x0208; | 595 | tap_prod_id = 0x0208; |
577 | } | 596 | } |
597 | |||
598 | #ifdef CONFIG_SOC_BUS | ||
599 | |||
600 | static const char const *omap_types[] = { | ||
601 | [OMAP2_DEVICE_TYPE_TEST] = "TST", | ||
602 | [OMAP2_DEVICE_TYPE_EMU] = "EMU", | ||
603 | [OMAP2_DEVICE_TYPE_SEC] = "HS", | ||
604 | [OMAP2_DEVICE_TYPE_GP] = "GP", | ||
605 | [OMAP2_DEVICE_TYPE_BAD] = "BAD", | ||
606 | }; | ||
607 | |||
608 | static const char * __init omap_get_family(void) | ||
609 | { | ||
610 | if (cpu_is_omap24xx()) | ||
611 | return kasprintf(GFP_KERNEL, "OMAP2"); | ||
612 | else if (cpu_is_omap34xx()) | ||
613 | return kasprintf(GFP_KERNEL, "OMAP3"); | ||
614 | else if (cpu_is_omap44xx()) | ||
615 | return kasprintf(GFP_KERNEL, "OMAP4"); | ||
616 | else if (soc_is_omap54xx()) | ||
617 | return kasprintf(GFP_KERNEL, "OMAP5"); | ||
618 | else | ||
619 | return kasprintf(GFP_KERNEL, "Unknown"); | ||
620 | } | ||
621 | |||
622 | static ssize_t omap_get_type(struct device *dev, | ||
623 | struct device_attribute *attr, | ||
624 | char *buf) | ||
625 | { | ||
626 | return sprintf(buf, "%s\n", omap_types[omap_type()]); | ||
627 | } | ||
628 | |||
629 | static struct device_attribute omap_soc_attr = | ||
630 | __ATTR(type, S_IRUGO, omap_get_type, NULL); | ||
631 | |||
632 | void __init omap_soc_device_init(void) | ||
633 | { | ||
634 | struct device *parent; | ||
635 | struct soc_device *soc_dev; | ||
636 | struct soc_device_attribute *soc_dev_attr; | ||
637 | |||
638 | soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL); | ||
639 | if (!soc_dev_attr) | ||
640 | return; | ||
641 | |||
642 | soc_dev_attr->machine = soc_name; | ||
643 | soc_dev_attr->family = omap_get_family(); | ||
644 | soc_dev_attr->revision = soc_rev; | ||
645 | |||
646 | soc_dev = soc_device_register(soc_dev_attr); | ||
647 | if (IS_ERR_OR_NULL(soc_dev)) { | ||
648 | kfree(soc_dev_attr); | ||
649 | return; | ||
650 | } | ||
651 | |||
652 | parent = soc_device_to_device(soc_dev); | ||
653 | if (!IS_ERR_OR_NULL(parent)) | ||
654 | device_create_file(parent, &omap_soc_attr); | ||
655 | } | ||
656 | #endif /* CONFIG_SOC_BUS */ | ||
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index e210fa830f8d..09abf99e9e57 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -394,6 +394,13 @@ static void __init omap_hwmod_init_postsetup(void) | |||
394 | omap_pm_if_early_init(); | 394 | omap_pm_if_early_init(); |
395 | } | 395 | } |
396 | 396 | ||
397 | static void __init omap_common_late_init(void) | ||
398 | { | ||
399 | omap_mux_late_init(); | ||
400 | omap2_common_pm_late_init(); | ||
401 | omap_soc_device_init(); | ||
402 | } | ||
403 | |||
397 | #ifdef CONFIG_SOC_OMAP2420 | 404 | #ifdef CONFIG_SOC_OMAP2420 |
398 | void __init omap2420_init_early(void) | 405 | void __init omap2420_init_early(void) |
399 | { | 406 | { |
@@ -417,8 +424,7 @@ void __init omap2420_init_early(void) | |||
417 | 424 | ||
418 | void __init omap2420_init_late(void) | 425 | void __init omap2420_init_late(void) |
419 | { | 426 | { |
420 | omap_mux_late_init(); | 427 | omap_common_late_init(); |
421 | omap2_common_pm_late_init(); | ||
422 | omap2_pm_init(); | 428 | omap2_pm_init(); |
423 | omap2_clk_enable_autoidle_all(); | 429 | omap2_clk_enable_autoidle_all(); |
424 | } | 430 | } |
@@ -447,8 +453,7 @@ void __init omap2430_init_early(void) | |||
447 | 453 | ||
448 | void __init omap2430_init_late(void) | 454 | void __init omap2430_init_late(void) |
449 | { | 455 | { |
450 | omap_mux_late_init(); | 456 | omap_common_late_init(); |
451 | omap2_common_pm_late_init(); | ||
452 | omap2_pm_init(); | 457 | omap2_pm_init(); |
453 | omap2_clk_enable_autoidle_all(); | 458 | omap2_clk_enable_autoidle_all(); |
454 | } | 459 | } |
@@ -520,48 +525,42 @@ void __init ti81xx_init_early(void) | |||
520 | 525 | ||
521 | void __init omap3_init_late(void) | 526 | void __init omap3_init_late(void) |
522 | { | 527 | { |
523 | omap_mux_late_init(); | 528 | omap_common_late_init(); |
524 | omap2_common_pm_late_init(); | ||
525 | omap3_pm_init(); | 529 | omap3_pm_init(); |
526 | omap2_clk_enable_autoidle_all(); | 530 | omap2_clk_enable_autoidle_all(); |
527 | } | 531 | } |
528 | 532 | ||
529 | void __init omap3430_init_late(void) | 533 | void __init omap3430_init_late(void) |
530 | { | 534 | { |
531 | omap_mux_late_init(); | 535 | omap_common_late_init(); |
532 | omap2_common_pm_late_init(); | ||
533 | omap3_pm_init(); | 536 | omap3_pm_init(); |
534 | omap2_clk_enable_autoidle_all(); | 537 | omap2_clk_enable_autoidle_all(); |
535 | } | 538 | } |
536 | 539 | ||
537 | void __init omap35xx_init_late(void) | 540 | void __init omap35xx_init_late(void) |
538 | { | 541 | { |
539 | omap_mux_late_init(); | 542 | omap_common_late_init(); |
540 | omap2_common_pm_late_init(); | ||
541 | omap3_pm_init(); | 543 | omap3_pm_init(); |
542 | omap2_clk_enable_autoidle_all(); | 544 | omap2_clk_enable_autoidle_all(); |
543 | } | 545 | } |
544 | 546 | ||
545 | void __init omap3630_init_late(void) | 547 | void __init omap3630_init_late(void) |
546 | { | 548 | { |
547 | omap_mux_late_init(); | 549 | omap_common_late_init(); |
548 | omap2_common_pm_late_init(); | ||
549 | omap3_pm_init(); | 550 | omap3_pm_init(); |
550 | omap2_clk_enable_autoidle_all(); | 551 | omap2_clk_enable_autoidle_all(); |
551 | } | 552 | } |
552 | 553 | ||
553 | void __init am35xx_init_late(void) | 554 | void __init am35xx_init_late(void) |
554 | { | 555 | { |
555 | omap_mux_late_init(); | 556 | omap_common_late_init(); |
556 | omap2_common_pm_late_init(); | ||
557 | omap3_pm_init(); | 557 | omap3_pm_init(); |
558 | omap2_clk_enable_autoidle_all(); | 558 | omap2_clk_enable_autoidle_all(); |
559 | } | 559 | } |
560 | 560 | ||
561 | void __init ti81xx_init_late(void) | 561 | void __init ti81xx_init_late(void) |
562 | { | 562 | { |
563 | omap_mux_late_init(); | 563 | omap_common_late_init(); |
564 | omap2_common_pm_late_init(); | ||
565 | omap3_pm_init(); | 564 | omap3_pm_init(); |
566 | omap2_clk_enable_autoidle_all(); | 565 | omap2_clk_enable_autoidle_all(); |
567 | } | 566 | } |
@@ -613,8 +612,7 @@ void __init omap4430_init_early(void) | |||
613 | 612 | ||
614 | void __init omap4430_init_late(void) | 613 | void __init omap4430_init_late(void) |
615 | { | 614 | { |
616 | omap_mux_late_init(); | 615 | omap_common_late_init(); |
617 | omap2_common_pm_late_init(); | ||
618 | omap4_pm_init(); | 616 | omap4_pm_init(); |
619 | omap2_clk_enable_autoidle_all(); | 617 | omap2_clk_enable_autoidle_all(); |
620 | } | 618 | } |
diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c b/arch/arm/mach-omap2/omap_hwmod_2420_data.c index 6a764af6c6d3..5137cc84b504 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2420_data.c | |||
@@ -610,6 +610,8 @@ static struct omap_hwmod_ocp_if *omap2420_hwmod_ocp_ifs[] __initdata = { | |||
610 | &omap2420_l4_core__mcbsp2, | 610 | &omap2420_l4_core__mcbsp2, |
611 | &omap2420_l4_core__msdi1, | 611 | &omap2420_l4_core__msdi1, |
612 | &omap2xxx_l4_core__rng, | 612 | &omap2xxx_l4_core__rng, |
613 | &omap2xxx_l4_core__sham, | ||
614 | &omap2xxx_l4_core__aes, | ||
613 | &omap2420_l4_core__hdq1w, | 615 | &omap2420_l4_core__hdq1w, |
614 | &omap2420_l4_wkup__counter_32k, | 616 | &omap2420_l4_wkup__counter_32k, |
615 | &omap2420_l3__gpmc, | 617 | &omap2420_l3__gpmc, |
diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c b/arch/arm/mach-omap2/omap_hwmod_2430_data.c index d2d3840557c3..4ce999ee3ee9 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2430_data.c | |||
@@ -963,6 +963,8 @@ static struct omap_hwmod_ocp_if *omap2430_hwmod_ocp_ifs[] __initdata = { | |||
963 | &omap2430_l4_core__mcbsp5, | 963 | &omap2430_l4_core__mcbsp5, |
964 | &omap2430_l4_core__hdq1w, | 964 | &omap2430_l4_core__hdq1w, |
965 | &omap2xxx_l4_core__rng, | 965 | &omap2xxx_l4_core__rng, |
966 | &omap2xxx_l4_core__sham, | ||
967 | &omap2xxx_l4_core__aes, | ||
966 | &omap2430_l4_wkup__counter_32k, | 968 | &omap2430_l4_wkup__counter_32k, |
967 | &omap2430_l3__gpmc, | 969 | &omap2430_l3__gpmc, |
968 | NULL, | 970 | NULL, |
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c index 47901a5e76de..5fd40d4a989e 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c | |||
@@ -138,6 +138,24 @@ static struct omap_hwmod_addr_space omap2_rng_addr_space[] = { | |||
138 | { } | 138 | { } |
139 | }; | 139 | }; |
140 | 140 | ||
141 | static struct omap_hwmod_addr_space omap2xxx_sham_addrs[] = { | ||
142 | { | ||
143 | .pa_start = 0x480a4000, | ||
144 | .pa_end = 0x480a4000 + 0x64 - 1, | ||
145 | .flags = ADDR_TYPE_RT | ||
146 | }, | ||
147 | { } | ||
148 | }; | ||
149 | |||
150 | static struct omap_hwmod_addr_space omap2xxx_aes_addrs[] = { | ||
151 | { | ||
152 | .pa_start = 0x480a6000, | ||
153 | .pa_end = 0x480a6000 + 0x50 - 1, | ||
154 | .flags = ADDR_TYPE_RT | ||
155 | }, | ||
156 | { } | ||
157 | }; | ||
158 | |||
141 | /* | 159 | /* |
142 | * Common interconnect data | 160 | * Common interconnect data |
143 | */ | 161 | */ |
@@ -389,3 +407,21 @@ struct omap_hwmod_ocp_if omap2xxx_l4_core__rng = { | |||
389 | .addr = omap2_rng_addr_space, | 407 | .addr = omap2_rng_addr_space, |
390 | .user = OCP_USER_MPU | OCP_USER_SDMA, | 408 | .user = OCP_USER_MPU | OCP_USER_SDMA, |
391 | }; | 409 | }; |
410 | |||
411 | /* l4 core -> sham interface */ | ||
412 | struct omap_hwmod_ocp_if omap2xxx_l4_core__sham = { | ||
413 | .master = &omap2xxx_l4_core_hwmod, | ||
414 | .slave = &omap2xxx_sham_hwmod, | ||
415 | .clk = "sha_ick", | ||
416 | .addr = omap2xxx_sham_addrs, | ||
417 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
418 | }; | ||
419 | |||
420 | /* l4 core -> aes interface */ | ||
421 | struct omap_hwmod_ocp_if omap2xxx_l4_core__aes = { | ||
422 | .master = &omap2xxx_l4_core_hwmod, | ||
423 | .slave = &omap2xxx_aes_hwmod, | ||
424 | .clk = "aes_ick", | ||
425 | .addr = omap2xxx_aes_addrs, | ||
426 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
427 | }; | ||
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c index e596117004d4..c8c64b3e1acc 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c | |||
@@ -864,3 +864,84 @@ struct omap_hwmod omap2xxx_rng_hwmod = { | |||
864 | .flags = HWMOD_INIT_NO_RESET, | 864 | .flags = HWMOD_INIT_NO_RESET, |
865 | .class = &omap2_rng_hwmod_class, | 865 | .class = &omap2_rng_hwmod_class, |
866 | }; | 866 | }; |
867 | |||
868 | /* SHAM */ | ||
869 | |||
870 | static struct omap_hwmod_class_sysconfig omap2_sham_sysc = { | ||
871 | .rev_offs = 0x5c, | ||
872 | .sysc_offs = 0x60, | ||
873 | .syss_offs = 0x64, | ||
874 | .sysc_flags = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE | | ||
875 | SYSS_HAS_RESET_STATUS), | ||
876 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
877 | }; | ||
878 | |||
879 | static struct omap_hwmod_class omap2xxx_sham_class = { | ||
880 | .name = "sham", | ||
881 | .sysc = &omap2_sham_sysc, | ||
882 | }; | ||
883 | |||
884 | static struct omap_hwmod_irq_info omap2_sham_mpu_irqs[] = { | ||
885 | { .irq = 51 + OMAP_INTC_START, }, | ||
886 | { .irq = -1 } | ||
887 | }; | ||
888 | |||
889 | static struct omap_hwmod_dma_info omap2_sham_sdma_chs[] = { | ||
890 | { .name = "rx", .dma_req = 13 }, | ||
891 | { .dma_req = -1 } | ||
892 | }; | ||
893 | |||
894 | struct omap_hwmod omap2xxx_sham_hwmod = { | ||
895 | .name = "sham", | ||
896 | .mpu_irqs = omap2_sham_mpu_irqs, | ||
897 | .sdma_reqs = omap2_sham_sdma_chs, | ||
898 | .main_clk = "l4_ck", | ||
899 | .prcm = { | ||
900 | .omap2 = { | ||
901 | .module_offs = CORE_MOD, | ||
902 | .prcm_reg_id = 4, | ||
903 | .module_bit = OMAP24XX_EN_SHA_SHIFT, | ||
904 | .idlest_reg_id = 4, | ||
905 | .idlest_idle_bit = OMAP24XX_ST_SHA_SHIFT, | ||
906 | }, | ||
907 | }, | ||
908 | .class = &omap2xxx_sham_class, | ||
909 | }; | ||
910 | |||
911 | /* AES */ | ||
912 | |||
913 | static struct omap_hwmod_class_sysconfig omap2_aes_sysc = { | ||
914 | .rev_offs = 0x44, | ||
915 | .sysc_offs = 0x48, | ||
916 | .syss_offs = 0x4c, | ||
917 | .sysc_flags = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE | | ||
918 | SYSS_HAS_RESET_STATUS), | ||
919 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
920 | }; | ||
921 | |||
922 | static struct omap_hwmod_class omap2xxx_aes_class = { | ||
923 | .name = "aes", | ||
924 | .sysc = &omap2_aes_sysc, | ||
925 | }; | ||
926 | |||
927 | static struct omap_hwmod_dma_info omap2_aes_sdma_chs[] = { | ||
928 | { .name = "tx", .dma_req = 9 }, | ||
929 | { .name = "rx", .dma_req = 10 }, | ||
930 | { .dma_req = -1 } | ||
931 | }; | ||
932 | |||
933 | struct omap_hwmod omap2xxx_aes_hwmod = { | ||
934 | .name = "aes", | ||
935 | .sdma_reqs = omap2_aes_sdma_chs, | ||
936 | .main_clk = "l4_ck", | ||
937 | .prcm = { | ||
938 | .omap2 = { | ||
939 | .module_offs = CORE_MOD, | ||
940 | .prcm_reg_id = 4, | ||
941 | .module_bit = OMAP24XX_EN_AES_SHIFT, | ||
942 | .idlest_reg_id = 4, | ||
943 | .idlest_idle_bit = OMAP24XX_ST_AES_SHIFT, | ||
944 | }, | ||
945 | }, | ||
946 | .class = &omap2xxx_aes_class, | ||
947 | }; | ||
diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c index 31bea1ce3de1..01d8f324450a 100644 --- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c | |||
@@ -418,8 +418,6 @@ static struct omap_hwmod am33xx_adc_tsc_hwmod = { | |||
418 | * - clkdiv32k | 418 | * - clkdiv32k |
419 | * - debugss | 419 | * - debugss |
420 | * - ocp watch point | 420 | * - ocp watch point |
421 | * - aes0 | ||
422 | * - sha0 | ||
423 | */ | 421 | */ |
424 | #if 0 | 422 | #if 0 |
425 | /* | 423 | /* |
@@ -500,25 +498,41 @@ static struct omap_hwmod am33xx_ocpwp_hwmod = { | |||
500 | }, | 498 | }, |
501 | }, | 499 | }, |
502 | }; | 500 | }; |
501 | #endif | ||
503 | 502 | ||
504 | /* | 503 | /* |
505 | * 'aes' class | 504 | * 'aes0' class |
506 | */ | 505 | */ |
507 | static struct omap_hwmod_class am33xx_aes_hwmod_class = { | 506 | static struct omap_hwmod_class_sysconfig am33xx_aes0_sysc = { |
508 | .name = "aes", | 507 | .rev_offs = 0x80, |
508 | .sysc_offs = 0x84, | ||
509 | .syss_offs = 0x88, | ||
510 | .sysc_flags = SYSS_HAS_RESET_STATUS, | ||
511 | }; | ||
512 | |||
513 | static struct omap_hwmod_class am33xx_aes0_hwmod_class = { | ||
514 | .name = "aes0", | ||
515 | .sysc = &am33xx_aes0_sysc, | ||
509 | }; | 516 | }; |
510 | 517 | ||
511 | static struct omap_hwmod_irq_info am33xx_aes0_irqs[] = { | 518 | static struct omap_hwmod_irq_info am33xx_aes0_irqs[] = { |
512 | { .irq = 102 + OMAP_INTC_START, }, | 519 | { .irq = 103 + OMAP_INTC_START, }, |
513 | { .irq = -1 }, | 520 | { .irq = -1 }, |
514 | }; | 521 | }; |
515 | 522 | ||
523 | static struct omap_hwmod_dma_info am33xx_aes0_edma_reqs[] = { | ||
524 | { .name = "tx", .dma_req = 6, }, | ||
525 | { .name = "rx", .dma_req = 5, }, | ||
526 | { .dma_req = -1 } | ||
527 | }; | ||
528 | |||
516 | static struct omap_hwmod am33xx_aes0_hwmod = { | 529 | static struct omap_hwmod am33xx_aes0_hwmod = { |
517 | .name = "aes0", | 530 | .name = "aes", |
518 | .class = &am33xx_aes_hwmod_class, | 531 | .class = &am33xx_aes0_hwmod_class, |
519 | .clkdm_name = "l3_clkdm", | 532 | .clkdm_name = "l3_clkdm", |
520 | .mpu_irqs = am33xx_aes0_irqs, | 533 | .mpu_irqs = am33xx_aes0_irqs, |
521 | .main_clk = "l3_gclk", | 534 | .sdma_reqs = am33xx_aes0_edma_reqs, |
535 | .main_clk = "aes0_fck", | ||
522 | .prcm = { | 536 | .prcm = { |
523 | .omap4 = { | 537 | .omap4 = { |
524 | .clkctrl_offs = AM33XX_CM_PER_AES0_CLKCTRL_OFFSET, | 538 | .clkctrl_offs = AM33XX_CM_PER_AES0_CLKCTRL_OFFSET, |
@@ -527,21 +541,35 @@ static struct omap_hwmod am33xx_aes0_hwmod = { | |||
527 | }, | 541 | }, |
528 | }; | 542 | }; |
529 | 543 | ||
530 | /* sha0 */ | 544 | /* sha0 HIB2 (the 'P' (public) device) */ |
545 | static struct omap_hwmod_class_sysconfig am33xx_sha0_sysc = { | ||
546 | .rev_offs = 0x100, | ||
547 | .sysc_offs = 0x110, | ||
548 | .syss_offs = 0x114, | ||
549 | .sysc_flags = SYSS_HAS_RESET_STATUS, | ||
550 | }; | ||
551 | |||
531 | static struct omap_hwmod_class am33xx_sha0_hwmod_class = { | 552 | static struct omap_hwmod_class am33xx_sha0_hwmod_class = { |
532 | .name = "sha0", | 553 | .name = "sha0", |
554 | .sysc = &am33xx_sha0_sysc, | ||
533 | }; | 555 | }; |
534 | 556 | ||
535 | static struct omap_hwmod_irq_info am33xx_sha0_irqs[] = { | 557 | static struct omap_hwmod_irq_info am33xx_sha0_irqs[] = { |
536 | { .irq = 108 + OMAP_INTC_START, }, | 558 | { .irq = 109 + OMAP_INTC_START, }, |
537 | { .irq = -1 }, | 559 | { .irq = -1 }, |
538 | }; | 560 | }; |
539 | 561 | ||
562 | static struct omap_hwmod_dma_info am33xx_sha0_edma_reqs[] = { | ||
563 | { .name = "rx", .dma_req = 36, }, | ||
564 | { .dma_req = -1 } | ||
565 | }; | ||
566 | |||
540 | static struct omap_hwmod am33xx_sha0_hwmod = { | 567 | static struct omap_hwmod am33xx_sha0_hwmod = { |
541 | .name = "sha0", | 568 | .name = "sham", |
542 | .class = &am33xx_sha0_hwmod_class, | 569 | .class = &am33xx_sha0_hwmod_class, |
543 | .clkdm_name = "l3_clkdm", | 570 | .clkdm_name = "l3_clkdm", |
544 | .mpu_irqs = am33xx_sha0_irqs, | 571 | .mpu_irqs = am33xx_sha0_irqs, |
572 | .sdma_reqs = am33xx_sha0_edma_reqs, | ||
545 | .main_clk = "l3_gclk", | 573 | .main_clk = "l3_gclk", |
546 | .prcm = { | 574 | .prcm = { |
547 | .omap4 = { | 575 | .omap4 = { |
@@ -551,8 +579,6 @@ static struct omap_hwmod am33xx_sha0_hwmod = { | |||
551 | }, | 579 | }, |
552 | }; | 580 | }; |
553 | 581 | ||
554 | #endif | ||
555 | |||
556 | /* ocmcram */ | 582 | /* ocmcram */ |
557 | static struct omap_hwmod_class am33xx_ocmcram_hwmod_class = { | 583 | static struct omap_hwmod_class am33xx_ocmcram_hwmod_class = { |
558 | .name = "ocmcram", | 584 | .name = "ocmcram", |
@@ -3449,6 +3475,42 @@ static struct omap_hwmod_ocp_if am33xx_l3_main__ocmc = { | |||
3449 | .user = OCP_USER_MPU | OCP_USER_SDMA, | 3475 | .user = OCP_USER_MPU | OCP_USER_SDMA, |
3450 | }; | 3476 | }; |
3451 | 3477 | ||
3478 | /* l3 main -> sha0 HIB2 */ | ||
3479 | static struct omap_hwmod_addr_space am33xx_sha0_addrs[] = { | ||
3480 | { | ||
3481 | .pa_start = 0x53100000, | ||
3482 | .pa_end = 0x53100000 + SZ_512 - 1, | ||
3483 | .flags = ADDR_TYPE_RT | ||
3484 | }, | ||
3485 | { } | ||
3486 | }; | ||
3487 | |||
3488 | static struct omap_hwmod_ocp_if am33xx_l3_main__sha0 = { | ||
3489 | .master = &am33xx_l3_main_hwmod, | ||
3490 | .slave = &am33xx_sha0_hwmod, | ||
3491 | .clk = "sha0_fck", | ||
3492 | .addr = am33xx_sha0_addrs, | ||
3493 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
3494 | }; | ||
3495 | |||
3496 | /* l3 main -> AES0 HIB2 */ | ||
3497 | static struct omap_hwmod_addr_space am33xx_aes0_addrs[] = { | ||
3498 | { | ||
3499 | .pa_start = 0x53500000, | ||
3500 | .pa_end = 0x53500000 + SZ_1M - 1, | ||
3501 | .flags = ADDR_TYPE_RT | ||
3502 | }, | ||
3503 | { } | ||
3504 | }; | ||
3505 | |||
3506 | static struct omap_hwmod_ocp_if am33xx_l3_main__aes0 = { | ||
3507 | .master = &am33xx_l3_main_hwmod, | ||
3508 | .slave = &am33xx_aes0_hwmod, | ||
3509 | .clk = "aes0_fck", | ||
3510 | .addr = am33xx_aes0_addrs, | ||
3511 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
3512 | }; | ||
3513 | |||
3452 | static struct omap_hwmod_ocp_if *am33xx_hwmod_ocp_ifs[] __initdata = { | 3514 | static struct omap_hwmod_ocp_if *am33xx_hwmod_ocp_ifs[] __initdata = { |
3453 | &am33xx_l4_fw__emif_fw, | 3515 | &am33xx_l4_fw__emif_fw, |
3454 | &am33xx_l3_main__emif, | 3516 | &am33xx_l3_main__emif, |
@@ -3529,6 +3591,8 @@ static struct omap_hwmod_ocp_if *am33xx_hwmod_ocp_ifs[] __initdata = { | |||
3529 | &am33xx_l3_s__usbss, | 3591 | &am33xx_l3_s__usbss, |
3530 | &am33xx_l4_hs__cpgmac0, | 3592 | &am33xx_l4_hs__cpgmac0, |
3531 | &am33xx_cpgmac0__mdio, | 3593 | &am33xx_cpgmac0__mdio, |
3594 | &am33xx_l3_main__sha0, | ||
3595 | &am33xx_l3_main__aes0, | ||
3532 | NULL, | 3596 | NULL, |
3533 | }; | 3597 | }; |
3534 | 3598 | ||
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index 5112d04e7b79..4083606ea1da 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | |||
@@ -3550,6 +3550,132 @@ static struct omap_hwmod_ocp_if omap3xxx_l3_main__gpmc = { | |||
3550 | .user = OCP_USER_MPU | OCP_USER_SDMA, | 3550 | .user = OCP_USER_MPU | OCP_USER_SDMA, |
3551 | }; | 3551 | }; |
3552 | 3552 | ||
3553 | /* l4_core -> SHAM2 (SHA1/MD5) (similar to omap24xx) */ | ||
3554 | static struct omap_hwmod_sysc_fields omap3_sham_sysc_fields = { | ||
3555 | .sidle_shift = 4, | ||
3556 | .srst_shift = 1, | ||
3557 | .autoidle_shift = 0, | ||
3558 | }; | ||
3559 | |||
3560 | static struct omap_hwmod_class_sysconfig omap3_sham_sysc = { | ||
3561 | .rev_offs = 0x5c, | ||
3562 | .sysc_offs = 0x60, | ||
3563 | .syss_offs = 0x64, | ||
3564 | .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | | ||
3565 | SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS), | ||
3566 | .sysc_fields = &omap3_sham_sysc_fields, | ||
3567 | }; | ||
3568 | |||
3569 | static struct omap_hwmod_class omap3xxx_sham_class = { | ||
3570 | .name = "sham", | ||
3571 | .sysc = &omap3_sham_sysc, | ||
3572 | }; | ||
3573 | |||
3574 | static struct omap_hwmod_irq_info omap3_sham_mpu_irqs[] = { | ||
3575 | { .irq = 49 + OMAP_INTC_START, }, | ||
3576 | { .irq = -1 } | ||
3577 | }; | ||
3578 | |||
3579 | static struct omap_hwmod_dma_info omap3_sham_sdma_reqs[] = { | ||
3580 | { .name = "rx", .dma_req = OMAP34XX_DMA_SHA1MD5_RX, }, | ||
3581 | { .dma_req = -1 } | ||
3582 | }; | ||
3583 | |||
3584 | static struct omap_hwmod omap3xxx_sham_hwmod = { | ||
3585 | .name = "sham", | ||
3586 | .mpu_irqs = omap3_sham_mpu_irqs, | ||
3587 | .sdma_reqs = omap3_sham_sdma_reqs, | ||
3588 | .main_clk = "sha12_ick", | ||
3589 | .prcm = { | ||
3590 | .omap2 = { | ||
3591 | .module_offs = CORE_MOD, | ||
3592 | .prcm_reg_id = 1, | ||
3593 | .module_bit = OMAP3430_EN_SHA12_SHIFT, | ||
3594 | .idlest_reg_id = 1, | ||
3595 | .idlest_idle_bit = OMAP3430_ST_SHA12_SHIFT, | ||
3596 | }, | ||
3597 | }, | ||
3598 | .class = &omap3xxx_sham_class, | ||
3599 | }; | ||
3600 | |||
3601 | static struct omap_hwmod_addr_space omap3xxx_sham_addrs[] = { | ||
3602 | { | ||
3603 | .pa_start = 0x480c3000, | ||
3604 | .pa_end = 0x480c3000 + 0x64 - 1, | ||
3605 | .flags = ADDR_TYPE_RT | ||
3606 | }, | ||
3607 | { } | ||
3608 | }; | ||
3609 | |||
3610 | static struct omap_hwmod_ocp_if omap3xxx_l4_core__sham = { | ||
3611 | .master = &omap3xxx_l4_core_hwmod, | ||
3612 | .slave = &omap3xxx_sham_hwmod, | ||
3613 | .clk = "sha12_ick", | ||
3614 | .addr = omap3xxx_sham_addrs, | ||
3615 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
3616 | }; | ||
3617 | |||
3618 | /* l4_core -> AES */ | ||
3619 | static struct omap_hwmod_sysc_fields omap3xxx_aes_sysc_fields = { | ||
3620 | .sidle_shift = 6, | ||
3621 | .srst_shift = 1, | ||
3622 | .autoidle_shift = 0, | ||
3623 | }; | ||
3624 | |||
3625 | static struct omap_hwmod_class_sysconfig omap3_aes_sysc = { | ||
3626 | .rev_offs = 0x44, | ||
3627 | .sysc_offs = 0x48, | ||
3628 | .syss_offs = 0x4c, | ||
3629 | .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | | ||
3630 | SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS), | ||
3631 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), | ||
3632 | .sysc_fields = &omap3xxx_aes_sysc_fields, | ||
3633 | }; | ||
3634 | |||
3635 | static struct omap_hwmod_class omap3xxx_aes_class = { | ||
3636 | .name = "aes", | ||
3637 | .sysc = &omap3_aes_sysc, | ||
3638 | }; | ||
3639 | |||
3640 | static struct omap_hwmod_dma_info omap3_aes_sdma_reqs[] = { | ||
3641 | { .name = "tx", .dma_req = OMAP34XX_DMA_AES2_TX, }, | ||
3642 | { .name = "rx", .dma_req = OMAP34XX_DMA_AES2_RX, }, | ||
3643 | { .dma_req = -1 } | ||
3644 | }; | ||
3645 | |||
3646 | static struct omap_hwmod omap3xxx_aes_hwmod = { | ||
3647 | .name = "aes", | ||
3648 | .sdma_reqs = omap3_aes_sdma_reqs, | ||
3649 | .main_clk = "aes2_ick", | ||
3650 | .prcm = { | ||
3651 | .omap2 = { | ||
3652 | .module_offs = CORE_MOD, | ||
3653 | .prcm_reg_id = 1, | ||
3654 | .module_bit = OMAP3430_EN_AES2_SHIFT, | ||
3655 | .idlest_reg_id = 1, | ||
3656 | .idlest_idle_bit = OMAP3430_ST_AES2_SHIFT, | ||
3657 | }, | ||
3658 | }, | ||
3659 | .class = &omap3xxx_aes_class, | ||
3660 | }; | ||
3661 | |||
3662 | static struct omap_hwmod_addr_space omap3xxx_aes_addrs[] = { | ||
3663 | { | ||
3664 | .pa_start = 0x480c5000, | ||
3665 | .pa_end = 0x480c5000 + 0x50 - 1, | ||
3666 | .flags = ADDR_TYPE_RT | ||
3667 | }, | ||
3668 | { } | ||
3669 | }; | ||
3670 | |||
3671 | static struct omap_hwmod_ocp_if omap3xxx_l4_core__aes = { | ||
3672 | .master = &omap3xxx_l4_core_hwmod, | ||
3673 | .slave = &omap3xxx_aes_hwmod, | ||
3674 | .clk = "aes2_ick", | ||
3675 | .addr = omap3xxx_aes_addrs, | ||
3676 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
3677 | }; | ||
3678 | |||
3553 | static struct omap_hwmod_ocp_if *omap3xxx_hwmod_ocp_ifs[] __initdata = { | 3679 | static struct omap_hwmod_ocp_if *omap3xxx_hwmod_ocp_ifs[] __initdata = { |
3554 | &omap3xxx_l3_main__l4_core, | 3680 | &omap3xxx_l3_main__l4_core, |
3555 | &omap3xxx_l3_main__l4_per, | 3681 | &omap3xxx_l3_main__l4_per, |
@@ -3601,8 +3727,32 @@ static struct omap_hwmod_ocp_if *omap3xxx_hwmod_ocp_ifs[] __initdata = { | |||
3601 | }; | 3727 | }; |
3602 | 3728 | ||
3603 | /* GP-only hwmod links */ | 3729 | /* GP-only hwmod links */ |
3604 | static struct omap_hwmod_ocp_if *omap3xxx_gp_hwmod_ocp_ifs[] __initdata = { | 3730 | static struct omap_hwmod_ocp_if *omap34xx_gp_hwmod_ocp_ifs[] __initdata = { |
3605 | &omap3xxx_l4_sec__timer12, | 3731 | &omap3xxx_l4_sec__timer12, |
3732 | &omap3xxx_l4_core__sham, | ||
3733 | &omap3xxx_l4_core__aes, | ||
3734 | NULL | ||
3735 | }; | ||
3736 | |||
3737 | static struct omap_hwmod_ocp_if *omap36xx_gp_hwmod_ocp_ifs[] __initdata = { | ||
3738 | &omap3xxx_l4_sec__timer12, | ||
3739 | &omap3xxx_l4_core__sham, | ||
3740 | &omap3xxx_l4_core__aes, | ||
3741 | NULL | ||
3742 | }; | ||
3743 | |||
3744 | static struct omap_hwmod_ocp_if *am35xx_gp_hwmod_ocp_ifs[] __initdata = { | ||
3745 | &omap3xxx_l4_sec__timer12, | ||
3746 | /* | ||
3747 | * Apparently the SHA/MD5 and AES accelerator IP blocks are | ||
3748 | * only present on some AM35xx chips, and no one knows which | ||
3749 | * ones. See | ||
3750 | * http://www.spinics.net/lists/arm-kernel/msg215466.html So | ||
3751 | * if you need these IP blocks on an AM35xx, try uncommenting | ||
3752 | * the following lines. | ||
3753 | */ | ||
3754 | /* &omap3xxx_l4_core__sham, */ | ||
3755 | /* &omap3xxx_l4_core__aes, */ | ||
3606 | NULL | 3756 | NULL |
3607 | }; | 3757 | }; |
3608 | 3758 | ||
@@ -3709,7 +3859,7 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_hwmod_ocp_ifs[] __initdata = { | |||
3709 | int __init omap3xxx_hwmod_init(void) | 3859 | int __init omap3xxx_hwmod_init(void) |
3710 | { | 3860 | { |
3711 | int r; | 3861 | int r; |
3712 | struct omap_hwmod_ocp_if **h = NULL; | 3862 | struct omap_hwmod_ocp_if **h = NULL, **h_gp = NULL; |
3713 | unsigned int rev; | 3863 | unsigned int rev; |
3714 | 3864 | ||
3715 | omap_hwmod_init(); | 3865 | omap_hwmod_init(); |
@@ -3719,13 +3869,6 @@ int __init omap3xxx_hwmod_init(void) | |||
3719 | if (r < 0) | 3869 | if (r < 0) |
3720 | return r; | 3870 | return r; |
3721 | 3871 | ||
3722 | /* Register GP-only hwmod links. */ | ||
3723 | if (omap_type() == OMAP2_DEVICE_TYPE_GP) { | ||
3724 | r = omap_hwmod_register_links(omap3xxx_gp_hwmod_ocp_ifs); | ||
3725 | if (r < 0) | ||
3726 | return r; | ||
3727 | } | ||
3728 | |||
3729 | rev = omap_rev(); | 3872 | rev = omap_rev(); |
3730 | 3873 | ||
3731 | /* | 3874 | /* |
@@ -3737,11 +3880,14 @@ int __init omap3xxx_hwmod_init(void) | |||
3737 | rev == OMAP3430_REV_ES2_1 || rev == OMAP3430_REV_ES3_0 || | 3880 | rev == OMAP3430_REV_ES2_1 || rev == OMAP3430_REV_ES3_0 || |
3738 | rev == OMAP3430_REV_ES3_1 || rev == OMAP3430_REV_ES3_1_2) { | 3881 | rev == OMAP3430_REV_ES3_1 || rev == OMAP3430_REV_ES3_1_2) { |
3739 | h = omap34xx_hwmod_ocp_ifs; | 3882 | h = omap34xx_hwmod_ocp_ifs; |
3883 | h_gp = omap34xx_gp_hwmod_ocp_ifs; | ||
3740 | } else if (rev == AM35XX_REV_ES1_0 || rev == AM35XX_REV_ES1_1) { | 3884 | } else if (rev == AM35XX_REV_ES1_0 || rev == AM35XX_REV_ES1_1) { |
3741 | h = am35xx_hwmod_ocp_ifs; | 3885 | h = am35xx_hwmod_ocp_ifs; |
3886 | h_gp = am35xx_gp_hwmod_ocp_ifs; | ||
3742 | } else if (rev == OMAP3630_REV_ES1_0 || rev == OMAP3630_REV_ES1_1 || | 3887 | } else if (rev == OMAP3630_REV_ES1_0 || rev == OMAP3630_REV_ES1_1 || |
3743 | rev == OMAP3630_REV_ES1_2) { | 3888 | rev == OMAP3630_REV_ES1_2) { |
3744 | h = omap36xx_hwmod_ocp_ifs; | 3889 | h = omap36xx_hwmod_ocp_ifs; |
3890 | h_gp = omap36xx_gp_hwmod_ocp_ifs; | ||
3745 | } else { | 3891 | } else { |
3746 | WARN(1, "OMAP3 hwmod family init: unknown chip type\n"); | 3892 | WARN(1, "OMAP3 hwmod family init: unknown chip type\n"); |
3747 | return -EINVAL; | 3893 | return -EINVAL; |
@@ -3751,6 +3897,14 @@ int __init omap3xxx_hwmod_init(void) | |||
3751 | if (r < 0) | 3897 | if (r < 0) |
3752 | return r; | 3898 | return r; |
3753 | 3899 | ||
3900 | /* Register GP-only hwmod links. */ | ||
3901 | if (h_gp && omap_type() == OMAP2_DEVICE_TYPE_GP) { | ||
3902 | r = omap_hwmod_register_links(h_gp); | ||
3903 | if (r < 0) | ||
3904 | return r; | ||
3905 | } | ||
3906 | |||
3907 | |||
3754 | /* | 3908 | /* |
3755 | * Register hwmod links specific to certain ES levels of a | 3909 | * Register hwmod links specific to certain ES levels of a |
3756 | * particular family of silicon (e.g., 34xx ES1.0) | 3910 | * particular family of silicon (e.g., 34xx ES1.0) |
diff --git a/arch/arm/mach-omap2/omap_hwmod_common_data.h b/arch/arm/mach-omap2/omap_hwmod_common_data.h index cfcce299177c..6e04ff7065e1 100644 --- a/arch/arm/mach-omap2/omap_hwmod_common_data.h +++ b/arch/arm/mach-omap2/omap_hwmod_common_data.h | |||
@@ -78,6 +78,8 @@ extern struct omap_hwmod omap2xxx_mcspi2_hwmod; | |||
78 | extern struct omap_hwmod omap2xxx_counter_32k_hwmod; | 78 | extern struct omap_hwmod omap2xxx_counter_32k_hwmod; |
79 | extern struct omap_hwmod omap2xxx_gpmc_hwmod; | 79 | extern struct omap_hwmod omap2xxx_gpmc_hwmod; |
80 | extern struct omap_hwmod omap2xxx_rng_hwmod; | 80 | extern struct omap_hwmod omap2xxx_rng_hwmod; |
81 | extern struct omap_hwmod omap2xxx_sham_hwmod; | ||
82 | extern struct omap_hwmod omap2xxx_aes_hwmod; | ||
81 | 83 | ||
82 | /* Common interface data across OMAP2xxx */ | 84 | /* Common interface data across OMAP2xxx */ |
83 | extern struct omap_hwmod_ocp_if omap2xxx_l3_main__l4_core; | 85 | extern struct omap_hwmod_ocp_if omap2xxx_l3_main__l4_core; |
@@ -105,6 +107,8 @@ extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_dispc; | |||
105 | extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_rfbi; | 107 | extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_rfbi; |
106 | extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_venc; | 108 | extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_venc; |
107 | extern struct omap_hwmod_ocp_if omap2xxx_l4_core__rng; | 109 | extern struct omap_hwmod_ocp_if omap2xxx_l4_core__rng; |
110 | extern struct omap_hwmod_ocp_if omap2xxx_l4_core__sham; | ||
111 | extern struct omap_hwmod_ocp_if omap2xxx_l4_core__aes; | ||
108 | 112 | ||
109 | /* Common IP block data */ | 113 | /* Common IP block data */ |
110 | extern struct omap_hwmod_dma_info omap2_uart1_sdma_reqs[]; | 114 | extern struct omap_hwmod_dma_info omap2_uart1_sdma_reqs[]; |