Skip to content

Commit 2eb8257

Browse files
charliu-AMDENGalexdeucher
authored andcommitted
drm/amd/display: fix B0 TMDS deepcolor no dislay issue
[why] B0 PHY C map to F, D map to G driver use logic instance, dmub does the remap. Driver still need use the right PHY instance to access right HW. [how] use phyical instance when program PHY register. [note] could move resync_control programming to dmub next. Tested-by: Daniel Wheeler <[email protected]> Reviewed-by: Dmytro Laktyushkin <[email protected]> Reviewed-by: Jun Lei <[email protected]> Acked-by: Rodrigo Siqueira <[email protected]> Signed-off-by: Charlene Liu <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent ebae897 commit 2eb8257

File tree

2 files changed

+54
-2
lines changed

2 files changed

+54
-2
lines changed

drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.c

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,14 @@ static const struct dce110_clk_src_regs clk_src_regs[] = {
355355
clk_src_regs(3, D),
356356
clk_src_regs(4, E)
357357
};
358+
/*pll_id being rempped in dmub, in driver it is logical instance*/
359+
static const struct dce110_clk_src_regs clk_src_regs_b0[] = {
360+
clk_src_regs(0, A),
361+
clk_src_regs(1, B),
362+
clk_src_regs(2, F),
363+
clk_src_regs(3, G),
364+
clk_src_regs(4, E)
365+
};
358366

