* [PATCH 00/17] DC Patches February 14, 2024
@ 2024-02-14 18:38 Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 01/17] drm/amd/display: Remove break after return Rodrigo Siqueira
` (17 more replies)
0 siblings, 18 replies; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo, Daniel Wheeler
This DC patchset brings improvements in multiple areas. In summary, we
highlight:
- Re-enable windowed MPO support for DCN32/321.
- Improvements in the subvp feature.
- Code clean-up.
- USB4 fixes.
Cc: Daniel Wheeler <daniel.wheeler@amd.com>
Thanks
Siqueira
Alvin Lee (2):
drm/amd/display: Generalize new minimal transition path
drm/amd/display: Remove pixle rate limit for subvp
Aric Cyr (2):
drm/amd/display: Fix nanosec stat overflow
drm/amd/display: 3.2.273
Ethan Bitnun (1):
drm/amd/display: Only log during optimize_bandwidth call
George Shen (1):
drm/amd/display: Check DP Alt mode DPCS state via DMUB
Lewis Huang (1):
drm/amd/display: Only allow dig mapping to pwrseq in new asic
Nicholas Kazlauskas (1):
drm/amd/display: Fix S4 hang polling on HW power up done for VBIOS
DMCUB
Rodrigo Siqueira (6):
drm/amd/display: Remove break after return
drm/amd/display: Initialize variable with default value
drm/amd/display: Remove unused file
drm/amd/display: Add SMU timeout check and retry
drm/amd/display: Remove redundant FPU guard
drm/amd/display: Drop unnecessary header
Swapnil Patel (1):
drm/amd/display: fix input states translation error for dcn35 & dcn351
Wayne Lin (1):
drm/amd/display: adjust few initialization order in dm
Wenjing Liu (1):
drm/amd/display: reenable windowed mpo odm support on dcn32 and dcn321
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 37 +++--
.../gpu/drm/amd/display/dc/basics/dce_calcs.c | 2 -
.../gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c | 3 -
.../display/dc/clk_mgr/dce100/dce_clk_mgr.c | 2 +-
.../display/dc/clk_mgr/dcn10/rv1_clk_mgr.c | 2 -
.../dc/clk_mgr/dcn10/rv1_clk_mgr_clk.c | 79 ----------
.../dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.c | 11 +-
.../display/dc/clk_mgr/dcn301/dcn301_smu.c | 6 +-
.../display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c | 4 +-
drivers/gpu/drm/amd/display/dc/core/dc.c | 146 +++++++-----------
drivers/gpu/drm/amd/display/dc/dc.h | 2 +-
.../drm/amd/display/dc/dce/dce_panel_cntl.c | 1 +
.../amd/display/dc/dcn301/dcn301_panel_cntl.c | 1 +
.../amd/display/dc/dcn31/dcn31_panel_cntl.c | 18 ++-
.../display/dc/dcn32/dcn32_dio_link_encoder.c | 85 +++++++---
.../display/dc/dcn32/dcn32_dio_link_encoder.h | 5 +
.../drm/amd/display/dc/dml/dcn32/dcn32_fpu.c | 1 -
.../display/dc/dml2/dml2_translation_helper.c | 9 +-
.../gpu/drm/amd/display/dc/hdcp/hdcp_msg.c | 2 -
.../gpu/drm/amd/display/dc/inc/core_types.h | 31 ++--
.../drm/amd/display/dc/inc/hw/panel_cntl.h | 2 +-
.../display/dc/irq/dcn20/irq_service_dcn20.c | 2 -
.../display/dc/irq/dcn21/irq_service_dcn21.c | 2 -
.../drm/amd/display/dc/link/link_factory.c | 26 +---
.../dc/resource/dcn20/dcn20_resource.c | 2 -
.../dc/resource/dcn32/dcn32_resource.c | 1 +
.../dc/resource/dcn321/dcn321_resource.c | 2 +-
.../gpu/drm/amd/display/dmub/src/dmub_dcn35.c | 8 +-
.../gpu/drm/amd/display/dmub/src/dmub_srv.c | 9 +-
.../drm/amd/display/modules/inc/mod_stats.h | 4 +-
30 files changed, 223 insertions(+), 282 deletions(-)
delete mode 100644 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr_clk.c
--
2.43.0
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH 01/17] drm/amd/display: Remove break after return
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-14 18:47 ` Hamza Mahfooz
2024-02-14 18:38 ` [PATCH 02/17] drm/amd/display: Initialize variable with default value Rodrigo Siqueira
` (16 subsequent siblings)
17 siblings, 1 reply; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo
Remove break after return since it will never be reached.
Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
---
drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c
index 28a2a837d2f0..86ee4fe4f5e3 100644
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c
+++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c
@@ -340,7 +340,6 @@ struct clk_mgr *dc_clk_mgr_create(struct dc_context *ctx, struct pp_smu_funcs *p
dcn32_clk_mgr_construct(ctx, clk_mgr, pp_smu, dccg);
return &clk_mgr->base;
- break;
}
case AMDGPU_FAMILY_GC_11_0_1: {
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 02/17] drm/amd/display: Initialize variable with default value
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 01/17] drm/amd/display: Remove break after return Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-14 18:48 ` Hamza Mahfooz
2024-02-14 18:38 ` [PATCH 03/17] drm/amd/display: Remove unused file Rodrigo Siqueira
` (15 subsequent siblings)
17 siblings, 1 reply; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo
Set a default value for target_div.
Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
---
drivers/gpu/drm/amd/display/dc/clk_mgr/dce100/dce_clk_mgr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dce100/dce_clk_mgr.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dce100/dce_clk_mgr.c
index 26feefbb8990..b77804cfde0f 100644
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dce100/dce_clk_mgr.c
+++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dce100/dce_clk_mgr.c
@@ -132,7 +132,7 @@ int dce_get_dp_ref_freq_khz(struct clk_mgr *clk_mgr_base)
int dprefclk_wdivider;
int dprefclk_src_sel;
int dp_ref_clk_khz;
- int target_div;
+ int target_div = 600000;
/* ASSERT DP Reference Clock source is from DFS*/
REG_GET(DPREFCLK_CNTL, DPREFCLK_SRC_SEL, &dprefclk_src_sel);
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 03/17] drm/amd/display: Remove unused file
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 01/17] drm/amd/display: Remove break after return Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 02/17] drm/amd/display: Initialize variable with default value Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-14 18:48 ` Hamza Mahfooz
2024-02-14 18:38 ` [PATCH 04/17] drm/amd/display: Add SMU timeout check and retry Rodrigo Siqueira
` (14 subsequent siblings)
17 siblings, 1 reply; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo
The file rv1_clk_mgr_clk.c is not used and for this reason useless. Drop
the unnecessary file.
Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
---
.../dc/clk_mgr/dcn10/rv1_clk_mgr_clk.c | 79 -------------------
1 file changed, 79 deletions(-)
delete mode 100644 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr_clk.c
diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr_clk.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr_clk.c
deleted file mode 100644
index 61dd12198a3c..000000000000
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr_clk.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2012-16 Advanced Micro Devices, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors: AMD
- *
- */
-
-#include "reg_helper.h"
-#include "clk_mgr_internal.h"
-#include "rv1_clk_mgr_clk.h"
-
-#include "ip/Discovery/hwid.h"
-#include "ip/Discovery/v1/ip_offset_1.h"
-#include "ip/CLK/clk_10_0_default.h"
-#include "ip/CLK/clk_10_0_offset.h"
-#include "ip/CLK/clk_10_0_reg.h"
-#include "ip/CLK/clk_10_0_sh_mask.h"
-
-#include "dce100/dce_clk_mgr.h"
-
-#define CLK_BASE_INNER(inst) \
- CLK_BASE__INST ## inst ## _SEG0
-
-
-#define CLK_REG(reg_name, block, inst)\
- CLK_BASE(mm ## block ## _ ## inst ## _ ## reg_name ## _BASE_IDX) + \
- mm ## block ## _ ## inst ## _ ## reg_name
-
-#define REG(reg_name) \
- CLK_REG(reg_name, CLK0, 0)
-
-
-/* Only used by testing framework*/
-void rv1_dump_clk_registers(struct clk_state_registers *regs, struct clk_bypass *bypass, struct clk_mgr *clk_mgr_base)
-{
- struct clk_mgr_internal *clk_mgr = TO_CLK_MGR_INTERNAL(clk_mgr_base);
-
- regs->CLK0_CLK8_CURRENT_CNT = REG_READ(CLK0_CLK8_CURRENT_CNT) / 10; //dcf clk
-
- bypass->dcfclk_bypass = REG_READ(CLK0_CLK8_BYPASS_CNTL) & 0x0007;
- if (bypass->dcfclk_bypass < 0 || bypass->dcfclk_bypass > 4)
- bypass->dcfclk_bypass = 0;
-
-
- regs->CLK0_CLK8_DS_CNTL = REG_READ(CLK0_CLK8_DS_CNTL) / 10; //dcf deep sleep divider
-
- regs->CLK0_CLK8_ALLOW_DS = REG_READ(CLK0_CLK8_ALLOW_DS); //dcf deep sleep allow
-
- regs->CLK0_CLK10_CURRENT_CNT = REG_READ(CLK0_CLK10_CURRENT_CNT) / 10; //dpref clk
-
- bypass->dispclk_pypass = REG_READ(CLK0_CLK10_BYPASS_CNTL) & 0x0007;
- if (bypass->dispclk_pypass < 0 || bypass->dispclk_pypass > 4)
- bypass->dispclk_pypass = 0;
-
- regs->CLK0_CLK11_CURRENT_CNT = REG_READ(CLK0_CLK11_CURRENT_CNT) / 10; //disp clk
-
- bypass->dprefclk_bypass = REG_READ(CLK0_CLK11_BYPASS_CNTL) & 0x0007;
- if (bypass->dprefclk_bypass < 0 || bypass->dprefclk_bypass > 4)
- bypass->dprefclk_bypass = 0;
-
-}
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 04/17] drm/amd/display: Add SMU timeout check and retry
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
` (2 preceding siblings ...)
2024-02-14 18:38 ` [PATCH 03/17] drm/amd/display: Remove unused file Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-14 18:47 ` Hamza Mahfooz
2024-02-14 18:38 ` [PATCH 05/17] drm/amd/display: Remove redundant FPU guard Rodrigo Siqueira
` (13 subsequent siblings)
17 siblings, 1 reply; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo
Instead of only asserting in the case of the SMU wait time is not what
we expect, add the SMU timeout check and try again.
Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
---
.../display/dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.c | 11 ++++++++---
.../drm/amd/display/dc/clk_mgr/dcn301/dcn301_smu.c | 6 +++++-
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.c
index d72acbb049b1..23b390245b5d 100644
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.c
+++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.c
@@ -26,6 +26,10 @@
#include "core_types.h"
#include "clk_mgr_internal.h"
#include "reg_helper.h"
+#include "dm_helpers.h"
+
+#include "rn_clk_mgr_vbios_smu.h"
+
#include <linux/delay.h>
#include "renoir_ip_offset.h"
@@ -33,8 +37,6 @@
#include "mp/mp_12_0_0_offset.h"
#include "mp/mp_12_0_0_sh_mask.h"
-#include "rn_clk_mgr_vbios_smu.h"
-
#define REG(reg_name) \
(MP0_BASE.instance[0].segment[mm ## reg_name ## _BASE_IDX] + mm ## reg_name)
@@ -120,7 +122,10 @@ static int rn_vbios_smu_send_msg_with_param(struct clk_mgr_internal *clk_mgr,
result = rn_smu_wait_for_response(clk_mgr, 10, 200000);
- ASSERT(result == VBIOSSMC_Result_OK || result == VBIOSSMC_Result_UnknownCmd);
+ if (IS_SMU_TIMEOUT(result)) {
+ ASSERT(0);
+ dm_helpers_smu_timeout(CTX, msg_id, param, 10 * 200000);
+ }
/* Actual dispclk set is returned in the parameter register */
return REG_READ(MP1_SMN_C2PMSG_83);
diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn301/dcn301_smu.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn301/dcn301_smu.c
index 19e5b3be9275..b4fb17b7a096 100644
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn301/dcn301_smu.c
+++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn301/dcn301_smu.c
@@ -29,6 +29,7 @@
#include <linux/delay.h>
#include "dcn301_smu.h"
+#include "dm_helpers.h"
#include "vangogh_ip_offset.h"
@@ -120,7 +121,10 @@ static int dcn301_smu_send_msg_with_param(struct clk_mgr_internal *clk_mgr,
result = dcn301_smu_wait_for_response(clk_mgr, 10, 200000);
- ASSERT(result == VBIOSSMC_Result_OK);
+ if (IS_SMU_TIMEOUT(result)) {
+ ASSERT(0);
+ dm_helpers_smu_timeout(CTX, msg_id, param, 10 * 200000);
+ }
/* Actual dispclk set is returned in the parameter register */
return REG_READ(MP1_SMN_C2PMSG_83);
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 05/17] drm/amd/display: Remove redundant FPU guard
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
` (3 preceding siblings ...)
2024-02-14 18:38 ` [PATCH 04/17] drm/amd/display: Add SMU timeout check and retry Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-14 18:48 ` Hamza Mahfooz
2024-02-14 18:38 ` [PATCH 06/17] drm/amd/display: adjust few initialization order in dm Rodrigo Siqueira
` (12 subsequent siblings)
17 siblings, 1 reply; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo
The function dcn32_build_wm_range_table call DC_FP_START/END. Drop the
unnecessary FPU guard.
Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
---
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c
index e64e45e4c833..ee5e7512a7ee 100644
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c
+++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c
@@ -243,10 +243,8 @@ void dcn32_init_clocks(struct clk_mgr *clk_mgr_base)
/* Get UCLK, update bounding box */
clk_mgr_base->funcs->get_memclk_states_from_smu(clk_mgr_base);
- DC_FP_START();
/* WM range table */
dcn32_build_wm_range_table(clk_mgr);
- DC_FP_END();
}
static void dcn32_update_clocks_update_dtb_dto(struct clk_mgr_internal *clk_mgr,
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 06/17] drm/amd/display: adjust few initialization order in dm
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
` (4 preceding siblings ...)
2024-02-14 18:38 ` [PATCH 05/17] drm/amd/display: Remove redundant FPU guard Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 07/17] drm/amd/display: Only allow dig mapping to pwrseq in new asic Rodrigo Siqueira
` (11 subsequent siblings)
17 siblings, 0 replies; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo, Stable, Aurabindo Pillai,
Rodrigo Siqueira
From: Wayne Lin <wayne.lin@amd.com>
[Why]
Observe error message "Can't retrieve aconnector in hpd_rx_irq_offload_work"
when boot up with a mst tbt4 dock connected. After analyzing, there are few
parts needed to be adjusted:
1. hpd_rx_offload_wq[].aconnector is not initialzed before the dmub outbox
hpd_irq handler get registered which causes the error message.
2. registeration of hpd and hpd_rx_irq event for usb4 dp tunneling is not
aligned with legacy interface sequence
[How]
Put DMUB_NOTIFICATION_HPD and DMUB_NOTIFICATION_HPD_IRQ handler
registration into register_hpd_handlers() to align other interfaces and
get hpd_rx_offload_wq[].aconnector initialized earlier than that.
Leave DMUB_NOTIFICATION_AUX_REPLY registered as it was since we need that
while calling dc_link_detect(). USB4 connection status will be proactively
detected by dc_link_detect_connection_type() in amdgpu_dm_initialize_drm_device()
Cc: Stable <stable@vger.kernel.org>
Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Acked-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Signed-off-by: Wayne Lin <wayne.lin@amd.com>
---
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 37 +++++++++----------
1 file changed, 18 insertions(+), 19 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index b9ac3d2f8029..ed0ad44dd1d8 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -1843,21 +1843,12 @@ static int amdgpu_dm_init(struct amdgpu_device *adev)
DRM_ERROR("amdgpu: fail to register dmub aux callback");
goto error;
}
- if (!register_dmub_notify_callback(adev, DMUB_NOTIFICATION_HPD, dmub_hpd_callback, true)) {
- DRM_ERROR("amdgpu: fail to register dmub hpd callback");
- goto error;
- }
- if (!register_dmub_notify_callback(adev, DMUB_NOTIFICATION_HPD_IRQ, dmub_hpd_callback, true)) {
- DRM_ERROR("amdgpu: fail to register dmub hpd callback");
- goto error;
- }
- }
-
- /* Enable outbox notification only after IRQ handlers are registered and DMUB is alive.
- * It is expected that DMUB will resend any pending notifications at this point, for
- * example HPD from DPIA.
- */
- if (dc_is_dmub_outbox_supported(adev->dm.dc)) {
+ /* Enable outbox notification only after IRQ handlers are registered and DMUB is alive.
+ * It is expected that DMUB will resend any pending notifications at this point. Note
+ * that hpd and hpd_irq handler registration are deferred to register_hpd_handlers() to
+ * align legacy interface initialization sequence. Connection status will be proactivly
+ * detected once in the amdgpu_dm_initialize_drm_device.
+ */
dc_enable_dmub_outbox(adev->dm.dc);
/* DPIA trace goes to dmesg logs only if outbox is enabled */
@@ -3546,6 +3537,14 @@ static void register_hpd_handlers(struct amdgpu_device *adev)
int_params.requested_polarity = INTERRUPT_POLARITY_DEFAULT;
int_params.current_polarity = INTERRUPT_POLARITY_DEFAULT;
+ if (dc_is_dmub_outbox_supported(adev->dm.dc)) {
+ if (!register_dmub_notify_callback(adev, DMUB_NOTIFICATION_HPD, dmub_hpd_callback, true))
+ DRM_ERROR("amdgpu: fail to register dmub hpd callback");
+
+ if (!register_dmub_notify_callback(adev, DMUB_NOTIFICATION_HPD_IRQ, dmub_hpd_callback, true))
+ DRM_ERROR("amdgpu: fail to register dmub hpd callback");
+ }
+
list_for_each_entry(connector,
&dev->mode_config.connector_list, head) {
@@ -3574,10 +3573,6 @@ static void register_hpd_handlers(struct amdgpu_device *adev)
handle_hpd_rx_irq,
(void *) aconnector);
}
-
- if (adev->dm.hpd_rx_offload_wq)
- adev->dm.hpd_rx_offload_wq[connector->index].aconnector =
- aconnector;
}
}
@@ -4589,6 +4584,10 @@ static int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev)
goto fail;
}
+ if (dm->hpd_rx_offload_wq)
+ dm->hpd_rx_offload_wq[aconnector->base.index].aconnector =
+ aconnector;
+
if (!dc_link_detect_connection_type(link, &new_connection_type))
DRM_ERROR("KMS: Failed to detect connector\n");
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 07/17] drm/amd/display: Only allow dig mapping to pwrseq in new asic
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
` (5 preceding siblings ...)
2024-02-14 18:38 ` [PATCH 06/17] drm/amd/display: adjust few initialization order in dm Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 08/17] drm/amd/display: Fix S4 hang polling on HW power up done for VBIOS DMCUB Rodrigo Siqueira
` (10 subsequent siblings)
17 siblings, 0 replies; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo, Lewis Huang, Stable, Mario Limonciello,
Anthony Koo, Rodrigo Siqueira
From: Lewis Huang <lewis.huang@amd.com>
[Why]
The old asic only have 1 pwrseq hw.
We don't need to map the diginst to pwrseq inst in old asic.
[How]
1. Only mapping dig to pwrseq for new asic.
2. Move mapping function into dcn specific panel control component
Cc: Stable <stable@vger.kernel.org> # v6.6+
Cc: Mario Limonciello <mario.limonciello@amd.com>
Link: https://gitlab.freedesktop.org/drm/amd/-/issues/3122
Reviewed-by: Anthony Koo <anthony.koo@amd.com>
Acked-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Signed-off-by: Lewis Huang <lewis.huang@amd.com>
---
.../drm/amd/display/dc/dce/dce_panel_cntl.c | 1 +
.../amd/display/dc/dcn301/dcn301_panel_cntl.c | 1 +
.../amd/display/dc/dcn31/dcn31_panel_cntl.c | 18 ++++++++++++-
.../drm/amd/display/dc/inc/hw/panel_cntl.h | 2 +-
.../drm/amd/display/dc/link/link_factory.c | 26 +------------------
5 files changed, 21 insertions(+), 27 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_panel_cntl.c b/drivers/gpu/drm/amd/display/dc/dce/dce_panel_cntl.c
index e8570060d007..5bca67407c5b 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_panel_cntl.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_panel_cntl.c
@@ -290,4 +290,5 @@ void dce_panel_cntl_construct(
dce_panel_cntl->base.funcs = &dce_link_panel_cntl_funcs;
dce_panel_cntl->base.ctx = init_data->ctx;
dce_panel_cntl->base.inst = init_data->inst;
+ dce_panel_cntl->base.pwrseq_inst = 0;
}
diff --git a/drivers/gpu/drm/amd/display/dc/dcn301/dcn301_panel_cntl.c b/drivers/gpu/drm/amd/display/dc/dcn301/dcn301_panel_cntl.c
index ad0df1a72a90..9e96a3ace207 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn301/dcn301_panel_cntl.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn301/dcn301_panel_cntl.c
@@ -215,4 +215,5 @@ void dcn301_panel_cntl_construct(
dcn301_panel_cntl->base.funcs = &dcn301_link_panel_cntl_funcs;
dcn301_panel_cntl->base.ctx = init_data->ctx;
dcn301_panel_cntl->base.inst = init_data->inst;
+ dcn301_panel_cntl->base.pwrseq_inst = 0;
}
diff --git a/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_panel_cntl.c b/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_panel_cntl.c
index 03248422d6ff..281be20b1a10 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_panel_cntl.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_panel_cntl.c
@@ -154,8 +154,24 @@ void dcn31_panel_cntl_construct(
struct dcn31_panel_cntl *dcn31_panel_cntl,
const struct panel_cntl_init_data *init_data)
{
+ uint8_t pwrseq_inst = 0xF;
+
dcn31_panel_cntl->base.funcs = &dcn31_link_panel_cntl_funcs;
dcn31_panel_cntl->base.ctx = init_data->ctx;
dcn31_panel_cntl->base.inst = init_data->inst;
- dcn31_panel_cntl->base.pwrseq_inst = init_data->pwrseq_inst;
+
+ switch (init_data->eng_id) {
+ case ENGINE_ID_DIGA:
+ pwrseq_inst = 0;
+ break;
+ case ENGINE_ID_DIGB:
+ pwrseq_inst = 1;
+ break;
+ default:
+ DC_LOG_WARNING("Unsupported pwrseq engine id: %d!\n", init_data->eng_id);
+ ASSERT(false);
+ break;
+ }
+
+ dcn31_panel_cntl->base.pwrseq_inst = pwrseq_inst;
}
diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/panel_cntl.h b/drivers/gpu/drm/amd/display/dc/inc/hw/panel_cntl.h
index 5dcbaa2db964..e97d964a1791 100644
--- a/drivers/gpu/drm/amd/display/dc/inc/hw/panel_cntl.h
+++ b/drivers/gpu/drm/amd/display/dc/inc/hw/panel_cntl.h
@@ -57,7 +57,7 @@ struct panel_cntl_funcs {
struct panel_cntl_init_data {
struct dc_context *ctx;
uint32_t inst;
- uint32_t pwrseq_inst;
+ uint32_t eng_id;
};
struct panel_cntl {
diff --git a/drivers/gpu/drm/amd/display/dc/link/link_factory.c b/drivers/gpu/drm/amd/display/dc/link/link_factory.c
index 37d3027c32dc..cf22b8f28ba6 100644
--- a/drivers/gpu/drm/amd/display/dc/link/link_factory.c
+++ b/drivers/gpu/drm/amd/display/dc/link/link_factory.c
@@ -370,30 +370,6 @@ static enum transmitter translate_encoder_to_transmitter(
}
}
-static uint8_t translate_dig_inst_to_pwrseq_inst(struct dc_link *link)
-{
- uint8_t pwrseq_inst = 0xF;
- struct dc_context *dc_ctx = link->dc->ctx;
-
- DC_LOGGER_INIT(dc_ctx->logger);
-
- switch (link->eng_id) {
- case ENGINE_ID_DIGA:
- pwrseq_inst = 0;
- break;
- case ENGINE_ID_DIGB:
- pwrseq_inst = 1;
- break;
- default:
- DC_LOG_WARNING("Unsupported pwrseq engine id: %d!\n", link->eng_id);
- ASSERT(false);
- break;
- }
-
- return pwrseq_inst;
-}
-
-
static void link_destruct(struct dc_link *link)
{
int i;
@@ -657,7 +633,7 @@ static bool construct_phy(struct dc_link *link,
link->link_id.id == CONNECTOR_ID_LVDS)) {
panel_cntl_init_data.ctx = dc_ctx;
panel_cntl_init_data.inst = panel_cntl_init_data.ctx->dc_edp_id_count;
- panel_cntl_init_data.pwrseq_inst = translate_dig_inst_to_pwrseq_inst(link);
+ panel_cntl_init_data.eng_id = link->eng_id;
link->panel_cntl =
link->dc->res_pool->funcs->panel_cntl_create(
&panel_cntl_init_data);
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 08/17] drm/amd/display: Fix S4 hang polling on HW power up done for VBIOS DMCUB
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
` (6 preceding siblings ...)
2024-02-14 18:38 ` [PATCH 07/17] drm/amd/display: Only allow dig mapping to pwrseq in new asic Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 09/17] drm/amd/display: Check DP Alt mode DPCS state via DMUB Rodrigo Siqueira
` (9 subsequent siblings)
17 siblings, 0 replies; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo, Nicholas Kazlauskas, Charlene Liu,
Rodrigo Siqueira
From: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
[Why]
VBIOS DMCUB firmware doesn't set the dal_fw bit and we end up hanging
waiting for HW power up done because of it.
[How]
Simplify the path and allow mailbox_rdy to be a functional check when
we detect VBIOS firmware.
Reviewed-by: Charlene Liu <charlene.liu@amd.com>
Acked-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
---
drivers/gpu/drm/amd/display/dmub/src/dmub_dcn35.c | 8 +++++++-
drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c | 9 +--------
2 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn35.c b/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn35.c
index 60223efc6fc8..53f359f3fae2 100644
--- a/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn35.c
+++ b/drivers/gpu/drm/amd/display/dmub/src/dmub_dcn35.c
@@ -555,8 +555,14 @@ uint32_t dmub_dcn35_read_inbox0_ack_register(struct dmub_srv *dmub)
bool dmub_dcn35_is_hw_powered_up(struct dmub_srv *dmub)
{
union dmub_fw_boot_status status;
+ uint32_t is_enable;
+
+ REG_GET(DMCUB_CNTL, DMCUB_ENABLE, &is_enable);
+ if (is_enable == 0)
+ return false;
status.all = REG_READ(DMCUB_SCRATCH0);
- return status.bits.hw_power_init_done;
+ return (status.bits.dal_fw && status.bits.hw_power_init_done && status.bits.mailbox_rdy) ||
+ (!status.bits.dal_fw && status.bits.mailbox_rdy);
}
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 fb66832dc996..cd97983cf759 100644
--- a/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c
+++ b/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c
@@ -800,20 +800,13 @@ enum dmub_status dmub_srv_cmd_execute(struct dmub_srv *dmub)
bool dmub_srv_is_hw_pwr_up(struct dmub_srv *dmub)
{
- union dmub_fw_boot_status status;
-
if (!dmub->hw_funcs.is_hw_powered_up)
return true;
if (!dmub->hw_funcs.is_hw_powered_up(dmub))
return false;
- if (!dmub->hw_funcs.is_hw_init(dmub))
- return false;
-
- status = dmub->hw_funcs.get_fw_status(dmub);
-
- return status.bits.dal_fw && status.bits.mailbox_rdy;
+ return true;
}
enum dmub_status dmub_srv_wait_for_hw_pwr_up(struct dmub_srv *dmub,
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 09/17] drm/amd/display: Check DP Alt mode DPCS state via DMUB
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
` (7 preceding siblings ...)
2024-02-14 18:38 ` [PATCH 08/17] drm/amd/display: Fix S4 hang polling on HW power up done for VBIOS DMCUB Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 10/17] drm/amd/display: Generalize new minimal transition path Rodrigo Siqueira
` (8 subsequent siblings)
17 siblings, 0 replies; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo, George Shen, Charlene Liu,
Rodrigo Siqueira
From: George Shen <george.shen@amd.com>
[Why]
Currently, driver state for DCN3.2 is not strictly matching HW state for
the USBC port. To reduce inconsistencies while debugging, the driver
should match HW configuration.
[How]
Update link encoder flag to indicate USBC port. Call into DMUB to check
when DP Alt mode is entered, and also to check for 2-lane versuse 4-lane
mode.
Reviewed-by: Charlene Liu <charlene.liu@amd.com>
Acked-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Signed-off-by: George Shen <george.shen@amd.com>
---
.../display/dc/dcn32/dcn32_dio_link_encoder.c | 85 ++++++++++++++-----
.../display/dc/dcn32/dcn32_dio_link_encoder.h | 5 ++
2 files changed, 71 insertions(+), 19 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_dio_link_encoder.c b/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_dio_link_encoder.c
index d761b0df2878..e224a028d68a 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_dio_link_encoder.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_dio_link_encoder.c
@@ -34,6 +34,7 @@
#include "dc_bios_types.h"
#include "link_enc_cfg.h"
+#include "dc_dmub_srv.h"
#include "gpio_service_interface.h"
#ifndef MIN
@@ -61,6 +62,38 @@
#define AUX_REG_WRITE(reg_name, val) \
dm_write_reg(CTX, AUX_REG(reg_name), val)
+static uint8_t phy_id_from_transmitter(enum transmitter t)
+{
+ uint8_t phy_id;
+
+ switch (t) {
+ case TRANSMITTER_UNIPHY_A:
+ phy_id = 0;
+ break;
+ case TRANSMITTER_UNIPHY_B:
+ phy_id = 1;
+ break;
+ case TRANSMITTER_UNIPHY_C:
+ phy_id = 2;
+ break;
+ case TRANSMITTER_UNIPHY_D:
+ phy_id = 3;
+ break;
+ case TRANSMITTER_UNIPHY_E:
+ phy_id = 4;
+ break;
+ case TRANSMITTER_UNIPHY_F:
+ phy_id = 5;
+ break;
+ case TRANSMITTER_UNIPHY_G:
+ phy_id = 6;
+ break;
+ default:
+ phy_id = 0;
+ break;
+ }
+ return phy_id;
+}
void enc32_hw_init(struct link_encoder *enc)
{
@@ -117,38 +150,50 @@ void dcn32_link_encoder_enable_dp_output(
}
}
-static bool dcn32_link_encoder_is_in_alt_mode(struct link_encoder *enc)
+static bool query_dp_alt_from_dmub(struct link_encoder *enc,
+ union dmub_rb_cmd *cmd)
{
struct dcn10_link_encoder *enc10 = TO_DCN10_LINK_ENC(enc);
- uint32_t dp_alt_mode_disable = 0;
- bool is_usb_c_alt_mode = false;
- if (enc->features.flags.bits.DP_IS_USB_C) {
- /* if value == 1 alt mode is disabled, otherwise it is enabled */
- REG_GET(RDPCSPIPE_PHY_CNTL6, RDPCS_PHY_DPALT_DISABLE, &dp_alt_mode_disable);
- is_usb_c_alt_mode = (dp_alt_mode_disable == 0);
- }
+ memset(cmd, 0, sizeof(*cmd));
+ cmd->query_dp_alt.header.type = DMUB_CMD__VBIOS;
+ cmd->query_dp_alt.header.sub_type =
+ DMUB_CMD__VBIOS_TRANSMITTER_QUERY_DP_ALT;
+ cmd->query_dp_alt.header.payload_bytes = sizeof(cmd->query_dp_alt.data);
+ cmd->query_dp_alt.data.phy_id = phy_id_from_transmitter(enc10->base.transmitter);
+
+ if (!dc_wake_and_execute_dmub_cmd(enc->ctx, cmd, DM_DMUB_WAIT_TYPE_WAIT_WITH_REPLY))
+ return false;
- return is_usb_c_alt_mode;
+ return true;
}
-static void dcn32_link_encoder_get_max_link_cap(struct link_encoder *enc,
+bool dcn32_link_encoder_is_in_alt_mode(struct link_encoder *enc)
+{
+ union dmub_rb_cmd cmd;
+
+ if (!query_dp_alt_from_dmub(enc, &cmd))
+ return false;
+
+ return (cmd.query_dp_alt.data.is_dp_alt_disable == 0);
+}
+
+void dcn32_link_encoder_get_max_link_cap(struct link_encoder *enc,
struct dc_link_settings *link_settings)
{
- struct dcn10_link_encoder *enc10 = TO_DCN10_LINK_ENC(enc);
- uint32_t is_in_usb_c_dp4_mode = 0;
+ union dmub_rb_cmd cmd;
dcn10_link_encoder_get_max_link_cap(enc, link_settings);
- /* in usb c dp2 mode, max lane count is 2 */
- if (enc->funcs->is_in_alt_mode && enc->funcs->is_in_alt_mode(enc)) {
- REG_GET(RDPCSPIPE_PHY_CNTL6, RDPCS_PHY_DPALT_DP4, &is_in_usb_c_dp4_mode);
- if (!is_in_usb_c_dp4_mode)
- link_settings->lane_count = MIN(LANE_COUNT_TWO, link_settings->lane_count);
- }
+ if (!query_dp_alt_from_dmub(enc, &cmd))
+ return;
+ if (cmd.query_dp_alt.data.is_usb &&
+ cmd.query_dp_alt.data.is_dp4 == 0)
+ link_settings->lane_count = MIN(LANE_COUNT_TWO, link_settings->lane_count);
}
+
static const struct link_encoder_funcs dcn32_link_enc_funcs = {
.read_state = link_enc2_read_state,
.validate_output_with_stream =
@@ -203,13 +248,15 @@ void dcn32_link_encoder_construct(
enc10->base.hpd_source = init_data->hpd_source;
enc10->base.connector = init_data->connector;
-
enc10->base.preferred_engine = ENGINE_ID_UNKNOWN;
enc10->base.features = *enc_features;
if (enc10->base.connector.id == CONNECTOR_ID_USBC)
enc10->base.features.flags.bits.DP_IS_USB_C = 1;
+ if (enc10->base.connector.id == CONNECTOR_ID_USBC)
+ enc10->base.features.flags.bits.DP_IS_USB_C = 1;
+
enc10->base.transmitter = init_data->transmitter;
/* set the flag to indicate whether driver poll the I2C data pin
diff --git a/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_dio_link_encoder.h b/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_dio_link_encoder.h
index bbcfce06bec0..2d5f25290ed1 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_dio_link_encoder.h
+++ b/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_dio_link_encoder.h
@@ -53,4 +53,9 @@ void dcn32_link_encoder_enable_dp_output(
const struct dc_link_settings *link_settings,
enum clock_source_id clock_source);
+bool dcn32_link_encoder_is_in_alt_mode(struct link_encoder *enc);
+
+void dcn32_link_encoder_get_max_link_cap(struct link_encoder *enc,
+ struct dc_link_settings *link_settings);
+
#endif /* __DC_LINK_ENCODER__DCN32_H__ */
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 10/17] drm/amd/display: Generalize new minimal transition path
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
` (8 preceding siblings ...)
2024-02-14 18:38 ` [PATCH 09/17] drm/amd/display: Check DP Alt mode DPCS state via DMUB Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 11/17] drm/amd/display: fix input states translation error for dcn35 & dcn351 Rodrigo Siqueira
` (7 subsequent siblings)
17 siblings, 0 replies; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo, Alvin Lee, Wenjing Liu, Rodrigo Siqueira
From: Alvin Lee <alvin.lee2@amd.com>
Previously the new minimal transition path was only used for windowed
MPO + ODM for plane scaling updates. However, we want to generalize the
transition for all cases whenever a non-seamless transition is detected
(such as for MPO -> SubVP + MPC).
To make this change we add pointers in the plane state, stream, and
pointers in the stream state to the dc_scratch state and backup and
restore these so the minimal transition can take place successfully.
Reviewed-by: Wenjing Liu <wenjing.liu@amd.com>
Acked-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Signed-off-by: Alvin Lee <alvin.lee2@amd.com>
---
drivers/gpu/drm/amd/display/dc/core/dc.c | 146 +++++++-----------
.../gpu/drm/amd/display/dc/inc/core_types.h | 31 ++--
2 files changed, 77 insertions(+), 100 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
index 4d5194293dbd..5211c1c0f3c0 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
@@ -2032,7 +2032,7 @@ static enum dc_status dc_commit_state_no_check(struct dc *dc, struct dc_state *c
return result;
}
-static bool commit_minimal_transition_state(struct dc *dc,
+static bool commit_minimal_transition_state_legacy(struct dc *dc,
struct dc_state *transition_base_context);
/**
@@ -2098,7 +2098,7 @@ enum dc_status dc_commit_streams(struct dc *dc,
}
if (handle_exit_odm2to1)
- res = commit_minimal_transition_state(dc, dc->current_state);
+ res = commit_minimal_transition_state_legacy(dc, dc->current_state);
context = dc_state_create_current_copy(dc);
if (!context)
@@ -2952,8 +2952,8 @@ static void copy_stream_update_to_stream(struct dc *dc,
}
}
-static void backup_plane_states_for_stream(
- struct dc_plane_state plane_states[MAX_SURFACE_NUM],
+static void backup_planes_and_stream_state(
+ struct dc_scratch_space *scratch,
struct dc_stream_state *stream)
{
int i;
@@ -2962,12 +2962,20 @@ static void backup_plane_states_for_stream(
if (!status)
return;
- for (i = 0; i < status->plane_count; i++)
- plane_states[i] = *status->plane_states[i];
+ for (i = 0; i < status->plane_count; i++) {
+ scratch->plane_states[i] = *status->plane_states[i];
+ scratch->gamma_correction[i] = *status->plane_states[i]->gamma_correction;
+ scratch->in_transfer_func[i] = *status->plane_states[i]->in_transfer_func;
+ scratch->lut3d_func[i] = *status->plane_states[i]->lut3d_func;
+ scratch->in_shaper_func[i] = *status->plane_states[i]->in_shaper_func;
+ scratch->blend_tf[i] = *status->plane_states[i]->blend_tf;
+ }
+ scratch->stream_state = *stream;
+ scratch->out_transfer_func = *stream->out_transfer_func;
}
-static void restore_plane_states_for_stream(
- struct dc_plane_state plane_states[MAX_SURFACE_NUM],
+static void restore_planes_and_stream_state(
+ struct dc_scratch_space *scratch,
struct dc_stream_state *stream)
{
int i;
@@ -2976,8 +2984,16 @@ static void restore_plane_states_for_stream(
if (!status)
return;
- for (i = 0; i < status->plane_count; i++)
- *status->plane_states[i] = plane_states[i];
+ for (i = 0; i < status->plane_count; i++) {
+ *status->plane_states[i] = scratch->plane_states[i];
+ *status->plane_states[i]->gamma_correction = scratch->gamma_correction[i];
+ *status->plane_states[i]->in_transfer_func = scratch->in_transfer_func[i];
+ *status->plane_states[i]->lut3d_func = scratch->lut3d_func[i];
+ *status->plane_states[i]->in_shaper_func = scratch->in_shaper_func[i];
+ *status->plane_states[i]->blend_tf = scratch->blend_tf[i];
+ }
+ *stream = scratch->stream_state;
+ *stream->out_transfer_func = scratch->out_transfer_func;
}
static bool update_planes_and_stream_state(struct dc *dc,
@@ -3003,7 +3019,7 @@ static bool update_planes_and_stream_state(struct dc *dc,
}
context = dc->current_state;
- backup_plane_states_for_stream(dc->current_state->scratch.plane_states, stream);
+ backup_planes_and_stream_state(&dc->current_state->scratch, stream);
update_type = dc_check_update_surfaces_for_stream(
dc, srf_updates, surface_count, stream_update, stream_status);
@@ -3103,7 +3119,7 @@ static bool update_planes_and_stream_state(struct dc *dc,
*new_context = context;
*new_update_type = update_type;
- backup_plane_states_for_stream(context->scratch.plane_states, stream);
+ backup_planes_and_stream_state(&context->scratch, stream);
return true;
@@ -4047,7 +4063,23 @@ static struct dc_state *create_minimal_transition_state(struct dc *dc,
return minimal_transition_context;
}
-static bool commit_minimal_transition_state_for_windowed_mpo_odm(struct dc *dc,
+
+/**
+ * commit_minimal_transition_state - Commit a minimal state based on current or new context
+ *
+ * @dc: DC structure, used to get the current state
+ * @context: New context
+ * @stream: Stream getting the update for the flip
+ *
+ * The function takes in current state and new state and determine a minimal transition state
+ * as the intermediate step which could make the transition between current and new states
+ * seamless. If found, it will commit the minimal transition state and update current state to
+ * this minimal transition state and return true, if not, it will return false.
+ *
+ * Return:
+ * Return True if the minimal transition succeeded, false otherwise
+ */
+static bool commit_minimal_transition_state(struct dc *dc,
struct dc_state *context,
struct dc_stream_state *stream)
{
@@ -4056,12 +4088,6 @@ static bool commit_minimal_transition_state_for_windowed_mpo_odm(struct dc *dc,
struct pipe_split_policy_backup policy;
/* commit based on new context */
- /* Since all phantom pipes are removed in full validation,
- * we have to save and restore the subvp/mall config when
- * we do a minimal transition since the flags marking the
- * pipe as subvp/phantom will be cleared (dc copy constructor
- * creates a shallow copy).
- */
minimal_transition_context = create_minimal_transition_state(dc,
context, &policy);
if (minimal_transition_context) {
@@ -4078,7 +4104,7 @@ static bool commit_minimal_transition_state_for_windowed_mpo_odm(struct dc *dc,
if (!success) {
/* commit based on current context */
- restore_plane_states_for_stream(dc->current_state->scratch.plane_states, stream);
+ restore_planes_and_stream_state(&dc->current_state->scratch, stream);
minimal_transition_context = create_minimal_transition_state(dc,
dc->current_state, &policy);
if (minimal_transition_context) {
@@ -4091,7 +4117,7 @@ static bool commit_minimal_transition_state_for_windowed_mpo_odm(struct dc *dc,
}
release_minimal_transition_state(dc, minimal_transition_context, &policy);
}
- restore_plane_states_for_stream(context->scratch.plane_states, stream);
+ restore_planes_and_stream_state(&context->scratch, stream);
}
ASSERT(success);
@@ -4099,7 +4125,7 @@ static bool commit_minimal_transition_state_for_windowed_mpo_odm(struct dc *dc,
}
/**
- * commit_minimal_transition_state - Create a transition pipe split state
+ * commit_minimal_transition_state_legacy - Create a transition pipe split state
*
* @dc: Used to get the current state status
* @transition_base_context: New transition state
@@ -4116,7 +4142,7 @@ static bool commit_minimal_transition_state_for_windowed_mpo_odm(struct dc *dc,
* Return:
* Return false if something is wrong in the transition state.
*/
-static bool commit_minimal_transition_state(struct dc *dc,
+static bool commit_minimal_transition_state_legacy(struct dc *dc,
struct dc_state *transition_base_context)
{
struct dc_state *transition_context;
@@ -4354,53 +4380,6 @@ static bool fast_update_only(struct dc *dc,
&& !full_update_required(dc, srf_updates, surface_count, stream_update, stream);
}
-static bool should_commit_minimal_transition_for_windowed_mpo_odm(struct dc *dc,
- struct dc_stream_state *stream,
- struct dc_state *context)
-{
- struct pipe_ctx *cur_pipe, *new_pipe;
- bool cur_is_odm_in_use, new_is_odm_in_use;
- struct dc_stream_status *cur_stream_status = stream_get_status(dc->current_state, stream);
- struct dc_stream_status *new_stream_status = stream_get_status(context, stream);
-
- if (!dc->debug.enable_single_display_2to1_odm_policy ||
- !dc->config.enable_windowed_mpo_odm)
- /* skip the check if windowed MPO ODM or dynamic ODM is turned
- * off.
- */
- return false;
-
- if (context == dc->current_state)
- /* skip the check for fast update */
- return false;
-
- if (new_stream_status->plane_count != cur_stream_status->plane_count)
- /* plane count changed, not a plane scaling update so not the
- * case we are looking for
- */
- return false;
-
- cur_pipe = resource_get_otg_master_for_stream(&dc->current_state->res_ctx, stream);
- new_pipe = resource_get_otg_master_for_stream(&context->res_ctx, stream);
- if (!cur_pipe || !new_pipe)
- return false;
- cur_is_odm_in_use = resource_get_odm_slice_count(cur_pipe) > 1;
- new_is_odm_in_use = resource_get_odm_slice_count(new_pipe) > 1;
- if (cur_is_odm_in_use == new_is_odm_in_use)
- /* ODM state isn't changed, not the case we are looking for */
- return false;
-
- if (dc->hwss.is_pipe_topology_transition_seamless &&
- dc->hwss.is_pipe_topology_transition_seamless(
- dc, dc->current_state, context))
- /* transition can be achieved without the need for committing
- * minimal transition state first
- */
- return false;
-
- return true;
-}
-
bool dc_update_planes_and_stream(struct dc *dc,
struct dc_surface_update *srf_updates, int surface_count,
struct dc_stream_state *stream,
@@ -4433,7 +4412,7 @@ bool dc_update_planes_and_stream(struct dc *dc,
/* on plane addition, minimal state is the current one */
if (force_minimal_pipe_splitting && is_plane_addition &&
- !commit_minimal_transition_state(dc, dc->current_state))
+ !commit_minimal_transition_state_legacy(dc, dc->current_state))
return false;
if (!update_planes_and_stream_state(
@@ -4448,32 +4427,19 @@ bool dc_update_planes_and_stream(struct dc *dc,
/* on plane removal, minimal state is the new one */
if (force_minimal_pipe_splitting && !is_plane_addition) {
- /* Since all phantom pipes are removed in full validation,
- * we have to save and restore the subvp/mall config when
- * we do a minimal transition since the flags marking the
- * pipe as subvp/phantom will be cleared (dc copy constructor
- * creates a shallow copy).
- */
- if (!commit_minimal_transition_state(dc, context)) {
+ if (!commit_minimal_transition_state_legacy(dc, context)) {
dc_state_release(context);
return false;
}
update_type = UPDATE_TYPE_FULL;
}
- /* when windowed MPO ODM is supported, we need to handle a special case
- * where we can transition between ODM combine and MPC combine due to
- * plane scaling update. This transition will require us to commit
- * minimal transition state. The condition to trigger this update can't
- * be predicted by could_mpcc_tree_change_for_active_pipes because we
- * can only determine it after DML validation. Therefore we can't rely
- * on the existing commit minimal transition state sequence. Instead
- * we have to add additional handling here to handle this transition
- * with its own special sequence.
- */
- if (should_commit_minimal_transition_for_windowed_mpo_odm(dc, stream, context))
- commit_minimal_transition_state_for_windowed_mpo_odm(dc,
+ if (dc->hwss.is_pipe_topology_transition_seamless &&
+ !dc->hwss.is_pipe_topology_transition_seamless(
+ dc, dc->current_state, context)) {
+ commit_minimal_transition_state(dc,
context, stream);
+ }
update_seamless_boot_flags(dc, context, surface_count, stream);
if (is_fast_update_only && !dc->debug.enable_legacy_fast_update) {
commit_planes_for_stream_fast(dc,
diff --git a/drivers/gpu/drm/amd/display/dc/inc/core_types.h b/drivers/gpu/drm/amd/display/dc/inc/core_types.h
index 3a6bf77a6873..b1b72e688f74 100644
--- a/drivers/gpu/drm/amd/display/dc/inc/core_types.h
+++ b/drivers/gpu/drm/amd/display/dc/inc/core_types.h
@@ -522,6 +522,25 @@ struct dc_dmub_cmd {
enum dm_dmub_wait_type wait_type;
};
+struct dc_scratch_space {
+ /* used to temporarily backup plane states of a stream during
+ * dc update. The reason is that plane states are overwritten
+ * with surface updates in dc update. Once they are overwritten
+ * current state is no longer valid. We want to temporarily
+ * store current value in plane states so we can still recover
+ * a valid current state during dc update.
+ */
+ struct dc_plane_state plane_states[MAX_SURFACE_NUM];
+ struct dc_gamma gamma_correction[MAX_SURFACE_NUM];
+ struct dc_transfer_func in_transfer_func[MAX_SURFACE_NUM];
+ struct dc_3dlut lut3d_func[MAX_SURFACE_NUM];
+ struct dc_transfer_func in_shaper_func[MAX_SURFACE_NUM];
+ struct dc_transfer_func blend_tf[MAX_SURFACE_NUM];
+
+ struct dc_stream_state stream_state;
+ struct dc_transfer_func out_transfer_func;
+};
+
/**
* struct dc_state - The full description of a state requested by users
*/
@@ -604,16 +623,8 @@ struct dc_state {
unsigned int stutter_period_us;
} perf_params;
- struct {
- /* used to temporarily backup plane states of a stream during
- * dc update. The reason is that plane states are overwritten
- * with surface updates in dc update. Once they are overwritten
- * current state is no longer valid. We want to temporarily
- * store current value in plane states so we can still recover
- * a valid current state during dc update.
- */
- struct dc_plane_state plane_states[MAX_SURFACE_NUM];
- } scratch;
+
+ struct dc_scratch_space scratch;
};
struct replay_context {
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 11/17] drm/amd/display: fix input states translation error for dcn35 & dcn351
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
` (9 preceding siblings ...)
2024-02-14 18:38 ` [PATCH 10/17] drm/amd/display: Generalize new minimal transition path Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 12/17] drm/amd/display: Only log during optimize_bandwidth call Rodrigo Siqueira
` (6 subsequent siblings)
17 siblings, 0 replies; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo, Swapnil Patel, Charlene Liu,
Rodrigo Siqueira
From: Swapnil Patel <swapnil.patel@amd.com>
[Why]
Currently there is an error while translating input clock sates into
output clock states. The highest fclk setting from output sates is
being dropped because of this error.
[How]
For dcn35 and dcn351, make output_states equal to input states.
Reviewed-by: Charlene Liu <charlene.liu@amd.com>
Acked-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Signed-off-by: Swapnil Patel <swapnil.patel@amd.com>
---
.../drm/amd/display/dc/dml2/dml2_translation_helper.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/display/dc/dml2/dml2_translation_helper.c b/drivers/gpu/drm/amd/display/dc/dml2/dml2_translation_helper.c
index 23a608274096..1ba6933d2b36 100644
--- a/drivers/gpu/drm/amd/display/dc/dml2/dml2_translation_helper.c
+++ b/drivers/gpu/drm/amd/display/dc/dml2/dml2_translation_helper.c
@@ -398,7 +398,6 @@ void dml2_init_soc_states(struct dml2_context *dml2, const struct dc *in_dc,
/* Copy clocks tables entries, if available */
if (dml2->config.bbox_overrides.clks_table.num_states) {
p->in_states->num_states = dml2->config.bbox_overrides.clks_table.num_states;
-
for (i = 0; i < dml2->config.bbox_overrides.clks_table.num_entries_per_clk.num_dcfclk_levels; i++) {
p->in_states->state_array[i].dcfclk_mhz = dml2->config.bbox_overrides.clks_table.clk_entries[i].dcfclk_mhz;
}
@@ -437,6 +436,14 @@ void dml2_init_soc_states(struct dml2_context *dml2, const struct dc *in_dc,
}
dml2_policy_build_synthetic_soc_states(s, p);
+ if (dml2->v20.dml_core_ctx.project == dml_project_dcn35 ||
+ dml2->v20.dml_core_ctx.project == dml_project_dcn351) {
+ // Override last out_state with data from last in_state
+ // This will ensure that out_state contains max fclk
+ memcpy(&p->out_states->state_array[p->out_states->num_states - 1],
+ &p->in_states->state_array[p->in_states->num_states - 1],
+ sizeof(struct soc_state_bounding_box_st));
+ }
}
void dml2_translate_ip_params(const struct dc *in, struct ip_params_st *out)
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 12/17] drm/amd/display: Only log during optimize_bandwidth call
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
` (10 preceding siblings ...)
2024-02-14 18:38 ` [PATCH 11/17] drm/amd/display: fix input states translation error for dcn35 & dcn351 Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 13/17] drm/amd/display: Remove pixle rate limit for subvp Rodrigo Siqueira
` (5 subsequent siblings)
17 siblings, 0 replies; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo, Ethan Bitnun, Alvin Lee, Rodrigo Siqueira
From: Ethan Bitnun <etbitnun@amd.com>
Prevent logs during a prepare_bandwidth call to ensure log accuracy.
Reviewed-by: Alvin Lee <alvin.lee2@amd.com>
Acked-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Signed-off-by: Ethan Bitnun <etbitnun@amd.com>
---
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c
index ee5e7512a7ee..668f05c8654e 100644
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c
+++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c
@@ -815,7 +815,7 @@ static void dcn32_update_clocks(struct clk_mgr *clk_mgr_base,
dmcu->funcs->set_psr_wait_loop(dmcu,
clk_mgr_base->clks.dispclk_khz / 1000 / 7);
- if (dc->config.enable_auto_dpm_test_logs) {
+ if (dc->config.enable_auto_dpm_test_logs && safe_to_lower) {
dcn32_auto_dpm_test_log(new_clocks, clk_mgr, context);
}
}
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 13/17] drm/amd/display: Remove pixle rate limit for subvp
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
` (11 preceding siblings ...)
2024-02-14 18:38 ` [PATCH 12/17] drm/amd/display: Only log during optimize_bandwidth call Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 14/17] drm/amd/display: reenable windowed mpo odm support on dcn32 and dcn321 Rodrigo Siqueira
` (4 subsequent siblings)
17 siblings, 0 replies; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo, Alvin Lee, Nevenko Stupar,
Chaitanya Dhere, Rodrigo Siqueira
From: Alvin Lee <alvin.lee2@amd.com>
Subvp bugs related to 8K60 have been fixed, so remove the limit that
blocks 8K60 timings from enabling SubVP.
Reviewed-by: Nevenko Stupar <nevenko.stupar@amd.com>
Reviewed-by: Chaitanya Dhere <chaitanya.dhere@amd.com>
Acked-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Signed-off-by: Alvin Lee <alvin.lee2@amd.com>
---
drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c b/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c
index a0a65e099104..b49e1dc9d8ba 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c
@@ -623,7 +623,6 @@ static bool dcn32_assign_subvp_pipe(struct dc *dc,
* - Not TMZ surface
*/
if (pipe->plane_state && !pipe->top_pipe && !dcn32_is_center_timing(pipe) &&
- !(pipe->stream->timing.pix_clk_100hz / 10000 > DCN3_2_MAX_SUBVP_PIXEL_RATE_MHZ) &&
(!dcn32_is_psr_capable(pipe) || (context->stream_count == 1 && dc->caps.dmub_caps.subvp_psr)) &&
dc_state_get_pipe_subvp_type(context, pipe) == SUBVP_NONE &&
(refresh_rate < 120 || dcn32_allow_subvp_high_refresh_rate(dc, context, pipe)) &&
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 14/17] drm/amd/display: reenable windowed mpo odm support on dcn32 and dcn321
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
` (12 preceding siblings ...)
2024-02-14 18:38 ` [PATCH 13/17] drm/amd/display: Remove pixle rate limit for subvp Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 15/17] drm/amd/display: Drop unnecessary header Rodrigo Siqueira
` (3 subsequent siblings)
17 siblings, 0 replies; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo, Wenjing Liu, Martin Leung,
Rodrigo Siqueira
From: Wenjing Liu <wenjing.liu@amd.com>
[why]
The feature was disabled due to regression found during testing. Now
that all the pending issues are addressed, we are reenabling the power
saving feature again.
The feature optimizes dispclk level when user is using MPO capable
broswers or watching MPO capable videos in windowed mode. The feature
achieves power optimization by utilizing free pipes to process incoming
pixels in parallel. So it reduces max dispclk requirements for each
pipe.
Previously ODM power optimization will be disabled when MPO plane is
present due to technical challeges. This is mainly because ODM divides
pixel workload with respect to stream but MPO plane position and size
are arbitrary with respect to stream. The pixel processing workload of
an MPO plane is not guarenteed to be evenly distributed across DCN pipes.
For example if a plane is moved inside single ODM slice, all the
processing for the plane is distributed to the pipe in the current ODM
slice, while the other ODM slices don't need to process this plane. If
the plane is then moved to the middle crosing two ODM slices, each ODM
slice gets half of the workload. This is especially difficult when the
plane itself has a large source rect which can't be processed by single
DCN pipe. In this case we can't enable ODM power optimization when the
plane is only within one ODM slice.
[how]
To overcome the challeges, new pipe resource management is in place to
make sure a plane is validated with ODM power optimization support if
it can be validated regardless of its position and the same pipe
topology can be used regardless of the plane's position. When the plane
is moved outside current ODM slice, we will set recout to 0 so the pipe
can be idling without the need to update pipe topology. When the user
resizes a plane, it may result in downscaling ratio changes. When the
downscaling ratio is above single pipe's threshold, we will seamlessly
exit ODM power optimization and applies MPC combine to support the plane.
when downscaling ratio becomes smaller, we will seamlessly enter ODM
power optimization again. All these pipe transitions happen
automatically and quietly when the conditions are met without any visual
impacts to the user.
Reviewed-by: Martin Leung <martin.leung@amd.com>
Acked-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Signed-off-by: Wenjing Liu <wenjing.liu@amd.com>
---
drivers/gpu/drm/amd/display/dc/resource/dcn32/dcn32_resource.c | 1 +
.../gpu/drm/amd/display/dc/resource/dcn321/dcn321_resource.c | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn32/dcn32_resource.c b/drivers/gpu/drm/amd/display/dc/resource/dcn32/dcn32_resource.c
index 6f10052caeef..3f3951f3ba98 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn32/dcn32_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn32/dcn32_resource.c
@@ -2118,6 +2118,7 @@ static bool dcn32_resource_construct(
dc->config.use_pipe_ctx_sync_logic = true;
dc->config.dc_mode_clk_limit_support = true;
+ dc->config.enable_windowed_mpo_odm = true;
/* read VBIOS LTTPR caps */
{
if (ctx->dc_bios->funcs->get_lttpr_caps) {
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn321/dcn321_resource.c b/drivers/gpu/drm/amd/display/dc/resource/dcn321/dcn321_resource.c
index 6f832bf278cf..b356fed1726d 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn321/dcn321_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn321/dcn321_resource.c
@@ -1760,7 +1760,7 @@ static bool dcn321_resource_construct(
dc->caps.color.mpc.ocsc = 1;
dc->config.dc_mode_clk_limit_support = true;
- dc->config.enable_windowed_mpo_odm = false;
+ dc->config.enable_windowed_mpo_odm = true;
/* read VBIOS LTTPR caps */
{
if (ctx->dc_bios->funcs->get_lttpr_caps) {
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 15/17] drm/amd/display: Drop unnecessary header
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
` (13 preceding siblings ...)
2024-02-14 18:38 ` [PATCH 14/17] drm/amd/display: reenable windowed mpo odm support on dcn32 and dcn321 Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-14 18:49 ` Hamza Mahfooz
2024-02-14 18:38 ` [PATCH 16/17] drm/amd/display: Fix nanosec stat overflow Rodrigo Siqueira
` (2 subsequent siblings)
17 siblings, 1 reply; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo
A long time ago, the slab header was added to multiple files in DC. We
also included it in the os_types.h, which is included in many of those
DC files. At this point, there is no need to insert the slab.h header in
multiple files, so this commit drops those includes.
Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
---
drivers/gpu/drm/amd/display/dc/basics/dce_calcs.c | 2 --
drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c | 2 --
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c | 2 --
drivers/gpu/drm/amd/display/dc/hdcp/hdcp_msg.c | 2 --
drivers/gpu/drm/amd/display/dc/irq/dcn20/irq_service_dcn20.c | 2 --
drivers/gpu/drm/amd/display/dc/irq/dcn21/irq_service_dcn21.c | 2 --
drivers/gpu/drm/amd/display/dc/resource/dcn20/dcn20_resource.c | 2 --
7 files changed, 14 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/dc/basics/dce_calcs.c b/drivers/gpu/drm/amd/display/dc/basics/dce_calcs.c
index 39530b2ea495..b30c2cdc1a61 100644
--- a/drivers/gpu/drm/amd/display/dc/basics/dce_calcs.c
+++ b/drivers/gpu/drm/amd/display/dc/basics/dce_calcs.c
@@ -23,8 +23,6 @@
*
*/
-#include <linux/slab.h>
-
#include "resource.h"
#include "dm_services.h"
#include "dce_calcs.h"
diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c
index 86ee4fe4f5e3..9f0f25aee426 100644
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c
+++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c
@@ -23,8 +23,6 @@
*
*/
-#include <linux/slab.h>
-
#include "dal_asic_id.h"
#include "dc_types.h"
#include "dccg.h"
diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c
index 60761ff3cbf1..2a74e2d74909 100644
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c
+++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c
@@ -23,8 +23,6 @@
*
*/
-#include <linux/slab.h>
-
#include "reg_helper.h"
#include "core_types.h"
#include "clk_mgr_internal.h"
diff --git a/drivers/gpu/drm/amd/display/dc/hdcp/hdcp_msg.c b/drivers/gpu/drm/amd/display/dc/hdcp/hdcp_msg.c
index 25ffc052d53b..99e17c164ce7 100644
--- a/drivers/gpu/drm/amd/display/dc/hdcp/hdcp_msg.c
+++ b/drivers/gpu/drm/amd/display/dc/hdcp/hdcp_msg.c
@@ -23,8 +23,6 @@
*
*/
-#include <linux/slab.h>
-
#include "dm_services.h"
#include "dm_helpers.h"
#include "include/hdcp_msg_types.h"
diff --git a/drivers/gpu/drm/amd/display/dc/irq/dcn20/irq_service_dcn20.c b/drivers/gpu/drm/amd/display/dc/irq/dcn20/irq_service_dcn20.c
index e8baafa02443..916f0c974637 100644
--- a/drivers/gpu/drm/amd/display/dc/irq/dcn20/irq_service_dcn20.c
+++ b/drivers/gpu/drm/amd/display/dc/irq/dcn20/irq_service_dcn20.c
@@ -23,8 +23,6 @@
*
*/
-#include <linux/slab.h>
-
#include "dm_services.h"
#include "include/logger_interface.h"
diff --git a/drivers/gpu/drm/amd/display/dc/irq/dcn21/irq_service_dcn21.c b/drivers/gpu/drm/amd/display/dc/irq/dcn21/irq_service_dcn21.c
index 03c5e8ff8cbd..42cdfe6c3538 100644
--- a/drivers/gpu/drm/amd/display/dc/irq/dcn21/irq_service_dcn21.c
+++ b/drivers/gpu/drm/amd/display/dc/irq/dcn21/irq_service_dcn21.c
@@ -23,8 +23,6 @@
*
*/
-#include <linux/slab.h>
-
#include "dm_services.h"
#include "include/logger_interface.h"
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn20/dcn20_resource.c b/drivers/gpu/drm/amd/display/dc/resource/dcn20/dcn20_resource.c
index f9c5bc624be3..a2387cea1af9 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn20/dcn20_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn20/dcn20_resource.c
@@ -24,8 +24,6 @@
*
*/
-#include <linux/slab.h>
-
#include "dm_services.h"
#include "dc.h"
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 16/17] drm/amd/display: Fix nanosec stat overflow
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
` (14 preceding siblings ...)
2024-02-14 18:38 ` [PATCH 15/17] drm/amd/display: Drop unnecessary header Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 17/17] drm/amd/display: 3.2.273 Rodrigo Siqueira
2024-02-15 21:26 ` [PATCH 00/17] DC Patches February 14, 2024 Wheeler, Daniel
17 siblings, 0 replies; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo, Aric Cyr
From: Aric Cyr <aric.cyr@amd.com>
[Why]
Nanosec stats can overflow on long running systems potentially causing
statistic logging issues.
[How]
Use 64bit types for nanosec stats to ensure no overflow.
Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Aric Cyr <aric.cyr@amd.com>
---
drivers/gpu/drm/amd/display/modules/inc/mod_stats.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/modules/inc/mod_stats.h b/drivers/gpu/drm/amd/display/modules/inc/mod_stats.h
index 5960dd760e91..8ce6c22e5d04 100644
--- a/drivers/gpu/drm/amd/display/modules/inc/mod_stats.h
+++ b/drivers/gpu/drm/amd/display/modules/inc/mod_stats.h
@@ -57,10 +57,10 @@ void mod_stats_update_event(struct mod_stats *mod_stats,
unsigned int length);
void mod_stats_update_flip(struct mod_stats *mod_stats,
- unsigned long timestamp_in_ns);
+ unsigned long long timestamp_in_ns);
void mod_stats_update_vupdate(struct mod_stats *mod_stats,
- unsigned long timestamp_in_ns);
+ unsigned long long timestamp_in_ns);
void mod_stats_update_freesync(struct mod_stats *mod_stats,
unsigned int v_total_min,
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH 17/17] drm/amd/display: 3.2.273
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
` (15 preceding siblings ...)
2024-02-14 18:38 ` [PATCH 16/17] drm/amd/display: Fix nanosec stat overflow Rodrigo Siqueira
@ 2024-02-14 18:38 ` Rodrigo Siqueira
2024-02-15 21:26 ` [PATCH 00/17] DC Patches February 14, 2024 Wheeler, Daniel
17 siblings, 0 replies; 25+ messages in thread
From: Rodrigo Siqueira @ 2024-02-14 18:38 UTC (permalink / raw)
To: amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Rodrigo.Siqueira, Aurabindo.Pillai,
roman.li, wayne.lin, agustin.gutierrez, chiahsuan.chung,
hersenxs.wu, jerry.zuo, Aric Cyr, Rodrigo Siqueira
From: Aric Cyr <aric.cyr@amd.com>
This version brings along the following:
- Re-enable windowed MPO support for DCN32/321
- Improvements in the subvp feature
- Code clean up
- USB4 fixes
Acked-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Signed-off-by: Aric Cyr <aric.cyr@amd.com>
---
drivers/gpu/drm/amd/display/dc/dc.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h
index 9b42f6fc8c69..ee8453bf958f 100644
--- a/drivers/gpu/drm/amd/display/dc/dc.h
+++ b/drivers/gpu/drm/amd/display/dc/dc.h
@@ -51,7 +51,7 @@ struct aux_payload;
struct set_config_cmd_payload;
struct dmub_notification;
-#define DC_VER "3.2.272"
+#define DC_VER "3.2.273"
#define MAX_SURFACES 3
#define MAX_PLANES 6
--
2.43.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH 04/17] drm/amd/display: Add SMU timeout check and retry
2024-02-14 18:38 ` [PATCH 04/17] drm/amd/display: Add SMU timeout check and retry Rodrigo Siqueira
@ 2024-02-14 18:47 ` Hamza Mahfooz
0 siblings, 0 replies; 25+ messages in thread
From: Hamza Mahfooz @ 2024-02-14 18:47 UTC (permalink / raw)
To: Rodrigo Siqueira, amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Aurabindo.Pillai, roman.li, wayne.lin,
agustin.gutierrez, chiahsuan.chung, hersenxs.wu, jerry.zuo
On 2/14/24 13:38, Rodrigo Siqueira wrote:
> Instead of only asserting in the case of the SMU wait time is not what
> we expect, add the SMU timeout check and try again.
>
> Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Acked-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
> ---
> .../display/dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.c | 11 ++++++++---
> .../drm/amd/display/dc/clk_mgr/dcn301/dcn301_smu.c | 6 +++++-
> 2 files changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.c
> index d72acbb049b1..23b390245b5d 100644
> --- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.c
> +++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.c
> @@ -26,6 +26,10 @@
> #include "core_types.h"
> #include "clk_mgr_internal.h"
> #include "reg_helper.h"
> +#include "dm_helpers.h"
> +
> +#include "rn_clk_mgr_vbios_smu.h"
> +
> #include <linux/delay.h>
>
> #include "renoir_ip_offset.h"
> @@ -33,8 +37,6 @@
> #include "mp/mp_12_0_0_offset.h"
> #include "mp/mp_12_0_0_sh_mask.h"
>
> -#include "rn_clk_mgr_vbios_smu.h"
> -
> #define REG(reg_name) \
> (MP0_BASE.instance[0].segment[mm ## reg_name ## _BASE_IDX] + mm ## reg_name)
>
> @@ -120,7 +122,10 @@ static int rn_vbios_smu_send_msg_with_param(struct clk_mgr_internal *clk_mgr,
>
> result = rn_smu_wait_for_response(clk_mgr, 10, 200000);
>
> - ASSERT(result == VBIOSSMC_Result_OK || result == VBIOSSMC_Result_UnknownCmd);
> + if (IS_SMU_TIMEOUT(result)) {
> + ASSERT(0);
> + dm_helpers_smu_timeout(CTX, msg_id, param, 10 * 200000);
> + }
>
> /* Actual dispclk set is returned in the parameter register */
> return REG_READ(MP1_SMN_C2PMSG_83);
> diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn301/dcn301_smu.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn301/dcn301_smu.c
> index 19e5b3be9275..b4fb17b7a096 100644
> --- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn301/dcn301_smu.c
> +++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn301/dcn301_smu.c
> @@ -29,6 +29,7 @@
> #include <linux/delay.h>
>
> #include "dcn301_smu.h"
> +#include "dm_helpers.h"
>
> #include "vangogh_ip_offset.h"
>
> @@ -120,7 +121,10 @@ static int dcn301_smu_send_msg_with_param(struct clk_mgr_internal *clk_mgr,
>
> result = dcn301_smu_wait_for_response(clk_mgr, 10, 200000);
>
> - ASSERT(result == VBIOSSMC_Result_OK);
> + if (IS_SMU_TIMEOUT(result)) {
> + ASSERT(0);
> + dm_helpers_smu_timeout(CTX, msg_id, param, 10 * 200000);
> + }
>
> /* Actual dispclk set is returned in the parameter register */
> return REG_READ(MP1_SMN_C2PMSG_83);
--
Hamza
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 01/17] drm/amd/display: Remove break after return
2024-02-14 18:38 ` [PATCH 01/17] drm/amd/display: Remove break after return Rodrigo Siqueira
@ 2024-02-14 18:47 ` Hamza Mahfooz
0 siblings, 0 replies; 25+ messages in thread
From: Hamza Mahfooz @ 2024-02-14 18:47 UTC (permalink / raw)
To: Rodrigo Siqueira, amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Aurabindo.Pillai, roman.li, wayne.lin,
agustin.gutierrez, chiahsuan.chung, hersenxs.wu, jerry.zuo
On 2/14/24 13:38, Rodrigo Siqueira wrote:
> Remove break after return since it will never be reached.
>
> Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Reviewed-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
> ---
> drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c
> index 28a2a837d2f0..86ee4fe4f5e3 100644
> --- a/drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c
> +++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c
> @@ -340,7 +340,6 @@ struct clk_mgr *dc_clk_mgr_create(struct dc_context *ctx, struct pp_smu_funcs *p
>
> dcn32_clk_mgr_construct(ctx, clk_mgr, pp_smu, dccg);
> return &clk_mgr->base;
> - break;
> }
>
> case AMDGPU_FAMILY_GC_11_0_1: {
--
Hamza
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 02/17] drm/amd/display: Initialize variable with default value
2024-02-14 18:38 ` [PATCH 02/17] drm/amd/display: Initialize variable with default value Rodrigo Siqueira
@ 2024-02-14 18:48 ` Hamza Mahfooz
0 siblings, 0 replies; 25+ messages in thread
From: Hamza Mahfooz @ 2024-02-14 18:48 UTC (permalink / raw)
To: Rodrigo Siqueira, amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Aurabindo.Pillai, roman.li, wayne.lin,
agustin.gutierrez, chiahsuan.chung, hersenxs.wu, jerry.zuo
On 2/14/24 13:38, Rodrigo Siqueira wrote:
> Set a default value for target_div.
>
> Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Reviewed-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
> ---
> drivers/gpu/drm/amd/display/dc/clk_mgr/dce100/dce_clk_mgr.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dce100/dce_clk_mgr.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dce100/dce_clk_mgr.c
> index 26feefbb8990..b77804cfde0f 100644
> --- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dce100/dce_clk_mgr.c
> +++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dce100/dce_clk_mgr.c
> @@ -132,7 +132,7 @@ int dce_get_dp_ref_freq_khz(struct clk_mgr *clk_mgr_base)
> int dprefclk_wdivider;
> int dprefclk_src_sel;
> int dp_ref_clk_khz;
> - int target_div;
> + int target_div = 600000;
>
> /* ASSERT DP Reference Clock source is from DFS*/
> REG_GET(DPREFCLK_CNTL, DPREFCLK_SRC_SEL, &dprefclk_src_sel);
--
Hamza
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 03/17] drm/amd/display: Remove unused file
2024-02-14 18:38 ` [PATCH 03/17] drm/amd/display: Remove unused file Rodrigo Siqueira
@ 2024-02-14 18:48 ` Hamza Mahfooz
0 siblings, 0 replies; 25+ messages in thread
From: Hamza Mahfooz @ 2024-02-14 18:48 UTC (permalink / raw)
To: Rodrigo Siqueira, amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Aurabindo.Pillai, roman.li, wayne.lin,
agustin.gutierrez, chiahsuan.chung, hersenxs.wu, jerry.zuo
On 2/14/24 13:38, Rodrigo Siqueira wrote:
> The file rv1_clk_mgr_clk.c is not used and for this reason useless. Drop
> the unnecessary file.
>
> Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Reviewed-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
> ---
> .../dc/clk_mgr/dcn10/rv1_clk_mgr_clk.c | 79 -------------------
> 1 file changed, 79 deletions(-)
> delete mode 100644 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr_clk.c
>
> diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr_clk.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr_clk.c
> deleted file mode 100644
> index 61dd12198a3c..000000000000
> --- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr_clk.c
> +++ /dev/null
> @@ -1,79 +0,0 @@
> -/*
> - * Copyright 2012-16 Advanced Micro Devices, Inc.
> - *
> - * Permission is hereby granted, free of charge, to any person obtaining a
> - * copy of this software and associated documentation files (the "Software"),
> - * to deal in the Software without restriction, including without limitation
> - * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> - * and/or sell copies of the Software, and to permit persons to whom the
> - * Software is furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice shall be included in
> - * all copies or substantial portions of the Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
> - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> - * OTHER DEALINGS IN THE SOFTWARE.
> - *
> - * Authors: AMD
> - *
> - */
> -
> -#include "reg_helper.h"
> -#include "clk_mgr_internal.h"
> -#include "rv1_clk_mgr_clk.h"
> -
> -#include "ip/Discovery/hwid.h"
> -#include "ip/Discovery/v1/ip_offset_1.h"
> -#include "ip/CLK/clk_10_0_default.h"
> -#include "ip/CLK/clk_10_0_offset.h"
> -#include "ip/CLK/clk_10_0_reg.h"
> -#include "ip/CLK/clk_10_0_sh_mask.h"
> -
> -#include "dce100/dce_clk_mgr.h"
> -
> -#define CLK_BASE_INNER(inst) \
> - CLK_BASE__INST ## inst ## _SEG0
> -
> -
> -#define CLK_REG(reg_name, block, inst)\
> - CLK_BASE(mm ## block ## _ ## inst ## _ ## reg_name ## _BASE_IDX) + \
> - mm ## block ## _ ## inst ## _ ## reg_name
> -
> -#define REG(reg_name) \
> - CLK_REG(reg_name, CLK0, 0)
> -
> -
> -/* Only used by testing framework*/
> -void rv1_dump_clk_registers(struct clk_state_registers *regs, struct clk_bypass *bypass, struct clk_mgr *clk_mgr_base)
> -{
> - struct clk_mgr_internal *clk_mgr = TO_CLK_MGR_INTERNAL(clk_mgr_base);
> -
> - regs->CLK0_CLK8_CURRENT_CNT = REG_READ(CLK0_CLK8_CURRENT_CNT) / 10; //dcf clk
> -
> - bypass->dcfclk_bypass = REG_READ(CLK0_CLK8_BYPASS_CNTL) & 0x0007;
> - if (bypass->dcfclk_bypass < 0 || bypass->dcfclk_bypass > 4)
> - bypass->dcfclk_bypass = 0;
> -
> -
> - regs->CLK0_CLK8_DS_CNTL = REG_READ(CLK0_CLK8_DS_CNTL) / 10; //dcf deep sleep divider
> -
> - regs->CLK0_CLK8_ALLOW_DS = REG_READ(CLK0_CLK8_ALLOW_DS); //dcf deep sleep allow
> -
> - regs->CLK0_CLK10_CURRENT_CNT = REG_READ(CLK0_CLK10_CURRENT_CNT) / 10; //dpref clk
> -
> - bypass->dispclk_pypass = REG_READ(CLK0_CLK10_BYPASS_CNTL) & 0x0007;
> - if (bypass->dispclk_pypass < 0 || bypass->dispclk_pypass > 4)
> - bypass->dispclk_pypass = 0;
> -
> - regs->CLK0_CLK11_CURRENT_CNT = REG_READ(CLK0_CLK11_CURRENT_CNT) / 10; //disp clk
> -
> - bypass->dprefclk_bypass = REG_READ(CLK0_CLK11_BYPASS_CNTL) & 0x0007;
> - if (bypass->dprefclk_bypass < 0 || bypass->dprefclk_bypass > 4)
> - bypass->dprefclk_bypass = 0;
> -
> -}
--
Hamza
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 05/17] drm/amd/display: Remove redundant FPU guard
2024-02-14 18:38 ` [PATCH 05/17] drm/amd/display: Remove redundant FPU guard Rodrigo Siqueira
@ 2024-02-14 18:48 ` Hamza Mahfooz
0 siblings, 0 replies; 25+ messages in thread
From: Hamza Mahfooz @ 2024-02-14 18:48 UTC (permalink / raw)
To: Rodrigo Siqueira, amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Aurabindo.Pillai, roman.li, wayne.lin,
agustin.gutierrez, chiahsuan.chung, hersenxs.wu, jerry.zuo
On 2/14/24 13:38, Rodrigo Siqueira wrote:
> The function dcn32_build_wm_range_table call DC_FP_START/END. Drop the
> unnecessary FPU guard.
>
> Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Reviewed-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
> ---
> drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c
> index e64e45e4c833..ee5e7512a7ee 100644
> --- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c
> +++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c
> @@ -243,10 +243,8 @@ void dcn32_init_clocks(struct clk_mgr *clk_mgr_base)
> /* Get UCLK, update bounding box */
> clk_mgr_base->funcs->get_memclk_states_from_smu(clk_mgr_base);
>
> - DC_FP_START();
> /* WM range table */
> dcn32_build_wm_range_table(clk_mgr);
> - DC_FP_END();
> }
>
> static void dcn32_update_clocks_update_dtb_dto(struct clk_mgr_internal *clk_mgr,
--
Hamza
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 15/17] drm/amd/display: Drop unnecessary header
2024-02-14 18:38 ` [PATCH 15/17] drm/amd/display: Drop unnecessary header Rodrigo Siqueira
@ 2024-02-14 18:49 ` Hamza Mahfooz
0 siblings, 0 replies; 25+ messages in thread
From: Hamza Mahfooz @ 2024-02-14 18:49 UTC (permalink / raw)
To: Rodrigo Siqueira, amd-gfx
Cc: Harry.Wentland, Sunpeng.Li, Aurabindo.Pillai, roman.li, wayne.lin,
agustin.gutierrez, chiahsuan.chung, hersenxs.wu, jerry.zuo
On 2/14/24 13:38, Rodrigo Siqueira wrote:
> A long time ago, the slab header was added to multiple files in DC. We
> also included it in the os_types.h, which is included in many of those
> DC files. At this point, there is no need to insert the slab.h header in
> multiple files, so this commit drops those includes.
>
> Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Reviewed-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
> ---
> drivers/gpu/drm/amd/display/dc/basics/dce_calcs.c | 2 --
> drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c | 2 --
> drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c | 2 --
> drivers/gpu/drm/amd/display/dc/hdcp/hdcp_msg.c | 2 --
> drivers/gpu/drm/amd/display/dc/irq/dcn20/irq_service_dcn20.c | 2 --
> drivers/gpu/drm/amd/display/dc/irq/dcn21/irq_service_dcn21.c | 2 --
> drivers/gpu/drm/amd/display/dc/resource/dcn20/dcn20_resource.c | 2 --
> 7 files changed, 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/basics/dce_calcs.c b/drivers/gpu/drm/amd/display/dc/basics/dce_calcs.c
> index 39530b2ea495..b30c2cdc1a61 100644
> --- a/drivers/gpu/drm/amd/display/dc/basics/dce_calcs.c
> +++ b/drivers/gpu/drm/amd/display/dc/basics/dce_calcs.c
> @@ -23,8 +23,6 @@
> *
> */
>
> -#include <linux/slab.h>
> -
> #include "resource.h"
> #include "dm_services.h"
> #include "dce_calcs.h"
> diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c
> index 86ee4fe4f5e3..9f0f25aee426 100644
> --- a/drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c
> +++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c
> @@ -23,8 +23,6 @@
> *
> */
>
> -#include <linux/slab.h>
> -
> #include "dal_asic_id.h"
> #include "dc_types.h"
> #include "dccg.h"
> diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c
> index 60761ff3cbf1..2a74e2d74909 100644
> --- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c
> +++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c
> @@ -23,8 +23,6 @@
> *
> */
>
> -#include <linux/slab.h>
> -
> #include "reg_helper.h"
> #include "core_types.h"
> #include "clk_mgr_internal.h"
> diff --git a/drivers/gpu/drm/amd/display/dc/hdcp/hdcp_msg.c b/drivers/gpu/drm/amd/display/dc/hdcp/hdcp_msg.c
> index 25ffc052d53b..99e17c164ce7 100644
> --- a/drivers/gpu/drm/amd/display/dc/hdcp/hdcp_msg.c
> +++ b/drivers/gpu/drm/amd/display/dc/hdcp/hdcp_msg.c
> @@ -23,8 +23,6 @@
> *
> */
>
> -#include <linux/slab.h>
> -
> #include "dm_services.h"
> #include "dm_helpers.h"
> #include "include/hdcp_msg_types.h"
> diff --git a/drivers/gpu/drm/amd/display/dc/irq/dcn20/irq_service_dcn20.c b/drivers/gpu/drm/amd/display/dc/irq/dcn20/irq_service_dcn20.c
> index e8baafa02443..916f0c974637 100644
> --- a/drivers/gpu/drm/amd/display/dc/irq/dcn20/irq_service_dcn20.c
> +++ b/drivers/gpu/drm/amd/display/dc/irq/dcn20/irq_service_dcn20.c
> @@ -23,8 +23,6 @@
> *
> */
>
> -#include <linux/slab.h>
> -
> #include "dm_services.h"
>
> #include "include/logger_interface.h"
> diff --git a/drivers/gpu/drm/amd/display/dc/irq/dcn21/irq_service_dcn21.c b/drivers/gpu/drm/amd/display/dc/irq/dcn21/irq_service_dcn21.c
> index 03c5e8ff8cbd..42cdfe6c3538 100644
> --- a/drivers/gpu/drm/amd/display/dc/irq/dcn21/irq_service_dcn21.c
> +++ b/drivers/gpu/drm/amd/display/dc/irq/dcn21/irq_service_dcn21.c
> @@ -23,8 +23,6 @@
> *
> */
>
> -#include <linux/slab.h>
> -
> #include "dm_services.h"
>
> #include "include/logger_interface.h"
> diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn20/dcn20_resource.c b/drivers/gpu/drm/amd/display/dc/resource/dcn20/dcn20_resource.c
> index f9c5bc624be3..a2387cea1af9 100644
> --- a/drivers/gpu/drm/amd/display/dc/resource/dcn20/dcn20_resource.c
> +++ b/drivers/gpu/drm/amd/display/dc/resource/dcn20/dcn20_resource.c
> @@ -24,8 +24,6 @@
> *
> */
>
> -#include <linux/slab.h>
> -
> #include "dm_services.h"
> #include "dc.h"
>
--
Hamza
^ permalink raw reply [flat|nested] 25+ messages in thread
* RE: [PATCH 00/17] DC Patches February 14, 2024
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
` (16 preceding siblings ...)
2024-02-14 18:38 ` [PATCH 17/17] drm/amd/display: 3.2.273 Rodrigo Siqueira
@ 2024-02-15 21:26 ` Wheeler, Daniel
17 siblings, 0 replies; 25+ messages in thread
From: Wheeler, Daniel @ 2024-02-15 21:26 UTC (permalink / raw)
To: Siqueira, Rodrigo, amd-gfx@lists.freedesktop.org
Cc: Wentland, Harry, Li, Sun peng (Leo), Pillai, Aurabindo, Li, Roman,
Lin, Wayne, Gutierrez, Agustin, Chung, ChiaHsuan (Tom),
Wu, Hersen, Zuo, Jerry
[Public]
Hi all,
This week this patchset was tested on the following systems:
* Lenovo ThinkBook T13s Gen4 with AMD Ryzen 5 6600U
* MSI Gaming X Trio RX 6800
* Gigabyte Gaming OC RX 7900 XTX
These systems were tested on the following display/connection types:
* eDP, (1080p 60hz [5650U]) (1920x1200 60hz [6600U]) (2560x1600 120hz[6600U])
* VGA and DVI (1680x1050 60hz [DP to VGA/DVI, USB-C to VGA/DVI])
* DP/HDMI/USB-C (1440p 170hz, 4k 60hz, 4k 144hz, 4k 240hz [Includes USB-C to DP/HDMI adapters])
* Thunderbolt (LG Ultrafine 5k)
* MST (Startech MST14DP123DP [DP to 3x DP] and 2x 4k 60Hz displays)
* DSC (with Cable Matters 101075 [DP to 3x DP] with 3x 4k60 displays, and HP Hook G2 with 1 4k60 display)
* USB 4 (Kensington SD5700T and 1x 4k 60Hz display)
* PCON (Club3D CAC-1085 and 1x 4k 144Hz display [at 4k 120HZ, as that is the max the adapter supports])
The testing is a mix of automated and manual tests. Manual testing includes (but is not limited to):
* Changing display configurations and settings
* Benchmark testing
* Feature testing (Freesync, etc.)
Automated testing includes (but is not limited to):
* Script testing (scripts to automate some of the manual checks)
* IGT testing
The patchset consists of the amd-staging-drm-next branch (Head commit - 030c6867a687 drm/amd/display: 3.2.272) with new patches added on top of it.
Tested on Ubuntu 22.04.3, on Wayland and X11, using KDE Plasma and Gnome.
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Thank you,
Dan Wheeler
Sr. Technologist | AMD
SW Display
------------------------------------------------------------------------------------------------------------------
1 Commerce Valley Dr E, Thornhill, ON L3T 7X6
amd.com
-----Original Message-----
From: Siqueira, Rodrigo <Rodrigo.Siqueira@amd.com>
Sent: Wednesday, February 14, 2024 1:39 PM
To: amd-gfx@lists.freedesktop.org
Cc: Wentland, Harry <Harry.Wentland@amd.com>; Li, Sun peng (Leo) <Sunpeng.Li@amd.com>; Siqueira, Rodrigo <Rodrigo.Siqueira@amd.com>; Pillai, Aurabindo <Aurabindo.Pillai@amd.com>; Li, Roman <Roman.Li@amd.com>; Lin, Wayne <Wayne.Lin@amd.com>; Gutierrez, Agustin <Agustin.Gutierrez@amd.com>; Chung, ChiaHsuan (Tom) <ChiaHsuan.Chung@amd.com>; Wu, Hersen <hersenxs.wu@amd.com>; Zuo, Jerry <Jerry.Zuo@amd.com>; Wheeler, Daniel <Daniel.Wheeler@amd.com>
Subject: [PATCH 00/17] DC Patches February 14, 2024
This DC patchset brings improvements in multiple areas. In summary, we
highlight:
- Re-enable windowed MPO support for DCN32/321.
- Improvements in the subvp feature.
- Code clean-up.
- USB4 fixes.
Cc: Daniel Wheeler <daniel.wheeler@amd.com>
Thanks
Siqueira
Alvin Lee (2):
drm/amd/display: Generalize new minimal transition path
drm/amd/display: Remove pixle rate limit for subvp
Aric Cyr (2):
drm/amd/display: Fix nanosec stat overflow
drm/amd/display: 3.2.273
Ethan Bitnun (1):
drm/amd/display: Only log during optimize_bandwidth call
George Shen (1):
drm/amd/display: Check DP Alt mode DPCS state via DMUB
Lewis Huang (1):
drm/amd/display: Only allow dig mapping to pwrseq in new asic
Nicholas Kazlauskas (1):
drm/amd/display: Fix S4 hang polling on HW power up done for VBIOS
DMCUB
Rodrigo Siqueira (6):
drm/amd/display: Remove break after return
drm/amd/display: Initialize variable with default value
drm/amd/display: Remove unused file
drm/amd/display: Add SMU timeout check and retry
drm/amd/display: Remove redundant FPU guard
drm/amd/display: Drop unnecessary header
Swapnil Patel (1):
drm/amd/display: fix input states translation error for dcn35 & dcn351
Wayne Lin (1):
drm/amd/display: adjust few initialization order in dm
Wenjing Liu (1):
drm/amd/display: reenable windowed mpo odm support on dcn32 and dcn321
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 37 +++--
.../gpu/drm/amd/display/dc/basics/dce_calcs.c | 2 -
.../gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c | 3 -
.../display/dc/clk_mgr/dce100/dce_clk_mgr.c | 2 +-
.../display/dc/clk_mgr/dcn10/rv1_clk_mgr.c | 2 -
.../dc/clk_mgr/dcn10/rv1_clk_mgr_clk.c | 79 ----------
.../dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.c | 11 +-
.../display/dc/clk_mgr/dcn301/dcn301_smu.c | 6 +-
.../display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c | 4 +-
drivers/gpu/drm/amd/display/dc/core/dc.c | 146 +++++++-----------
drivers/gpu/drm/amd/display/dc/dc.h | 2 +-
.../drm/amd/display/dc/dce/dce_panel_cntl.c | 1 +
.../amd/display/dc/dcn301/dcn301_panel_cntl.c | 1 +
.../amd/display/dc/dcn31/dcn31_panel_cntl.c | 18 ++-
.../display/dc/dcn32/dcn32_dio_link_encoder.c | 85 +++++++---
.../display/dc/dcn32/dcn32_dio_link_encoder.h | 5 +
.../drm/amd/display/dc/dml/dcn32/dcn32_fpu.c | 1 -
.../display/dc/dml2/dml2_translation_helper.c | 9 +-
.../gpu/drm/amd/display/dc/hdcp/hdcp_msg.c | 2 -
.../gpu/drm/amd/display/dc/inc/core_types.h | 31 ++--
.../drm/amd/display/dc/inc/hw/panel_cntl.h | 2 +-
.../display/dc/irq/dcn20/irq_service_dcn20.c | 2 -
.../display/dc/irq/dcn21/irq_service_dcn21.c | 2 -
.../drm/amd/display/dc/link/link_factory.c | 26 +---
.../dc/resource/dcn20/dcn20_resource.c | 2 -
.../dc/resource/dcn32/dcn32_resource.c | 1 +
.../dc/resource/dcn321/dcn321_resource.c | 2 +-
.../gpu/drm/amd/display/dmub/src/dmub_dcn35.c | 8 +-
.../gpu/drm/amd/display/dmub/src/dmub_srv.c | 9 +-
.../drm/amd/display/modules/inc/mod_stats.h | 4 +-
30 files changed, 223 insertions(+), 282 deletions(-) delete mode 100644 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr_clk.c
--
2.43.0
^ permalink raw reply [flat|nested] 25+ messages in thread
end of thread, other threads:[~2024-02-15 21:26 UTC | newest]
Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-14 18:38 [PATCH 00/17] DC Patches February 14, 2024 Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 01/17] drm/amd/display: Remove break after return Rodrigo Siqueira
2024-02-14 18:47 ` Hamza Mahfooz
2024-02-14 18:38 ` [PATCH 02/17] drm/amd/display: Initialize variable with default value Rodrigo Siqueira
2024-02-14 18:48 ` Hamza Mahfooz
2024-02-14 18:38 ` [PATCH 03/17] drm/amd/display: Remove unused file Rodrigo Siqueira
2024-02-14 18:48 ` Hamza Mahfooz
2024-02-14 18:38 ` [PATCH 04/17] drm/amd/display: Add SMU timeout check and retry Rodrigo Siqueira
2024-02-14 18:47 ` Hamza Mahfooz
2024-02-14 18:38 ` [PATCH 05/17] drm/amd/display: Remove redundant FPU guard Rodrigo Siqueira
2024-02-14 18:48 ` Hamza Mahfooz
2024-02-14 18:38 ` [PATCH 06/17] drm/amd/display: adjust few initialization order in dm Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 07/17] drm/amd/display: Only allow dig mapping to pwrseq in new asic Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 08/17] drm/amd/display: Fix S4 hang polling on HW power up done for VBIOS DMCUB Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 09/17] drm/amd/display: Check DP Alt mode DPCS state via DMUB Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 10/17] drm/amd/display: Generalize new minimal transition path Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 11/17] drm/amd/display: fix input states translation error for dcn35 & dcn351 Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 12/17] drm/amd/display: Only log during optimize_bandwidth call Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 13/17] drm/amd/display: Remove pixle rate limit for subvp Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 14/17] drm/amd/display: reenable windowed mpo odm support on dcn32 and dcn321 Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 15/17] drm/amd/display: Drop unnecessary header Rodrigo Siqueira
2024-02-14 18:49 ` Hamza Mahfooz
2024-02-14 18:38 ` [PATCH 16/17] drm/amd/display: Fix nanosec stat overflow Rodrigo Siqueira
2024-02-14 18:38 ` [PATCH 17/17] drm/amd/display: 3.2.273 Rodrigo Siqueira
2024-02-15 21:26 ` [PATCH 00/17] DC Patches February 14, 2024 Wheeler, Daniel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox