aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-03-11 15:35:54 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2016-03-11 15:35:54 -0500
commit2a4fb270daa9c1f1d1b86a53d66ed86cc64ad232 (patch)
treeecd460327f14eae49ed5938b76216104eed9d11d
parent95f41fb203b0780b4fb97de64f83cc932abfd33d (diff)
parentd7d5a43c0d16760f25d892bf9329848167a8b8a4 (diff)
Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC fixes from Olof Johansson: "Two more fixes for 4.5: - One is a fix for OMAP that is urgently needed to avoid DRA7xx chips from premature aging, by always keeping the Ethernet clock enabled. - The other solves a I/O memory layout issue on Armada, where SROM and PCI memory windows were conflicting in some configurations" * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: ARM: mvebu: fix overlap of Crypto SRAM with PCIe memory window ARM: dts: dra7: do not gate cpsw clock due to errata i877 ARM: OMAP2+: hwmod: Introduce ti,no-idle dt property
-rw-r--r--Documentation/devicetree/bindings/arm/omap/omap.txt1
-rw-r--r--arch/arm/boot/dts/armada-xp-axpwifiap.dts4
-rw-r--r--arch/arm/boot/dts/armada-xp-db.dts4
-rw-r--r--arch/arm/boot/dts/armada-xp-gp.dts4
-rw-r--r--arch/arm/boot/dts/armada-xp-lenovo-ix4-300d.dts4
-rw-r--r--arch/arm/boot/dts/armada-xp-linksys-mamba.dts4
-rw-r--r--arch/arm/boot/dts/armada-xp-matrix.dts4
-rw-r--r--arch/arm/boot/dts/armada-xp-netgear-rn2120.dts4
-rw-r--r--arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts6
-rw-r--r--arch/arm/boot/dts/armada-xp-synology-ds414.dts4
-rw-r--r--arch/arm/boot/dts/dra7.dtsi10
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.c9
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.h3
13 files changed, 41 insertions, 20 deletions
diff --git a/Documentation/devicetree/bindings/arm/omap/omap.txt b/Documentation/devicetree/bindings/arm/omap/omap.txt
index a2bd593881ca..66422d663184 100644
--- a/Documentation/devicetree/bindings/arm/omap/omap.txt
+++ b/Documentation/devicetree/bindings/arm/omap/omap.txt
@@ -23,6 +23,7 @@ Optional properties:
23 during suspend. 23 during suspend.
24- ti,no-reset-on-init: When present, the module should not be reset at init 24- ti,no-reset-on-init: When present, the module should not be reset at init
25- ti,no-idle-on-init: When present, the module should not be idled at init 25- ti,no-idle-on-init: When present, the module should not be idled at init
26- ti,no-idle: When present, the module is never allowed to idle.
26 27
27Example: 28Example:
28 29
diff --git a/arch/arm/boot/dts/armada-xp-axpwifiap.dts b/arch/arm/boot/dts/armada-xp-axpwifiap.dts
index 23fc670c0427..5c21b236721f 100644
--- a/arch/arm/boot/dts/armada-xp-axpwifiap.dts
+++ b/arch/arm/boot/dts/armada-xp-axpwifiap.dts
@@ -70,8 +70,8 @@
70 soc { 70 soc {
71 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000 71 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
72 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000 72 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
73 MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000 73 MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
74 MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>; 74 MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
75 75
76 pcie-controller { 76 pcie-controller {
77 status = "okay"; 77 status = "okay";
diff --git a/arch/arm/boot/dts/armada-xp-db.dts b/arch/arm/boot/dts/armada-xp-db.dts
index f774101416a5..ebe1d267406d 100644
--- a/arch/arm/boot/dts/armada-xp-db.dts
+++ b/arch/arm/boot/dts/armada-xp-db.dts
@@ -76,8 +76,8 @@
76 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000 76 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
77 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000 77 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
78 MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x1000000 78 MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x1000000
79 MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000 79 MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
80 MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>; 80 MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
81 81
82 devbus-bootcs { 82 devbus-bootcs {
83 status = "okay"; 83 status = "okay";
diff --git a/arch/arm/boot/dts/armada-xp-gp.dts b/arch/arm/boot/dts/armada-xp-gp.dts
index 4878d7353069..5730b875c4f5 100644
--- a/arch/arm/boot/dts/armada-xp-gp.dts
+++ b/arch/arm/boot/dts/armada-xp-gp.dts
@@ -95,8 +95,8 @@
95 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000 95 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
96 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000 96 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
97 MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x1000000 97 MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x1000000
98 MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000 98 MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
99 MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>; 99 MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
100 100
101 devbus-bootcs { 101 devbus-bootcs {
102 status = "okay"; 102 status = "okay";
diff --git a/arch/arm/boot/dts/armada-xp-lenovo-ix4-300d.dts b/arch/arm/boot/dts/armada-xp-lenovo-ix4-300d.dts
index fb9e1bbf2338..8af463f26ea1 100644
--- a/arch/arm/boot/dts/armada-xp-lenovo-ix4-300d.dts
+++ b/arch/arm/boot/dts/armada-xp-lenovo-ix4-300d.dts
@@ -65,8 +65,8 @@
65 soc { 65 soc {
66 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000 66 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
67 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000 67 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
68 MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000 68 MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
69 MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>; 69 MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
70 70
71 pcie-controller { 71 pcie-controller {
72 status = "okay"; 72 status = "okay";
diff --git a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
index 6e9820e141f8..b89e6cf1271a 100644
--- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
+++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
@@ -70,8 +70,8 @@
70 soc { 70 soc {
71 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000 71 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
72 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000 72 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
73 MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000 73 MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
74 MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>; 74 MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
75 75
76 pcie-controller { 76 pcie-controller {
77 status = "okay"; 77 status = "okay";
diff --git a/arch/arm/boot/dts/armada-xp-matrix.dts b/arch/arm/boot/dts/armada-xp-matrix.dts
index 6ab33837a2b6..6522b04f4a8e 100644
--- a/arch/arm/boot/dts/armada-xp-matrix.dts
+++ b/arch/arm/boot/dts/armada-xp-matrix.dts
@@ -68,8 +68,8 @@
68 soc { 68 soc {
69 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000 69 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
70 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000 70 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
71 MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000 71 MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
72 MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>; 72 MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
73 73
74 internal-regs { 74 internal-regs {
75 serial@12000 { 75 serial@12000 {
diff --git a/arch/arm/boot/dts/armada-xp-netgear-rn2120.dts b/arch/arm/boot/dts/armada-xp-netgear-rn2120.dts
index 62175a8848bc..d19f44c70925 100644
--- a/arch/arm/boot/dts/armada-xp-netgear-rn2120.dts
+++ b/arch/arm/boot/dts/armada-xp-netgear-rn2120.dts
@@ -64,8 +64,8 @@
64 soc { 64 soc {
65 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000 65 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
66 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000 66 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
67 MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000 67 MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
68 MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>; 68 MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
69 69
70 pcie-controller { 70 pcie-controller {
71 status = "okay"; 71 status = "okay";
diff --git a/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts b/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts
index a5db17782e08..853bd392a4fe 100644
--- a/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts
+++ b/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts
@@ -65,9 +65,9 @@
65 soc { 65 soc {
66 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000 66 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
67 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000 67 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
68 MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x8000000 68 MBUS_ID(0x01, 0x2f) 0 0 0xe8000000 0x8000000
69 MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000 69 MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
70 MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>; 70 MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
71 71
72 devbus-bootcs { 72 devbus-bootcs {
73 status = "okay"; 73 status = "okay";
diff --git a/arch/arm/boot/dts/armada-xp-synology-ds414.dts b/arch/arm/boot/dts/armada-xp-synology-ds414.dts
index 2391b11dc546..d17dab0a6f51 100644
--- a/arch/arm/boot/dts/armada-xp-synology-ds414.dts
+++ b/arch/arm/boot/dts/armada-xp-synology-ds414.dts
@@ -78,8 +78,8 @@
78 soc { 78 soc {
79 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000 79 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
80 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000 80 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
81 MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000 81 MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
82 MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>; 82 MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
83 83
84 pcie-controller { 84 pcie-controller {
85 status = "okay"; 85 status = "okay";
diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
index c4d9175b90dc..f82aa44c3cee 100644
--- a/arch/arm/boot/dts/dra7.dtsi
+++ b/arch/arm/boot/dts/dra7.dtsi
@@ -1500,6 +1500,16 @@
1500 0x48485200 0x2E00>; 1500 0x48485200 0x2E00>;
1501 #address-cells = <1>; 1501 #address-cells = <1>;
1502 #size-cells = <1>; 1502 #size-cells = <1>;
1503
1504 /*
1505 * Do not allow gating of cpsw clock as workaround
1506 * for errata i877. Keeping internal clock disabled
1507 * causes the device switching characteristics
1508 * to degrade over time and eventually fail to meet
1509 * the data manual delay time/skew specs.
1510 */
1511 ti,no-idle;
1512
1503 /* 1513 /*
1504 * rx_thresh_pend 1514 * rx_thresh_pend
1505 * rx_pend 1515 * rx_pend
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index e9f65fec55c0..b6d62e4cdfdd 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -2200,6 +2200,11 @@ static int _enable(struct omap_hwmod *oh)
2200 */ 2200 */
2201static int _idle(struct omap_hwmod *oh) 2201static int _idle(struct omap_hwmod *oh)
2202{ 2202{
2203 if (oh->flags & HWMOD_NO_IDLE) {
2204 oh->_int_flags |= _HWMOD_SKIP_ENABLE;
2205 return 0;
2206 }
2207
2203 pr_debug("omap_hwmod: %s: idling\n", oh->name); 2208 pr_debug("omap_hwmod: %s: idling\n", oh->name);
2204 2209
2205 if (oh->_state != _HWMOD_STATE_ENABLED) { 2210 if (oh->_state != _HWMOD_STATE_ENABLED) {
@@ -2504,6 +2509,8 @@ static int __init _init(struct omap_hwmod *oh, void *data)
2504 oh->flags |= HWMOD_INIT_NO_RESET; 2509 oh->flags |= HWMOD_INIT_NO_RESET;
2505 if (of_find_property(np, "ti,no-idle-on-init", NULL)) 2510 if (of_find_property(np, "ti,no-idle-on-init", NULL))
2506 oh->flags |= HWMOD_INIT_NO_IDLE; 2511 oh->flags |= HWMOD_INIT_NO_IDLE;
2512 if (of_find_property(np, "ti,no-idle", NULL))
2513 oh->flags |= HWMOD_NO_IDLE;
2507 } 2514 }
2508 2515
2509 oh->_state = _HWMOD_STATE_INITIALIZED; 2516 oh->_state = _HWMOD_STATE_INITIALIZED;
@@ -2630,7 +2637,7 @@ static void __init _setup_postsetup(struct omap_hwmod *oh)
2630 * XXX HWMOD_INIT_NO_IDLE does not belong in hwmod data - 2637 * XXX HWMOD_INIT_NO_IDLE does not belong in hwmod data -
2631 * it should be set by the core code as a runtime flag during startup 2638 * it should be set by the core code as a runtime flag during startup
2632 */ 2639 */
2633 if ((oh->flags & HWMOD_INIT_NO_IDLE) && 2640 if ((oh->flags & (HWMOD_INIT_NO_IDLE | HWMOD_NO_IDLE)) &&
2634 (postsetup_state == _HWMOD_STATE_IDLE)) { 2641 (postsetup_state == _HWMOD_STATE_IDLE)) {
2635 oh->_int_flags |= _HWMOD_SKIP_ENABLE; 2642 oh->_int_flags |= _HWMOD_SKIP_ENABLE;
2636 postsetup_state = _HWMOD_STATE_ENABLED; 2643 postsetup_state = _HWMOD_STATE_ENABLED;
diff --git a/arch/arm/mach-omap2/omap_hwmod.h b/arch/arm/mach-omap2/omap_hwmod.h
index 76bce11c85a4..7c7a31169475 100644
--- a/arch/arm/mach-omap2/omap_hwmod.h
+++ b/arch/arm/mach-omap2/omap_hwmod.h
@@ -525,6 +525,8 @@ struct omap_hwmod_omap4_prcm {
525 * or idled. 525 * or idled.
526 * HWMOD_OPT_CLKS_NEEDED: The optional clocks are needed for the module to 526 * HWMOD_OPT_CLKS_NEEDED: The optional clocks are needed for the module to
527 * operate and they need to be handled at the same time as the main_clk. 527 * operate and they need to be handled at the same time as the main_clk.
528 * HWMOD_NO_IDLE: Do not idle the hwmod at all. Useful to handle certain
529 * IPs like CPSW on DRA7, where clocks to this module cannot be disabled.
528 */ 530 */
529#define HWMOD_SWSUP_SIDLE (1 << 0) 531#define HWMOD_SWSUP_SIDLE (1 << 0)
530#define HWMOD_SWSUP_MSTANDBY (1 << 1) 532#define HWMOD_SWSUP_MSTANDBY (1 << 1)
@@ -541,6 +543,7 @@ struct omap_hwmod_omap4_prcm {
541#define HWMOD_SWSUP_SIDLE_ACT (1 << 12) 543#define HWMOD_SWSUP_SIDLE_ACT (1 << 12)
542#define HWMOD_RECONFIG_IO_CHAIN (1 << 13) 544#define HWMOD_RECONFIG_IO_CHAIN (1 << 13)
543#define HWMOD_OPT_CLKS_NEEDED (1 << 14) 545#define HWMOD_OPT_CLKS_NEEDED (1 << 14)
546#define HWMOD_NO_IDLE (1 << 15)
544 547
545/* 548/*
546 * omap_hwmod._int_flags definitions 549 * omap_hwmod._int_flags definitions