Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amd/display: Add private data type for RCG

[why & how]
Add private data types for better RCG control

Reviewed-by: Chris Park <chris.park@amd.com>
Reviewed-by: Yihan Zhu <yihan.zhu@amd.com>
Signed-off-by: Hansen Dsouza <hansen.dsouza@amd.com>
Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Hansen Dsouza and committed by
Alex Deucher
3f7477bf 295d91cb

+81
+81
drivers/gpu/drm/amd/display/dc/dccg/dcn35/dcn35_dccg.c
··· 41 41 #define DC_LOGGER \ 42 42 dccg->ctx->logger 43 43 44 + enum physymclk_fe_source { 45 + PHYSYMCLK_FE_SYMCLK_A = 0, // Select functional clock from backend symclk A 46 + PHYSYMCLK_FE_SYMCLK_B, 47 + PHYSYMCLK_FE_SYMCLK_C, 48 + PHYSYMCLK_FE_SYMCLK_D, 49 + PHYSYMCLK_FE_SYMCLK_E, 50 + PHYSYMCLK_FE_REFCLK = 0xFF, // Arbitrary value to pass refclk selection in software 51 + }; 52 + 53 + enum physymclk_source { 54 + PHYSYMCLK_PHYCLK = 0, // Select symclk as source of clock which is output to PHY through DCIO. 55 + PHYSYMCLK_PHYD18CLK, // Select phyd18clk as the source of clock which is output to PHY through DCIO. 56 + PHYSYMCLK_PHYD32CLK, // Select phyd32clk as the source of clock which is output to PHY through DCIO. 57 + PHYSYMCLK_REFCLK = 0xFF, // Arbitrary value to pass refclk selection in software 58 + }; 59 + 60 + enum dtbclk_source { 61 + DTBCLK_DPREFCLK = 0, // Selects source for DTBCLK_P# as DPREFCLK (src sel 0 and 1 are same) 62 + DTBCLK_DPREFCLK_0, // Selects source for DTBCLK_P# as DPREFCLK (src sel 0 and 1 are same) 63 + DTBCLK_DTBCLK0, // Selects source for DTBCLK_P# as DTBCLK0 64 + DTBCLK_DTBCLK1, // Selects source for DTBCLK_P# as DTBCLK0 65 + DTBCLK_REFCLK = 0xFF, // Arbitrary value to pass refclk selection in software 66 + }; 67 + 68 + enum dppclk_clock_source { 69 + DPP_REFCLK = 0, // refclk is selected 70 + DPP_DCCG_DTO, // Functional clock selected is DTO tuned DPPCLK 71 + }; 72 + 73 + enum dp_stream_clk_source { 74 + DP_STREAM_DTBCLK_P0 = 0, // Selects functional for DP_STREAM_CLK as DTBCLK_P# 75 + DP_STREAM_DTBCLK_P1, 76 + DP_STREAM_DTBCLK_P2, 77 + DP_STREAM_DTBCLK_P3, 78 + DP_STREAM_DTBCLK_P4, 79 + DP_STREAM_DTBCLK_P5, 80 + DP_STREAM_REFCLK = 0xFF, // Arbitrary value to pass refclk selection in software 81 + }; 82 + 83 + enum hdmi_char_clk { 84 + HDMI_CHAR_PHYAD18CLK = 0, // Selects functional for hdmi_char_clk as UNIPHYA PHYD18CLK 85 + HDMI_CHAR_PHYBD18CLK, 86 + HDMI_CHAR_PHYCD18CLK, 87 + HDMI_CHAR_PHYDD18CLK, 88 + HDMI_CHAR_PHYED18CLK, 89 + HDMI_CHAR_REFCLK = 0xFF, // Arbitrary value to pass refclk selection in software 90 + }; 91 + 92 + enum hdmi_stream_clk_source { 93 + HDMI_STREAM_DTBCLK_P0 = 0, // Selects functional for HDMI_STREAM_CLK as DTBCLK_P# 94 + HDMI_STREAM_DTBCLK_P1, 95 + HDMI_STREAM_DTBCLK_P2, 96 + HDMI_STREAM_DTBCLK_P3, 97 + HDMI_STREAM_DTBCLK_P4, 98 + HDMI_STREAM_DTBCLK_P5, 99 + HDMI_STREAM_REFCLK = 0xFF, // Arbitrary value to pass refclk selection in software 100 + }; 101 + 102 + enum symclk32_se_clk_source { 103 + SYMCLK32_SE_PHYAD32CLK = 0, // Selects functional for SYMCLK32 as UNIPHYA PHYD32CLK 104 + SYMCLK32_SE_PHYBD32CLK, 105 + SYMCLK32_SE_PHYCD32CLK, 106 + SYMCLK32_SE_PHYDD32CLK, 107 + SYMCLK32_SE_PHYED32CLK, 108 + SYMCLK32_SE_REFCLK = 0xFF, // Arbitrary value to pass refclk selection in software 109 + }; 110 + 111 + enum symclk32_le_clk_source { 112 + SYMCLK32_LE_PHYAD32CLK = 0, // Selects functional for SYMCLK32 as UNIPHYA PHYD32CLK 113 + SYMCLK32_LE_PHYBD32CLK, 114 + SYMCLK32_LE_PHYCD32CLK, 115 + SYMCLK32_LE_PHYDD32CLK, 116 + SYMCLK32_LE_PHYED32CLK, 117 + SYMCLK32_LE_REFCLK = 0xFF, // Arbitrary value to pass refclk selection in software 118 + }; 119 + 120 + enum dsc_clk_source { 121 + DSC_CLK_REF_CLK = 0, // Ref clock selected for DSC_CLK 122 + DSC_DTO_TUNED_CK_GPU_DISCLK_3, // DTO divided clock selected as functional clock 123 + }; 124 + 44 125 static void dccg35_trigger_dio_fifo_resync(struct dccg *dccg) 45 126 { 46 127 struct dcn_dccg *dccg_dcn = TO_DCN_DCCG(dccg);