aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-04-05 17:19:54 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-04-05 17:19:54 -0400
commitff050ad12c551233e546506409c89eb2f640d9f3 (patch)
tree8ae29fece122a91cbd6160fb2ca34c0ea82c3df9 /arch/arm/mach-omap2
parentdfc25e4503aef6b82a1de4a0fbe19aafa8648fbe (diff)
parent9233087dc468f75bdeb7830c694c09dc74be88c4 (diff)
Merge tag 'soc-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC specific changes from Arnd Bergmann: "Lots of changes specific to one of the SoC families. Some that stick out are: - mach-qcom gains new features, most importantly SMP support for the newer chips (Stephen Boyd, Rohit Vaswani) - mvebu gains support for three new SoCs: Armada 375, 380 and 385 (Thomas Petazzoni and Free-electrons team) - SMP support for Rockchips (Heiko Stübner) - Lots of i.MX changes (Shawn Guo) - Added support for BCM5301x SoC (Hauke Mehrtens) - Multiplatform support for Marvell Kirkwood and Dove (Andrew Lunn and Sebastian Hesselbarth doing the final part of a long journey) - Unify davinci platforms and remove obsolete ones (Sekhar Nori, Arnd Bergmann)" * tag 'soc-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (126 commits) ARM: sunxi: Select HAVE_ARM_ARCH_TIMER ARM: cache-tauros2: remove ARMv6 code ARM: mvebu: don't select CONFIG_NEON ARM: davinci: fix DT booting with default defconfig ARM: configs: bcm_defconfig: enable bcm590xx regulator support ARM: davinci: remove tnetv107x support MAINTAINERS: Update ARM STi maintainers ARM: restrict BCM_KONA_UART to ARCH_BCM_MOBILE ARM: bcm21664: Add board support. ARM: sunxi: Add the new watchog compatibles to the reboot code ARM: enable ARM_HAS_SG_CHAIN for multiplatform ARM: davinci: remove da8xx_omapl_defconfig ARM: davinci: da8xx: fix multiple watchdog device registration ARM: davinci: add da8xx specific configs to davinci_all_defconfig ARM: davinci: enable da8xx build concurrently with older devices ARM: BCM5301X: workaround suppress fault ARM: BCM5301X: add early debugging support ARM: BCM5301X: initial support for the BCM5301X/BCM470X SoCs with ARM CPU ARM: mach-bcm: Remove GENERIC_TIME ARM: shmobile: APMU: Fix warnings due to improper printk formats ...
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r--arch/arm/mach-omap2/Kconfig7
-rw-r--r--arch/arm/mach-omap2/Makefile1
-rw-r--r--arch/arm/mach-omap2/board-generic.c3
-rw-r--r--arch/arm/mach-omap2/clkt_dpll.c6
-rw-r--r--arch/arm/mach-omap2/cminst44xx.c18
-rw-r--r--arch/arm/mach-omap2/dpll3xxx.c2
-rw-r--r--arch/arm/mach-omap2/id.c16
-rw-r--r--arch/arm/mach-omap2/io.c1
-rw-r--r--arch/arm/mach-omap2/mux.h3
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_43xx_data.c1
-rw-r--r--arch/arm/mach-omap2/prminst44xx.c3
-rw-r--r--arch/arm/mach-omap2/soc.h3
-rw-r--r--arch/arm/mach-omap2/timer.c3
13 files changed, 46 insertions, 21 deletions
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 27fc52d418a5..5c22c0899e9c 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -149,12 +149,6 @@ config SOC_TI81XX
149 depends on ARCH_OMAP3 149 depends on ARCH_OMAP3
150 default y 150 default y
151 151
152config OMAP_PACKAGE_ZAF
153 bool
154
155config OMAP_PACKAGE_ZAC
156 bool
157
158config OMAP_PACKAGE_CBC 152config OMAP_PACKAGE_CBC
159 bool 153 bool
160 154
@@ -264,7 +258,6 @@ config MACH_NOKIA_N8X0
264 default y 258 default y
265 select MACH_NOKIA_N810 259 select MACH_NOKIA_N810
266 select MACH_NOKIA_N810_WIMAX 260 select MACH_NOKIA_N810_WIMAX
267 select OMAP_PACKAGE_ZAC
268 261
269config MACH_NOKIA_RX51 262config MACH_NOKIA_RX51
270 bool "Nokia N900 (RX-51) phone" 263 bool "Nokia N900 (RX-51) phone"
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index e6eec6f72fd3..8421f38cf445 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -60,6 +60,7 @@ AFLAGS_sram34xx.o :=-Wa,-march=armv7-a
60obj-$(CONFIG_SOC_OMAP2420) += omap2-restart.o 60obj-$(CONFIG_SOC_OMAP2420) += omap2-restart.o
61obj-$(CONFIG_SOC_OMAP2430) += omap2-restart.o 61obj-$(CONFIG_SOC_OMAP2430) += omap2-restart.o
62obj-$(CONFIG_SOC_AM33XX) += am33xx-restart.o 62obj-$(CONFIG_SOC_AM33XX) += am33xx-restart.o
63obj-$(CONFIG_SOC_AM43XX) += omap4-restart.o
63obj-$(CONFIG_ARCH_OMAP3) += omap3-restart.o 64obj-$(CONFIG_ARCH_OMAP3) += omap3-restart.o
64obj-$(CONFIG_ARCH_OMAP4) += omap4-restart.o 65obj-$(CONFIG_ARCH_OMAP4) += omap4-restart.o
65obj-$(CONFIG_SOC_OMAP5) += omap4-restart.o 66obj-$(CONFIG_SOC_OMAP5) += omap4-restart.o
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index 8e3daa11602b..bc6013fbb773 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -229,8 +229,9 @@ DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device Tree)")
229 .init_late = am43xx_init_late, 229 .init_late = am43xx_init_late,
230 .init_irq = omap_gic_of_init, 230 .init_irq = omap_gic_of_init,
231 .init_machine = omap_generic_init, 231 .init_machine = omap_generic_init,
232 .init_time = omap3_sync32k_timer_init, 232 .init_time = omap3_gptimer_timer_init,
233 .dt_compat = am43_boards_compat, 233 .dt_compat = am43_boards_compat,
234 .restart = omap44xx_restart,
234MACHINE_END 235MACHINE_END
235#endif 236#endif
236 237
diff --git a/arch/arm/mach-omap2/clkt_dpll.c b/arch/arm/mach-omap2/clkt_dpll.c
index 47f9562ca7aa..2649ce445845 100644
--- a/arch/arm/mach-omap2/clkt_dpll.c
+++ b/arch/arm/mach-omap2/clkt_dpll.c
@@ -306,7 +306,7 @@ long omap2_dpll_round_rate(struct clk_hw *hw, unsigned long target_rate,
306 306
307 ref_rate = __clk_get_rate(dd->clk_ref); 307 ref_rate = __clk_get_rate(dd->clk_ref);
308 clk_name = __clk_get_name(hw->clk); 308 clk_name = __clk_get_name(hw->clk);
309 pr_debug("clock: %s: starting DPLL round_rate, target rate %ld\n", 309 pr_debug("clock: %s: starting DPLL round_rate, target rate %lu\n",
310 clk_name, target_rate); 310 clk_name, target_rate);
311 311
312 scaled_rt_rp = target_rate / (ref_rate / DPLL_SCALE_FACTOR); 312 scaled_rt_rp = target_rate / (ref_rate / DPLL_SCALE_FACTOR);
@@ -342,7 +342,7 @@ long omap2_dpll_round_rate(struct clk_hw *hw, unsigned long target_rate,
342 if (r == DPLL_MULT_UNDERFLOW) 342 if (r == DPLL_MULT_UNDERFLOW)
343 continue; 343 continue;
344 344
345 pr_debug("clock: %s: m = %d: n = %d: new_rate = %ld\n", 345 pr_debug("clock: %s: m = %d: n = %d: new_rate = %lu\n",
346 clk_name, m, n, new_rate); 346 clk_name, m, n, new_rate);
347 347
348 if (target_rate == new_rate) { 348 if (target_rate == new_rate) {
@@ -354,7 +354,7 @@ long omap2_dpll_round_rate(struct clk_hw *hw, unsigned long target_rate,
354 } 354 }
355 355
356 if (target_rate != new_rate) { 356 if (target_rate != new_rate) {
357 pr_debug("clock: %s: cannot round to rate %ld\n", 357 pr_debug("clock: %s: cannot round to rate %lu\n",
358 clk_name, target_rate); 358 clk_name, target_rate);
359 return ~0; 359 return ~0;
360 } 360 }
diff --git a/arch/arm/mach-omap2/cminst44xx.c b/arch/arm/mach-omap2/cminst44xx.c
index 731ca134348c..f5c4731b6f06 100644
--- a/arch/arm/mach-omap2/cminst44xx.c
+++ b/arch/arm/mach-omap2/cminst44xx.c
@@ -254,6 +254,11 @@ void omap4_cminst_clkdm_force_wakeup(u8 part, u16 inst, u16 cdoffs)
254 * 254 *
255 */ 255 */
256 256
257void omap4_cminst_clkdm_force_sleep(u8 part, u16 inst, u16 cdoffs)
258{
259 _clktrctrl_write(OMAP34XX_CLKSTCTRL_FORCE_SLEEP, part, inst, cdoffs);
260}
261
257/** 262/**
258 * omap4_cminst_wait_module_ready - wait for a module to be in 'func' state 263 * omap4_cminst_wait_module_ready - wait for a module to be in 'func' state
259 * @part: PRCM partition ID that the CM_CLKCTRL register exists in 264 * @part: PRCM partition ID that the CM_CLKCTRL register exists in
@@ -404,8 +409,17 @@ static int omap4_clkdm_clear_all_wkup_sleep_deps(struct clockdomain *clkdm)
404 409
405static int omap4_clkdm_sleep(struct clockdomain *clkdm) 410static int omap4_clkdm_sleep(struct clockdomain *clkdm)
406{ 411{
407 omap4_cminst_clkdm_enable_hwsup(clkdm->prcm_partition, 412 if (clkdm->flags & CLKDM_CAN_HWSUP)
408 clkdm->cm_inst, clkdm->clkdm_offs); 413 omap4_cminst_clkdm_enable_hwsup(clkdm->prcm_partition,
414 clkdm->cm_inst,
415 clkdm->clkdm_offs);
416 else if (clkdm->flags & CLKDM_CAN_FORCE_SLEEP)
417 omap4_cminst_clkdm_force_sleep(clkdm->prcm_partition,
418 clkdm->cm_inst,
419 clkdm->clkdm_offs);
420 else
421 return -EINVAL;
422
409 return 0; 423 return 0;
410} 424}
411 425
diff --git a/arch/arm/mach-omap2/dpll3xxx.c b/arch/arm/mach-omap2/dpll3xxx.c
index 3c418ea54bbe..fcd8036af910 100644
--- a/arch/arm/mach-omap2/dpll3xxx.c
+++ b/arch/arm/mach-omap2/dpll3xxx.c
@@ -525,7 +525,7 @@ int omap3_noncore_dpll_set_rate(struct clk_hw *hw, unsigned long rate,
525 * stuff is inherited for free 525 * stuff is inherited for free
526 */ 526 */
527 527
528 if (!ret) 528 if (!ret && clk_get_parent(hw->clk) != new_parent)
529 __clk_reparent(hw->clk, new_parent); 529 __clk_reparent(hw->clk, new_parent);
530 530
531 return 0; 531 return 0;
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
index 9428c5f9d4f2..157412e4273a 100644
--- a/arch/arm/mach-omap2/id.c
+++ b/arch/arm/mach-omap2/id.c
@@ -465,8 +465,18 @@ void __init omap3xxx_check_revision(void)
465 } 465 }
466 break; 466 break;
467 case 0xb98c: 467 case 0xb98c:
468 omap_revision = AM437X_REV_ES1_0; 468 switch (rev) {
469 cpu_rev = "1.0"; 469 case 0:
470 omap_revision = AM437X_REV_ES1_0;
471 cpu_rev = "1.0";
472 break;
473 case 1:
474 /* FALLTHROUGH */
475 default:
476 omap_revision = AM437X_REV_ES1_1;
477 cpu_rev = "1.1";
478 break;
479 }
470 break; 480 break;
471 case 0xb8f2: 481 case 0xb8f2:
472 switch (rev) { 482 switch (rev) {
@@ -657,6 +667,8 @@ static const char * __init omap_get_family(void)
657 return kasprintf(GFP_KERNEL, "OMAP4"); 667 return kasprintf(GFP_KERNEL, "OMAP4");
658 else if (soc_is_omap54xx()) 668 else if (soc_is_omap54xx())
659 return kasprintf(GFP_KERNEL, "OMAP5"); 669 return kasprintf(GFP_KERNEL, "OMAP5");
670 else if (soc_is_am43xx())
671 return kasprintf(GFP_KERNEL, "AM43xx");
660 else 672 else
661 return kasprintf(GFP_KERNEL, "Unknown"); 673 return kasprintf(GFP_KERNEL, "Unknown");
662} 674}
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index af432b191255..f14f9ac2dca1 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -604,6 +604,7 @@ void __init am43xx_init_early(void)
604 omap_prm_base_init(); 604 omap_prm_base_init();
605 omap_cm_base_init(); 605 omap_cm_base_init();
606 omap3xxx_check_revision(); 606 omap3xxx_check_revision();
607 am33xx_check_features();
607 am43xx_powerdomains_init(); 608 am43xx_powerdomains_init();
608 am43xx_clockdomains_init(); 609 am43xx_clockdomains_init();
609 am43xx_hwmod_init(); 610 am43xx_hwmod_init();
diff --git a/arch/arm/mach-omap2/mux.h b/arch/arm/mach-omap2/mux.h
index a722330d4d53..d121fb6df4e6 100644
--- a/arch/arm/mach-omap2/mux.h
+++ b/arch/arm/mach-omap2/mux.h
@@ -63,9 +63,6 @@
63#define OMAP_PACKAGE_CUS 5 /* 423-pin 0.65 */ 63#define OMAP_PACKAGE_CUS 5 /* 423-pin 0.65 */
64#define OMAP_PACKAGE_CBB 4 /* 515-pin 0.40 0.50 */ 64#define OMAP_PACKAGE_CBB 4 /* 515-pin 0.40 0.50 */
65#define OMAP_PACKAGE_CBC 3 /* 515-pin 0.50 0.65 */ 65#define OMAP_PACKAGE_CBC 3 /* 515-pin 0.50 0.65 */
66#define OMAP_PACKAGE_ZAC 2 /* 24xx 447-pin POP */
67#define OMAP_PACKAGE_ZAF 1 /* 2420 447-pin SIP */
68
69 66
70#define OMAP_MUX_NR_MODES 8 /* Available modes */ 67#define OMAP_MUX_NR_MODES 8 /* Available modes */
71#define OMAP_MUX_NR_SIDES 2 /* Bottom & top */ 68#define OMAP_MUX_NR_SIDES 2 /* Bottom & top */
diff --git a/arch/arm/mach-omap2/omap_hwmod_43xx_data.c b/arch/arm/mach-omap2/omap_hwmod_43xx_data.c
index 9002fca76699..5c2cc8083fdd 100644
--- a/arch/arm/mach-omap2/omap_hwmod_43xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_43xx_data.c
@@ -719,6 +719,7 @@ static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[] __initdata = {
719 &am33xx_l4_ls__uart4, 719 &am33xx_l4_ls__uart4,
720 &am33xx_l4_ls__uart5, 720 &am33xx_l4_ls__uart5,
721 &am33xx_l4_ls__uart6, 721 &am33xx_l4_ls__uart6,
722 &am33xx_l4_ls__spinlock,
722 &am33xx_l4_ls__elm, 723 &am33xx_l4_ls__elm,
723 &am33xx_l4_ls__epwmss0, 724 &am33xx_l4_ls__epwmss0,
724 &am33xx_epwmss0__ecap0, 725 &am33xx_epwmss0__ecap0,
diff --git a/arch/arm/mach-omap2/prminst44xx.c b/arch/arm/mach-omap2/prminst44xx.c
index 280f3c58abe5..05fcf6de44ee 100644
--- a/arch/arm/mach-omap2/prminst44xx.c
+++ b/arch/arm/mach-omap2/prminst44xx.c
@@ -25,6 +25,7 @@
25#include "prminst44xx.h" 25#include "prminst44xx.h"
26#include "prm-regbits-44xx.h" 26#include "prm-regbits-44xx.h"
27#include "prcm44xx.h" 27#include "prcm44xx.h"
28#include "prcm43xx.h"
28#include "prcm_mpu44xx.h" 29#include "prcm_mpu44xx.h"
29#include "soc.h" 30#include "soc.h"
30 31
@@ -176,6 +177,8 @@ void omap4_prminst_global_warm_sw_reset(void)
176 dev_inst = OMAP54XX_PRM_DEVICE_INST; 177 dev_inst = OMAP54XX_PRM_DEVICE_INST;
177 else if (soc_is_dra7xx()) 178 else if (soc_is_dra7xx())
178 dev_inst = DRA7XX_PRM_DEVICE_INST; 179 dev_inst = DRA7XX_PRM_DEVICE_INST;
180 else if (soc_is_am43xx())
181 dev_inst = AM43XX_PRM_DEVICE_INST;
179 else 182 else
180 return; 183 return;
181 184
diff --git a/arch/arm/mach-omap2/soc.h b/arch/arm/mach-omap2/soc.h
index 076bd90a6ce0..30abcc8b20e0 100644
--- a/arch/arm/mach-omap2/soc.h
+++ b/arch/arm/mach-omap2/soc.h
@@ -438,7 +438,8 @@ IS_OMAP_TYPE(3430, 0x3430)
438#define AM335X_REV_ES2_1 (AM335X_CLASS | (0x2 << 8)) 438#define AM335X_REV_ES2_1 (AM335X_CLASS | (0x2 << 8))
439 439
440#define AM437X_CLASS 0x43700000 440#define AM437X_CLASS 0x43700000
441#define AM437X_REV_ES1_0 AM437X_CLASS 441#define AM437X_REV_ES1_0 (AM437X_CLASS | (0x10 << 8))
442#define AM437X_REV_ES1_1 (AM437X_CLASS | (0x11 << 8))
442 443
443#define OMAP443X_CLASS 0x44300044 444#define OMAP443X_CLASS 0x44300044
444#define OMAP4430_REV_ES1_0 (OMAP443X_CLASS | (0x10 << 8)) 445#define OMAP4430_REV_ES1_0 (OMAP443X_CLASS | (0x10 << 8))
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index 74044aaf438b..b62de9f9d05c 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -604,7 +604,8 @@ OMAP_SYS_32K_TIMER_INIT(3_secure, 12, "secure_32k_fck", "ti,timer-secure",
604 2, "timer_sys_ck", NULL); 604 2, "timer_sys_ck", NULL);
605#endif /* CONFIG_ARCH_OMAP3 */ 605#endif /* CONFIG_ARCH_OMAP3 */
606 606
607#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX) 607#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX) || \
608 defined(CONFIG_SOC_AM43XX)
608OMAP_SYS_GP_TIMER_INIT(3, 2, "timer_sys_ck", NULL, 609OMAP_SYS_GP_TIMER_INIT(3, 2, "timer_sys_ck", NULL,
609 1, "timer_sys_ck", "ti,timer-alwon"); 610 1, "timer_sys_ck", "ti,timer-alwon");
610#endif 611#endif