diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4321-drm-amd-display-Add-a-conversion-function-for-transm.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4321-drm-amd-display-Add-a-conversion-function-for-transm.patch | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4321-drm-amd-display-Add-a-conversion-function-for-transm.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4321-drm-amd-display-Add-a-conversion-function-for-transm.patch new file mode 100644 index 00000000..daa8b2f3 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4321-drm-amd-display-Add-a-conversion-function-for-transm.patch @@ -0,0 +1,95 @@ +From 7df7fe47021bfda137254b2bd114e5728b3aa56c Mon Sep 17 00:00:00 2001 +From: Nathan Chancellor <natechancellor@gmail.com> +Date: Tue, 29 Oct 2019 23:04:11 -0700 +Subject: [PATCH 4321/4736] drm/amd/display: Add a conversion function for + transmitter and phy_id enums + +Clang warns: + +../drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_link.c:2520:42: +error: implicit conversion from enumeration type 'enum transmitter' to +different enumeration type 'enum physical_phy_id' +[-Werror,-Wenum-conversion] + psr_context->smuPhyId = link->link_enc->transmitter; + ~ ~~~~~~~~~~~~~~~~^~~~~~~~~~~ +1 error generated. + +As the comment above this assignment states, this is intentional. To +match previous warnings of this nature, add a conversion function that +explicitly converts between the enums and warns when there is a +mismatch. + +See commit 828cfa29093f ("drm/amdgpu: Fix amdgpu ras to ta enums +conversion") and commit d9ec5cfd5a2e ("drm/amd/display: Use switch table +for dc_to_smu_clock_type") for previous examples of this. + +v2: use PHYLD_UNKNOWN for the default case. + +Fixes: e0d08a40a63b ("drm/amd/display: Add debugfs entry for reading psr state") +Link: https://github.com/ClangBuiltLinux/linux/issues/758 +Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> +Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc_link.c | 38 ++++++++++++++++++- + 1 file changed, 37 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c +index e87124fe981c..fad7f3b7bc31 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c +@@ -2445,6 +2445,41 @@ bool dc_link_get_psr_state(const struct dc_link *link, uint32_t *psr_state) + return true; + } + ++static inline enum physical_phy_id ++transmitter_to_phy_id(enum transmitter transmitter_value) ++{ ++ switch (transmitter_value) { ++ case TRANSMITTER_UNIPHY_A: ++ return PHYLD_0; ++ case TRANSMITTER_UNIPHY_B: ++ return PHYLD_1; ++ case TRANSMITTER_UNIPHY_C: ++ return PHYLD_2; ++ case TRANSMITTER_UNIPHY_D: ++ return PHYLD_3; ++ case TRANSMITTER_UNIPHY_E: ++ return PHYLD_4; ++ case TRANSMITTER_UNIPHY_F: ++ return PHYLD_5; ++ case TRANSMITTER_NUTMEG_CRT: ++ return PHYLD_6; ++ case TRANSMITTER_TRAVIS_CRT: ++ return PHYLD_7; ++ case TRANSMITTER_TRAVIS_LCD: ++ return PHYLD_8; ++ case TRANSMITTER_UNIPHY_G: ++ return PHYLD_9; ++ case TRANSMITTER_COUNT: ++ return PHYLD_COUNT; ++ case TRANSMITTER_UNKNOWN: ++ return PHYLD_UNKNOWN; ++ default: ++ WARN_ONCE(1, "Unknown transmitter value %d\n", ++ transmitter_value); ++ return PHYLD_UNKNOWN; ++ } ++} ++ + bool dc_link_setup_psr(struct dc_link *link, + const struct dc_stream_state *stream, struct psr_config *psr_config, + struct psr_context *psr_context) +@@ -2515,7 +2550,8 @@ bool dc_link_setup_psr(struct dc_link *link, + /* Hardcoded for now. Can be Pcie or Uniphy (or Unknown)*/ + psr_context->phyType = PHY_TYPE_UNIPHY; + /*PhyId is associated with the transmitter id*/ +- psr_context->smuPhyId = link->link_enc->transmitter; ++ psr_context->smuPhyId = ++ transmitter_to_phy_id(link->link_enc->transmitter); + + psr_context->crtcTimingVerticalTotal = stream->timing.v_total; + psr_context->vsyncRateHz = div64_u64(div64_u64((stream-> +-- +2.17.1 + |