From: Ivan Lipski <[email protected]>

Commit f5472343f468 ("drm/amd/display: Migrate DCCG registers access
from hwseq to dccg component.") moved register writes from hwseq to
dccg2_*() functions but did not add the registers to the DCCG register
list macros. The struct fields default to 0, so REG_WRITE() targets
MMIO offset 0, causing a GPU hang on resume (seen on DCN21/DCN30
during IGT kms_cursor_crc@cursor-suspend).

Add
- MICROSECOND_TIME_BASE_DIV
- MILLISECOND_TIME_BASE_DIV
- DCCG_GATE_DISABLE_CNTL
- DCCG_GATE_DISABLE_CNTL2
- DC_MEM_GLOBAL_PWR_REQ_CNTL
to macros in  dcn20_dccg.h, dcn301_dccg.h, dcn31_dccg.h, and dcn314_dccg.h.

Fixes: f5472343f468 ("drm/amd/display: Migrate DCCG registers access from hwseq 
to dccg component.")
Reviewed-by: Aurabindo Pillai <[email protected]>
Signed-off-by: Ivan Lipski <[email protected]>
Signed-off-by: Alex Hung <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/dccg/dcn20/dcn20_dccg.h   | 6 +++++-
 drivers/gpu/drm/amd/display/dc/dccg/dcn301/dcn301_dccg.h | 8 +++++++-
 drivers/gpu/drm/amd/display/dc/dccg/dcn31/dcn31_dccg.h   | 5 ++++-
 drivers/gpu/drm/amd/display/dc/dccg/dcn314/dcn314_dccg.h | 5 ++++-
 4 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dccg/dcn20/dcn20_dccg.h 
b/drivers/gpu/drm/amd/display/dc/dccg/dcn20/dcn20_dccg.h
index ffcd2e139e76..463f5826a1ea 100644
--- a/drivers/gpu/drm/amd/display/dc/dccg/dcn20/dcn20_dccg.h
+++ b/drivers/gpu/drm/amd/display/dc/dccg/dcn20/dcn20_dccg.h
@@ -38,7 +38,11 @@
        DCCG_SRII(PIXEL_RATE_CNTL, OTG, 0),\
        DCCG_SRII(PIXEL_RATE_CNTL, OTG, 1),\
        SR(DISPCLK_FREQ_CHANGE_CNTL),\
-       SR(DC_MEM_GLOBAL_PWR_REQ_CNTL)
+       SR(DC_MEM_GLOBAL_PWR_REQ_CNTL),\
+       SR(MICROSECOND_TIME_BASE_DIV),\
+       SR(MILLISECOND_TIME_BASE_DIV),\
+       SR(DCCG_GATE_DISABLE_CNTL),\
+       SR(DCCG_GATE_DISABLE_CNTL2)
 
 #define DCCG_REG_LIST_DCN2() \
        DCCG_COMMON_REG_LIST_DCN_BASE(),\
diff --git a/drivers/gpu/drm/amd/display/dc/dccg/dcn301/dcn301_dccg.h 
b/drivers/gpu/drm/amd/display/dc/dccg/dcn301/dcn301_dccg.h
index 067e49cb238e..e2381ca0be0b 100644
--- a/drivers/gpu/drm/amd/display/dc/dccg/dcn301/dcn301_dccg.h
+++ b/drivers/gpu/drm/amd/display/dc/dccg/dcn301/dcn301_dccg.h
@@ -34,7 +34,13 @@
        DCCG_SRII(DTO_PARAM, DPPCLK, 1),\
        DCCG_SRII(DTO_PARAM, DPPCLK, 2),\
        DCCG_SRII(DTO_PARAM, DPPCLK, 3),\
-       SR(REFCLK_CNTL)
+       SR(REFCLK_CNTL),\
+       SR(DISPCLK_FREQ_CHANGE_CNTL),\
+       SR(DC_MEM_GLOBAL_PWR_REQ_CNTL),\
+       SR(MICROSECOND_TIME_BASE_DIV),\
+       SR(MILLISECOND_TIME_BASE_DIV),\
+       SR(DCCG_GATE_DISABLE_CNTL),\
+       SR(DCCG_GATE_DISABLE_CNTL2)
 
 #define DCCG_MASK_SH_LIST_DCN301(mask_sh) \
        DCCG_SFI(DPPCLK_DTO_CTRL, DTO_ENABLE, DPPCLK, 0, mask_sh),\
diff --git a/drivers/gpu/drm/amd/display/dc/dccg/dcn31/dcn31_dccg.h 
b/drivers/gpu/drm/amd/display/dc/dccg/dcn31/dcn31_dccg.h
index bf659920d4cc..b5e3849ef12a 100644
--- a/drivers/gpu/drm/amd/display/dc/dccg/dcn31/dcn31_dccg.h
+++ b/drivers/gpu/drm/amd/display/dc/dccg/dcn31/dcn31_dccg.h
@@ -64,9 +64,12 @@
        SR(DSCCLK1_DTO_PARAM),\
        SR(DSCCLK2_DTO_PARAM),\
        SR(DSCCLK_DTO_CTRL),\
+       SR(DCCG_GATE_DISABLE_CNTL),\
        SR(DCCG_GATE_DISABLE_CNTL2),\
        SR(DCCG_GATE_DISABLE_CNTL3),\
-       SR(HDMISTREAMCLK0_DTO_PARAM)
+       SR(HDMISTREAMCLK0_DTO_PARAM),\
+       SR(DC_MEM_GLOBAL_PWR_REQ_CNTL),\
+       SR(MICROSECOND_TIME_BASE_DIV)
 
 
 #define DCCG_MASK_SH_LIST_DCN31(mask_sh) \
diff --git a/drivers/gpu/drm/amd/display/dc/dccg/dcn314/dcn314_dccg.h 
b/drivers/gpu/drm/amd/display/dc/dccg/dcn314/dcn314_dccg.h
index a609635f35db..ecbdc05f7c45 100644
--- a/drivers/gpu/drm/amd/display/dc/dccg/dcn314/dcn314_dccg.h
+++ b/drivers/gpu/drm/amd/display/dc/dccg/dcn314/dcn314_dccg.h
@@ -70,11 +70,14 @@
        SR(DSCCLK2_DTO_PARAM),\
        SR(DSCCLK3_DTO_PARAM),\
        SR(DSCCLK_DTO_CTRL),\
+       SR(DCCG_GATE_DISABLE_CNTL),\
        SR(DCCG_GATE_DISABLE_CNTL2),\
        SR(DCCG_GATE_DISABLE_CNTL3),\
        SR(HDMISTREAMCLK0_DTO_PARAM),\
        SR(OTG_PIXEL_RATE_DIV),\
-       SR(DTBCLK_P_CNTL)
+       SR(DTBCLK_P_CNTL),\
+       SR(DC_MEM_GLOBAL_PWR_REQ_CNTL),\
+       SR(MICROSECOND_TIME_BASE_DIV)
 
 #define DCCG_MASK_SH_LIST_DCN314_COMMON(mask_sh) \
        DCCG_SFI(DPPCLK_DTO_CTRL, DTO_DB_EN, DPPCLK, 0, mask_sh),\
-- 
2.43.0

Reply via email to