diff options
| author | Tony Lindgren <tony@atomide.com> | 2012-01-26 20:00:07 -0500 |
|---|---|---|
| committer | Tony Lindgren <tony@atomide.com> | 2012-01-26 20:00:07 -0500 |
| commit | cd3a2ba070804c519ada9f7afecc9a2d65546900 (patch) | |
| tree | a48276e1b2bfde906f913f967cf9968bfb1565ee | |
| parent | 14ea960164ecb25f7617eba33e7c7f9163e93e7c (diff) | |
| parent | 1d2f56c84f100890476e62d83062cfe9965fc7b4 (diff) | |
Merge branch 'omap_fixes_a_3.3rc' of git://git.pwsan.com/linux-2.6 into fixes
| -rw-r--r-- | arch/arm/mach-omap2/io.c | 4 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c | 21 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c | 22 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 54 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/prm2xxx_3xxx.c | 1 |
6 files changed, 75 insertions, 29 deletions
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index 3f174d51f67f..eb50c29fb644 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
| @@ -388,7 +388,7 @@ static void __init omap_hwmod_init_postsetup(void) | |||
| 388 | omap_pm_if_early_init(); | 388 | omap_pm_if_early_init(); |
| 389 | } | 389 | } |
| 390 | 390 | ||
| 391 | #ifdef CONFIG_ARCH_OMAP2 | 391 | #ifdef CONFIG_SOC_OMAP2420 |
| 392 | void __init omap2420_init_early(void) | 392 | void __init omap2420_init_early(void) |
| 393 | { | 393 | { |
| 394 | omap2_set_globals_242x(); | 394 | omap2_set_globals_242x(); |
| @@ -400,7 +400,9 @@ void __init omap2420_init_early(void) | |||
| 400 | omap_hwmod_init_postsetup(); | 400 | omap_hwmod_init_postsetup(); |
| 401 | omap2420_clk_init(); | 401 | omap2420_clk_init(); |
| 402 | } | 402 | } |
| 403 | #endif | ||
| 403 | 404 | ||
| 405 | #ifdef CONFIG_SOC_OMAP2430 | ||
| 404 | void __init omap2430_init_early(void) | 406 | void __init omap2430_init_early(void) |
| 405 | { | 407 | { |
| 406 | omap2_set_globals_243x(); | 408 | omap2_set_globals_243x(); |
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c index c11273da5dcc..f08e442af397 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c | |||
| @@ -56,27 +56,6 @@ struct omap_hwmod_class omap2_dss_hwmod_class = { | |||
| 56 | }; | 56 | }; |
| 57 | 57 | ||
| 58 | /* | 58 | /* |
| 59 | * 'dispc' class | ||
| 60 | * display controller | ||
| 61 | */ | ||
| 62 | |||
| 63 | static struct omap_hwmod_class_sysconfig omap2_dispc_sysc = { | ||
| 64 | .rev_offs = 0x0000, | ||
| 65 | .sysc_offs = 0x0010, | ||
| 66 | .syss_offs = 0x0014, | ||
| 67 | .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE | | ||
| 68 | SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE), | ||
| 69 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | ||
| 70 | MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART), | ||
| 71 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
| 72 | }; | ||
| 73 | |||
| 74 | struct omap_hwmod_class omap2_dispc_hwmod_class = { | ||
| 75 | .name = "dispc", | ||
| 76 | .sysc = &omap2_dispc_sysc, | ||
| 77 | }; | ||
| 78 | |||
| 79 | /* | ||
| 80 | * 'rfbi' class | 59 | * 'rfbi' class |
| 81 | * remote frame buffer interface | 60 | * remote frame buffer interface |
| 82 | */ | 61 | */ |
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 177dee20faef..2a6729741b06 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c | |||
| @@ -28,6 +28,28 @@ struct omap_hwmod_dma_info omap2xxx_dss_sdma_chs[] = { | |||
| 28 | { .name = "dispc", .dma_req = 5 }, | 28 | { .name = "dispc", .dma_req = 5 }, |
| 29 | { .dma_req = -1 } | 29 | { .dma_req = -1 } |
| 30 | }; | 30 | }; |
| 31 | |||
| 32 | /* | ||
| 33 | * 'dispc' class | ||
| 34 | * display controller | ||
| 35 | */ | ||
| 36 | |||
| 37 | static struct omap_hwmod_class_sysconfig omap2_dispc_sysc = { | ||
| 38 | .rev_offs = 0x0000, | ||
| 39 | .sysc_offs = 0x0010, | ||
| 40 | .syss_offs = 0x0014, | ||
| 41 | .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE | | ||
| 42 | SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE), | ||
| 43 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | ||
| 44 | MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART), | ||
| 45 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
| 46 | }; | ||
| 47 | |||
| 48 | struct omap_hwmod_class omap2_dispc_hwmod_class = { | ||
| 49 | .name = "dispc", | ||
| 50 | .sysc = &omap2_dispc_sysc, | ||
| 51 | }; | ||
| 52 | |||
| 31 | /* OMAP2xxx Timer Common */ | 53 | /* OMAP2xxx Timer Common */ |
| 32 | static struct omap_hwmod_class_sysconfig omap2xxx_timer_sysc = { | 54 | static struct omap_hwmod_class_sysconfig omap2xxx_timer_sysc = { |
| 33 | .rev_offs = 0x0000, | 55 | .rev_offs = 0x0000, |
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index 5324e8d93bc0..3c8dd928628e 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | |||
| @@ -1480,6 +1480,28 @@ static struct omap_hwmod omap3xxx_dss_core_hwmod = { | |||
| 1480 | .masters_cnt = ARRAY_SIZE(omap3xxx_dss_masters), | 1480 | .masters_cnt = ARRAY_SIZE(omap3xxx_dss_masters), |
| 1481 | }; | 1481 | }; |
| 1482 | 1482 | ||
| 1483 | /* | ||
| 1484 | * 'dispc' class | ||
| 1485 | * display controller | ||
| 1486 | */ | ||
| 1487 | |||
| 1488 | static struct omap_hwmod_class_sysconfig omap3_dispc_sysc = { | ||
| 1489 | .rev_offs = 0x0000, | ||
| 1490 | .sysc_offs = 0x0010, | ||
| 1491 | .syss_offs = 0x0014, | ||
| 1492 | .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE | | ||
| 1493 | SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE | | ||
| 1494 | SYSC_HAS_ENAWAKEUP), | ||
| 1495 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | ||
| 1496 | MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART), | ||
| 1497 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
| 1498 | }; | ||
| 1499 | |||
| 1500 | static struct omap_hwmod_class omap3_dispc_hwmod_class = { | ||
| 1501 | .name = "dispc", | ||
| 1502 | .sysc = &omap3_dispc_sysc, | ||
| 1503 | }; | ||
| 1504 | |||
| 1483 | /* l4_core -> dss_dispc */ | 1505 | /* l4_core -> dss_dispc */ |
| 1484 | static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dispc = { | 1506 | static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dispc = { |
| 1485 | .master = &omap3xxx_l4_core_hwmod, | 1507 | .master = &omap3xxx_l4_core_hwmod, |
| @@ -1503,7 +1525,7 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_dispc_slaves[] = { | |||
| 1503 | 1525 | ||
| 1504 | static struct omap_hwmod omap3xxx_dss_dispc_hwmod = { | 1526 | static struct omap_hwmod omap3xxx_dss_dispc_hwmod = { |
| 1505 | .name = "dss_dispc", | 1527 | .name = "dss_dispc", |
| 1506 | .class = &omap2_dispc_hwmod_class, | 1528 | .class = &omap3_dispc_hwmod_class, |
| 1507 | .mpu_irqs = omap2_dispc_irqs, | 1529 | .mpu_irqs = omap2_dispc_irqs, |
| 1508 | .main_clk = "dss1_alwon_fck", | 1530 | .main_clk = "dss1_alwon_fck", |
| 1509 | .prcm = { | 1531 | .prcm = { |
| @@ -3523,12 +3545,6 @@ static __initdata struct omap_hwmod *omap3xxx_hwmods[] = { | |||
| 3523 | &omap3xxx_uart2_hwmod, | 3545 | &omap3xxx_uart2_hwmod, |
| 3524 | &omap3xxx_uart3_hwmod, | 3546 | &omap3xxx_uart3_hwmod, |
| 3525 | 3547 | ||
| 3526 | /* dss class */ | ||
| 3527 | &omap3xxx_dss_dispc_hwmod, | ||
| 3528 | &omap3xxx_dss_dsi1_hwmod, | ||
| 3529 | &omap3xxx_dss_rfbi_hwmod, | ||
| 3530 | &omap3xxx_dss_venc_hwmod, | ||
| 3531 | |||
| 3532 | /* i2c class */ | 3548 | /* i2c class */ |
| 3533 | &omap3xxx_i2c1_hwmod, | 3549 | &omap3xxx_i2c1_hwmod, |
| 3534 | &omap3xxx_i2c2_hwmod, | 3550 | &omap3xxx_i2c2_hwmod, |
| @@ -3635,6 +3651,15 @@ static __initdata struct omap_hwmod *am35xx_hwmods[] = { | |||
| 3635 | NULL | 3651 | NULL |
| 3636 | }; | 3652 | }; |
| 3637 | 3653 | ||
| 3654 | static __initdata struct omap_hwmod *omap3xxx_dss_hwmods[] = { | ||
| 3655 | /* dss class */ | ||
| 3656 | &omap3xxx_dss_dispc_hwmod, | ||
| 3657 | &omap3xxx_dss_dsi1_hwmod, | ||
| 3658 | &omap3xxx_dss_rfbi_hwmod, | ||
| 3659 | &omap3xxx_dss_venc_hwmod, | ||
| 3660 | NULL | ||
| 3661 | }; | ||
| 3662 | |||
| 3638 | int __init omap3xxx_hwmod_init(void) | 3663 | int __init omap3xxx_hwmod_init(void) |
| 3639 | { | 3664 | { |
| 3640 | int r; | 3665 | int r; |
| @@ -3708,6 +3733,21 @@ int __init omap3xxx_hwmod_init(void) | |||
| 3708 | 3733 | ||
| 3709 | if (h) | 3734 | if (h) |
| 3710 | r = omap_hwmod_register(h); | 3735 | r = omap_hwmod_register(h); |
| 3736 | if (r < 0) | ||
| 3737 | return r; | ||
| 3738 | |||
| 3739 | /* | ||
| 3740 | * DSS code presumes that dss_core hwmod is handled first, | ||
| 3741 | * _before_ any other DSS related hwmods so register common | ||
| 3742 | * DSS hwmods last to ensure that dss_core is already registered. | ||
| 3743 | * Otherwise some change things may happen, for ex. if dispc | ||
| 3744 | * is handled before dss_core and DSS is enabled in bootloader | ||
| 3745 | * DIPSC will be reset with outputs enabled which sometimes leads | ||
| 3746 | * to unrecoverable L3 error. | ||
| 3747 | * XXX The long-term fix to this is to ensure modules are set up | ||
| 3748 | * in dependency order in the hwmod core code. | ||
| 3749 | */ | ||
| 3750 | r = omap_hwmod_register(omap3xxx_dss_hwmods); | ||
| 3711 | 3751 | ||
| 3712 | return r; | 3752 | return r; |
| 3713 | } | 3753 | } |
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index f9f151081760..ef0524c10a84 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
| @@ -1031,6 +1031,7 @@ static struct omap_hwmod_dma_info omap44xx_dmic_sdma_reqs[] = { | |||
| 1031 | 1031 | ||
| 1032 | static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = { | 1032 | static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = { |
| 1033 | { | 1033 | { |
| 1034 | .name = "mpu", | ||
| 1034 | .pa_start = 0x4012e000, | 1035 | .pa_start = 0x4012e000, |
| 1035 | .pa_end = 0x4012e07f, | 1036 | .pa_end = 0x4012e07f, |
| 1036 | .flags = ADDR_TYPE_RT | 1037 | .flags = ADDR_TYPE_RT |
| @@ -1049,6 +1050,7 @@ static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = { | |||
| 1049 | 1050 | ||
| 1050 | static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = { | 1051 | static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = { |
| 1051 | { | 1052 | { |
| 1053 | .name = "dma", | ||
| 1052 | .pa_start = 0x4902e000, | 1054 | .pa_start = 0x4902e000, |
| 1053 | .pa_end = 0x4902e07f, | 1055 | .pa_end = 0x4902e07f, |
| 1054 | .flags = ADDR_TYPE_RT | 1056 | .flags = ADDR_TYPE_RT |
diff --git a/arch/arm/mach-omap2/prm2xxx_3xxx.c b/arch/arm/mach-omap2/prm2xxx_3xxx.c index c1c4d86a79a8..9ce765407ad5 100644 --- a/arch/arm/mach-omap2/prm2xxx_3xxx.c +++ b/arch/arm/mach-omap2/prm2xxx_3xxx.c | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | #include "common.h" | 19 | #include "common.h" |
| 20 | #include <plat/cpu.h> | 20 | #include <plat/cpu.h> |
| 21 | #include <plat/prcm.h> | 21 | #include <plat/prcm.h> |
| 22 | #include <plat/irqs.h> | ||
| 22 | 23 | ||
| 23 | #include "vp.h" | 24 | #include "vp.h" |
| 24 | 25 | ||
