Skip to content

Commit e28ae27

Browse files
committed
MLK-12861-2 ARM: imx: enable necessary clock for RDC resume on i.mx7d
When Mega/Fast Mix off in DSM mode, RDC recovery needs PCIe/PXP/EIM clock to be enabled, otherwise, with M4 enabled, DSM resume will fail. We only enable them before entering DSM and hardware will disable them when DSM is entered and they will be re-enabled after resume, then in low level resume phase, we will disable them again. Signed-off-by: Anson Huang <[email protected]>
1 parent 02a2e8d commit e28ae27

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

arch/arm/mach-imx/pm-imx7.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@
7878

7979
#define CCM_LPCG_START 0x4040
8080
#define CCM_LPCG_STEP 0x10
81+
#define CCM_EIM_LPCG 0x4160
82+
#define CCM_PXP_LPCG 0x44c0
8183
#define CCM_PCIE_LPCG 0x4600
8284

8385
#define BM_CCM_ROOT_POST_PODF 0x3f
@@ -715,11 +717,15 @@ static int imx7_pm_enter(suspend_state_t state)
715717
imx_gpcv2_pre_suspend(true);
716718
if (imx_gpcv2_is_mf_mix_off()) {
717719
/*
718-
* per design requirement, EXSC for PCIe/EIM
720+
* per design requirement, EXSC for PCIe/EIM/PXP
719721
* will need clock to recover RDC setting on
720722
* resume, so enable PCIe/EIM LPCG for RDC
721723
* recovery when M/F mix off
722724
*/
725+
writel_relaxed(0x3, pm_info->ccm_base.vbase +
726+
CCM_EIM_LPCG);
727+
writel_relaxed(0x3, pm_info->ccm_base.vbase +
728+
CCM_PXP_LPCG);
723729
writel_relaxed(0x3, pm_info->ccm_base.vbase +
724730
CCM_PCIE_LPCG);
725731
/* stop m4 if mix will also be shutdown */
@@ -759,6 +765,10 @@ static int imx7_pm_enter(suspend_state_t state)
759765
}
760766
if (imx_gpcv2_is_mf_mix_off() ||
761767
imx7_pm_is_resume_from_lpsr()) {
768+
writel_relaxed(0x0, pm_info->ccm_base.vbase +
769+
CCM_EIM_LPCG);
770+
writel_relaxed(0x0, pm_info->ccm_base.vbase +
771+
CCM_PXP_LPCG);
762772
writel_relaxed(0x0, pm_info->ccm_base.vbase +
763773
CCM_PCIE_LPCG);
764774
memcpy(ocram_base, ocram_saved_in_ddr, ocram_size);

0 commit comments

Comments
 (0)