ARM: tegra: Fix DRAM refresh-interval clobbering on resume from LP1 on Tegra30
authorDmitry Osipenko <digetx@gmail.com>
Sat, 24 Nov 2018 21:13:47 +0000 (00:13 +0300)
committerThierry Reding <treding@nvidia.com>
Wed, 16 Jan 2019 12:21:57 +0000 (13:21 +0100)
The DRAM refresh-interval is getting erroneously set to "1" on exiting
from memory self-refreshing mode. The clobbered interval causes the
"refresh request overflow timeout" error raised by the External Memory
Controller on exiting from LP1 on Tegra30. The same may happen on Tegra20,
but EMC registers are not latched after exiting from self-refreshing mode
on Tegra20 and hence refresh-interval is not altered until an event that
causes registers latching happens.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Acked-by: Jon Hunter <jonathanh@nvidia.com>
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
arch/arm/mach-tegra/sleep-tegra20.S
arch/arm/mach-tegra/sleep-tegra30.S

index 5c8e638..dedeebf 100644 (file)
@@ -32,7 +32,6 @@
 
 #define EMC_CFG                                0xc
 #define EMC_ADR_CFG                    0x10
-#define EMC_REFRESH                    0x70
 #define EMC_NOP                                0xdc
 #define EMC_SELF_REF                   0xe0
 #define EMC_REQ_CTRL                   0x2b0
@@ -397,7 +396,6 @@ padload_done:
        mov     r1, #1
        str     r1, [r0, #EMC_NOP]
        str     r1, [r0, #EMC_NOP]
-       str     r1, [r0, #EMC_REFRESH]
 
        emc_device_mask r1, r0
 
index efc6493..7727e00 100644 (file)
@@ -29,7 +29,6 @@
 #define EMC_CFG                                0xc
 #define EMC_ADR_CFG                    0x10
 #define EMC_TIMING_CONTROL             0x28
-#define EMC_REFRESH                    0x70
 #define EMC_NOP                                0xdc
 #define EMC_SELF_REF                   0xe0
 #define EMC_MRW                                0xe8
@@ -459,7 +458,6 @@ emc_wait_auto_cal_onetime:
        cmp     r10, #TEGRA30
        streq   r1, [r0, #EMC_NOP]
        streq   r1, [r0, #EMC_NOP]
-       streq   r1, [r0, #EMC_REFRESH]
 
        emc_device_mask r1, r0