<div dir="ltr"><div>Hi,</div><div><br></div><div>Sorry for the late reply,</div><div><br></div><div>I have submitted a v4 with the changes to put these functions</div><div> in the command_table_helper.c rather than adding a new set of files.</div><div>The mail title of v4 is </div><div>"[PATCH v4] drm/amd/display/dc: Refactor remove duplications"</div><div><br></div><div><a class="gmail_plusreply" id="plusReplyChip-0" href="mailto:alexander.deucher@amd.com" tabindex="-1">@alexander.deucher@amd.com</a> Can you take a look?</div><div><br></div><div>Luan<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Em ter., 11 de fev. de 2025 às 16:50, Alex Deucher <<a href="mailto:alexdeucher@gmail.com" target="_blank">alexdeucher@gmail.com</a>> escreveu:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Fri, Feb 7, 2025 at 6:13 PM Luan Icaro Pinto Arcanjo<br>
<<a href="mailto:luanicaro@usp.br" target="_blank">luanicaro@usp.br</a>> wrote:<br>
><br>
> From: Luan Arcanjo <<a href="mailto:luanicaro@usp.br" target="_blank">luanicaro@usp.br</a>><br>
><br>
> All dce command_table_helper's shares a copy-pasted collection<br>
> of copy-pasted functions, which are: phy_id_to_atom,<br>
> clock_source_id_to_atom_phy_clk_src_id, and engine_bp_to_atom.<br>
><br>
> This patch removes the multiple copy-pasted by creating a<br>
> common command table and make the command_table_helper's calls<br>
> the functions implemented by the common instead.<br>
><br>
> The changes were not tested on actual hardware. I am only able<br>
> to verify that the changes keep the code compileable and do my<br>
> best to to look repeatedly if I am not actually changing any code.<br>
><br>
> This is the version 2 of the PATCH, fixed comments about<br>
> licence in the new files and the matches From email to<br>
> Signed-off-by email.<br>
><br>
> Signed-off-by: Luan Icaro Pinto Arcanjo <<a href="mailto:luanicaro@usp.br" target="_blank">luanicaro@usp.br</a>><br>
> ---<br>
>  drivers/gpu/drm/amd/display/dc/bios/Makefile  |   6 +<br>
>  .../bios/dce110/command_table_helper_dce110.c | 104 +----------------<br>
>  .../dce112/command_table_helper2_dce112.c     | 104 +----------------<br>
>  .../bios/dce112/command_table_helper_dce112.c | 104 +----------------<br>
>  .../bios/dce60/command_table_helper_dce60.c   | 106 +----------------<br>
>  .../bios/dce80/command_table_helper_dce80.c   | 106 +----------------<br>
>  .../command_table_helper_dce_common.c         | 110 ++++++++++++++++++<br>
>  .../command_table_helper_dce_common.h         |  14 +++<br>
>  8 files changed, 137 insertions(+), 517 deletions(-)<br>
>  create mode 100644 drivers/gpu/drm/amd/display/dc/bios/dce_common/command_table_helper_dce_common.c<br>
>  create mode 100644 drivers/gpu/drm/amd/display/dc/bios/dce_common/command_table_helper_dce_common.h<br>
<br>
Might be easier to just put these into command_table_helper.c rather<br>
than adding a new set of files.  @Wentland, Harry, @Leo (Sunpeng) Li<br>
do you have a preference?  Other than that, looks like a nice clean up<br>
to me.<br>
<br>
Alex<br>
<br>
><br>
> diff --git a/drivers/gpu/drm/amd/display/dc/bios/Makefile b/drivers/gpu/drm/amd/display/dc/bios/Makefile<br>
> index ed6b5e9763f6..0d2f7ca1d0c2 100644<br>
> --- a/drivers/gpu/drm/amd/display/dc/bios/Makefile<br>
> +++ b/drivers/gpu/drm/amd/display/dc/bios/Makefile<br>
> @@ -27,6 +27,7 @@ BIOS = bios_parser.o bios_parser_interface.o  bios_parser_helper.o command_table<br>
><br>
>  BIOS += command_table2.o command_table_helper2.o bios_parser2.o<br>
><br>
> +<br>
>  AMD_DAL_BIOS = $(addprefix $(AMDDALPATH)/dc/bios/,$(BIOS))<br>
><br>
>  AMD_DISPLAY_FILES += $(AMD_DAL_BIOS)<br>
> @@ -55,3 +56,8 @@ AMD_DISPLAY_FILES += $(AMDDALPATH)/dc/bios/dce110/command_table_helper_dce110.o<br>
>  AMD_DISPLAY_FILES += $(AMDDALPATH)/dc/bios/dce112/command_table_helper_dce112.o<br>
><br>
>  AMD_DISPLAY_FILES += $(AMDDALPATH)/dc/bios/dce112/command_table_helper2_dce112.o<br>
> +<br>
> +###############################################################################<br>
> +# DCE COMMON<br>
> +###############################################################################<br>
> +AMD_DISPLAY_FILES += $(AMDDALPATH)/dc/bios/dce_common/command_table_helper_dce_common.o<br>
> diff --git a/drivers/gpu/drm/amd/display/dc/bios/dce110/command_table_helper_dce110.c b/drivers/gpu/drm/amd/display/dc/bios/dce110/command_table_helper_dce110.c<br>
> index 11bf247bb180..6f8fec224b88 100644<br>
> --- a/drivers/gpu/drm/amd/display/dc/bios/dce110/command_table_helper_dce110.c<br>
> +++ b/drivers/gpu/drm/amd/display/dc/bios/dce110/command_table_helper_dce110.c<br>
> @@ -31,38 +31,7 @@<br>
><br>
>  #include "../command_table_helper.h"<br>
><br>
> -static uint8_t phy_id_to_atom(enum transmitter t)<br>
> -{<br>
> -       uint8_t atom_phy_id;<br>
> -<br>
> -       switch (t) {<br>
> -       case TRANSMITTER_UNIPHY_A:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYA;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_B:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYB;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_C:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYC;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_D:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYD;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_E:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYE;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_F:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYF;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_G:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYG;<br>
> -               break;<br>
> -       default:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYA;<br>
> -               break;<br>
> -       }<br>
> -       return atom_phy_id;<br>
> -}<br>
> +#include "../dce_common/command_table_helper_dce_common.h"<br>
><br>
>  static uint8_t signal_type_to_atom_dig_mode(enum signal_type s)<br>
>  {<br>
> @@ -94,32 +63,6 @@ static uint8_t signal_type_to_atom_dig_mode(enum signal_type s)<br>
>         return atom_dig_mode;<br>
>  }<br>
><br>
> -static uint8_t clock_source_id_to_atom_phy_clk_src_id(<br>
> -               enum clock_source_id id)<br>
> -{<br>
> -       uint8_t atom_phy_clk_src_id = 0;<br>
> -<br>
> -       switch (id) {<br>
> -       case CLOCK_SOURCE_ID_PLL0:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P0PLL;<br>
> -               break;<br>
> -       case CLOCK_SOURCE_ID_PLL1:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P1PLL;<br>
> -               break;<br>
> -       case CLOCK_SOURCE_ID_PLL2:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P2PLL;<br>
> -               break;<br>
> -       case CLOCK_SOURCE_ID_EXTERNAL:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_REFCLK_SRC_EXT;<br>
> -               break;<br>
> -       default:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P1PLL;<br>
> -               break;<br>
> -       }<br>
> -<br>
> -       return atom_phy_clk_src_id >> 2;<br>
> -}<br>
> -<br>
>  static uint8_t hpd_sel_to_atom(enum hpd_source_id id)<br>
>  {<br>
>         uint8_t atom_hpd_sel = 0;<br>
> @@ -207,51 +150,6 @@ static bool clock_source_id_to_atom(<br>
>         return result;<br>
>  }<br>
><br>
> -static bool engine_bp_to_atom(enum engine_id id, uint32_t *atom_engine_id)<br>
> -{<br>
> -       bool result = false;<br>
> -<br>
> -       if (atom_engine_id != NULL)<br>
> -               switch (id) {<br>
> -               case ENGINE_ID_DIGA:<br>
> -                       *atom_engine_id = ASIC_INT_DIG1_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGB:<br>
> -                       *atom_engine_id = ASIC_INT_DIG2_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGC:<br>
> -                       *atom_engine_id = ASIC_INT_DIG3_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGD:<br>
> -                       *atom_engine_id = ASIC_INT_DIG4_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGE:<br>
> -                       *atom_engine_id = ASIC_INT_DIG5_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGF:<br>
> -                       *atom_engine_id = ASIC_INT_DIG6_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGG:<br>
> -                       *atom_engine_id = ASIC_INT_DIG7_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DACA:<br>
> -                       *atom_engine_id = ASIC_INT_DAC1_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               default:<br>
> -                       break;<br>
> -               }<br>
> -<br>
> -       return result;<br>
> -}<br>
> -<br>
>  static uint8_t encoder_action_to_atom(enum bp_encoder_control_action action)<br>
>  {<br>
>         uint8_t atom_action = 0;<br>
> diff --git a/drivers/gpu/drm/amd/display/dc/bios/dce112/command_table_helper2_dce112.c b/drivers/gpu/drm/amd/display/dc/bios/dce112/command_table_helper2_dce112.c<br>
> index 755b6e33140a..3392277ac3b6 100644<br>
> --- a/drivers/gpu/drm/amd/display/dc/bios/dce112/command_table_helper2_dce112.c<br>
> +++ b/drivers/gpu/drm/amd/display/dc/bios/dce112/command_table_helper2_dce112.c<br>
> @@ -31,38 +31,7 @@<br>
><br>
>  #include "../command_table_helper2.h"<br>
><br>
> -static uint8_t phy_id_to_atom(enum transmitter t)<br>
> -{<br>
> -       uint8_t atom_phy_id;<br>
> -<br>
> -       switch (t) {<br>
> -       case TRANSMITTER_UNIPHY_A:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYA;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_B:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYB;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_C:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYC;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_D:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYD;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_E:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYE;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_F:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYF;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_G:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYG;<br>
> -               break;<br>
> -       default:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYA;<br>
> -               break;<br>
> -       }<br>
> -       return atom_phy_id;<br>
> -}<br>
> +#include "../dce_common/command_table_helper_dce_common.h"<br>
><br>
>  static uint8_t signal_type_to_atom_dig_mode(enum signal_type s)<br>
>  {<br>
> @@ -91,32 +60,6 @@ static uint8_t signal_type_to_atom_dig_mode(enum signal_type s)<br>
>         return atom_dig_mode;<br>
>  }<br>
><br>
> -static uint8_t clock_source_id_to_atom_phy_clk_src_id(<br>
> -               enum clock_source_id id)<br>
> -{<br>
> -       uint8_t atom_phy_clk_src_id = 0;<br>
> -<br>
> -       switch (id) {<br>
> -       case CLOCK_SOURCE_ID_PLL0:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P0PLL;<br>
> -               break;<br>
> -       case CLOCK_SOURCE_ID_PLL1:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P1PLL;<br>
> -               break;<br>
> -       case CLOCK_SOURCE_ID_PLL2:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P2PLL;<br>
> -               break;<br>
> -       case CLOCK_SOURCE_ID_EXTERNAL:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_REFCLK_SRC_EXT;<br>
> -               break;<br>
> -       default:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P1PLL;<br>
> -               break;<br>
> -       }<br>
> -<br>
> -       return atom_phy_clk_src_id >> 2;<br>
> -}<br>
> -<br>
>  static uint8_t hpd_sel_to_atom(enum hpd_source_id id)<br>
>  {<br>
>         uint8_t atom_hpd_sel = 0;<br>
> @@ -209,51 +152,6 @@ static bool clock_source_id_to_atom(<br>
>         return result;<br>
>  }<br>
><br>
> -static bool engine_bp_to_atom(enum engine_id id, uint32_t *atom_engine_id)<br>
> -{<br>
> -       bool result = false;<br>
> -<br>
> -       if (atom_engine_id != NULL)<br>
> -               switch (id) {<br>
> -               case ENGINE_ID_DIGA:<br>
> -                       *atom_engine_id = ASIC_INT_DIG1_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGB:<br>
> -                       *atom_engine_id = ASIC_INT_DIG2_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGC:<br>
> -                       *atom_engine_id = ASIC_INT_DIG3_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGD:<br>
> -                       *atom_engine_id = ASIC_INT_DIG4_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGE:<br>
> -                       *atom_engine_id = ASIC_INT_DIG5_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGF:<br>
> -                       *atom_engine_id = ASIC_INT_DIG6_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGG:<br>
> -                       *atom_engine_id = ASIC_INT_DIG7_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DACA:<br>
> -                       *atom_engine_id = ASIC_INT_DAC1_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               default:<br>
> -                       break;<br>
> -               }<br>
> -<br>
> -       return result;<br>
> -}<br>
> -<br>
>  static uint8_t encoder_action_to_atom(enum bp_encoder_control_action action)<br>
>  {<br>
>         uint8_t atom_action = 0;<br>
> diff --git a/drivers/gpu/drm/amd/display/dc/bios/dce112/command_table_helper_dce112.c b/drivers/gpu/drm/amd/display/dc/bios/dce112/command_table_helper_dce112.c<br>
> index 06b4f7fa4a50..39b199b388e4 100644<br>
> --- a/drivers/gpu/drm/amd/display/dc/bios/dce112/command_table_helper_dce112.c<br>
> +++ b/drivers/gpu/drm/amd/display/dc/bios/dce112/command_table_helper_dce112.c<br>
> @@ -31,38 +31,7 @@<br>
><br>
>  #include "../command_table_helper.h"<br>
><br>
> -static uint8_t phy_id_to_atom(enum transmitter t)<br>
> -{<br>
> -       uint8_t atom_phy_id;<br>
> -<br>
> -       switch (t) {<br>
> -       case TRANSMITTER_UNIPHY_A:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYA;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_B:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYB;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_C:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYC;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_D:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYD;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_E:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYE;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_F:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYF;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_G:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYG;<br>
> -               break;<br>
> -       default:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYA;<br>
> -               break;<br>
> -       }<br>
> -       return atom_phy_id;<br>
> -}<br>
> +#include "../dce_common/command_table_helper_dce_common.h"<br>
><br>
>  static uint8_t signal_type_to_atom_dig_mode(enum signal_type s)<br>
>  {<br>
> @@ -91,32 +60,6 @@ static uint8_t signal_type_to_atom_dig_mode(enum signal_type s)<br>
>         return atom_dig_mode;<br>
>  }<br>
><br>
> -static uint8_t clock_source_id_to_atom_phy_clk_src_id(<br>
> -               enum clock_source_id id)<br>
> -{<br>
> -       uint8_t atom_phy_clk_src_id = 0;<br>
> -<br>
> -       switch (id) {<br>
> -       case CLOCK_SOURCE_ID_PLL0:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P0PLL;<br>
> -               break;<br>
> -       case CLOCK_SOURCE_ID_PLL1:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P1PLL;<br>
> -               break;<br>
> -       case CLOCK_SOURCE_ID_PLL2:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P2PLL;<br>
> -               break;<br>
> -       case CLOCK_SOURCE_ID_EXTERNAL:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_REFCLK_SRC_EXT;<br>
> -               break;<br>
> -       default:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P1PLL;<br>
> -               break;<br>
> -       }<br>
> -<br>
> -       return atom_phy_clk_src_id >> 2;<br>
> -}<br>
> -<br>
>  static uint8_t hpd_sel_to_atom(enum hpd_source_id id)<br>
>  {<br>
>         uint8_t atom_hpd_sel = 0;<br>
> @@ -209,51 +152,6 @@ static bool clock_source_id_to_atom(<br>
>         return result;<br>
>  }<br>
><br>
> -static bool engine_bp_to_atom(enum engine_id id, uint32_t *atom_engine_id)<br>
> -{<br>
> -       bool result = false;<br>
> -<br>
> -       if (atom_engine_id != NULL)<br>
> -               switch (id) {<br>
> -               case ENGINE_ID_DIGA:<br>
> -                       *atom_engine_id = ASIC_INT_DIG1_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGB:<br>
> -                       *atom_engine_id = ASIC_INT_DIG2_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGC:<br>
> -                       *atom_engine_id = ASIC_INT_DIG3_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGD:<br>
> -                       *atom_engine_id = ASIC_INT_DIG4_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGE:<br>
> -                       *atom_engine_id = ASIC_INT_DIG5_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGF:<br>
> -                       *atom_engine_id = ASIC_INT_DIG6_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGG:<br>
> -                       *atom_engine_id = ASIC_INT_DIG7_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DACA:<br>
> -                       *atom_engine_id = ASIC_INT_DAC1_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               default:<br>
> -                       break;<br>
> -               }<br>
> -<br>
> -       return result;<br>
> -}<br>
> -<br>
>  static uint8_t encoder_action_to_atom(enum bp_encoder_control_action action)<br>
>  {<br>
>         uint8_t atom_action = 0;<br>
> diff --git a/drivers/gpu/drm/amd/display/dc/bios/dce60/command_table_helper_dce60.c b/drivers/gpu/drm/amd/display/dc/bios/dce60/command_table_helper_dce60.c<br>
> index 710221b4f5c5..49b3c6fd648d 100644<br>
> --- a/drivers/gpu/drm/amd/display/dc/bios/dce60/command_table_helper_dce60.c<br>
> +++ b/drivers/gpu/drm/amd/display/dc/bios/dce60/command_table_helper_dce60.c<br>
> @@ -33,6 +33,8 @@<br>
><br>
>  #include "../command_table_helper.h"<br>
><br>
> +#include "../dce_common/command_table_helper_dce_common.h"<br>
> +<br>
>  static uint8_t encoder_action_to_atom(enum bp_encoder_control_action action)<br>
>  {<br>
>         uint8_t atom_action = 0;<br>
> @@ -58,51 +60,6 @@ static uint8_t encoder_action_to_atom(enum bp_encoder_control_action action)<br>
>         return atom_action;<br>
>  }<br>
><br>
> -static bool engine_bp_to_atom(enum engine_id id, uint32_t *atom_engine_id)<br>
> -{<br>
> -       bool result = false;<br>
> -<br>
> -       if (atom_engine_id != NULL)<br>
> -               switch (id) {<br>
> -               case ENGINE_ID_DIGA:<br>
> -                       *atom_engine_id = ASIC_INT_DIG1_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGB:<br>
> -                       *atom_engine_id = ASIC_INT_DIG2_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGC:<br>
> -                       *atom_engine_id = ASIC_INT_DIG3_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGD:<br>
> -                       *atom_engine_id = ASIC_INT_DIG4_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGE:<br>
> -                       *atom_engine_id = ASIC_INT_DIG5_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGF:<br>
> -                       *atom_engine_id = ASIC_INT_DIG6_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGG:<br>
> -                       *atom_engine_id = ASIC_INT_DIG7_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DACA:<br>
> -                       *atom_engine_id = ASIC_INT_DAC1_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               default:<br>
> -                       break;<br>
> -               }<br>
> -<br>
> -       return result;<br>
> -}<br>
> -<br>
>  static bool clock_source_id_to_atom(<br>
>         enum clock_source_id id,<br>
>         uint32_t *atom_pll_id)<br>
> @@ -149,32 +106,6 @@ static bool clock_source_id_to_atom(<br>
>         return result;<br>
>  }<br>
><br>
> -static uint8_t clock_source_id_to_atom_phy_clk_src_id(<br>
> -               enum clock_source_id id)<br>
> -{<br>
> -       uint8_t atom_phy_clk_src_id = 0;<br>
> -<br>
> -       switch (id) {<br>
> -       case CLOCK_SOURCE_ID_PLL0:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P0PLL;<br>
> -               break;<br>
> -       case CLOCK_SOURCE_ID_PLL1:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P1PLL;<br>
> -               break;<br>
> -       case CLOCK_SOURCE_ID_PLL2:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P2PLL;<br>
> -               break;<br>
> -       case CLOCK_SOURCE_ID_EXTERNAL:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_REFCLK_SRC_EXT;<br>
> -               break;<br>
> -       default:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P1PLL;<br>
> -               break;<br>
> -       }<br>
> -<br>
> -       return atom_phy_clk_src_id >> 2;<br>
> -}<br>
> -<br>
>  static uint8_t signal_type_to_atom_dig_mode(enum signal_type s)<br>
>  {<br>
>         uint8_t atom_dig_mode = ATOM_TRANSMITTER_DIGMODE_V5_DP;<br>
> @@ -270,39 +201,6 @@ static uint8_t dig_encoder_sel_to_atom(enum engine_id id)<br>
>         return atom_dig_encoder_sel;<br>
>  }<br>
><br>
> -static uint8_t phy_id_to_atom(enum transmitter t)<br>
> -{<br>
> -       uint8_t atom_phy_id;<br>
> -<br>
> -       switch (t) {<br>
> -       case TRANSMITTER_UNIPHY_A:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYA;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_B:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYB;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_C:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYC;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_D:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYD;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_E:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYE;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_F:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYF;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_G:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYG;<br>
> -               break;<br>
> -       default:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYA;<br>
> -               break;<br>
> -       }<br>
> -       return atom_phy_id;<br>
> -}<br>
> -<br>
>  static uint8_t disp_power_gating_action_to_atom(<br>
>         enum bp_pipe_control_action action)<br>
>  {<br>
> diff --git a/drivers/gpu/drm/amd/display/dc/bios/dce80/command_table_helper_dce80.c b/drivers/gpu/drm/amd/display/dc/bios/dce80/command_table_helper_dce80.c<br>
> index 8b30b558cf1f..f8c66e3a8f08 100644<br>
> --- a/drivers/gpu/drm/amd/display/dc/bios/dce80/command_table_helper_dce80.c<br>
> +++ b/drivers/gpu/drm/amd/display/dc/bios/dce80/command_table_helper_dce80.c<br>
> @@ -33,6 +33,8 @@<br>
><br>
>  #include "../command_table_helper.h"<br>
><br>
> +#include "../dce_common/command_table_helper_dce_common.h"<br>
> +<br>
>  static uint8_t encoder_action_to_atom(enum bp_encoder_control_action action)<br>
>  {<br>
>         uint8_t atom_action = 0;<br>
> @@ -58,51 +60,6 @@ static uint8_t encoder_action_to_atom(enum bp_encoder_control_action action)<br>
>         return atom_action;<br>
>  }<br>
><br>
> -static bool engine_bp_to_atom(enum engine_id id, uint32_t *atom_engine_id)<br>
> -{<br>
> -       bool result = false;<br>
> -<br>
> -       if (atom_engine_id != NULL)<br>
> -               switch (id) {<br>
> -               case ENGINE_ID_DIGA:<br>
> -                       *atom_engine_id = ASIC_INT_DIG1_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGB:<br>
> -                       *atom_engine_id = ASIC_INT_DIG2_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGC:<br>
> -                       *atom_engine_id = ASIC_INT_DIG3_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGD:<br>
> -                       *atom_engine_id = ASIC_INT_DIG4_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGE:<br>
> -                       *atom_engine_id = ASIC_INT_DIG5_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGF:<br>
> -                       *atom_engine_id = ASIC_INT_DIG6_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DIGG:<br>
> -                       *atom_engine_id = ASIC_INT_DIG7_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               case ENGINE_ID_DACA:<br>
> -                       *atom_engine_id = ASIC_INT_DAC1_ENCODER_ID;<br>
> -                       result = true;<br>
> -                       break;<br>
> -               default:<br>
> -                       break;<br>
> -               }<br>
> -<br>
> -       return result;<br>
> -}<br>
> -<br>
>  static bool clock_source_id_to_atom(<br>
>         enum clock_source_id id,<br>
>         uint32_t *atom_pll_id)<br>
> @@ -149,32 +106,6 @@ static bool clock_source_id_to_atom(<br>
>         return result;<br>
>  }<br>
><br>
> -static uint8_t clock_source_id_to_atom_phy_clk_src_id(<br>
> -               enum clock_source_id id)<br>
> -{<br>
> -       uint8_t atom_phy_clk_src_id = 0;<br>
> -<br>
> -       switch (id) {<br>
> -       case CLOCK_SOURCE_ID_PLL0:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P0PLL;<br>
> -               break;<br>
> -       case CLOCK_SOURCE_ID_PLL1:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P1PLL;<br>
> -               break;<br>
> -       case CLOCK_SOURCE_ID_PLL2:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P2PLL;<br>
> -               break;<br>
> -       case CLOCK_SOURCE_ID_EXTERNAL:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_REFCLK_SRC_EXT;<br>
> -               break;<br>
> -       default:<br>
> -               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P1PLL;<br>
> -               break;<br>
> -       }<br>
> -<br>
> -       return atom_phy_clk_src_id >> 2;<br>
> -}<br>
> -<br>
>  static uint8_t signal_type_to_atom_dig_mode(enum signal_type s)<br>
>  {<br>
>         uint8_t atom_dig_mode = ATOM_TRANSMITTER_DIGMODE_V5_DP;<br>
> @@ -270,39 +201,6 @@ static uint8_t dig_encoder_sel_to_atom(enum engine_id id)<br>
>         return atom_dig_encoder_sel;<br>
>  }<br>
><br>
> -static uint8_t phy_id_to_atom(enum transmitter t)<br>
> -{<br>
> -       uint8_t atom_phy_id;<br>
> -<br>
> -       switch (t) {<br>
> -       case TRANSMITTER_UNIPHY_A:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYA;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_B:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYB;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_C:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYC;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_D:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYD;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_E:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYE;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_F:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYF;<br>
> -               break;<br>
> -       case TRANSMITTER_UNIPHY_G:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYG;<br>
> -               break;<br>
> -       default:<br>
> -               atom_phy_id = ATOM_PHY_ID_UNIPHYA;<br>
> -               break;<br>
> -       }<br>
> -       return atom_phy_id;<br>
> -}<br>
> -<br>
>  static uint8_t disp_power_gating_action_to_atom(<br>
>         enum bp_pipe_control_action action)<br>
>  {<br>
> diff --git a/drivers/gpu/drm/amd/display/dc/bios/dce_common/command_table_helper_dce_common.c b/drivers/gpu/drm/amd/display/dc/bios/dce_common/command_table_helper_dce_common.c<br>
> new file mode 100644<br>
> index 000000000000..d715a2bb7710<br>
> --- /dev/null<br>
> +++ b/drivers/gpu/drm/amd/display/dc/bios/dce_common/command_table_helper_dce_common.c<br>
> @@ -0,0 +1,110 @@<br>
> +// SPDX-License-Identifier: MIT<br>
> +<br>
> +#include "dm_services.h"<br>
> +#include "atom.h"<br>
> +<br>
> +#include "command_table_helper_dce_common.h"<br>
> +<br>
> +uint8_t phy_id_to_atom(enum transmitter t)<br>
> +{<br>
> +       uint8_t atom_phy_id;<br>
> +<br>
> +       switch (t) {<br>
> +       case TRANSMITTER_UNIPHY_A:<br>
> +               atom_phy_id = ATOM_PHY_ID_UNIPHYA;<br>
> +               break;<br>
> +       case TRANSMITTER_UNIPHY_B:<br>
> +               atom_phy_id = ATOM_PHY_ID_UNIPHYB;<br>
> +               break;<br>
> +       case TRANSMITTER_UNIPHY_C:<br>
> +               atom_phy_id = ATOM_PHY_ID_UNIPHYC;<br>
> +               break;<br>
> +       case TRANSMITTER_UNIPHY_D:<br>
> +               atom_phy_id = ATOM_PHY_ID_UNIPHYD;<br>
> +               break;<br>
> +       case TRANSMITTER_UNIPHY_E:<br>
> +               atom_phy_id = ATOM_PHY_ID_UNIPHYE;<br>
> +               break;<br>
> +       case TRANSMITTER_UNIPHY_F:<br>
> +               atom_phy_id = ATOM_PHY_ID_UNIPHYF;<br>
> +               break;<br>
> +       case TRANSMITTER_UNIPHY_G:<br>
> +               atom_phy_id = ATOM_PHY_ID_UNIPHYG;<br>
> +               break;<br>
> +       default:<br>
> +               atom_phy_id = ATOM_PHY_ID_UNIPHYA;<br>
> +               break;<br>
> +       }<br>
> +       return atom_phy_id;<br>
> +}<br>
> +<br>
> +uint8_t clock_source_id_to_atom_phy_clk_src_id(<br>
> +               enum clock_source_id id)<br>
> +{<br>
> +       uint8_t atom_phy_clk_src_id = 0;<br>
> +<br>
> +       switch (id) {<br>
> +       case CLOCK_SOURCE_ID_PLL0:<br>
> +               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P0PLL;<br>
> +               break;<br>
> +       case CLOCK_SOURCE_ID_PLL1:<br>
> +               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P1PLL;<br>
> +               break;<br>
> +       case CLOCK_SOURCE_ID_PLL2:<br>
> +               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P2PLL;<br>
> +               break;<br>
> +       case CLOCK_SOURCE_ID_EXTERNAL:<br>
> +               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_REFCLK_SRC_EXT;<br>
> +               break;<br>
> +       default:<br>
> +               atom_phy_clk_src_id = ATOM_TRANSMITTER_CONFIG_V5_P1PLL;<br>
> +               break;<br>
> +       }<br>
> +<br>
> +       return atom_phy_clk_src_id >> 2;<br>
> +}<br>
> +<br>
> +bool engine_bp_to_atom(enum engine_id id, uint32_t *atom_engine_id)<br>
> +{<br>
> +       bool result = false;<br>
> +<br>
> +       if (atom_engine_id != NULL)<br>
> +               switch (id) {<br>
> +               case ENGINE_ID_DIGA:<br>
> +                       *atom_engine_id = ASIC_INT_DIG1_ENCODER_ID;<br>
> +                       result = true;<br>
> +                       break;<br>
> +               case ENGINE_ID_DIGB:<br>
> +                       *atom_engine_id = ASIC_INT_DIG2_ENCODER_ID;<br>
> +                       result = true;<br>
> +                       break;<br>
> +               case ENGINE_ID_DIGC:<br>
> +                       *atom_engine_id = ASIC_INT_DIG3_ENCODER_ID;<br>
> +                       result = true;<br>
> +                       break;<br>
> +               case ENGINE_ID_DIGD:<br>
> +                       *atom_engine_id = ASIC_INT_DIG4_ENCODER_ID;<br>
> +                       result = true;<br>
> +                       break;<br>
> +               case ENGINE_ID_DIGE:<br>
> +                       *atom_engine_id = ASIC_INT_DIG5_ENCODER_ID;<br>
> +                       result = true;<br>
> +                       break;<br>
> +               case ENGINE_ID_DIGF:<br>
> +                       *atom_engine_id = ASIC_INT_DIG6_ENCODER_ID;<br>
> +                       result = true;<br>
> +                       break;<br>
> +               case ENGINE_ID_DIGG:<br>
> +                       *atom_engine_id = ASIC_INT_DIG7_ENCODER_ID;<br>
> +                       result = true;<br>
> +                       break;<br>
> +               case ENGINE_ID_DACA:<br>
> +                       *atom_engine_id = ASIC_INT_DAC1_ENCODER_ID;<br>
> +                       result = true;<br>
> +                       break;<br>
> +               default:<br>
> +                       break;<br>
> +               }<br>
> +<br>
> +       return result;<br>
> +}<br>
> diff --git a/drivers/gpu/drm/amd/display/dc/bios/dce_common/command_table_helper_dce_common.h b/drivers/gpu/drm/amd/display/dc/bios/dce_common/command_table_helper_dce_common.h<br>
> new file mode 100644<br>
> index 000000000000..4e0ceb39b95f<br>
> --- /dev/null<br>
> +++ b/drivers/gpu/drm/amd/display/dc/bios/dce_common/command_table_helper_dce_common.h<br>
> @@ -0,0 +1,14 @@<br>
> +/* SPDX-License-Identifier: MIT */<br>
> +<br>
> +#ifndef __DAL_COMMAND_TABLE_HELPER_DCE_COMMON_H__<br>
> +#define __DAL_COMMAND_TABLE_HELPER_DCE_COMMON_H__<br>
> +<br>
> +<br>
> +uint8_t phy_id_to_atom(enum transmitter t);<br>
> +<br>
> +uint8_t clock_source_id_to_atom_phy_clk_src_id(<br>
> +               enum clock_source_id id);<br>
> +<br>
> +bool engine_bp_to_atom(enum engine_id id, uint32_t *atom_engine_id);<br>
> +<br>
> +#endif<br>
> --<br>
> 2.43.0<br>
><br>
</blockquote></div>