Skip to content

Commit 2a4fb27

Browse files
committed
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
2 parents 95f41fb + d7d5a43 commit 2a4fb27

13 files changed

+41
-20
lines changed

Documentation/devicetree/bindings/arm/omap/omap.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Optional properties:
2323
during suspend.
2424
- ti,no-reset-on-init: When present, the module should not be reset at init
2525
- 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.
2627

2728
Example:
2829

arch/arm/boot/dts/armada-xp-axpwifiap.dts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@
7070
soc {
7171
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
7272
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
73-
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
74-
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
73+
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
74+
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
7575

7676
pcie-controller {
7777
status = "okay";

arch/arm/boot/dts/armada-xp-db.dts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@
7676
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
7777
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
7878
MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x1000000
79-
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
80-
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
79+
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
80+
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
8181

8282
devbus-bootcs {
8383
status = "okay";

arch/arm/boot/dts/armada-xp-gp.dts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@
9595
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
9696
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
9797
MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x1000000
98-
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
99-
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
98+
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
99+
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
100100

101101
devbus-bootcs {
102102
status = "okay";

arch/arm/boot/dts/armada-xp-lenovo-ix4-300d.dts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@
6565
soc {
6666
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
6767
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
68-
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
69-
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
68+
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
69+
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
7070

7171
pcie-controller {
7272
status = "okay";

arch/arm/boot/dts/armada-xp-linksys-mamba.dts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@
7070
soc {
7171
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
7272
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
73-
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
74-
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
73+
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
74+
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
7575

7676
pcie-controller {
7777
status = "okay";

arch/arm/boot/dts/armada-xp-matrix.dts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@
6868
soc {
6969
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
7070
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
71-
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
72-
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
71+
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
72+
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
7373

7474
internal-regs {
7575
serial@12000 {

arch/arm/boot/dts/armada-xp-netgear-rn2120.dts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@
6464
soc {
6565
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
6666
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
67-
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
68-
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
67+
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
68+
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
6969

7070
pcie-controller {
7171
status = "okay";

arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@
6565
soc {
6666
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
6767
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
68-
MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x8000000
69-
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
70-
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
68+
MBUS_ID(0x01, 0x2f) 0 0 0xe8000000 0x8000000
69+
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
70+
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
7171

7272
devbus-bootcs {
7373
status = "okay";

arch/arm/boot/dts/armada-xp-synology-ds414.dts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@
7878
soc {
7979
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
8080
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
81-
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
82-
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
81+
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
82+
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
8383

8484
pcie-controller {
8585
status = "okay";

arch/arm/boot/dts/dra7.dtsi

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1500,6 +1500,16 @@
15001500
0x48485200 0x2E00>;
15011501
#address-cells = <1>;
15021502
#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+
15031513
/*
15041514
* rx_thresh_pend
15051515
* rx_pend

arch/arm/mach-omap2/omap_hwmod.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2200,6 +2200,11 @@ static int _enable(struct omap_hwmod *oh)
22002200
*/
22012201
static int _idle(struct omap_hwmod *oh)
22022202
{
2203+
if (oh->flags & HWMOD_NO_IDLE) {
2204+
oh->_int_flags |= _HWMOD_SKIP_ENABLE;
2205+
return 0;
2206+
}
2207+
22032208
pr_debug("omap_hwmod: %s: idling\n", oh->name);
22042209

22052210
if (oh->_state != _HWMOD_STATE_ENABLED) {
@@ -2504,6 +2509,8 @@ static int __init _init(struct omap_hwmod *oh, void *data)
25042509
oh->flags |= HWMOD_INIT_NO_RESET;
25052510
if (of_find_property(np, "ti,no-idle-on-init", NULL))
25062511
oh->flags |= HWMOD_INIT_NO_IDLE;
2512+
if (of_find_property(np, "ti,no-idle", NULL))
2513+
oh->flags |= HWMOD_NO_IDLE;
25072514
}
25082515

25092516
oh->_state = _HWMOD_STATE_INITIALIZED;
@@ -2630,7 +2637,7 @@ static void __init _setup_postsetup(struct omap_hwmod *oh)
26302637
* XXX HWMOD_INIT_NO_IDLE does not belong in hwmod data -
26312638
* it should be set by the core code as a runtime flag during startup
26322639
*/
2633-
if ((oh->flags & HWMOD_INIT_NO_IDLE) &&
2640+
if ((oh->flags & (HWMOD_INIT_NO_IDLE | HWMOD_NO_IDLE)) &&
26342641
(postsetup_state == _HWMOD_STATE_IDLE)) {
26352642
oh->_int_flags |= _HWMOD_SKIP_ENABLE;
26362643
postsetup_state = _HWMOD_STATE_ENABLED;

arch/arm/mach-omap2/omap_hwmod.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,8 @@ struct omap_hwmod_omap4_prcm {
525525
* or idled.
526526
* HWMOD_OPT_CLKS_NEEDED: The optional clocks are needed for the module to
527527
* 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.
528530
*/
529531
#define HWMOD_SWSUP_SIDLE (1 << 0)
530532
#define HWMOD_SWSUP_MSTANDBY (1 << 1)
@@ -541,6 +543,7 @@ struct omap_hwmod_omap4_prcm {
541543
#define HWMOD_SWSUP_SIDLE_ACT (1 << 12)
542544
#define HWMOD_RECONFIG_IO_CHAIN (1 << 13)
543545
#define HWMOD_OPT_CLKS_NEEDED (1 << 14)
546+
#define HWMOD_NO_IDLE (1 << 15)
544547

545548
/*
546549
* omap_hwmod._int_flags definitions

0 commit comments

Comments
 (0)