| // SPDX-License-Identifier: MIT |
| // |
| // Copyright 2024 Advanced Micro Devices, Inc. |
| |
| |
| #ifndef _DML21_WRAPPER_H_ |
| #define _DML21_WRAPPER_H_ |
| |
| #include "os_types.h" |
| #include "dml_top_soc_parameter_types.h" |
| |
| struct dc; |
| struct dc_state; |
| struct dml2_configuration_options; |
| struct dml2_context; |
| |
| /** |
| * dml2_create - Creates dml21_context. |
| * @in_dc: dc. |
| * @dml2: Created dml21 context. |
| * @config: dml21 configuration options. |
| * |
| * Create of DML21 is done as part of dc_state creation. |
| * DML21 IP, SOC and STATES are initialized at |
| * creation time. |
| * |
| * Return: True if dml2 is successfully created, false otherwise. |
| */ |
| bool dml21_create(const struct dc *in_dc, struct dml2_context **dml_ctx, const struct dml2_configuration_options *config); |
| void dml21_destroy(struct dml2_context *dml2); |
| void dml21_copy(struct dml2_context *dst_dml_ctx, |
| struct dml2_context *src_dml_ctx); |
| bool dml21_create_copy(struct dml2_context **dst_dml_ctx, |
| struct dml2_context *src_dml_ctx); |
| void dml21_reinit(const struct dc *in_dc, struct dml2_context **dml_ctx, const struct dml2_configuration_options *config); |
| |
| /** |
| * dml21_validate - Determines if a display configuration is supported or not. |
| * @in_dc: dc. |
| * @context: dc_state to be validated. |
| * @fast_validate: Fast validate will not populate context.res_ctx. |
| * |
| * Based on fast_validate option internally would call: |
| * |
| * -dml21_mode_check_and_programming - for non fast_validate option |
| * Calculates if dc_state can be supported on the input display |
| * configuration. If supported, generates the necessary HW |
| * programming for the new dc_state. |
| * |
| * -dml21_check_mode_support - for fast_validate option |
| * Calculates if dc_state can be supported for the input display |
| * config. |
| |
| * Context: Two threads may not invoke this function concurrently unless they reference |
| * separate dc_states for validation. |
| * Return: True if mode is supported, false otherwise. |
| */ |
| bool dml21_validate(const struct dc *in_dc, struct dc_state *context, struct dml2_context *dml_ctx, bool fast_validate); |
| |
| /* Prepare hubp mcache_regs for hubp mcache ID and split coordinate programming */ |
| void dml21_prepare_mcache_programming(struct dc *in_dc, struct dc_state *context, struct dml2_context *dml_ctx); |
| |
| /* Structure for inputting external SOCBB and DCNIP values for tool based debugging. */ |
| struct socbb_ip_params_external { |
| struct dml2_ip_capabilities ip_params; |
| struct dml2_soc_bb soc_bb; |
| }; |
| #endif |