linux/drivers/gpu/drm/amd/display/dc/dml2/display_mode_core_structs.h

/* SPDX-License-Identifier: MIT */
/*
 * Copyright 2023 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"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 * OTHER DEALINGS IN THE SOFTWARE.
 *
 * Authors: AMD
 *
 */

#ifndef __DISPLAY_MODE_CORE_STRUCT_H__
#define __DISPLAY_MODE_CORE_STRUCT_H__

#include "display_mode_lib_defines.h"

enum dml_project_id {};
enum dml_prefetch_modes {};
enum dml_use_mall_for_pstate_change_mode {};
enum dml_use_mall_for_static_screen_mode {};
enum dml_output_encoder_class {};
enum dml_output_link_dp_rate{};
enum dml_output_type_and_rate__type{};
enum dml_output_type_and_rate__rate {};
enum dml_output_format_class {};
enum dml_source_format_class {};
enum dml_output_bpc_class {};
enum dml_output_standard_class {};
enum dml_rotation_angle {};
enum dml_swizzle_mode {};
enum dml_lb_depth {};
enum dml_voltage_state {};
enum dml_source_macro_tile_size {};
enum dml_cursor_bpp {};
enum dml_dram_clock_change_support {};
enum dml_fclock_change_support {};
enum dml_dsc_enable {};
enum dml_mpc_use_policy {};
enum dml_odm_use_policy {};
enum dml_odm_mode {};
enum dml_writeback_configuration {};
enum dml_immediate_flip_requirement {};
enum dml_unbounded_requesting_policy {};
enum dml_clk_cfg_policy {};


struct soc_state_bounding_box_st {};

struct soc_bounding_box_st {};

struct ip_params_st {};

struct DmlPipe {};

struct Watermarks {};

struct SOCParametersList {};

/// @brief Struct that represent Plane configration of a display cfg
struct dml_plane_cfg_st {}; // dml_plane_cfg_st;

/// @brief Surface Parameters
struct dml_surface_cfg_st {}; // dml_surface_cfg_st

/// @brief structure that represents the timing configuration
struct dml_timing_cfg_st {}; // dml_timing_cfg_st;

/// @brief structure that represents the output stream
struct dml_output_cfg_st {}; // dml_timing_cfg_st;

/// @brief Writeback Setting
struct dml_writeback_cfg_st {}; // dml_writeback_cfg_st;

/// @brief Hardware resource specific; mainly used by mode_programming when test/sw wants to do some specific setting
///        which are not the same as what the mode support stage derive.  When call mode_support with mode_programm; the hw-specific
//         resource will be set to what the mode_support layer recommends
struct dml_hw_resource_st {};

/// @brief DML display configuration.
///        Describe how to display a surface in multi-plane setup and output to different output and writeback using the specified timgin
struct dml_display_cfg_st {}; // dml_display_cfg_st

/// @brief To control the clk usage for model programming
struct dml_clk_cfg_st {}; // dml_clk_cfg_st

/// @brief DML mode evaluation and programming policy
/// Those knobs that affect mode support and mode programming
struct dml_mode_eval_policy_st {};

/// @brief Contains important information after the mode support steps. Also why a mode is not supported.
struct dml_mode_support_info_st {}; // dml_mode_support_info_st

/// @brief Treat this as the intermediate values and outputs of mode check function. User can query the content of the struct to know more about the result of mode evaluation.
struct mode_support_st {}; // mode_support_st

/// @brief A mega structure that houses various info for model programming step.
struct mode_program_st {}; // mode_program_st

struct soc_states_st {};

struct UseMinimumDCFCLK_params_st {};

struct CalculateWatermarksMALLUseAndDRAMSpeedChangeSupport_params_st {};

struct CalculateVMRowAndSwath_params_st {};

struct CalculateSwathAndDETConfiguration_params_st {};

struct CalculateStutterEfficiency_params_st {};

struct CalculatePrefetchSchedule_params_st {};

struct dml_core_mode_support_locals_st {};

struct dml_core_mode_programming_locals_st {};

struct CalculateWatermarksMALLUseAndDRAMSpeedChangeSupport_locals_st {};

struct CalculateVMRowAndSwath_locals_st {};

struct UseMinimumDCFCLK_locals_st {};

struct CalculatePrefetchSchedule_locals_st {};

/// @brief To minimize stack usage; function locals are instead placed into this scratch structure which is allocated per context
struct display_mode_lib_scratch_st {};

/// @brief Represent the overall soc/ip enviroment. It contains data structure represent the soc/ip characteristic and also structures that hold calculation output
struct display_mode_lib_st {};

struct dml_mode_support_ex_params_st {};

dml_display_rq_regs_st;
dml_display_dlg_regs_st;
dml_display_ttu_regs_st;
dml_display_arb_params_st;
dml_display_plane_rq_regs_st;

struct  _vcs_dpi_dml_display_dlg_regs_st {};

struct  _vcs_dpi_dml_display_ttu_regs_st {};

struct  _vcs_dpi_dml_display_arb_params_st {};

struct  _vcs_dpi_dml_display_plane_rq_regs_st {};

struct  _vcs_dpi_dml_display_rq_regs_st {};

#endif