359367
static const struct dce110_clk_src_shift cs_shift = {
360368
CS_COMMON_MASK_SH_LIST_DCN2_0(__SHIFT)
@@ -2276,14 +2284,27 @@ static bool dcn31_resource_construct(
22762284
dcn30_clock_source_create(ctx, ctx->dc_bios,
22772285
CLOCK_SOURCE_COMBO_PHY_PLL1,
22782286
&clk_src_regs[1], false);
2279-
pool->base.clock_sources[DCN31_CLK_SRC_PLL2] =
2287+
/*move phypllx_pixclk_resync to dmub next*/
2288+
if (dc->ctx->asic_id.hw_internal_rev == YELLOW_CARP_B0) {
2289+
pool->base.clock_sources[DCN31_CLK_SRC_PLL2] =
2290+
dcn30_clock_source_create(ctx, ctx->dc_bios,
2291+
CLOCK_SOURCE_COMBO_PHY_PLL2,
2292+
&clk_src_regs_b0[2], false);
2293+
pool->base.clock_sources[DCN31_CLK_SRC_PLL3] =
2294+
dcn30_clock_source_create(ctx, ctx->dc_bios,
2295+
CLOCK_SOURCE_COMBO_PHY_PLL3,
2296+
&clk_src_regs_b0[3], false);
2297+
} else {
2298+
pool->base.clock_sources[DCN31_CLK_SRC_PLL2] =
22802299
dcn30_clock_source_create(ctx, ctx->dc_bios,
22812300
CLOCK_SOURCE_COMBO_PHY_PLL2,
22822301
&clk_src_regs[2], false);
2283-
pool->base.clock_sources[DCN31_CLK_SRC_PLL3] =
2302+
pool->base.clock_sources[DCN31_CLK_SRC_PLL3] =
22842303
dcn30_clock_source_create(ctx, ctx->dc_bios,
22852304
CLOCK_SOURCE_COMBO_PHY_PLL3,
22862305
&clk_src_regs[3], false);
2306+
}
2307+
22872308
pool->base.clock_sources[DCN31_CLK_SRC_PLL4] =
22882309
dcn30_clock_source_create(ctx, ctx->dc_bios,
22892310
CLOCK_SOURCE_COMBO_PHY_PLL4,

drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,35 @@ struct resource_pool *dcn31_create_resource_pool(
4949
const struct dc_init_data *init_data,
5050
struct dc *dc);
5151

52+
/*temp: B0 specific before switch to dcn313 headers*/
53+
#ifndef regPHYPLLF_PIXCLK_RESYNC_CNTL
54+
#define regPHYPLLF_PIXCLK_RESYNC_CNTL 0x007e
55+
#define regPHYPLLF_PIXCLK_RESYNC_CNTL_BASE_IDX 1
56+
#define regPHYPLLG_PIXCLK_RESYNC_CNTL 0x005f
57+
#define regPHYPLLG_PIXCLK_RESYNC_CNTL_BASE_IDX 1
58+
59+
//PHYPLLF_PIXCLK_RESYNC_CNTL
60+
#define PHYPLLF_PIXCLK_RESYNC_CNTL__PHYPLLF_PIXCLK_RESYNC_ENABLE__SHIFT 0x0
61+
#define PHYPLLF_PIXCLK_RESYNC_CNTL__PHYPLLF_DEEP_COLOR_DTO_ENABLE_STATUS__SHIFT 0x1
62+
#define PHYPLLF_PIXCLK_RESYNC_CNTL__PHYPLLF_DCCG_DEEP_COLOR_CNTL__SHIFT 0x4
63+
#define PHYPLLF_PIXCLK_RESYNC_CNTL__PHYPLLF_PIXCLK_ENABLE__SHIFT 0x8
64+
#define PHYPLLF_PIXCLK_RESYNC_CNTL__PHYPLLF_PIXCLK_DOUBLE_RATE_ENABLE__SHIFT 0x9
65+
#define PHYPLLF_PIXCLK_RESYNC_CNTL__PHYPLLF_PIXCLK_RESYNC_ENABLE_MASK 0x00000001L
66+
#define PHYPLLF_PIXCLK_RESYNC_CNTL__PHYPLLF_DEEP_COLOR_DTO_ENABLE_STATUS_MASK 0x00000002L
67+
#define PHYPLLF_PIXCLK_RESYNC_CNTL__PHYPLLF_DCCG_DEEP_COLOR_CNTL_MASK 0x00000030L
68+
#define PHYPLLF_PIXCLK_RESYNC_CNTL__PHYPLLF_PIXCLK_ENABLE_MASK 0x00000100L
69+
#define PHYPLLF_PIXCLK_RESYNC_CNTL__PHYPLLF_PIXCLK_DOUBLE_RATE_ENABLE_MASK 0x00000200L
70+
71+
//PHYPLLG_PIXCLK_RESYNC_CNTL
72+
#define PHYPLLG_PIXCLK_RESYNC_CNTL__PHYPLLG_PIXCLK_RESYNC_ENABLE__SHIFT 0x0
73+
#define PHYPLLG_PIXCLK_RESYNC_CNTL__PHYPLLG_DEEP_COLOR_DTO_ENABLE_STATUS__SHIFT 0x1
74+
#define PHYPLLG_PIXCLK_RESYNC_CNTL__PHYPLLG_DCCG_DEEP_COLOR_CNTL__SHIFT 0x4
75+
#define PHYPLLG_PIXCLK_RESYNC_CNTL__PHYPLLG_PIXCLK_ENABLE__SHIFT 0x8
76+
#define PHYPLLG_PIXCLK_RESYNC_CNTL__PHYPLLG_PIXCLK_DOUBLE_RATE_ENABLE__SHIFT 0x9
77+
#define PHYPLLG_PIXCLK_RESYNC_CNTL__PHYPLLG_PIXCLK_RESYNC_ENABLE_MASK 0x00000001L
78+
#define PHYPLLG_PIXCLK_RESYNC_CNTL__PHYPLLG_DEEP_COLOR_DTO_ENABLE_STATUS_MASK 0x00000002L
79+
#define PHYPLLG_PIXCLK_RESYNC_CNTL__PHYPLLG_DCCG_DEEP_COLOR_CNTL_MASK 0x00000030L
80+
#define PHYPLLG_PIXCLK_RESYNC_CNTL__PHYPLLG_PIXCLK_ENABLE_MASK 0x00000100L
81+
#define PHYPLLG_PIXCLK_RESYNC_CNTL__PHYPLLG_PIXCLK_DOUBLE_RATE_ENABLE_MASK 0x00000200L
82+
#endif
5283
#endif /* _DCN31_RESOURCE_H_ */

0 commit comments

Comments
 (0)