<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<p style="font-family:Arial;font-size:10pt;color:#0000FF;margin:5pt;" align="Left">
[AMD Official Use Only]<br>
</p>
<br>
<div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Reviewed-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com><br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Aurabindo Pillai <aurabindo.pillai@amd.com><br>
<b>Sent:</b> November 15, 2021 2:59 PM<br>
<b>To:</b> amd-gfx@lists.freedesktop.org <amd-gfx@lists.freedesktop.org><br>
<b>Cc:</b> Lakha, Bhawanpreet <Bhawanpreet.Lakha@amd.com>; Siqueira, Rodrigo <Rodrigo.Siqueira@amd.com>; Pillai, Aurabindo <Aurabindo.Pillai@amd.com>; Wang, Angus <Angus.Wang@amd.com>; Chalmers, Wesley <Wesley.Chalmers@amd.com>; Leung, Martin <Martin.Leung@amd.com>;
 Zhuo, Qingqing <Qingqing.Zhuo@amd.com><br>
<b>Subject:</b> [PATCH] drm/amd/display: Fix LTTPR not Enabled on HP ZBook G8 laptop</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">From: Angus Wang <angus.wang@amd.com><br>
<br>
[WHY]<br>
Previous LTTPR change has caused a regression that led to an<br>
issue where LTTPR is disabled<br>
<br>
[HOW]<br>
Extended changes from previous fix to DCN30X<br>
<br>
Reviewed-by: Wesley Chalmers <wesley.chalmers@amd.com><br>
Reviewed-by: Martin Leung <Martin.Leung@amd.com><br>
Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com><br>
Signed-off-by: Angus Wang <angus.wang@amd.com><br>
---<br>
 .../amd/display/dc/dcn301/dcn301_resource.c    | 18 ++++++++++++++++++<br>
 .../amd/display/dc/dcn302/dcn302_resource.c    | 18 ++++++++++++++++++<br>
 .../amd/display/dc/dcn303/dcn303_resource.c    | 17 +++++++++++++++++<br>
 3 files changed, 53 insertions(+)<br>
<br>
diff --git a/drivers/gpu/drm/amd/display/dc/dcn301/dcn301_resource.c b/drivers/gpu/drm/amd/display/dc/dcn301/dcn301_resource.c<br>
index 2650d3bd50ec..9cc1610360bd 100644<br>
--- a/drivers/gpu/drm/amd/display/dc/dcn301/dcn301_resource.c<br>
+++ b/drivers/gpu/drm/amd/display/dc/dcn301/dcn301_resource.c<br>
@@ -1485,6 +1485,24 @@ static bool dcn301_resource_construct(<br>
         dc->caps.color.mpc.ogam_rom_caps.hlg = 0;<br>
         dc->caps.color.mpc.ocsc = 1;<br>
 <br>
+       /* read VBIOS LTTPR caps */<br>
+<br>
+       if (ctx->dc_bios->funcs->get_lttpr_caps) {<br>
+               enum bp_result bp_query_result;<br>
+               uint8_t is_vbios_lttpr_enable = 0;<br>
+<br>
+               bp_query_result = ctx->dc_bios->funcs->get_lttpr_caps(ctx->dc_bios, &is_vbios_lttpr_enable);<br>
+               dc->caps.vbios_lttpr_enable = (bp_query_result == BP_RESULT_OK) && !!is_vbios_lttpr_enable;<br>
+       }<br>
+<br>
+       if (ctx->dc_bios->funcs->get_lttpr_interop) {<br>
+               enum bp_result bp_query_result;<br>
+               uint8_t is_vbios_interop_enabled = 0;<br>
+<br>
+               bp_query_result = ctx->dc_bios->funcs->get_lttpr_interop(ctx->dc_bios, &is_vbios_interop_enabled);<br>
+               dc->caps.vbios_lttpr_aware = (bp_query_result == BP_RESULT_OK) && !!is_vbios_interop_enabled;<br>
+       }<br>
+<br>
         if (dc->ctx->dce_environment == DCE_ENV_PRODUCTION_DRV)<br>
                 dc->debug = debug_defaults_drv;<br>
         else if (dc->ctx->dce_environment == DCE_ENV_FPGA_MAXIMUS) {<br>
diff --git a/drivers/gpu/drm/amd/display/dc/dcn302/dcn302_resource.c b/drivers/gpu/drm/amd/display/dc/dcn302/dcn302_resource.c<br>
index fcf96cf08c76..058f5d71e037 100644<br>
--- a/drivers/gpu/drm/amd/display/dc/dcn302/dcn302_resource.c<br>
+++ b/drivers/gpu/drm/amd/display/dc/dcn302/dcn302_resource.c<br>
@@ -1557,6 +1557,24 @@ static bool dcn302_resource_construct(<br>
         dc->caps.color.mpc.ogam_rom_caps.hlg = 0;<br>
         dc->caps.color.mpc.ocsc = 1;<br>
 <br>
+       /* read VBIOS LTTPR caps */<br>
+       if (ctx->dc_bios->funcs->get_lttpr_caps) {<br>
+               enum bp_result bp_query_result;<br>
+               uint8_t is_vbios_lttpr_enable = 0;<br>
+<br>
+               bp_query_result = ctx->dc_bios->funcs->get_lttpr_caps(ctx->dc_bios, &is_vbios_lttpr_enable);<br>
+               dc->caps.vbios_lttpr_enable = (bp_query_result == BP_RESULT_OK) && !!is_vbios_lttpr_enable;<br>
+       }<br>
+<br>
+       if (ctx->dc_bios->funcs->get_lttpr_interop) {<br>
+               enum bp_result bp_query_result;<br>
+               uint8_t is_vbios_interop_enabled = 0;<br>
+<br>
+               bp_query_result = ctx->dc_bios->funcs->get_lttpr_interop(ctx->dc_bios,<br>
+                               &is_vbios_interop_enabled);<br>
+               dc->caps.vbios_lttpr_aware = (bp_query_result == BP_RESULT_OK) && !!is_vbios_interop_enabled;<br>
+       }<br>
+<br>
         if (dc->ctx->dce_environment == DCE_ENV_PRODUCTION_DRV)<br>
                 dc->debug = debug_defaults_drv;<br>
         else<br>
diff --git a/drivers/gpu/drm/amd/display/dc/dcn303/dcn303_resource.c b/drivers/gpu/drm/amd/display/dc/dcn303/dcn303_resource.c<br>
index 4a9b64023675..7024aeb0884c 100644<br>
--- a/drivers/gpu/drm/amd/display/dc/dcn303/dcn303_resource.c<br>
+++ b/drivers/gpu/drm/amd/display/dc/dcn303/dcn303_resource.c<br>
@@ -1500,6 +1500,23 @@ static bool dcn303_resource_construct(<br>
         dc->caps.color.mpc.ogam_rom_caps.hlg = 0;<br>
         dc->caps.color.mpc.ocsc = 1;<br>
 <br>
+       /* read VBIOS LTTPR caps */<br>
+       if (ctx->dc_bios->funcs->get_lttpr_caps) {<br>
+               enum bp_result bp_query_result;<br>
+               uint8_t is_vbios_lttpr_enable = 0;<br>
+<br>
+               bp_query_result = ctx->dc_bios->funcs->get_lttpr_caps(ctx->dc_bios, &is_vbios_lttpr_enable);<br>
+               dc->caps.vbios_lttpr_enable = (bp_query_result == BP_RESULT_OK) && !!is_vbios_lttpr_enable;<br>
+       }<br>
+<br>
+       if (ctx->dc_bios->funcs->get_lttpr_interop) {<br>
+               enum bp_result bp_query_result;<br>
+               uint8_t is_vbios_interop_enabled = 0;<br>
+<br>
+               bp_query_result = ctx->dc_bios->funcs->get_lttpr_interop(ctx->dc_bios, &is_vbios_interop_enabled);<br>
+               dc->caps.vbios_lttpr_aware = (bp_query_result == BP_RESULT_OK) && !!is_vbios_interop_enabled;<br>
+       }<br>
+<br>
         if (dc->ctx->dce_environment == DCE_ENV_PRODUCTION_DRV)<br>
                 dc->debug = debug_defaults_drv;<br>
         else<br>
-- <br>
2.30.2<br>
<br>
</div>
</span></font></div>
</div>
</body>
</html>