diff options
| -rw-r--r-- | arch/arm/mach-omap2/Kconfig | 3 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/Makefile | 2 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/clock33xx_data.c | 14 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/clockdomain2xxx_3xxx.c | 50 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/cm-regbits-34xx.h | 1 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/omap-wakeupgen.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 15 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 12 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/timer.c | 7 | ||||
| -rw-r--r-- | arch/arm/plat-omap/sram.c | 11 |
11 files changed, 94 insertions, 24 deletions
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index fcd4e85c4ddc..346fd26f3aa6 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
| @@ -232,10 +232,11 @@ config MACH_OMAP3_PANDORA | |||
| 232 | select OMAP_PACKAGE_CBB | 232 | select OMAP_PACKAGE_CBB |
| 233 | select REGULATOR_FIXED_VOLTAGE if REGULATOR | 233 | select REGULATOR_FIXED_VOLTAGE if REGULATOR |
| 234 | 234 | ||
| 235 | config MACH_OMAP3_TOUCHBOOK | 235 | config MACH_TOUCHBOOK |
| 236 | bool "OMAP3 Touch Book" | 236 | bool "OMAP3 Touch Book" |
| 237 | depends on ARCH_OMAP3 | 237 | depends on ARCH_OMAP3 |
| 238 | default y | 238 | default y |
| 239 | select OMAP_PACKAGE_CBB | ||
| 239 | 240 | ||
| 240 | config MACH_OMAP_3430SDP | 241 | config MACH_OMAP_3430SDP |
| 241 | bool "OMAP 3430 SDP board" | 242 | bool "OMAP 3430 SDP board" |
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index f6a24b3f9c4f..34c2c7f59f0a 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile | |||
| @@ -255,7 +255,7 @@ obj-$(CONFIG_MACH_OMAP_3630SDP) += board-zoom-display.o | |||
| 255 | obj-$(CONFIG_MACH_CM_T35) += board-cm-t35.o | 255 | obj-$(CONFIG_MACH_CM_T35) += board-cm-t35.o |
| 256 | obj-$(CONFIG_MACH_CM_T3517) += board-cm-t3517.o | 256 | obj-$(CONFIG_MACH_CM_T3517) += board-cm-t3517.o |
| 257 | obj-$(CONFIG_MACH_IGEP0020) += board-igep0020.o | 257 | obj-$(CONFIG_MACH_IGEP0020) += board-igep0020.o |
| 258 | obj-$(CONFIG_MACH_OMAP3_TOUCHBOOK) += board-omap3touchbook.o | 258 | obj-$(CONFIG_MACH_TOUCHBOOK) += board-omap3touchbook.o |
| 259 | obj-$(CONFIG_MACH_OMAP_4430SDP) += board-4430sdp.o | 259 | obj-$(CONFIG_MACH_OMAP_4430SDP) += board-4430sdp.o |
| 260 | obj-$(CONFIG_MACH_OMAP4_PANDA) += board-omap4panda.o | 260 | obj-$(CONFIG_MACH_OMAP4_PANDA) += board-omap4panda.o |
| 261 | 261 | ||
diff --git a/arch/arm/mach-omap2/clock33xx_data.c b/arch/arm/mach-omap2/clock33xx_data.c index 25bbcc7ca4dc..ae27de8899a6 100644 --- a/arch/arm/mach-omap2/clock33xx_data.c +++ b/arch/arm/mach-omap2/clock33xx_data.c | |||
| @@ -1036,13 +1036,13 @@ static struct omap_clk am33xx_clks[] = { | |||
| 1036 | CLK(NULL, "mmu_fck", &mmu_fck, CK_AM33XX), | 1036 | CLK(NULL, "mmu_fck", &mmu_fck, CK_AM33XX), |
| 1037 | CLK(NULL, "smartreflex0_fck", &smartreflex0_fck, CK_AM33XX), | 1037 | CLK(NULL, "smartreflex0_fck", &smartreflex0_fck, CK_AM33XX), |
| 1038 | CLK(NULL, "smartreflex1_fck", &smartreflex1_fck, CK_AM33XX), | 1038 | CLK(NULL, "smartreflex1_fck", &smartreflex1_fck, CK_AM33XX), |
| 1039 | CLK(NULL, "gpt1_fck", &timer1_fck, CK_AM33XX), | 1039 | CLK(NULL, "timer1_fck", &timer1_fck, CK_AM33XX), |
| 1040 | CLK(NULL, "gpt2_fck", &timer2_fck, CK_AM33XX), | 1040 | CLK(NULL, "timer2_fck", &timer2_fck, CK_AM33XX), |
| 1041 | CLK(NULL, "gpt3_fck", &timer3_fck, CK_AM33XX), | 1041 | CLK(NULL, "timer3_fck", &timer3_fck, CK_AM33XX), |
| 1042 | CLK(NULL, "gpt4_fck", &timer4_fck, CK_AM33XX), | 1042 | CLK(NULL, "timer4_fck", &timer4_fck, CK_AM33XX), |
| 1043 | CLK(NULL, "gpt5_fck", &timer5_fck, CK_AM33XX), | 1043 | CLK(NULL, "timer5_fck", &timer5_fck, CK_AM33XX), |
| 1044 | CLK(NULL, "gpt6_fck", &timer6_fck, CK_AM33XX), | 1044 | CLK(NULL, "timer6_fck", &timer6_fck, CK_AM33XX), |
| 1045 | CLK(NULL, "gpt7_fck", &timer7_fck, CK_AM33XX), | 1045 | CLK(NULL, "timer7_fck", &timer7_fck, CK_AM33XX), |
| 1046 | CLK(NULL, "usbotg_fck", &usbotg_fck, CK_AM33XX), | 1046 | CLK(NULL, "usbotg_fck", &usbotg_fck, CK_AM33XX), |
| 1047 | CLK(NULL, "ieee5000_fck", &ieee5000_fck, CK_AM33XX), | 1047 | CLK(NULL, "ieee5000_fck", &ieee5000_fck, CK_AM33XX), |
| 1048 | CLK(NULL, "wdt1_fck", &wdt1_fck, CK_AM33XX), | 1048 | CLK(NULL, "wdt1_fck", &wdt1_fck, CK_AM33XX), |
diff --git a/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c b/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c index a0d68dbecfa3..f99e65cfb862 100644 --- a/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c +++ b/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c | |||
| @@ -241,6 +241,52 @@ static void omap3_clkdm_deny_idle(struct clockdomain *clkdm) | |||
| 241 | _clkdm_del_autodeps(clkdm); | 241 | _clkdm_del_autodeps(clkdm); |
| 242 | } | 242 | } |
| 243 | 243 | ||
| 244 | static int omap3xxx_clkdm_clk_enable(struct clockdomain *clkdm) | ||
| 245 | { | ||
| 246 | bool hwsup = false; | ||
| 247 | |||
| 248 | if (!clkdm->clktrctrl_mask) | ||
| 249 | return 0; | ||
| 250 | |||
| 251 | hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, | ||
| 252 | clkdm->clktrctrl_mask); | ||
| 253 | |||
| 254 | if (hwsup) { | ||
| 255 | /* Disable HW transitions when we are changing deps */ | ||
| 256 | _disable_hwsup(clkdm); | ||
| 257 | _clkdm_add_autodeps(clkdm); | ||
| 258 | _enable_hwsup(clkdm); | ||
| 259 | } else { | ||
| 260 | if (clkdm->flags & CLKDM_CAN_FORCE_WAKEUP) | ||
| 261 | omap3_clkdm_wakeup(clkdm); | ||
| 262 | } | ||
| 263 | |||
| 264 | return 0; | ||
| 265 | } | ||
| 266 | |||
| 267 | static int omap3xxx_clkdm_clk_disable(struct clockdomain *clkdm) | ||
| 268 | { | ||
| 269 | bool hwsup = false; | ||
| 270 | |||
| 271 | if (!clkdm->clktrctrl_mask) | ||
| 272 | return 0; | ||
| 273 | |||
| 274 | hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, | ||
| 275 | clkdm->clktrctrl_mask); | ||
| 276 | |||
| 277 | if (hwsup) { | ||
| 278 | /* Disable HW transitions when we are changing deps */ | ||
| 279 | _disable_hwsup(clkdm); | ||
| 280 | _clkdm_del_autodeps(clkdm); | ||
| 281 | _enable_hwsup(clkdm); | ||
| 282 | } else { | ||
| 283 | if (clkdm->flags & CLKDM_CAN_FORCE_SLEEP) | ||
| 284 | omap3_clkdm_sleep(clkdm); | ||
| 285 | } | ||
| 286 | |||
| 287 | return 0; | ||
| 288 | } | ||
| 289 | |||
| 244 | struct clkdm_ops omap2_clkdm_operations = { | 290 | struct clkdm_ops omap2_clkdm_operations = { |
| 245 | .clkdm_add_wkdep = omap2_clkdm_add_wkdep, | 291 | .clkdm_add_wkdep = omap2_clkdm_add_wkdep, |
| 246 | .clkdm_del_wkdep = omap2_clkdm_del_wkdep, | 292 | .clkdm_del_wkdep = omap2_clkdm_del_wkdep, |
| @@ -267,6 +313,6 @@ struct clkdm_ops omap3_clkdm_operations = { | |||
| 267 | .clkdm_wakeup = omap3_clkdm_wakeup, | 313 | .clkdm_wakeup = omap3_clkdm_wakeup, |
| 268 | .clkdm_allow_idle = omap3_clkdm_allow_idle, | 314 | .clkdm_allow_idle = omap3_clkdm_allow_idle, |
| 269 | .clkdm_deny_idle = omap3_clkdm_deny_idle, | 315 | .clkdm_deny_idle = omap3_clkdm_deny_idle, |
| 270 | .clkdm_clk_enable = omap2_clkdm_clk_enable, | 316 | .clkdm_clk_enable = omap3xxx_clkdm_clk_enable, |
| 271 | .clkdm_clk_disable = omap2_clkdm_clk_disable, | 317 | .clkdm_clk_disable = omap3xxx_clkdm_clk_disable, |
| 272 | }; | 318 | }; |
diff --git a/arch/arm/mach-omap2/cm-regbits-34xx.h b/arch/arm/mach-omap2/cm-regbits-34xx.h index 766338fe4d34..975f6bda0e0b 100644 --- a/arch/arm/mach-omap2/cm-regbits-34xx.h +++ b/arch/arm/mach-omap2/cm-regbits-34xx.h | |||
| @@ -67,6 +67,7 @@ | |||
| 67 | #define OMAP3430_EN_IVA2_DPLL_MASK (0x7 << 0) | 67 | #define OMAP3430_EN_IVA2_DPLL_MASK (0x7 << 0) |
| 68 | 68 | ||
| 69 | /* CM_IDLEST_IVA2 */ | 69 | /* CM_IDLEST_IVA2 */ |
| 70 | #define OMAP3430_ST_IVA2_SHIFT 0 | ||
| 70 | #define OMAP3430_ST_IVA2_MASK (1 << 0) | 71 | #define OMAP3430_ST_IVA2_MASK (1 << 0) |
| 71 | 72 | ||
| 72 | /* CM_IDLEST_PLL_IVA2 */ | 73 | /* CM_IDLEST_PLL_IVA2 */ |
diff --git a/arch/arm/mach-omap2/omap-wakeupgen.c b/arch/arm/mach-omap2/omap-wakeupgen.c index 05fdebfaa195..330d4c6e746b 100644 --- a/arch/arm/mach-omap2/omap-wakeupgen.c +++ b/arch/arm/mach-omap2/omap-wakeupgen.c | |||
| @@ -46,7 +46,7 @@ | |||
| 46 | static void __iomem *wakeupgen_base; | 46 | static void __iomem *wakeupgen_base; |
| 47 | static void __iomem *sar_base; | 47 | static void __iomem *sar_base; |
| 48 | static DEFINE_SPINLOCK(wakeupgen_lock); | 48 | static DEFINE_SPINLOCK(wakeupgen_lock); |
| 49 | static unsigned int irq_target_cpu[NR_IRQS]; | 49 | static unsigned int irq_target_cpu[MAX_IRQS]; |
| 50 | static unsigned int irq_banks = MAX_NR_REG_BANKS; | 50 | static unsigned int irq_banks = MAX_NR_REG_BANKS; |
| 51 | static unsigned int max_irqs = MAX_IRQS; | 51 | static unsigned int max_irqs = MAX_IRQS; |
| 52 | static unsigned int omap_secure_apis; | 52 | static unsigned int omap_secure_apis; |
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index 6ca8e519968d..37afbd173c2c 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c | |||
| @@ -1889,6 +1889,7 @@ static int _enable(struct omap_hwmod *oh) | |||
| 1889 | _enable_sysc(oh); | 1889 | _enable_sysc(oh); |
| 1890 | } | 1890 | } |
| 1891 | } else { | 1891 | } else { |
| 1892 | _omap4_disable_module(oh); | ||
| 1892 | _disable_clocks(oh); | 1893 | _disable_clocks(oh); |
| 1893 | pr_debug("omap_hwmod: %s: _wait_target_ready: %d\n", | 1894 | pr_debug("omap_hwmod: %s: _wait_target_ready: %d\n", |
| 1894 | oh->name, r); | 1895 | oh->name, r); |
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index c9e38200216b..ce7e6068768f 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | |||
| @@ -100,9 +100,9 @@ static struct omap_hwmod omap3xxx_mpu_hwmod = { | |||
| 100 | 100 | ||
| 101 | /* IVA2 (IVA2) */ | 101 | /* IVA2 (IVA2) */ |
| 102 | static struct omap_hwmod_rst_info omap3xxx_iva_resets[] = { | 102 | static struct omap_hwmod_rst_info omap3xxx_iva_resets[] = { |
| 103 | { .name = "logic", .rst_shift = 0 }, | 103 | { .name = "logic", .rst_shift = 0, .st_shift = 8 }, |
| 104 | { .name = "seq0", .rst_shift = 1 }, | 104 | { .name = "seq0", .rst_shift = 1, .st_shift = 9 }, |
| 105 | { .name = "seq1", .rst_shift = 2 }, | 105 | { .name = "seq1", .rst_shift = 2, .st_shift = 10 }, |
| 106 | }; | 106 | }; |
| 107 | 107 | ||
| 108 | static struct omap_hwmod omap3xxx_iva_hwmod = { | 108 | static struct omap_hwmod omap3xxx_iva_hwmod = { |
| @@ -112,6 +112,15 @@ static struct omap_hwmod omap3xxx_iva_hwmod = { | |||
| 112 | .rst_lines = omap3xxx_iva_resets, | 112 | .rst_lines = omap3xxx_iva_resets, |
| 113 | .rst_lines_cnt = ARRAY_SIZE(omap3xxx_iva_resets), | 113 | .rst_lines_cnt = ARRAY_SIZE(omap3xxx_iva_resets), |
| 114 | .main_clk = "iva2_ck", | 114 | .main_clk = "iva2_ck", |
| 115 | .prcm = { | ||
| 116 | .omap2 = { | ||
| 117 | .module_offs = OMAP3430_IVA2_MOD, | ||
| 118 | .prcm_reg_id = 1, | ||
| 119 | .module_bit = OMAP3430_CM_FCLKEN_IVA2_EN_IVA2_SHIFT, | ||
| 120 | .idlest_reg_id = 1, | ||
| 121 | .idlest_idle_bit = OMAP3430_ST_IVA2_SHIFT, | ||
| 122 | } | ||
| 123 | }, | ||
| 115 | }; | 124 | }; |
| 116 | 125 | ||
| 117 | /* timer class */ | 126 | /* timer class */ |
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 242aee498ceb..afb60917a948 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
| @@ -4210,7 +4210,7 @@ static struct omap_hwmod_ocp_if omap44xx_dsp__iva = { | |||
| 4210 | }; | 4210 | }; |
| 4211 | 4211 | ||
| 4212 | /* dsp -> sl2if */ | 4212 | /* dsp -> sl2if */ |
| 4213 | static struct omap_hwmod_ocp_if omap44xx_dsp__sl2if = { | 4213 | static struct omap_hwmod_ocp_if __maybe_unused omap44xx_dsp__sl2if = { |
| 4214 | .master = &omap44xx_dsp_hwmod, | 4214 | .master = &omap44xx_dsp_hwmod, |
| 4215 | .slave = &omap44xx_sl2if_hwmod, | 4215 | .slave = &omap44xx_sl2if_hwmod, |
| 4216 | .clk = "dpll_iva_m5x2_ck", | 4216 | .clk = "dpll_iva_m5x2_ck", |
| @@ -4828,7 +4828,7 @@ static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iss = { | |||
| 4828 | }; | 4828 | }; |
| 4829 | 4829 | ||
| 4830 | /* iva -> sl2if */ | 4830 | /* iva -> sl2if */ |
| 4831 | static struct omap_hwmod_ocp_if omap44xx_iva__sl2if = { | 4831 | static struct omap_hwmod_ocp_if __maybe_unused omap44xx_iva__sl2if = { |
| 4832 | .master = &omap44xx_iva_hwmod, | 4832 | .master = &omap44xx_iva_hwmod, |
| 4833 | .slave = &omap44xx_sl2if_hwmod, | 4833 | .slave = &omap44xx_sl2if_hwmod, |
| 4834 | .clk = "dpll_iva_m5x2_ck", | 4834 | .clk = "dpll_iva_m5x2_ck", |
| @@ -5362,7 +5362,7 @@ static struct omap_hwmod_ocp_if omap44xx_l4_wkup__scrm = { | |||
| 5362 | }; | 5362 | }; |
| 5363 | 5363 | ||
| 5364 | /* l3_main_2 -> sl2if */ | 5364 | /* l3_main_2 -> sl2if */ |
| 5365 | static struct omap_hwmod_ocp_if omap44xx_l3_main_2__sl2if = { | 5365 | static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l3_main_2__sl2if = { |
| 5366 | .master = &omap44xx_l3_main_2_hwmod, | 5366 | .master = &omap44xx_l3_main_2_hwmod, |
| 5367 | .slave = &omap44xx_sl2if_hwmod, | 5367 | .slave = &omap44xx_sl2if_hwmod, |
| 5368 | .clk = "l3_div_ck", | 5368 | .clk = "l3_div_ck", |
| @@ -6032,7 +6032,7 @@ static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = { | |||
| 6032 | &omap44xx_l4_abe__dmic, | 6032 | &omap44xx_l4_abe__dmic, |
| 6033 | &omap44xx_l4_abe__dmic_dma, | 6033 | &omap44xx_l4_abe__dmic_dma, |
| 6034 | &omap44xx_dsp__iva, | 6034 | &omap44xx_dsp__iva, |
| 6035 | &omap44xx_dsp__sl2if, | 6035 | /* &omap44xx_dsp__sl2if, */ |
| 6036 | &omap44xx_l4_cfg__dsp, | 6036 | &omap44xx_l4_cfg__dsp, |
| 6037 | &omap44xx_l3_main_2__dss, | 6037 | &omap44xx_l3_main_2__dss, |
| 6038 | &omap44xx_l4_per__dss, | 6038 | &omap44xx_l4_per__dss, |
| @@ -6068,7 +6068,7 @@ static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = { | |||
| 6068 | &omap44xx_l4_per__i2c4, | 6068 | &omap44xx_l4_per__i2c4, |
| 6069 | &omap44xx_l3_main_2__ipu, | 6069 | &omap44xx_l3_main_2__ipu, |
| 6070 | &omap44xx_l3_main_2__iss, | 6070 | &omap44xx_l3_main_2__iss, |
| 6071 | &omap44xx_iva__sl2if, | 6071 | /* &omap44xx_iva__sl2if, */ |
| 6072 | &omap44xx_l3_main_2__iva, | 6072 | &omap44xx_l3_main_2__iva, |
| 6073 | &omap44xx_l4_wkup__kbd, | 6073 | &omap44xx_l4_wkup__kbd, |
| 6074 | &omap44xx_l4_cfg__mailbox, | 6074 | &omap44xx_l4_cfg__mailbox, |
| @@ -6099,7 +6099,7 @@ static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = { | |||
| 6099 | &omap44xx_l4_cfg__cm_core, | 6099 | &omap44xx_l4_cfg__cm_core, |
| 6100 | &omap44xx_l4_wkup__prm, | 6100 | &omap44xx_l4_wkup__prm, |
| 6101 | &omap44xx_l4_wkup__scrm, | 6101 | &omap44xx_l4_wkup__scrm, |
| 6102 | &omap44xx_l3_main_2__sl2if, | 6102 | /* &omap44xx_l3_main_2__sl2if, */ |
| 6103 | &omap44xx_l4_abe__slimbus1, | 6103 | &omap44xx_l4_abe__slimbus1, |
| 6104 | &omap44xx_l4_abe__slimbus1_dma, | 6104 | &omap44xx_l4_abe__slimbus1_dma, |
| 6105 | &omap44xx_l4_per__slimbus2, | 6105 | &omap44xx_l4_per__slimbus2, |
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index 2ff6d41ec6c6..2ba4f57dda86 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c | |||
| @@ -260,6 +260,7 @@ static u32 notrace dmtimer_read_sched_clock(void) | |||
| 260 | return 0; | 260 | return 0; |
| 261 | } | 261 | } |
| 262 | 262 | ||
| 263 | #ifdef CONFIG_OMAP_32K_TIMER | ||
| 263 | /* Setup free-running counter for clocksource */ | 264 | /* Setup free-running counter for clocksource */ |
| 264 | static int __init omap2_sync32k_clocksource_init(void) | 265 | static int __init omap2_sync32k_clocksource_init(void) |
| 265 | { | 266 | { |
| @@ -299,6 +300,12 @@ static int __init omap2_sync32k_clocksource_init(void) | |||
| 299 | 300 | ||
| 300 | return ret; | 301 | return ret; |
| 301 | } | 302 | } |
| 303 | #else | ||
| 304 | static inline int omap2_sync32k_clocksource_init(void) | ||
| 305 | { | ||
| 306 | return -ENODEV; | ||
| 307 | } | ||
| 308 | #endif | ||
| 302 | 309 | ||
| 303 | static void __init omap2_gptimer_clocksource_init(int gptimer_id, | 310 | static void __init omap2_gptimer_clocksource_init(int gptimer_id, |
| 304 | const char *fck_source) | 311 | const char *fck_source) |
diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c index 766181cb5c95..024f3b08db29 100644 --- a/arch/arm/plat-omap/sram.c +++ b/arch/arm/plat-omap/sram.c | |||
| @@ -68,6 +68,7 @@ | |||
| 68 | 68 | ||
| 69 | static unsigned long omap_sram_start; | 69 | static unsigned long omap_sram_start; |
| 70 | static void __iomem *omap_sram_base; | 70 | static void __iomem *omap_sram_base; |
| 71 | static unsigned long omap_sram_skip; | ||
| 71 | static unsigned long omap_sram_size; | 72 | static unsigned long omap_sram_size; |
| 72 | static void __iomem *omap_sram_ceil; | 73 | static void __iomem *omap_sram_ceil; |
| 73 | 74 | ||
| @@ -106,6 +107,7 @@ static int is_sram_locked(void) | |||
| 106 | */ | 107 | */ |
| 107 | static void __init omap_detect_sram(void) | 108 | static void __init omap_detect_sram(void) |
| 108 | { | 109 | { |
| 110 | omap_sram_skip = SRAM_BOOTLOADER_SZ; | ||
| 109 | if (cpu_class_is_omap2()) { | 111 | if (cpu_class_is_omap2()) { |
| 110 | if (is_sram_locked()) { | 112 | if (is_sram_locked()) { |
| 111 | if (cpu_is_omap34xx()) { | 113 | if (cpu_is_omap34xx()) { |
| @@ -113,6 +115,7 @@ static void __init omap_detect_sram(void) | |||
| 113 | if ((omap_type() == OMAP2_DEVICE_TYPE_EMU) || | 115 | if ((omap_type() == OMAP2_DEVICE_TYPE_EMU) || |
| 114 | (omap_type() == OMAP2_DEVICE_TYPE_SEC)) { | 116 | (omap_type() == OMAP2_DEVICE_TYPE_SEC)) { |
| 115 | omap_sram_size = 0x7000; /* 28K */ | 117 | omap_sram_size = 0x7000; /* 28K */ |
| 118 | omap_sram_skip += SZ_16K; | ||
| 116 | } else { | 119 | } else { |
| 117 | omap_sram_size = 0x8000; /* 32K */ | 120 | omap_sram_size = 0x8000; /* 32K */ |
| 118 | } | 121 | } |
| @@ -175,8 +178,10 @@ static void __init omap_map_sram(void) | |||
| 175 | return; | 178 | return; |
| 176 | 179 | ||
| 177 | #ifdef CONFIG_OMAP4_ERRATA_I688 | 180 | #ifdef CONFIG_OMAP4_ERRATA_I688 |
| 181 | if (cpu_is_omap44xx()) { | ||
| 178 | omap_sram_start += PAGE_SIZE; | 182 | omap_sram_start += PAGE_SIZE; |
| 179 | omap_sram_size -= SZ_16K; | 183 | omap_sram_size -= SZ_16K; |
| 184 | } | ||
| 180 | #endif | 185 | #endif |
| 181 | if (cpu_is_omap34xx()) { | 186 | if (cpu_is_omap34xx()) { |
| 182 | /* | 187 | /* |
| @@ -203,8 +208,8 @@ static void __init omap_map_sram(void) | |||
| 203 | * Looks like we need to preserve some bootloader code at the | 208 | * Looks like we need to preserve some bootloader code at the |
| 204 | * beginning of SRAM for jumping to flash for reboot to work... | 209 | * beginning of SRAM for jumping to flash for reboot to work... |
| 205 | */ | 210 | */ |
| 206 | memset_io(omap_sram_base + SRAM_BOOTLOADER_SZ, 0, | 211 | memset_io(omap_sram_base + omap_sram_skip, 0, |
| 207 | omap_sram_size - SRAM_BOOTLOADER_SZ); | 212 | omap_sram_size - omap_sram_skip); |
| 208 | } | 213 | } |
| 209 | 214 | ||
| 210 | /* | 215 | /* |
| @@ -218,7 +223,7 @@ void *omap_sram_push_address(unsigned long size) | |||
| 218 | { | 223 | { |
| 219 | unsigned long available, new_ceil = (unsigned long)omap_sram_ceil; | 224 | unsigned long available, new_ceil = (unsigned long)omap_sram_ceil; |
| 220 | 225 | ||
| 221 | available = omap_sram_ceil - (omap_sram_base + SRAM_BOOTLOADER_SZ); | 226 | available = omap_sram_ceil - (omap_sram_base + omap_sram_skip); |
| 222 | 227 | ||
| 223 | if (size > available) { | 228 | if (size > available) { |
| 224 | pr_err("Not enough space in SRAM\n"); | 229 | pr_err("Not enough space in SRAM\n"); |
