]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/display: Enable dcn42 DC
authorRoman Li <Roman.Li@amd.com>
Mon, 2 Feb 2026 23:47:34 +0000 (18:47 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 23 Feb 2026 19:28:33 +0000 (14:28 -0500)
Add support for DCN 4.2 in Display Core

Signed-off-by: Roman Li <Roman.Li@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
42 files changed:
drivers/gpu/drm/amd/display/dc/bios/command_table_helper2.c
drivers/gpu/drm/amd/display/dc/clk_mgr/Makefile
drivers/gpu/drm/amd/display/dc/core/dc_hw_sequencer.c
drivers/gpu/drm/amd/display/dc/core/dc_resource.c
drivers/gpu/drm/amd/display/dc/dc.h
drivers/gpu/drm/amd/display/dc/dc_helper.c
drivers/gpu/drm/amd/display/dc/dc_hw_types.h
drivers/gpu/drm/amd/display/dc/dc_types.h
drivers/gpu/drm/amd/display/dc/dccg/Makefile
drivers/gpu/drm/amd/display/dc/dccg/dcn20/dcn20_dccg.h
drivers/gpu/drm/amd/display/dc/dce/dce_abm.h
drivers/gpu/drm/amd/display/dc/dio/Makefile
drivers/gpu/drm/amd/display/dc/dio/dcn10/dcn10_stream_encoder.h
drivers/gpu/drm/amd/display/dc/dpp/Makefile
drivers/gpu/drm/amd/display/dc/dpp/dcn401/dcn401_dpp.h
drivers/gpu/drm/amd/display/dc/gpio/Makefile
drivers/gpu/drm/amd/display/dc/gpio/hw_factory.c
drivers/gpu/drm/amd/display/dc/gpio/hw_translate.c
drivers/gpu/drm/amd/display/dc/hpo/Makefile
drivers/gpu/drm/amd/display/dc/hpo/dcn31/dcn31_hpo_dp_stream_encoder.h
drivers/gpu/drm/amd/display/dc/hubbub/Makefile
drivers/gpu/drm/amd/display/dc/hubbub/dcn10/dcn10_hubbub.h
drivers/gpu/drm/amd/display/dc/hubp/Makefile
drivers/gpu/drm/amd/display/dc/hubp/dcn20/dcn20_hubp.h
drivers/gpu/drm/amd/display/dc/hwss/Makefile
drivers/gpu/drm/amd/display/dc/hwss/dce/dce_hwseq.h
drivers/gpu/drm/amd/display/dc/hwss/hw_sequencer.h
drivers/gpu/drm/amd/display/dc/hwss/hw_sequencer_private.h
drivers/gpu/drm/amd/display/dc/inc/hw/clk_mgr.h
drivers/gpu/drm/amd/display/dc/inc/hw/clk_mgr_internal.h
drivers/gpu/drm/amd/display/dc/inc/hw/dpp.h
drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h
drivers/gpu/drm/amd/display/dc/inc/hw/timing_generator.h
drivers/gpu/drm/amd/display/dc/irq/Makefile
drivers/gpu/drm/amd/display/dc/mmhubbub/Makefile
drivers/gpu/drm/amd/display/dc/mpc/Makefile
drivers/gpu/drm/amd/display/dc/mpc/dcn401/dcn401_mpc.c
drivers/gpu/drm/amd/display/dc/mpc/dcn401/dcn401_mpc.h
drivers/gpu/drm/amd/display/dc/optc/Makefile
drivers/gpu/drm/amd/display/dc/optc/dcn10/dcn10_optc.h
drivers/gpu/drm/amd/display/dc/pg/Makefile
drivers/gpu/drm/amd/display/dc/resource/Makefile

index 268e2414b34f033e02595b340ef8c24aefd467ca..a93a8860535a13346d041c9ca9f45d3966ade4c7 100644 (file)
@@ -84,6 +84,7 @@ bool dal_bios_parser_init_cmd_tbl_helper2(
        case DCN_VERSION_3_51:
        case DCN_VERSION_3_6:
        case DCN_VERSION_4_01:
+       case DCN_VERSION_4_2:
                *h = dal_cmd_tbl_helper_dce112_get_table2();
                return true;
 
index 612a30a03fca5315f88b3547d9ebaadd7990a341..98911ef56c2edd334f79f5456f740a25579f674f 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright 2017 Advanced Micro Devices, Inc.
+# Copyright 2017-2026 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"),
@@ -176,4 +176,13 @@ CLK_MGR_DCN401 = dcn401_clk_mgr.o dcn401_clk_mgr_smu_msg.o
 AMD_DAL_CLK_MGR_DCN401 = $(addprefix $(AMDDALPATH)/dc/clk_mgr/dcn401/,$(CLK_MGR_DCN401))
 
 AMD_DISPLAY_FILES += $(AMD_DAL_CLK_MGR_DCN401)
+
+###############################################################################
+# DCN42
+###############################################################################
+CLK_MGR_DCN42 = dcn42_smu.o dcn42_clk_mgr.o
+
+AMD_DAL_CLK_MGR_DCN42 = $(addprefix $(AMDDALPATH)/dc/clk_mgr/dcn42/,$(CLK_MGR_DCN42))
+
+AMD_DISPLAY_FILES += $(AMD_DAL_CLK_MGR_DCN42)
 endif
index 052d573408c3eb88e5d16067602755817d2601f0..b380044416164ebfa0065ccc976dc5d2aadfecb2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015 Advanced Micro Devices, Inc.
+ * Copyright 2015-2026 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"),
@@ -846,6 +846,16 @@ void hwss_build_fast_sequence(struct dc *dc,
                                        block_sequence[*num_steps].func = DPP_PROGRAM_BIAS_AND_SCALE;
                                        (*num_steps)++;
                                }
+                               if (current_mpc_pipe->plane_state->update_flags.bits.cm_hist_change) {
+                                       block_sequence[*num_steps].params.control_cm_hist_params.dpp
+                                               = current_mpc_pipe->plane_res.dpp;
+                                       block_sequence[*num_steps].params.control_cm_hist_params.cm_hist_control
+                                               = current_mpc_pipe->plane_state->cm_hist_control;
+                                       block_sequence[*num_steps].params.control_cm_hist_params.color_space
+                                               = current_mpc_pipe->plane_state->color_space;
+                                       block_sequence[*num_steps].func = DPP_PROGRAM_CM_HIST;
+                                       (*num_steps)++;
+                               }
                        }
                        if (hws->funcs.set_output_transfer_func && current_mpc_pipe->stream->update_flags.bits.out_tf) {
                                block_sequence[*num_steps].params.set_output_transfer_func_params.dc = dc;
@@ -1029,6 +1039,9 @@ void hwss_execute_sequence(struct dc *dc,
                case HUBP_PROGRAM_MCACHE_ID:
                        hwss_program_mcache_id_and_split_coordinate(params);
                        break;
+               case DPP_PROGRAM_CM_HIST:
+                       hwss_program_cm_hist(params);
+                       break;
                case PROGRAM_CURSOR_UPDATE_NOW:
                        dc->hwss.program_cursor_offload_now(
                                params->program_cursor_update_now_params.dc,
@@ -2054,6 +2067,16 @@ void hwss_program_mcache_id_and_split_coordinate(union block_sequence_params *pa
 
 }
 
+void hwss_program_cm_hist(union block_sequence_params *params)
+{
+       struct dpp *dpp = params->control_cm_hist_params.dpp;
+
+       if (dpp && dpp->funcs->dpp_cm_hist_control)
+               dpp->funcs->dpp_cm_hist_control(dpp,
+                       params->control_cm_hist_params.cm_hist_control,
+                       params->control_cm_hist_params.color_space);
+}
+
 void get_surface_tile_visual_confirm_color(
                struct pipe_ctx *pipe_ctx,
                struct tg_color *color)
@@ -3370,6 +3393,20 @@ void hwss_add_opp_program_bit_depth_reduction(struct block_sequence_state *seq_s
        }
 }
 
+void hwss_add_dpp_program_cm_hist(struct block_sequence_state *seq_state,
+               struct dpp *dpp,
+               struct cm_hist_control cm_hist_control,
+               enum dc_color_space color_space)
+{
+       if (*seq_state->num_steps < MAX_HWSS_BLOCK_SEQUENCE_SIZE) {
+               seq_state->steps[*seq_state->num_steps].func = DPP_PROGRAM_CM_HIST;
+               seq_state->steps[*seq_state->num_steps].params.control_cm_hist_params.dpp = dpp;
+               seq_state->steps[*seq_state->num_steps].params.control_cm_hist_params.cm_hist_control = cm_hist_control;
+               seq_state->steps[*seq_state->num_steps].params.control_cm_hist_params.color_space = color_space;
+               (*seq_state->num_steps)++;
+       }
+}
+
 void hwss_add_dc_ip_request_cntl(struct block_sequence_state *seq_state,
                struct dc *dc,
                bool enable)
index 03d125f794b058235b635f0a6397e7a420c80722..c9fbb64d706a2dbc5ae0a7bee1efe911deccd425 100644 (file)
@@ -78,6 +78,7 @@
 #include "dcn351/dcn351_resource.h"
 #include "dcn36/dcn36_resource.h"
 #include "dcn401/dcn401_resource.h"
+#include "dcn42/dcn42_resource.h"
 #if defined(CONFIG_DRM_AMD_DC_FP)
 #include "dc_spl_translate.h"
 #endif
@@ -252,6 +253,9 @@ enum dce_version resource_parse_asic_id(struct hw_asic_id asic_id)
                        ASICREV_IS_GC_12_0_0_A0(asic_id.hw_internal_rev))
                        dc_version = DCN_VERSION_4_01;
                break;
+       case AMDGPU_FAMILY_GC_11_5_4:
+                       dc_version = DCN_VERSION_4_2;
+       break;
        default:
                dc_version = DCE_VERSION_UNKNOWN;
                break;
@@ -368,6 +372,9 @@ struct resource_pool *dc_create_resource_pool(struct dc  *dc,
        case DCN_VERSION_4_01:
                res_pool = dcn401_create_resource_pool(init_data, dc);
                break;
+       case DCN_VERSION_4_2:
+               res_pool = dcn42_create_resource_pool(init_data, dc);
+               break;
 #endif /* CONFIG_DRM_AMD_DC_FP */
        default:
                break;
index eb9de0e48c63cc6b5b788c539e7e3ae7ebe94753..d2ea4e03c963a8e3a27968bf6c8a50f10ca52c69 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012-2023 Advanced Micro Devices, Inc.
+ * Copyright 2012-2026 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"),
@@ -733,6 +733,8 @@ struct dc_clocks {
        struct {
                uint8_t base_efficiency; //LP1
                uint8_t low_power_efficiency; //LP2
+               uint8_t z8_stutter_efficiency;
+               int z8_stutter_period;
        } stutter_efficiency;
 };
 
@@ -1211,6 +1213,7 @@ struct dc_debug_options {
        unsigned int num_fast_flips_to_steady_state_override;
        bool enable_dmu_recovery;
        unsigned int force_vmin_threshold;
+       bool enable_otg_frame_sync_pwa;
 };
 
 
@@ -1419,6 +1422,7 @@ struct dc_plane_status {
        struct dc_plane_address current_address;
        bool is_flip_pending;
        bool is_right_eye;
+       struct cm_hist cm_hist;
 };
 
 union surface_update_flags {
@@ -1455,6 +1459,7 @@ union surface_update_flags {
                uint32_t mcm_transfer_function_enable_change:1; /* disable or enable MCM transfer func */
                uint32_t full_update:1;
                uint32_t sdr_white_level_nits:1;
+               uint32_t cm_hist_change:1;
        } bits;
 
        uint32_t raw;
@@ -1539,6 +1544,7 @@ struct dc_plane_state {
        int sharpness_level;
        enum linear_light_scaling linear_light_scaling;
        unsigned int sdr_white_level_nits;
+       struct cm_hist_control cm_hist_control;
        struct spl_sharpness_range sharpness_range;
        enum sharpness_range_source sharpness_source;
 };
@@ -1847,6 +1853,7 @@ struct dc_fast_update {
        struct dc_transfer_func *out_transfer_func;
        struct dc_csc_transform *output_csc_transform;
        const struct dc_csc_transform *cursor_csc_color_matrix;
+       struct cm_hist_control *cm_hist_control;
 };
 
 struct dc_surface_update {
@@ -1879,6 +1886,7 @@ struct dc_surface_update {
        const struct dc_csc_transform *cursor_csc_color_matrix;
        unsigned int sdr_white_level_nits;
        struct dc_bias_and_scale bias_and_scale;
+       struct cm_hist_control *cm_hist_control;
 };
 
 struct dc_underflow_debug_data {
index 5a365bd19933f794536c14c003627f714f361b3e..04b8b798dfff66ebd868bb57743fff3170e7c853 100644 (file)
@@ -751,6 +751,8 @@ char *dce_version_to_string(const int version)
                return "DCN 3.6";
        case DCN_VERSION_4_01:
                return "DCN 4.0.1";
+       case DCN_VERSION_4_2:
+               return "DCN 4.2";
        default:
                return "Unknown";
        }
index cfa569a7bff1bb109c1a9501061efcdb241767df..9bf853edc46fc237705ed30a03aa8d34ebd96950 100644 (file)
@@ -271,6 +271,15 @@ enum tile_split_values_new {
        DC_SURF_TILE_SPLIT_1KB = 0x4,
 };
 
+enum otg_pwa_sync_mode {
+       DC_OTG_PWA_FRAME_SYNC_MODE_VSYNC = 0x0,
+       DC_OTG_PWA_FRAME_SYNC_MODE_VSTARTUP = 0x1,
+};
+struct otc_pwa_frame_sync {
+       enum otg_pwa_sync_mode pwa_sync_mode;
+       uint32_t pwa_frame_sync_line_offset;
+};
+
 /* TODO: These values come from hardware spec. We need to readdress this
  * if they ever change.
  */
@@ -1137,6 +1146,7 @@ struct mcif_buf_params {
        unsigned int            warmup_pitch;
        unsigned int            swlock;
        unsigned int            p_vmid;
+       uint8_t                         tmz_id;
 };
 
 
@@ -1162,5 +1172,68 @@ struct phy_state {
        enum symclk_state symclk_state;
 };
 
+enum cm_hist_tap_point {
+       CM_HIST_TAP_POINT_1,
+       CM_HIST_TAP_POINT_2,
+       CM_HIST_TAP_POINT_3,
+       CM_HIST_TAP_POINT_4,
+};
+
+enum cm_hist_src {
+       CM_HIST_SRC1,
+       CM_HIST_SRC2,
+       CM_HIST_SRC3,
+};
+
+enum cm_hist_format {
+       CM_HIST_FORMAT_FIXED_POINT,
+       CM_HIST_FORMAT_FP16_POS,
+       CM_HIST_FORMAT_FP16_POS_AND_NEG,
+};
+
+enum cm_hist_read_channel_mask {
+       CM_HIST_READ_DISABLED,
+       CM_HIST_READ_CH1,
+       CM_HIST_READ_CH2,
+       CM_HIST_READ_CH1_CH2,
+       CM_HIST_READ_CH3,
+       CM_HIST_READ_CH1_CH3,
+       CM_HIST_READ_CH2_CH3,
+       CM_HIST_READ_ALL,
+};
+
+enum cm_hist_src1_mode {
+       CM_HIST_SRC1_MODE_R_OR_CR,
+       CM_HIST_SRC1_MODE_MAX_RGB,
+};
+
+enum cm_hist_src2_mode {
+       CM_HIST_SRC2_MODE_G_OR_Y,
+       CM_HIST_SRC2_MODE_RGB_TO_Y,
+};
+
+enum cm_hist_src3_mode {
+       CM_HIST_SRC3_MODE_B_OR_CB,
+       CM_HIST_SRC3_MODE_MIN_RGB,
+};
+
+struct cm_hist_control {
+       enum cm_hist_tap_point tap_point;
+       uint32_t channels_enabled;
+       enum cm_hist_src1_mode src_1_select;
+       enum cm_hist_src2_mode src_2_select;
+       enum cm_hist_src3_mode src_3_select;
+       enum cm_hist_src ch1_src;
+       enum cm_hist_src ch2_src;
+       enum cm_hist_src ch3_src;
+       enum cm_hist_format format;
+       enum cm_hist_read_channel_mask read_channel_mask;
+};
+
+struct cm_hist {
+       uint32_t ch1[256];
+       uint32_t ch2[256];
+       uint32_t ch3[256];
+};
 #endif /* DC_HW_TYPES_H */
 
index bddb16bb76d41ffc2272ce628997263cf44e1c05..d2e60480fb2bea938ab0a2352df27a7a9fb34fcd 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012-15 Advanced Micro Devices, Inc.
+ * Copyright 2012-2026 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"),
@@ -1346,6 +1346,7 @@ enum dc_cm2_gpu_mem_layout {
 
 enum dc_cm2_gpu_mem_pixel_component_order {
        DC_CM2_GPU_MEM_PIXEL_COMPONENT_ORDER_RGBA,
+       DC_CM2_GPU_MEM_PIXEL_COMPONENT_ORDER_BGRA
 };
 
 enum dc_cm2_gpu_mem_format {
@@ -1367,6 +1368,9 @@ struct dc_cm2_gpu_mem_format_parameters {
 
 enum dc_cm2_gpu_mem_size {
        DC_CM2_GPU_MEM_SIZE_171717,
+       DC_CM2_GPU_MEM_SIZE_333333,
+       DC_CM2_GPU_MEM_SIZE_454545,
+       DC_CM2_GPU_MEM_SIZE_656565,
        DC_CM2_GPU_MEM_SIZE_TRANSFORMED,
 };
 
index 1d5cf0f8e79d64172670f9eb79997dc40af1aa44..bf7e71166b5ea786f0fe7bbd9c139cc25417cd7e 100644 (file)
@@ -1,5 +1,5 @@
 
-# Copyright 2022 Advanced Micro Devices, Inc.
+# Copyright 2022-2026 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"),
@@ -100,4 +100,13 @@ DCCG_DCN401 = dcn401_dccg.o
 AMD_DAL_DCCG_DCN401 = $(addprefix $(AMDDALPATH)/dc/dccg/dcn401/,$(DCCG_DCN401))
 
 AMD_DISPLAY_FILES += $(AMD_DAL_DCCG_DCN401)
+
+###############################################################################
+# DCN42
+###############################################################################
+DCCG_DCN42 = dcn42_dccg.o
+
+AMD_DAL_DCCG_DCN42 = $(addprefix $(AMDDALPATH)/dc/dccg/dcn42/,$(DCCG_DCN42))
+
+AMD_DISPLAY_FILES += $(AMD_DAL_DCCG_DCN42)
 endif
index 3711d400773af1181f1da737a9066e951ffac864..ffcd2e139e764d00151f7449b80094ee4235778d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2018 Advanced Micro Devices, Inc.
+ * Copyright 2018-2026 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"),
        type SYMCLK32_LE3_EN;\
        type DP_DTO_ENABLE[MAX_PIPES];
 
+#define DCCG42_REG_FIELD_LIST(type) \
+       type OTG0_ADD_PIXEL;\
+       type OTG1_ADD_PIXEL;\
+       type OTG2_ADD_PIXEL;\
+       type OTG0_DROP_PIXEL;\
+       type OTG1_DROP_PIXEL;\
+       type OTG2_DROP_PIXEL;\
+       type OTG3_ADD_PIXEL;\
+       type OTG3_DROP_PIXEL;
+
 struct dccg_shift {
        DCCG_REG_FIELD_LIST(uint8_t)
        DCCG3_REG_FIELD_LIST(uint8_t)
@@ -370,6 +380,7 @@ struct dccg_shift {
        DCCG32_REG_FIELD_LIST(uint8_t)
        DCCG35_REG_FIELD_LIST(uint8_t)
        DCCG401_REG_FIELD_LIST(uint8_t)
+       DCCG42_REG_FIELD_LIST(uint8_t)
 };
 
 struct dccg_mask {
@@ -380,6 +391,7 @@ struct dccg_mask {
        DCCG32_REG_FIELD_LIST(uint32_t)
        DCCG35_REG_FIELD_LIST(uint32_t)
        DCCG401_REG_FIELD_LIST(uint32_t)
+       DCCG42_REG_FIELD_LIST(uint32_t)
 };
 
 #define DCCG_REG_VARIABLE_LIST \
@@ -493,6 +505,7 @@ struct dccg_mask {
 
 struct dccg_registers {
        DCCG_REG_VARIABLE_LIST;
+       uint32_t OTG_ADD_DROP_PIXEL_CNTL;
 };
 
 struct dcn_dccg {
index 3d819fc5654cdb2af7815d24a6a65467b34a7a32..1e9ab5ff3a31e446be89057b627d06a52756be02 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012-16 Advanced Micro Devices, Inc.
+ * Copyright 2012-2026 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"),
        ABM_SF(ABM0_DC_ABM1_HG_BIN_57_64_SHIFT_INDEX, \
                        ABM1_HG_BIN_57_64_SHIFT_INDEX, mask_sh)
 
+#define ABM_MASK_SH_LIST_DCN42(mask_sh) \
+       ABM_SF(ABM0_DC_ABM1_HG_MISC_CTRL, \
+                       ABM1_HG_NUM_OF_BINS_SEL, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_HG_MISC_CTRL, \
+                       ABM1_HG_VMAX_SEL, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_HG_MISC_CTRL, \
+                       ABM1_HG_BIN_BITWIDTH_SIZE_SEL, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_IPCSC_COEFF_SEL, \
+                       ABM1_IPCSC_COEFF_SEL_R, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_IPCSC_COEFF_SEL, \
+                       ABM1_IPCSC_COEFF_SEL_G, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_IPCSC_COEFF_SEL, \
+                       ABM1_IPCSC_COEFF_SEL_B, mask_sh), \
+       ABM_SF(ABM0_BL1_PWM_CURRENT_ABM_LEVEL, \
+                       BL1_PWM_CURRENT_ABM_LEVEL, mask_sh), \
+       ABM_SF(ABM0_BL1_PWM_TARGET_ABM_LEVEL, \
+                       BL1_PWM_TARGET_ABM_LEVEL, mask_sh), \
+       ABM_SF(ABM0_BL1_PWM_USER_LEVEL, \
+                       BL1_PWM_USER_LEVEL, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_LS_MIN_MAX_PIXEL_VALUE_THRES, \
+                       ABM1_LS_MIN_PIXEL_VALUE_THRES, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_LS_MIN_MAX_PIXEL_VALUE_THRES, \
+                       ABM1_LS_MAX_PIXEL_VALUE_THRES, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_HGLS_REG_READ_PROGRESS, \
+                       ABM1_HG_REG_READ_MISSED_FRAME_CLEAR, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_HGLS_REG_READ_PROGRESS, \
+                       ABM1_LS_REG_READ_MISSED_FRAME_CLEAR, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_HGLS_REG_READ_PROGRESS, \
+                       ABM1_BL_REG_READ_MISSED_FRAME_CLEAR, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_ACE_OFFSET_SLOPE_DATA, \
+                       ABM1_ACE_SLOPE_DATA, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_ACE_OFFSET_SLOPE_DATA, \
+                       ABM1_ACE_OFFSET_DATA, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_ACE_PWL_CNTL, \
+                       ABM1_ACE_OFFSET_SLOPE_INDEX, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_ACE_PWL_CNTL, \
+                       ABM1_ACE_IGNORE_MASTER_LOCK_EN, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_ACE_PWL_CNTL, \
+                       ABM1_ACE_READBACK_DB_REG_VALUE_EN, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_ACE_PWL_CNTL, \
+                       ABM1_ACE_DBUF_REG_UPDATE_PENDING, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_ACE_PWL_CNTL, \
+                       ABM1_ACE_LOCK, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_HG_RESULT_DATA, \
+                       ABM1_HG_RESULT_DATA, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_HG_RESULT_INDEX, \
+                       ABM1_HG_RESULT_INDEX, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_HG_BIN_33_40_SHIFT_INDEX, \
+                       ABM1_HG_BIN_33_40_SHIFT_INDEX, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_HG_BIN_33_64_SHIFT_FLAG, \
+                       ABM1_HG_BIN_33_64_SHIFT_FLAG, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_HG_BIN_41_48_SHIFT_INDEX, \
+                       ABM1_HG_BIN_41_48_SHIFT_INDEX, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_HG_BIN_49_56_SHIFT_INDEX, \
+                       ABM1_HG_BIN_49_56_SHIFT_INDEX, mask_sh), \
+       ABM_SF(ABM0_DC_ABM1_HG_BIN_57_64_SHIFT_INDEX, \
+                       ABM1_HG_BIN_57_64_SHIFT_INDEX, mask_sh)
+
 #define ABM_REG_FIELD_LIST(type) \
        type ABM1_HG_NUM_OF_BINS_SEL; \
        type ABM1_HG_VMAX_SEL; \
index 2f5619078e1f96964ff1e7b69a0536c3724326f4..4832533b9514ae7d5690678d6100009da14978a6 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright 2020 Advanced Micro Devices, Inc.
+# Copyright 2020-2026 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"),
@@ -123,4 +123,13 @@ DIO_DCN401 = dcn401_dio_link_encoder.o dcn401_dio_stream_encoder.o
 AMD_DAL_DIO_DCN401 = $(addprefix $(AMDDALPATH)/dc/dio/dcn401/,$(DIO_DCN401))
 
 AMD_DISPLAY_FILES += $(AMD_DAL_DIO_DCN401)
+
+###############################################################################
+# DCN42
+###############################################################################
+DIO_DCN42 = dcn42_dio_link_encoder.o dcn42_dio_stream_encoder.o
+
+AMD_DAL_DIO_DCN42 = $(addprefix $(AMDDALPATH)/dc/dio/dcn42/,$(DIO_DCN42))
+
+AMD_DISPLAY_FILES += $(AMD_DAL_DIO_DCN42)
 endif
index 54a6a4ebd6363682bc0e8a207fbea3e0f9e98239..7553675065563a26cba452f994d11b383dd30712 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012-15 Advanced Micro Devices, Inc.
+ * Copyright 2012-2026 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"),
@@ -190,6 +190,7 @@ struct dcn10_stream_enc_registers {
        uint32_t DIG_FE_CLK_CNTL;
        uint32_t DIG_FE_EN_CNTL;
        uint32_t STREAM_MAPPER_CONTROL;
+       uint32_t DIG_FE_AUDIO_CNTL;
 };
 
 
@@ -598,6 +599,11 @@ struct dcn10_stream_enc_registers {
        type DP_VID_N_INTERVAL;\
        type DIG_FIFO_OUTPUT_PIXEL_PER_CYCLE;\
        type DP_STEER_FIFO_ENABLE
+
+#define SE_REG_FIELD_LIST_DCN_AUDIO_COMMON(type) \
+       type DIG_FE_INPUT_MUX_AUDIO_STREAM_SOURCE_SEL;\
+       type APG_CLOCK_ENABLE
+
 struct dcn10_stream_encoder_shift {
        SE_REG_FIELD_LIST_DCN1_0(uint8_t);
        uint8_t HDMI_ACP_SEND;
@@ -606,6 +612,7 @@ struct dcn10_stream_encoder_shift {
        SE_REG_FIELD_LIST_DCN3_1_COMMON(uint8_t);
        SE_REG_FIELD_LIST_DCN3_5_COMMON(uint8_t);
        SE_REG_FIELD_LIST_DCN4_01_COMMON(uint32_t);
+       SE_REG_FIELD_LIST_DCN_AUDIO_COMMON(uint32_t);
 };
 
 struct dcn10_stream_encoder_mask {
@@ -616,6 +623,7 @@ struct dcn10_stream_encoder_mask {
        SE_REG_FIELD_LIST_DCN3_1_COMMON(uint32_t);
        SE_REG_FIELD_LIST_DCN3_5_COMMON(uint32_t);
        SE_REG_FIELD_LIST_DCN4_01_COMMON(uint32_t);
+       SE_REG_FIELD_LIST_DCN_AUDIO_COMMON(uint32_t);
 };
 
 struct dcn10_stream_encoder {
index 8324a56fe7dbf4ad042248c70f4c054d892c1a4a..2595b2504f9d1f32a5507816d352fd3e54b35061 100644 (file)
@@ -1,5 +1,5 @@
 
-# Copyright 2022 Advanced Micro Devices, Inc.
+# Copyright 2022-2026 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"),
@@ -80,4 +80,12 @@ AMD_DAL_DPP_DCN401 = $(addprefix $(AMDDALPATH)/dc/dpp/dcn401/,$(DPP_DCN401))
 
 AMD_DISPLAY_FILES += $(AMD_DAL_DPP_DCN401)
 
+###############################################################################
+# DCN42
+###############################################################################
+DPP_DCN42 = dcn42_dpp.o
+
+AMD_DAL_DPP_DCN42 = $(addprefix $(AMDDALPATH)/dc/dpp/dcn42/,$(DPP_DCN42))
+
+AMD_DISPLAY_FILES += $(AMD_DAL_DPP_DCN42)
 endif
index 58b9f1cd082550df0976e63eba70dbf8986d5b16..debcf308cb3b0d205322cdebab394716247e5f9c 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright 2023 Advanced Micro Devices, Inc.
+/* SPDX-License-Identifier: MIT */
+/* Copyright 2023-2026 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"),
 
 struct dcn401_dpp_registers {
        DPP_REG_VARIABLE_LIST_DCN401;
+       uint32_t ALPHA_2BIT_LUT01;
+       uint32_t ALPHA_2BIT_LUT23;
 };
 
 struct dcn401_dpp_shift {
index b72e2a9f9a28e0a0818e60a0f623a90532963375..f8142ebf363f3663daba4b1504e02741edbe5042 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright 2017 Advanced Micro Devices, Inc.
+# Copyright 2017-2026 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"),
@@ -132,3 +132,14 @@ AMD_DAL_GPIO_DCN401 = $(addprefix $(AMDDALPATH)/dc/gpio/dcn401/,$(GPIO_DCN401))
 
 AMD_DISPLAY_FILES += $(AMD_DAL_GPIO_DCN401)
 
+###############################################################################
+# DCN 4.2
+###############################################################################
+
+GPIO_DCN42 = hw_translate_dcn42.o hw_factory_dcn42.o
+
+AMD_DAL_GPIO_DCN42 = $(addprefix $(AMDDALPATH)/dc/gpio/dcn42/,$(GPIO_DCN42))
+
+AMD_DISPLAY_FILES += $(AMD_DAL_GPIO_DCN42)
+
+
index 8bc67ca42197760cfe73cc0a53cb2f1255910abb..f3d562c8df4c919626788b49de0ad865a7939f3e 100644 (file)
@@ -53,6 +53,7 @@
 #include "dcn315/hw_factory_dcn315.h"
 #include "dcn32/hw_factory_dcn32.h"
 #include "dcn401/hw_factory_dcn401.h"
+#include "dcn42/hw_factory_dcn42.h"
 
 bool dal_hw_factory_init(
        struct hw_factory *factory,
@@ -118,6 +119,9 @@ bool dal_hw_factory_init(
        case DCN_VERSION_4_01:
                dal_hw_factory_dcn401_init(factory);
                return true;
+       case DCN_VERSION_4_2:
+               dal_hw_factory_dcn42_init(factory);
+               return true;
        default:
                ASSERT_CRITICAL(false);
                return false;
index cb79a283228778f1f83dcac1c02d92d0c6f5e580..1c977fc4d0e36be4a5a9ae141a4e69311a9a00ca 100644 (file)
@@ -53,6 +53,7 @@
 #include "dcn315/hw_translate_dcn315.h"
 #include "dcn32/hw_translate_dcn32.h"
 #include "dcn401/hw_translate_dcn401.h"
+#include "dcn42/hw_translate_dcn42.h"
 
 /*
  * This unit
@@ -119,6 +120,9 @@ bool dal_hw_translate_init(
        case DCN_VERSION_4_01:
                dal_hw_translate_dcn401_init(translate);
                return true;
+       case DCN_VERSION_4_2:
+               dal_hw_translate_dcn42_init(translate);
+               return true;
        default:
                BREAK_TO_DEBUGGER();
                return false;
index 7f2c9ee0dff1d5f2f01b352871ed01a25ca04023..25b196714bd8c65c62afd853921d3dfeac2418a2 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright 2020 Advanced Micro Devices, Inc.
+# Copyright 2020-2026 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"),
@@ -47,4 +47,13 @@ HPO_DCN32 = dcn32_hpo_dp_link_encoder.o
 AMD_DAL_HPO_DCN32 = $(addprefix $(AMDDALPATH)/dc/hpo/dcn32/,$(HPO_DCN32))
 
 AMD_DISPLAY_FILES += $(AMD_DAL_HPO_DCN32)
+
+###############################################################################
+# DCN42
+###############################################################################
+HPO_DCN42 = dcn42_hpo_dp_link_encoder.o
+
+AMD_DAL_HPO_DCN42 = $(addprefix $(AMDDALPATH)/dc/hpo/dcn42/,$(HPO_DCN42))
+
+AMD_DISPLAY_FILES += $(AMD_DAL_HPO_DCN42)
 endif
index 82c3b3ac1f0d01459e18cbb27218542c4283f19e..d96fcc59cc0ee586e167e722ef0b910e50078c88 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019 Advanced Micro Devices, Inc.
+ * Copyright 2019-2026 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"),
        type CRC_CONT_MODE_ENABLE;\
        type HBLANK_MINIMUM_SYMBOL_WIDTH
 
+#define DCN4_2_HPO_DP_STREAM_ENC_REG_FIELD_LIST(type) \
+       type DP_STREAM_ENC_APG_CLOCK_EN
 
+#define DCN4_2_HPO_DP_STREAM_ENC_MASK_SH_LIST(mask_sh)\
+       DCN3_1_HPO_DP_STREAM_ENC_MASK_SH_LIST(mask_sh),\
+       SE_SF(DP_STREAM_ENC0_DP_STREAM_ENC_AUDIO_CONTROL, DP_STREAM_ENC_APG_CLOCK_EN, mask_sh)
 struct dcn31_hpo_dp_stream_encoder_registers {
        DCN3_1_HPO_DP_STREAM_ENC_REGS;
 };
 
 struct dcn31_hpo_dp_stream_encoder_shift {
        DCN3_1_HPO_DP_STREAM_ENC_REG_FIELD_LIST(uint8_t);
+       DCN4_2_HPO_DP_STREAM_ENC_REG_FIELD_LIST(uint8_t);
 };
 
 struct dcn31_hpo_dp_stream_encoder_mask {
        DCN3_1_HPO_DP_STREAM_ENC_REG_FIELD_LIST(uint32_t);
+       DCN4_2_HPO_DP_STREAM_ENC_REG_FIELD_LIST(uint32_t);
 };
 
 struct dcn31_hpo_dp_stream_encoder {
@@ -241,5 +248,4 @@ void dcn31_hpo_dp_stream_encoder_construct(
        const struct dcn31_hpo_dp_stream_encoder_shift *hpo_se_shift,
        const struct dcn31_hpo_dp_stream_encoder_mask *hpo_se_mask);
 
-
 #endif   // __DAL_DCN31_HPO_STREAM_ENCODER_H__
index 66ca5a6a0415e145f8be3a900c22aba296ddbd50..29c8e2651442b7c9e6426ac5959dc2b2a7618e5f 100644 (file)
@@ -1,5 +1,5 @@
 
-# Copyright 2022 Advanced Micro Devices, Inc.
+# Copyright 2022-2026 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"),
@@ -101,4 +101,12 @@ AMD_DAL_HUBBUB_DCN401 = $(addprefix $(AMDDALPATH)/dc/hubbub/dcn401/,$(HUBBUB_DCN
 AMD_DISPLAY_FILES += $(AMD_DAL_HUBBUB_DCN401)
 
 ###############################################################################
+# DCN42
+###############################################################################
+HUBBUB_DCN42 = dcn42_hubbub.o
+
+AMD_DAL_HUBBUB_DCN42 = $(addprefix $(AMDDALPATH)/dc/hubbub/dcn42/,$(HUBBUB_DCN42))
+
+AMD_DISPLAY_FILES += $(AMD_DAL_HUBBUB_DCN42)
+
 endif
index 990d3cd8e0505ae423adeac8f95ba5c7b0add759..ff9a1ae29474f222f87e65774d1552c4a9becae2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016 Advanced Micro Devices, Inc.
+ * Copyright 2016-2026 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"),
@@ -441,6 +441,8 @@ struct dcn_hubbub_registers {
                type DCHUBBUB_ARB_ALLOW_DCFCLK_DEEP_SLEEP_FORCE_VALUE;\
                type DCHUBBUB_ARB_ALLOW_DCFCLK_DEEP_SLEEP_FORCE_ENABLE
 
+#define HUBBUB_REG_FIELD_LIST_DCN4_2(type) \
+       type URGENT_ZERO_SIZE_REQ_EN
 struct dcn_hubbub_shift {
        DCN_HUBBUB_REG_FIELD_LIST(uint8_t);
        HUBBUB_STUTTER_REG_FIELD_LIST(uint8_t);
@@ -449,6 +451,7 @@ struct dcn_hubbub_shift {
        HUBBUB_REG_FIELD_LIST_DCN32(uint8_t);
        HUBBUB_REG_FIELD_LIST_DCN35(uint8_t);
        HUBBUB_REG_FIELD_LIST_DCN4_01(uint8_t);
+       HUBBUB_REG_FIELD_LIST_DCN4_2(uint8_t);
 
 };
 
@@ -460,6 +463,7 @@ struct dcn_hubbub_mask {
        HUBBUB_REG_FIELD_LIST_DCN32(uint32_t);
        HUBBUB_REG_FIELD_LIST_DCN35(uint32_t);
        HUBBUB_REG_FIELD_LIST_DCN4_01(uint32_t);
+       HUBBUB_REG_FIELD_LIST_DCN4_2(uint8_t);
 
 };
 
index a2d1128de7a185f086e5791485911e5b37263d2c..e0799bb873e69a868c5ee3465ce9e8971e607795 100644 (file)
@@ -1,5 +1,5 @@
 
-# Copyright 2022 Advanced Micro Devices, Inc.
+# Copyright 2022-2026 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"),
@@ -94,4 +94,12 @@ AMD_DAL_HUBP_DCN401 = $(addprefix $(AMDDALPATH)/dc/hubp/dcn401/,$(HUBP_DCN401))
 
 AMD_DISPLAY_FILES += $(AMD_DAL_HUBP_DCN401)
 
+###############################################################################
+
+HUBP_DCN42 = dcn42_hubp.o
+
+AMD_DAL_HUBP_DCN42 = $(addprefix $(AMDDALPATH)/dc/hubp/dcn42/,$(HUBP_DCN42))
+
+AMD_DISPLAY_FILES += $(AMD_DAL_HUBP_DCN42)
+
 endif
index 7062e6653062a744ed477d6e3ee9fb7d562a6c30..80be394a8852d4997d19a8423db485f4a2e69ed9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012-17 Advanced Micro Devices, Inc.
+ * Copyright 2012-2026 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"),
        type MCACHEID_MALL_PREF_2H_P1;\
        type HUBP_FGCG_REP_DIS
 
+#define DCN42_HUBP_REG_FIELD_VARIABLE_LIST(type) \
+       type HUBP_3DLUT_CROSSBAR_SEL_G;\
+       type HUBP_3DLUT_CROSSBAR_SEL_B;\
+       type HUBP_3DLUT_CROSSBAR_SEL_R
 struct dcn_hubp2_registers {
        DCN401_HUBP_REG_COMMON_VARIABLE_LIST;
 };
 
 struct dcn_hubp2_shift {
        DCN401_HUBP_REG_FIELD_VARIABLE_LIST(uint8_t);
+       DCN42_HUBP_REG_FIELD_VARIABLE_LIST(uint8_t);
 };
 
 struct dcn_hubp2_mask {
        DCN401_HUBP_REG_FIELD_VARIABLE_LIST(uint32_t);
+       DCN42_HUBP_REG_FIELD_VARIABLE_LIST(uint32_t);
 };
 
 struct dcn20_hubp {
index bee617ca0838c8ba594ca4297cabc56ecd24cd62..08cbbf87a19fae02e75bd7f6c8457be2681d9933 100644 (file)
@@ -1,5 +1,4 @@
-
-# Copyright 2022 Advanced Micro Devices, Inc.
+# Copyright 2022-2026 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"),
@@ -199,4 +198,13 @@ HWSS_DCN401 = dcn401_hwseq.o dcn401_init.o
 AMD_DAL_HWSS_DCN401 = $(addprefix $(AMDDALPATH)/dc/hwss/dcn401/,$(HWSS_DCN401))
 
 AMD_DISPLAY_FILES += $(AMD_DAL_HWSS_DCN401)
+
+###############################################################################
+
+HWSS_DCN42 = dcn42_hwseq.o dcn42_init.o
+
+AMD_DAL_HWSS_DCN42 = $(addprefix $(AMDDALPATH)/dc/hwss/dcn42/,$(HWSS_DCN42))
+
+AMD_DISPLAY_FILES += $(AMD_DAL_HWSS_DCN42)
+
 endif
index f66a38f43a091be2cce01bfef1e74740d036d6e5..dc8feca578c5b3568da5fd7406a7da2b64916a28 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016 Advanced Micro Devices, Inc.
+ * Copyright 2016, 2026 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"),
@@ -700,6 +700,8 @@ struct dce_hwseq_registers {
        uint32_t DOMAIN23_PG_STATUS;
        uint32_t DOMAIN24_PG_STATUS;
        uint32_t DOMAIN25_PG_STATUS;
+       uint32_t DOMAIN26_PG_CONFIG;
+       uint32_t DOMAIN26_PG_STATUS;
 };
  /* set field name */
 #define HWS_SF(blk_name, reg_name, field_name, post_fix)\
@@ -1245,6 +1247,13 @@ struct dce_hwseq_registers {
        type DOMAIN25_PGFSM_PWR_STATUS; \
        type DOMAIN_DESIRED_PWR_STATE;
 
+#define HWSEQ_DCN42_REG_FIELD_LIST(type) \
+       type DPIASYMCLK4_GATE_DISABLE;\
+       type DPIASYMCLK5_GATE_DISABLE;\
+       type DOMAIN26_POWER_FORCEON; \
+       type DOMAIN26_POWER_GATE; \
+       type DOMAIN26_PGFSM_PWR_STATUS;
+
 struct dce_hwseq_shift {
        HWSEQ_REG_FIELD_LIST(uint8_t)
        HWSEQ_DCN_REG_FIELD_LIST(uint8_t)
@@ -1253,6 +1262,7 @@ struct dce_hwseq_shift {
        HWSEQ_DCN31_REG_FIELD_LIST(uint8_t)
        HWSEQ_DCN35_REG_FIELD_LIST(uint8_t)
        HWSEQ_DCN401_REG_FIELD_LIST(uint8_t)
+       HWSEQ_DCN42_REG_FIELD_LIST(uint8_t)
 };
 
 struct dce_hwseq_mask {
@@ -1263,6 +1273,7 @@ struct dce_hwseq_mask {
        HWSEQ_DCN31_REG_FIELD_LIST(uint32_t)
        HWSEQ_DCN35_REG_FIELD_LIST(uint32_t)
        HWSEQ_DCN401_REG_FIELD_LIST(uint32_t)
+       HWSEQ_DCN42_REG_FIELD_LIST(uint32_t)
 };
 
 
index d1796e07ab1a3de1a201651b4c9e5daa12e6aec2..d699640ba5b45dd53b4bb9d0b55d307ad9b18084 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015 Advanced Micro Devices, Inc.
+ * Copyright 2015-2026 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"),
@@ -174,6 +174,12 @@ struct program_mcache_id_and_split_coordinate {
        struct dml2_hubp_pipe_mcache_regs *mcache_regs;
 };
 
+struct control_cm_hist_params {
+       struct dpp *dpp;
+       struct cm_hist_control cm_hist_control;
+       enum dc_color_space color_space;
+};
+
 struct program_cursor_update_now_params {
        struct dc *dc;
        struct pipe_ctx *pipe_ctx;
@@ -755,6 +761,7 @@ union block_sequence_params {
        struct dmub_hw_control_lock_fast_params dmub_hw_control_lock_fast_params;
        struct program_surface_config_params program_surface_config_params;
        struct program_mcache_id_and_split_coordinate program_mcache_id_and_split_coordinate;
+       struct control_cm_hist_params control_cm_hist_params;
        struct program_cursor_update_now_params program_cursor_update_now_params;
        struct hubp_wait_pipe_read_start_params hubp_wait_pipe_read_start_params;
        struct apply_update_flags_for_phantom_params apply_update_flags_for_phantom_params;
@@ -879,6 +886,7 @@ enum block_sequence_func {
        DMUB_HW_CONTROL_LOCK_FAST,
        HUBP_PROGRAM_SURFACE_CONFIG,
        HUBP_PROGRAM_MCACHE_ID,
+       DPP_PROGRAM_CM_HIST,
        PROGRAM_CURSOR_UPDATE_NOW,
        HUBP_WAIT_PIPE_READ_START,
        HWS_APPLY_UPDATE_FLAGS_FOR_PHANTOM,
@@ -1415,6 +1423,8 @@ void hwss_program_surface_config(union block_sequence_params *params);
 
 void hwss_program_mcache_id_and_split_coordinate(union block_sequence_params *params);
 
+void hwss_program_cm_hist(union block_sequence_params *params);
+
 void hwss_set_odm_combine(union block_sequence_params *params);
 
 void hwss_set_odm_bypass(union block_sequence_params *params);
@@ -1765,6 +1775,11 @@ void hwss_add_opp_program_bit_depth_reduction(struct block_sequence_state *seq_s
                bool use_default_params,
                struct pipe_ctx *pipe_ctx);
 
+void hwss_add_dpp_program_cm_hist(struct block_sequence_state *seq_state,
+               struct dpp *dpp,
+               struct cm_hist_control cm_hist_control,
+               enum dc_color_space color_space);
+
 void hwss_add_dc_ip_request_cntl(struct block_sequence_state *seq_state,
                struct dc *dc,
                bool enable);
index 406db231bc72a1a02e23622207d8cd1edea6bb39..8e3f54fb53fd60b8116ecf460d891d34fb35c9ed 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015 Advanced Micro Devices, Inc.
+ * Copyright 2015-2026 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"),
@@ -222,6 +222,9 @@ struct hwseq_private_funcs {
        void (*wait_for_pipe_update_if_needed)(struct dc *dc, struct pipe_ctx *pipe_ctx, bool is_surface_update_only);
        void (*set_wait_for_update_needed_for_pipe)(struct dc *dc, struct pipe_ctx *pipe_ctx);
        void (*dc_ip_request_cntl)(struct dc *dc, bool enable);
+       void (*program_cm_hist)(struct dc *dc,
+               struct pipe_ctx *pipe_ctx,
+               const struct dc_plane_state *plane_state);
 };
 
 struct dce_hwseq {
index 2c9a4a12bd8a7f6956adad50a9d8773044c323d2..91eba1985bab190242cdbcdaf1e8219bd2f6a692 100644 (file)
@@ -1,5 +1,6 @@
+/* SPDX-License-Identifier: MIT */
 /*
- * Copyright 2012-16 Advanced Micro Devices, Inc.
+ * Copyright 2012-2026 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"),
@@ -95,6 +96,26 @@ struct dcn301_clk_internal {
        uint32_t CLK1_CLK3_BYPASS_CNTL; //dcfclk bypass
 };
 
+struct dcn42_clk_internal {
+       int dummy;
+       uint32_t CLK8_CLK0_CURRENT_CNT; //dispclk
+       uint32_t CLK8_CLK1_CURRENT_CNT; //dppclk
+       uint32_t CLK8_CLK2_CURRENT_CNT; //dprefclk
+       uint32_t CLK8_CLK3_CURRENT_CNT; //dcfclk
+       uint32_t CLK8_CLK4_CURRENT_CNT; //dtbclk
+       uint32_t CLK8_CLK0_DS_CNTL;         //dispclk deep_sleep_divider
+       uint32_t CLK8_CLK1_DS_CNTL;         //dppclk deep_sleep_divider
+       uint32_t CLK8_CLK2_DS_CNTL;         //dprefclk deep_sleep_divider
+       uint32_t CLK8_CLK3_DS_CNTL;         //dcfclk deep_sleep_divider
+       uint32_t CLK8_CLK4_DS_CNTL;         //dtbclk deep_sleep_divider
+       uint32_t CLK8_CLK0_BYPASS_CNTL; //dispclk bypass
+       uint32_t CLK8_CLK1_BYPASS_CNTL; //dppclk bypass
+       uint32_t CLK8_CLK2_BYPASS_CNTL; //dprefclk bypass
+       uint32_t CLK8_CLK3_BYPASS_CNTL; //dcfclk bypass
+       uint32_t CLK8_CLK4_BYPASS_CNTL; //dtbclk bypass
+       uint32_t CLK8_CLK_TICK_CNT__TIMER_THRESHOLD;
+};
+
 /* Will these bw structures be ASIC specific? */
 
 #define MAX_NUM_DPM_LVL                8
@@ -194,6 +215,7 @@ struct clk_state_registers_and_bypass {
        uint32_t dcfclk_bypass;
        uint32_t dprefclk_bypass;
        uint32_t dispclk_bypass;
+       uint32_t timer_threhold;
 };
 
 struct rv1_clk_internal {
index 836a28134d415fb2cf89ee348c6748f91748110a..8d694a3a7e07a16c30b85450203a9119e111f2e2 100644 (file)
@@ -1,5 +1,6 @@
+/* SPDX-License-Identifier: MIT */
 /*
- * Copyright 2018 Advanced Micro Devices, Inc.
+ * Copyright 2018-2026 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"),
@@ -223,6 +224,29 @@ enum dentist_divider_range {
 #define CLK_COMMON_MASK_SH_LIST_DCN401(mask_sh) \
        CLK_COMMON_MASK_SH_LIST_DCN321(mask_sh)
 
+#define CLK_REG_LIST_DCN42()     \
+       SR(DENTIST_DISPCLK_CNTL), \
+       CLK_SR_DCN42(CLK8_CLK_TICK_CNT_CONFIG_REG), \
+       CLK_SR_DCN42(CLK8_CLK0_CURRENT_CNT), \
+       CLK_SR_DCN42(CLK8_CLK1_CURRENT_CNT), \
+       CLK_SR_DCN42(CLK8_CLK2_CURRENT_CNT), \
+       CLK_SR_DCN42(CLK8_CLK3_CURRENT_CNT), \
+       CLK_SR_DCN42(CLK8_CLK4_CURRENT_CNT), \
+       CLK_SR_DCN42(CLK8_CLK0_BYPASS_CNTL), \
+       CLK_SR_DCN42(CLK8_CLK1_BYPASS_CNTL), \
+       CLK_SR_DCN42(CLK8_CLK2_BYPASS_CNTL), \
+       CLK_SR_DCN42(CLK8_CLK3_BYPASS_CNTL), \
+       CLK_SR_DCN42(CLK8_CLK4_BYPASS_CNTL), \
+       CLK_SR_DCN42(CLK8_CLK0_DS_CNTL), \
+       CLK_SR_DCN42(CLK8_CLK1_DS_CNTL), \
+       CLK_SR_DCN42(CLK8_CLK2_DS_CNTL), \
+       CLK_SR_DCN42(CLK8_CLK3_DS_CNTL), \
+       CLK_SR_DCN42(CLK8_CLK4_DS_CNTL)
+
+#define CLK_COMMON_MASK_SH_LIST_DCN42(mask_sh) 0
+
+
+
 #define CLK_REG_FIELD_LIST(type) \
        type DPREFCLK_SRC_SEL; \
        type DENTIST_DPREFCLK_WDIVIDER; \
@@ -298,6 +322,22 @@ struct clk_mgr_registers {
        uint32_t CLK1_CLK5_ALLOW_DS;
        uint32_t CLK5_spll_field_8;
        uint32_t CLK6_spll_field_8;
+       uint32_t CLK8_CLK0_CURRENT_CNT;
+       uint32_t CLK8_CLK1_CURRENT_CNT;
+       uint32_t CLK8_CLK2_CURRENT_CNT;
+       uint32_t CLK8_CLK3_CURRENT_CNT;
+       uint32_t CLK8_CLK4_CURRENT_CNT;
+       uint32_t CLK8_CLK0_DS_CNTL;
+       uint32_t CLK8_CLK1_DS_CNTL;
+       uint32_t CLK8_CLK2_DS_CNTL;
+       uint32_t CLK8_CLK3_DS_CNTL;
+       uint32_t CLK8_CLK4_DS_CNTL;
+       uint32_t CLK8_CLK0_BYPASS_CNTL;
+       uint32_t CLK8_CLK1_BYPASS_CNTL;
+       uint32_t CLK8_CLK2_BYPASS_CNTL;
+       uint32_t CLK8_CLK3_BYPASS_CNTL;
+       uint32_t CLK8_CLK4_BYPASS_CNTL;
+       uint32_t CLK8_CLK_TICK_CNT_CONFIG_REG;
 };
 
 struct clk_mgr_shift {
index d88b57d4f5125ec56daea616bb901966563ed757..39215ecb480e4db0ec9472fef7229584892fdc0f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012-15 Advanced Micro Devices, Inc.
+ * Copyright 2012-2026 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"),
@@ -367,6 +367,14 @@ struct dpp_funcs {
 
        void (*dpp_force_disable_cursor)(struct dpp *dpp_base);
 
+       void (*dpp_cm_hist_control)(
+               struct dpp *dpp_base,
+               struct cm_hist_control cm_hist_control,
+               enum dc_color_space color_space);
+
+       bool (*dpp_cm_hist_read)(
+               struct dpp *dpp_base,
+               struct cm_hist *cm_hist);
 };
 
 
index a8d1abe20f62ca4df222aef72062b928c1ed6677..0db607f2a410541897f270c61bf3bd83b51ea125 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012-15 Advanced Micro Devices, Inc.
+ * Copyright 2012-2026 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"),
@@ -1042,6 +1042,24 @@ struct mpc_funcs {
 
        void (*update_3dlut_fast_load_select)(struct mpc *mpc, int mpcc_id, int hubp_idx);
 
+/**
+ * @get_3dlut_fast_load_status:
+ *
+ * Get 3D LUT fast load status and reference them with done, soft_underflow and hard_underflow pointers.
+ *
+ * Parameters:
+ * - [in/out] mpc - MPC context.
+ * - [in] mpcc_id
+ * - [in/out] done
+ * - [in/out] soft_underflow
+ * - [in/out] hard_underflow
+ *
+ * Return:
+ *
+ * void
+ */
+       void (*get_3dlut_fast_load_status)(struct mpc *mpc, int mpcc_id, uint32_t *done, uint32_t *soft_underflow, uint32_t *hard_underflow);
+
        /**
        * @populate_lut:
        *
index 671ab1fc732079995ece7135a5e696f88f6b1de7..2f70bb476c97ba115ed0c0a1bcb09ef4f0e034e6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012-15 Advanced Micro Devices, Inc.
+ * Copyright 2012-2026 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"),
@@ -518,6 +518,8 @@ struct timing_generator_funcs {
        bool (*wait_update_lock_status)(struct timing_generator *tg, bool locked);
        void (*read_otg_state)(struct timing_generator *tg, struct dcn_otg_state *s);
        void (*optc_read_reg_state)(struct timing_generator *tg, struct dcn_optc_reg_state *optc_reg_state);
+       void (*enable_otg_pwa)(struct timing_generator *tg,  struct otc_pwa_frame_sync *pwa_param);
+       void (*disable_otg_pwa)(struct timing_generator *tg);
 };
 
 #endif
index b5e14d79237840b99d11ac5b7a34f51c39883cf5..807b73c2a758b11ccb16ccb7ff709b70d96b4fdb 100644 (file)
@@ -198,3 +198,12 @@ IRQ_DCN401 = irq_service_dcn401.o
 AMD_DAL_IRQ_DCN401= $(addprefix $(AMDDALPATH)/dc/irq/dcn401/,$(IRQ_DCN401))
 
 AMD_DISPLAY_FILES += $(AMD_DAL_IRQ_DCN401)
+
+###############################################################################
+# DCN 42
+###############################################################################
+IRQ_DCN42 = irq_service_dcn42.o
+
+AMD_DAL_IRQ_DCN42= $(addprefix $(AMDDALPATH)/dc/irq/dcn42/,$(IRQ_DCN42))
+
+AMD_DISPLAY_FILES += $(AMD_DAL_IRQ_DCN42)
index 2d4b7a85847de90ca129d4cfc2825bd9a8afd6a2..afc376defa0b0563d3af37b98b60a11c0420e022 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright 2020 Advanced Micro Devices, Inc.
+# Copyright 2020-2026 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"),
@@ -52,3 +52,11 @@ AMD_DAL_MMHUBBUB_DCN35 = $(addprefix $(AMDDALPATH)/dc/mmhubbub/dcn35/,$(MMHUBBUB
 AMD_DISPLAY_FILES += $(AMD_DAL_MMHUBBUB_DCN35)
 endif
 
+###############################################################################
+# DCN42
+###############################################################################
+MMHUBBUB_DCN42 = dcn42_mmhubbub.o
+
+AMD_DAL_MMHUBBUB_DCN42 = $(addprefix $(AMDDALPATH)/dc/mmhubbub/dcn42/,$(MMHUBBUB_DCN42))
+
+AMD_DISPLAY_FILES += $(AMD_DAL_MMHUBBUB_DCN42)
index 5402c3529f5eee106e516814a89f9d2060b6513b..cc23aae3728a1da27c987746fad8f32f5e8bc31d 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright 2020 Advanced Micro Devices, Inc.
+# Copyright 2020-2026 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"),
@@ -69,4 +69,12 @@ AMD_DAL_MPC_DCN401 = $(addprefix $(AMDDALPATH)/dc/mpc/dcn401/,$(MPC_DCN401))
 
 AMD_DISPLAY_FILES += $(AMD_DAL_MPC_DCN401)
 
+###############################################################################
+# DCN42
+###############################################################################
+MPC_DCN42 = dcn42_mpc.o
+
+AMD_DAL_MPC_DCN42 = $(addprefix $(AMDDALPATH)/dc/mpc/dcn42/,$(MPC_DCN42))
+
+AMD_DISPLAY_FILES += $(AMD_DAL_MPC_DCN42)
 endif
index eeac13fdd6f558be18252e27481b721318eb571f..ce1ee2062e41d240513258002c8359f2802b32a2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2023 Advanced Micro Devices, Inc.
+ * Copyright 2023-2026 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"),
@@ -47,6 +47,16 @@ void mpc401_update_3dlut_fast_load_select(struct mpc *mpc, int mpcc_id, int hubp
        REG_SET(MPCC_MCM_3DLUT_FAST_LOAD_SELECT[mpcc_id], 0, MPCC_MCM_3DLUT_FL_SEL, hubp_idx);
 }
 
+void mpc401_get_3dlut_fast_load_status(struct mpc *mpc, int mpcc_id, uint32_t *done, uint32_t *soft_underflow, uint32_t *hard_underflow)
+{
+       struct dcn401_mpc *mpc401 = TO_DCN401_MPC(mpc);
+
+       REG_GET_3(MPCC_MCM_3DLUT_FAST_LOAD_STATUS[mpcc_id],
+                       MPCC_MCM_3DLUT_FL_DONE, done,
+                       MPCC_MCM_3DLUT_FL_SOFT_UNDERFLOW, soft_underflow,
+                       MPCC_MCM_3DLUT_FL_HARD_UNDERFLOW, hard_underflow);
+}
+
 void mpc401_set_movable_cm_location(struct mpc *mpc, enum mpcc_movable_cm_location location, int mpcc_id)
 {
        struct dcn401_mpc *mpc401 = TO_DCN401_MPC(mpc);
@@ -602,6 +612,7 @@ static const struct mpc_funcs dcn401_mpc_funcs = {
        .set_bg_color = mpc1_set_bg_color,
        .set_movable_cm_location = mpc401_set_movable_cm_location,
        .update_3dlut_fast_load_select = mpc401_update_3dlut_fast_load_select,
+       .get_3dlut_fast_load_status = mpc401_get_3dlut_fast_load_status,
        .populate_lut = mpc401_populate_lut,
        .program_lut_read_write_control = mpc401_program_lut_read_write_control,
        .program_lut_mode = mpc401_program_lut_mode,
index fdc42f8ab3ff5688f5f07d9691455090cb45f262..6d842d7b95c7e4258cb39722368cb3c83db12f4c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2023 Advanced Micro Devices, Inc.
+ * Copyright 2023-2026 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"),
@@ -184,6 +184,7 @@ struct dcn401_mpc_mask {
 
 struct dcn401_mpc_registers {
        MPC_REG_VARIABLE_LIST_DCN4_01
+       uint32_t MPCC_CONTROL2[MAX_MPCC];
 };
 
 struct dcn401_mpc {
@@ -249,6 +250,13 @@ void mpc_read_gamut_remap(struct mpc *mpc,
        enum mpcc_gamut_remap_id gamut_remap_block_id,
        uint32_t *mode_select);
 
+void mpc401_get_3dlut_fast_load_status(
+       struct mpc *mpc,
+       int mpcc_id,
+       uint32_t *done,
+       uint32_t *soft_underflow,
+       uint32_t *hard_underflow);
+
 void mpc401_update_3dlut_fast_load_select(
        struct mpc *mpc,
        int mpcc_id,
index 29fb610c8660f7b470a6acb2d5ab146e0d3bd49b..06c98d70eabcc6659ee11aa6887bcc9c82d8aae2 100644 (file)
@@ -104,11 +104,19 @@ AMD_DISPLAY_FILES += $(AMD_DAL_OPTC_DCN35)
 
 ###############################################################################
 
-###############################################################################
 OPTC_DCN401 = dcn401_optc.o
 
 AMD_DAL_OPTC_DCN401 = $(addprefix $(AMDDALPATH)/dc/optc/dcn401/,$(OPTC_DCN401))
 
 AMD_DISPLAY_FILES += $(AMD_DAL_OPTC_DCN401)
+
+###############################################################################
+
+OPTC_DCN42 = dcn42_optc.o
+
+AMD_DAL_OPTC_DCN42 = $(addprefix $(AMDDALPATH)/dc/optc/dcn42/,$(OPTC_DCN42))
+
+AMD_DISPLAY_FILES += $(AMD_DAL_OPTC_DCN42)
+
 endif
 
index 0b3f974f452e5d50908513aac97a44b67dba2f46..cf05620fd8f53b762ced345b1d06789dda89d8d1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012-15 Advanced Micro Devices, Inc.
+ * Copyright 2012-2026 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"),
        uint32_t OTG_CRC1_DATA_B32
 
 
+#define OPTC_REG_VARIABLE_LIST_DCN42 \
+       uint32_t OTG_PWA_FRAME_SYNC_CONTROL; \
+       uint32_t OTG_CRC0_DATA_R; \
+       uint32_t OTG_CRC1_DATA_R; \
+       uint32_t OTG_CRC2_DATA_R; \
+       uint32_t OTG_CRC3_DATA_R; \
+       uint32_t OTG_CRC0_DATA_G; \
+       uint32_t OTG_CRC1_DATA_G; \
+       uint32_t OTG_CRC2_DATA_G; \
+       uint32_t OTG_CRC3_DATA_G
+
 struct dcn_optc_registers {
        OPTC_REG_VARIABLE_LIST_DCN;
+       OPTC_REG_VARIABLE_LIST_DCN42;
 };
 
 #define TG_COMMON_MASK_SH_LIST_DCN(mask_sh)\
@@ -679,6 +691,10 @@ struct dcn_optc_registers {
        type OTG_UNBLANK;\
        type OTG_PSTATE_ALLOW_WIDTH_MIN;
 
+#define TG_REG_FIELD_LIST_DCN42(type) \
+       type OTG_PWA_FRAME_SYNC_EN;\
+       type OTG_PWA_FRAME_SYNC_VCOUNT_MODE;\
+       type OTG_PWA_FRAME_SYNC_LINE;
 
 struct dcn_optc_shift {
        TG_REG_FIELD_LIST(uint8_t)
@@ -687,6 +703,7 @@ struct dcn_optc_shift {
        TG_REG_FIELD_LIST_DCN3_5(uint8_t)
        TG_REG_FIELD_LIST_DCN3_6(uint8_t)
        TG_REG_FIELD_LIST_DCN401(uint8_t)
+       TG_REG_FIELD_LIST_DCN42(uint8_t)
 };
 
 struct dcn_optc_mask {
@@ -696,6 +713,7 @@ struct dcn_optc_mask {
        TG_REG_FIELD_LIST_DCN3_5(uint32_t)
        TG_REG_FIELD_LIST_DCN3_6(uint32_t)
        TG_REG_FIELD_LIST_DCN401(uint32_t)
+       TG_REG_FIELD_LIST_DCN42(uint32_t)
 };
 
 void dcn10_timing_generator_init(struct optc *optc);
index ec11d3157a57f98407b8939f77c2d433321e3ec6..56f610cc84065ccde65b22011795348f13828bb7 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright 2020 Advanced Micro Devices, Inc.
+# Copyright 2020, 2026 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"),
@@ -32,4 +32,12 @@ PG_DCN35 = dcn35_pg_cntl.o
 AMD_DAL_PG_DCN35 = $(addprefix $(AMDDALPATH)/dc/pg/dcn35/,$(PG_DCN35))
 
 AMD_DISPLAY_FILES += $(AMD_DAL_PG_DCN35)
+###############################################################################
+# DCN42
+###############################################################################
+PG_DCN42 = dcn42_pg_cntl.o
+
+AMD_DAL_PG_DCN42 = $(addprefix $(AMDDALPATH)/dc/pg/dcn42/,$(PG_DCN42))
+
+AMD_DISPLAY_FILES += $(AMD_DAL_PG_DCN42)
 endif
index 5b42da8b79c2e6ffcaed3620e305393708aafdad..1a17a885fe84b25fc28d054bc19f22eeaf4a3072 100644 (file)
@@ -222,4 +222,22 @@ AMD_DAL_RESOURCE_DCN401 = $(addprefix $(AMDDALPATH)/dc/resource/dcn401/,$(RESOUR
 
 AMD_DISPLAY_FILES += $(AMD_DAL_RESOURCE_DCN401)
 
+###############################################################################
+# DCN42
+###############################################################################
+RESOURCE_DCN42 = dcn42_resource.o dcn42_resource_fpu.o
+
+AMD_DAL_RESOURCE_DCN42 = $(addprefix $(AMDDALPATH)/dc/resource/dcn42/,$(RESOURCE_DCN42))
+
+AMD_DISPLAY_FILES += $(AMD_DAL_RESOURCE_DCN42)
+
+# FPU Compile Flags for FPU files
+resource_ccflags := $(CC_FLAGS_FPU)
+resource_rcflags := $(CC_FLAGS_NO_FPU)
+
+CFLAGS_$(AMDDALPATH)/dc/resource/dcn42/dcn42_resource_fpu.o := $(resource_ccflags)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/resource/dcn42/dcn42_resource_fpu.o := $(resource_rcflags)
+
+###############################################################################
 endif
+