On 19/11/2018 22:35, Dmitry Osipenko wrote: > On 20.11.2018 1:00, Jon Hunter wrote: >> >> On 30/08/2018 19:54, Dmitry Osipenko wrote: >>> Two interrupts are raised on resume from LP1 on Tegra30+: first is the >>> clock change completed interrupt which is set after updating timing >>> configuration, second is DLL alarm interrupt which is set when DLL >>> starts re-calibration after being reset. Clear these two interrupts >>> in the end of exiting from the self-refresh mode for consistency, that >>> will also allow to not receive spurious interrupts in the EMC driver >>> after resume from suspend. >>> >>> Signed-off-by: Dmitry Osipenko <[email protected]> >>> --- >>> arch/arm/mach-tegra/sleep-tegra30.S | 7 +++++++ >>> 1 file changed, 7 insertions(+) >>> >>> diff --git a/arch/arm/mach-tegra/sleep-tegra30.S >>> b/arch/arm/mach-tegra/sleep-tegra30.S >>> index 828f6c37afde..78c6e9fb56e7 100644 >>> --- a/arch/arm/mach-tegra/sleep-tegra30.S >>> +++ b/arch/arm/mach-tegra/sleep-tegra30.S >>> @@ -26,6 +26,7 @@ >>> #include "irammap.h" >>> #include "sleep.h" >>> >>> +#define EMC_INTSTATUS 0x0 >>> #define EMC_CFG 0xc >>> #define EMC_ADR_CFG 0x10 >>> #define EMC_TIMING_CONTROL 0x28 >>> @@ -44,6 +45,9 @@ >>> #define EMC_XM2VTTGENPADCTRL 0x310 >>> #define EMC_XM2VTTGENPADCTRL2 0x314 >>> >>> +#define EMC_CLKCHANGE_COMPLETE_INT (1 << 4) >>> +#define EMC_DLL_ALARM_INT (1 << 7) >>> + >>> #define MC_EMEM_ARB_CFG 0x90 >>> >>> #define PMC_CTRL 0x0 >>> @@ -539,6 +543,9 @@ zcal_done: >>> >>> emc_timing_update r1, r0 >>> >>> + mov r1, #(EMC_CLKCHANGE_COMPLETE_INT | EMC_DLL_ALARM_INT) >>> + str r1, [r0, #EMC_INTSTATUS] @ clear interrupts >>> + >>> /* Tegra114 had dual EMC channel, now config the other one */ >>> cmp r10, #TEGRA114 >>> bne __no_dual_emc_chanl >>> >> >> Where are these interrupts enabled? I did not see where they are >> enabled. I see that the Tegra24 EMC driver does poll these, but it did >> not look like they were enabled. If they are enabled, I wondering if >> they should be masked on entering self-refresh? > > EMC interrupt is not enabled on Tegra124. IIRC, it doesn't use the interrupt > at all in the driver. Indeed, T124 EMC driver polls the interrupt status, but > it clears the status before starting to poll. Probably I was just thinking > about to write T30 EMC driver at that time and to utilize the interrupt.. > > Seems it should be okay to drop this patch for now, but maybe then we will > have to return to it sometime later. Up to you to decide.
I would be tempted to drop for now. If you have such a driver maybe the driver should mask any interrupts it uses on suspending. Cheers Jon -- nvpublic

