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;
#
-# 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"),
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
/*
- * 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"),
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;
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,
}
+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)
}
}
+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)
#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
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;
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;
/*
- * 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"),
struct {
uint8_t base_efficiency; //LP1
uint8_t low_power_efficiency; //LP2
+ uint8_t z8_stutter_efficiency;
+ int z8_stutter_period;
} stutter_efficiency;
};
unsigned int num_fast_flips_to_steady_state_override;
bool enable_dmu_recovery;
unsigned int force_vmin_threshold;
+ bool enable_otg_frame_sync_pwa;
};
struct dc_plane_address current_address;
bool is_flip_pending;
bool is_right_eye;
+ struct cm_hist cm_hist;
};
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;
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;
};
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 {
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 {
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";
}
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.
*/
unsigned int warmup_pitch;
unsigned int swlock;
unsigned int p_vmid;
+ uint8_t tmz_id;
};
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 */
/*
- * 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"),
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 {
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,
};
-# 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"),
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
/*
- * 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)
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 {
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 \
struct dccg_registers {
DCCG_REG_VARIABLE_LIST;
+ uint32_t OTG_ADD_DROP_PIXEL_CNTL;
};
struct dcn_dccg {
/*
- * 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; \
#
-# 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"),
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
/*
- * 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 DIG_FE_CLK_CNTL;
uint32_t DIG_FE_EN_CNTL;
uint32_t STREAM_MAPPER_CONTROL;
+ uint32_t DIG_FE_AUDIO_CNTL;
};
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;
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 {
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 {
-# 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"),
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
-/* 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 {
#
-# 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"),
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)
+
+
#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,
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;
#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
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;
#
-# 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"),
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
/*
- * 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 {
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__
-# 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"),
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
/*
- * 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"),
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);
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);
};
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);
};
-# 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"),
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
/*
- * 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 {
-
-# 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"),
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
/*
- * 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"),
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)\
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)
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 {
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)
};
/*
- * 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"),
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;
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;
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,
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);
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);
/*
- * 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"),
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 {
+/* 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"),
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
uint32_t dcfclk_bypass;
uint32_t dprefclk_bypass;
uint32_t dispclk_bypass;
+ uint32_t timer_threhold;
};
struct rv1_clk_internal {
+/* 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"),
#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; \
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 {
/*
- * 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"),
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);
};
/*
- * 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"),
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:
*
/*
- * 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"),
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
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)
#
-# 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"),
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)
#
-# 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"),
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
/*
- * 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"),
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);
.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,
/*
- * 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"),
struct dcn401_mpc_registers {
MPC_REG_VARIABLE_LIST_DCN4_01
+ uint32_t MPCC_CONTROL2[MAX_MPCC];
};
struct dcn401_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,
###############################################################################
-###############################################################################
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
/*
- * 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)\
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)
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 {
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);
#
-# 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"),
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
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
+