aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4676-drm-amd-display-Only-wait-for-DMUB-phy-init-on-dcn21.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4676-drm-amd-display-Only-wait-for-DMUB-phy-init-on-dcn21.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4676-drm-amd-display-Only-wait-for-DMUB-phy-init-on-dcn21.patch96
1 files changed, 96 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4676-drm-amd-display-Only-wait-for-DMUB-phy-init-on-dcn21.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4676-drm-amd-display-Only-wait-for-DMUB-phy-init-on-dcn21.patch
new file mode 100644
index 00000000..e3c108ef
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4676-drm-amd-display-Only-wait-for-DMUB-phy-init-on-dcn21.patch
@@ -0,0 +1,96 @@
+From 782580b82c79ff0c4f03499165587f81f9166545 Mon Sep 17 00:00:00 2001
+From: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
+Date: Thu, 7 Nov 2019 15:26:14 -0500
+Subject: [PATCH 4676/4736] drm/amd/display: Only wait for DMUB phy init on
+ dcn21
+
+[Why]
+The wait for PHY init won't finish if the firmware doesn't support it.
+
+[How]
+Only hook this functionality up on DCN21 and move it out of DCN20.
+
+For ASIC without support then this should return OK so we don't hang
+while waiting in DC.
+
+Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Acked-by: Leo Li <sunpeng.li@amd.com>
+---
+ drivers/gpu/drm/amd/display/dmub/src/dmub_dcn20.c | 5 -----
+ drivers/gpu/drm/amd/display/dmub/src/dmub_dcn20.h | 2 --
+ drivers/gpu/drm/amd/display/dmub/src/dmub_dcn21.c | 5 +++++
+ drivers/gpu/drm/amd/display/dmub/src/dmub_dcn21.h | 2 ++
+ drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c | 2 +-
+ 5 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn20.c b/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn20.c
+index e2b2cf2e01fd..6b7d54572aa3 100644
+--- a/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn20.c
++++ b/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn20.c
+@@ -135,8 +135,3 @@ bool dmub_dcn20_is_supported(struct dmub_srv *dmub)
+
+ return supported;
+ }
+-
+-bool dmub_dcn20_is_phy_init(struct dmub_srv *dmub)
+-{
+- return REG_READ(DMCUB_SCRATCH10) == 0;
+-}
+diff --git a/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn20.h b/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn20.h
+index e1ba748ca594..ca7db03b94f7 100644
+--- a/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn20.h
++++ b/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn20.h
+@@ -59,6 +59,4 @@ bool dmub_dcn20_is_hw_init(struct dmub_srv *dmub);
+
+ bool dmub_dcn20_is_supported(struct dmub_srv *dmub);
+
+-bool dmub_dcn20_is_phy_init(struct dmub_srv *dmub);
+-
+ #endif /* _DMUB_DCN20_H_ */
+diff --git a/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn21.c b/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn21.c
+index d40a808112e7..b9dc2dd645eb 100644
+--- a/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn21.c
++++ b/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn21.c
+@@ -124,3 +124,8 @@ bool dmub_dcn21_is_auto_load_done(struct dmub_srv *dmub)
+ {
+ return (REG_READ(DMCUB_SCRATCH0) == 3);
+ }
++
++bool dmub_dcn21_is_phy_init(struct dmub_srv *dmub)
++{
++ return REG_READ(DMCUB_SCRATCH10) == 0;
++}
+diff --git a/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn21.h b/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn21.h
+index f57969d8d56f..9e5f195e288f 100644
+--- a/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn21.h
++++ b/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn21.h
+@@ -42,4 +42,6 @@ void dmub_dcn21_setup_windows(struct dmub_srv *dmub,
+
+ bool dmub_dcn21_is_auto_load_done(struct dmub_srv *dmub);
+
++bool dmub_dcn21_is_phy_init(struct dmub_srv *dmub);
++
+ #endif /* _DMUB_DCN21_H_ */
+diff --git a/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c b/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c
+index 60c574a39c6a..3ec26f6af2e1 100644
+--- a/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c
++++ b/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c
+@@ -76,13 +76,13 @@ static bool dmub_srv_hw_setup(struct dmub_srv *dmub, enum dmub_asic asic)
+ funcs->get_inbox1_rptr = dmub_dcn20_get_inbox1_rptr;
+ funcs->set_inbox1_wptr = dmub_dcn20_set_inbox1_wptr;
+ funcs->is_supported = dmub_dcn20_is_supported;
+- funcs->is_phy_init = dmub_dcn20_is_phy_init;
+ funcs->is_hw_init = dmub_dcn20_is_hw_init;
+
+ if (asic == DMUB_ASIC_DCN21) {
+ funcs->backdoor_load = dmub_dcn21_backdoor_load;
+ funcs->setup_windows = dmub_dcn21_setup_windows;
+ funcs->is_auto_load_done = dmub_dcn21_is_auto_load_done;
++ funcs->is_phy_init = dmub_dcn21_is_phy_init;
+ }
+ break;
+
+--
+2.17.1
+