diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-03-11 15:35:54 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-03-11 15:35:54 -0500 |
commit | 2a4fb270daa9c1f1d1b86a53d66ed86cc64ad232 (patch) | |
tree | ecd460327f14eae49ed5938b76216104eed9d11d | |
parent | 95f41fb203b0780b4fb97de64f83cc932abfd33d (diff) | |
parent | d7d5a43c0d16760f25d892bf9329848167a8b8a4 (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.txt | 1 | ||||
-rw-r--r-- | arch/arm/boot/dts/armada-xp-axpwifiap.dts | 4 | ||||
-rw-r--r-- | arch/arm/boot/dts/armada-xp-db.dts | 4 | ||||
-rw-r--r-- | arch/arm/boot/dts/armada-xp-gp.dts | 4 | ||||
-rw-r--r-- | arch/arm/boot/dts/armada-xp-lenovo-ix4-300d.dts | 4 | ||||
-rw-r--r-- | arch/arm/boot/dts/armada-xp-linksys-mamba.dts | 4 | ||||
-rw-r--r-- | arch/arm/boot/dts/armada-xp-matrix.dts | 4 | ||||
-rw-r--r-- | arch/arm/boot/dts/armada-xp-netgear-rn2120.dts | 4 | ||||
-rw-r--r-- | arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts | 6 | ||||
-rw-r--r-- | arch/arm/boot/dts/armada-xp-synology-ds414.dts | 4 | ||||
-rw-r--r-- | arch/arm/boot/dts/dra7.dtsi | 10 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod.h | 3 |
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 | ||
27 | Example: | 28 | Example: |
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 | */ |
2201 | static int _idle(struct omap_hwmod *oh) | 2201 | static 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 |