linux/drivers/gpu/drm/amd/include/atomfirmware.h

/****************************************************************************\
* 
*  File Name      atomfirmware.h
*  Project        This is an interface header file between atombios and OS GPU drivers for SoC15 products
*
*  Description    header file of general definitions for OS and pre-OS video drivers
*
*  Copyright 2014 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.
*
\****************************************************************************/

/*IMPORTANT NOTES
* If a change in VBIOS/Driver/Tool's interface is only needed for SoC15 and forward products, then the change is only needed in this atomfirmware.h header file.
* If a change in VBIOS/Driver/Tool's interface is only needed for pre-SoC15 products, then the change is only needed in atombios.h header file.
* If a change is needed for both pre and post SoC15 products, then the change has to be made separately and might be differently in both atomfirmware.h and atombios.h.
*/

#ifndef _ATOMFIRMWARE_H_
#define _ATOMFIRMWARE_H_

enum  atom_bios_header_version_def{};

#ifdef _H2INC
  #ifndef uint32_t
    typedef unsigned long uint32_t;
  #endif

  #ifndef uint16_t
    typedef unsigned short uint16_t;
  #endif

  #ifndef uint8_t 
    typedef unsigned char uint8_t;
  #endif
#endif

enum atom_crtc_def{};

enum atom_ppll_def{};

// define ASIC internal encoder id ( bit vector ), used for CRTC_SourceSel
enum atom_dig_def{};

//ucEncoderMode
enum atom_encode_mode_def
{};

enum atom_encoder_refclk_src_def{};

enum atom_scaler_def{};

enum atom_operation_def{};

enum atom_embedded_display_op_def{};

enum atom_spread_spectrum_mode{};

/* define panel bit per color  */
enum atom_panel_bit_per_color{};

//ucVoltageType
enum atom_voltage_type
{};

enum atom_dgpu_vram_type {};

enum atom_dp_vs_preemph_def{};

#define BIOS_ATOM_PREFIX
#define BIOS_VERSION_PREFIX
#define BIOS_STRING_LENGTH

/*
enum atom_string_def{
asic_bus_type_pcie_string = "PCI_EXPRESS", 
atom_fire_gl_string       = "FGL",
atom_bios_string          = "ATOM"
};
*/

#pragma pack(1)                          /* BIOS data must use byte aligment*/

enum atombios_image_offset{};

/****************************************************************************   
* Common header for all tables (Data table, Command function).
* Every table pointed in _ATOM_MASTER_DATA_TABLE has this common header. 
* And the pointer actually points to this header.
****************************************************************************/   

struct atom_common_table_header
{};

/****************************************************************************  
* Structure stores the ROM header.
****************************************************************************/   
struct atom_rom_header_v2_2
{};

/*==============================hw function portion======================================================================*/


/****************************************************************************   
* Structures used in Command.mtb, each function name is not given here since those function could change from time to time
* The real functionality of each function is associated with the parameter structure version when defined
* For all internal cmd function definitions, please reference to atomstruct.h
****************************************************************************/   
struct atom_master_list_of_command_functions_v2_1{};

struct atom_master_command_function_v2_1
{};

/**************************************************************************** 
* Structures used in every command function
****************************************************************************/   
struct atom_function_attribute
{};


/**************************************************************************** 
* Common header for all hw functions.
* Every function pointed by _master_list_of_hw_function has this common header. 
* And the pointer actually points to this header.
****************************************************************************/   
struct atom_rom_hw_function_header
{};


/*==============================sw data table portion======================================================================*/
/****************************************************************************
* Structures used in data.mtb, each data table name is not given here since those data table could change from time to time
* The real name of each table is given when its data structure version is defined
****************************************************************************/
struct atom_master_list_of_data_tables_v2_1{};


struct atom_master_data_table_v2_1
{};


struct atom_dtd_format
{};

/* atom_dtd_format.modemiscinfo defintion */
enum atom_dtd_format_modemiscinfo{};


/* utilitypipeline
 * when format_revision==1 && content_revision==1, then this an info table for atomworks to use during debug session, no structure is associated with it.
 * the location of it can't change
*/


/* 
  ***************************************************************************
    Data Table firmwareinfo  structure
  ***************************************************************************
*/

struct atom_firmware_info_v3_1
{};

/* Total 32bit cap indication */
enum atombios_firmware_capability
{};

enum atom_cooling_solution_id{};

struct atom_firmware_info_v3_2 {};

struct atom_firmware_info_v3_3
{};

struct atom_firmware_info_v3_4 {};

struct atom_firmware_info_v3_5 {};
/* 
  ***************************************************************************
    Data Table lcd_info  structure
  ***************************************************************************
*/

struct lcd_info_v2_1
{};

/* lcd_info_v2_1.panel_misc defintion */
enum atom_lcd_info_panel_misc{};

//uceDPToLVDSRxId
enum atom_lcd_info_dptolvds_rx_id
{};

    
/* 
  ***************************************************************************
    Data Table gpio_pin_lut  structure
  ***************************************************************************
*/

struct atom_gpio_pin_assignment
{};

/* atom_gpio_pin_assignment.gpio_id definition */
enum atom_gpio_pin_assignment_gpio_id {};


struct atom_gpio_pin_lut_v2_1
{};


/*
 * VBIOS/PRE-OS always reserve a FB region at the top of frame buffer. driver should not write
 * access that region. driver can allocate their own reservation region as long as it does not
 * overlap firwmare's reservation region.
 * if (pre-NV1X) atom data table firmwareInfoTable version < 3.3:
 * in this case, atom data table vram_usagebyfirmwareTable version always <= 2.1
 *   if VBIOS/UEFI GOP is posted:
 *     VBIOS/UEFIGOP update used_by_firmware_in_kb = total reserved size by VBIOS
 *     update start_address_in_kb = total_mem_size_in_kb - used_by_firmware_in_kb;
 *     ( total_mem_size_in_kb = reg(CONFIG_MEMSIZE)<<10)
 *     driver can allocate driver reservation region under firmware reservation,
 *     used_by_driver_in_kb = driver reservation size
 *     driver reservation start address =  (start_address_in_kb - used_by_driver_in_kb)
 *     Comment1[hchan]: There is only one reservation at the beginning of the FB reserved by
 *     host driver. Host driver would overwrite the table with the following
 *     used_by_firmware_in_kb = total reserved size for pf-vf info exchange and
 *     set SRIOV_MSG_SHARE_RESERVATION mask start_address_in_kb = 0
 *   else there is no VBIOS reservation region:
 *     driver must allocate driver reservation region at top of FB.
 *     driver set used_by_driver_in_kb = driver reservation size
 *     driver reservation start address =  (total_mem_size_in_kb - used_by_driver_in_kb)
 *     same as Comment1
 * else (NV1X and after):
 *   if VBIOS/UEFI GOP is posted:
 *     VBIOS/UEFIGOP update:
 *       used_by_firmware_in_kb = atom_firmware_Info_v3_3.fw_reserved_size_in_kb;
 *       start_address_in_kb = total_mem_size_in_kb - used_by_firmware_in_kb;
 *       (total_mem_size_in_kb = reg(CONFIG_MEMSIZE)<<10)
 *   if vram_usagebyfirmwareTable version <= 2.1:
 *     driver can allocate driver reservation region under firmware reservation,
 *     driver set used_by_driver_in_kb = driver reservation size
 *     driver reservation start address = start_address_in_kb - used_by_driver_in_kb
 *     same as Comment1
 *   else driver can:
 *     allocate it reservation any place as long as it does overlap pre-OS FW reservation area
 *     set used_by_driver_region0_in_kb = driver reservation size
 *     set driver_region0_start_address_in_kb =  driver reservation region start address
 *     Comment2[hchan]: Host driver can set used_by_firmware_in_kb and start_address_in_kb to
 *     zero as the reservation for VF as it doesn’t exist.  And Host driver should also
 *     update atom_firmware_Info table to remove the same VBIOS reservation as well.
 */

struct vram_usagebyfirmware_v2_1
{};

struct vram_usagebyfirmware_v2_2 {};

/* 
  ***************************************************************************
    Data Table displayobjectinfo  structure
  ***************************************************************************
*/

enum atom_object_record_type_id {};

struct atom_common_record_header
{};

struct atom_i2c_record
{};

struct atom_hpd_int_record
{};

struct atom_connector_caps_record {};

struct atom_connector_speed_record {};

// Bit maps for ATOM_ENCODER_CAP_RECORD.usEncoderCap
enum atom_encoder_caps_def
{};

struct  atom_encoder_caps_record
{};

enum atom_connector_caps_def
{};

struct atom_disp_connector_caps_record
{};

//The following generic object gpio pin control record type will replace JTAG_RECORD/FPGA_CONTROL_RECORD/DVI_EXT_INPUT_RECORD above gradually
struct atom_gpio_pin_control_pair
{};

struct atom_object_gpio_cntl_record
{};

//Definitions for GPIO pin state 
enum atom_gpio_pin_control_pinstate_def
{};

// Indexes to GPIO array in GLSync record 
// GLSync record is for Frame Lock/Gen Lock feature.
enum atom_glsync_record_gpio_index_def
{};


struct atom_connector_hpdpin_lut_record     //record for ATOM_CONNECTOR_HPDPIN_LUT_RECORD_TYPE
{};

struct atom_connector_auxddc_lut_record     //record for ATOM_CONNECTOR_AUXDDC_LUT_RECORD_TYPE
{};

struct atom_connector_forced_tmds_cap_record
{};    

struct atom_connector_layout_info
{};

// define ATOM_CONNECTOR_LAYOUT_INFO.ucConnectorType to describe the display connector size
enum atom_connector_layout_info_connector_type_def
{};

struct  atom_bracket_layout_record
{};
struct atom_bracket_layout_record_v2 {};

enum atom_connector_layout_info_mini_type_def {};

enum atom_display_device_tag_def{};

struct atom_display_object_path_v2
{};

struct atom_display_object_path_v3 {};

struct display_object_info_table_v1_4
{};

struct display_object_info_table_v1_5 {};

/* 
  ***************************************************************************
    Data Table dce_info  structure
  ***************************************************************************
*/
struct atom_display_controller_info_v4_1
{};

struct atom_display_controller_info_v4_2
{};

struct atom_display_controller_info_v4_3
{};

struct atom_display_controller_info_v4_4 {};

struct atom_dc_golden_table_v1
{};

enum dce_info_caps_def {};

struct atom_display_controller_info_v4_5
{};

/* 
  ***************************************************************************
    Data Table ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO  structure
  ***************************************************************************
*/
struct atom_ext_display_path
{};

//usCaps
enum ext_display_path_cap_def {};

struct atom_external_display_connection_info
{};

/* 
  ***************************************************************************
    Data Table integratedsysteminfo  structure
  ***************************************************************************
*/

struct atom_camera_dphy_timing_param
{};

struct atom_camera_dphy_elec_param
{};

struct atom_camera_module_info
{};

struct atom_camera_flashlight_info
{};

struct atom_camera_data
{};


struct atom_14nm_dpphy_dvihdmi_tuningset
{};

struct atom_14nm_dpphy_dp_setting{};

struct atom_14nm_dpphy_dp_tuningset{};

struct atom_14nm_dig_transmitter_info_header_v4_0{};

struct atom_14nm_combphy_tmds_vs_set
{};

struct atom_DCN_dpphy_dvihdmi_tuningset
{};

struct atom_DCN_dpphy_dp_setting{};

struct atom_DCN_dpphy_dp_tuningset{};

struct atom_i2c_reg_info {};

struct atom_hdmi_retimer_redriver_set {};

struct atom_integrated_system_info_v1_11
{};

struct atom_integrated_system_info_v1_12
{};

struct edp_info_table
{};

struct atom_integrated_system_info_v2_1
{};

struct atom_n6_display_phy_tuning_set {};

struct atom_display_phy_tuning_info {};

struct atom_integrated_system_info_v2_2
{};

struct uma_carveout_option {};

struct atom_integrated_system_info_v2_3 {};

// system_config
enum atom_system_vbiosmisc_def{};


// gpucapinfo
enum atom_system_gpucapinf_def{};

//dpphy_override
enum atom_sysinfo_dpphy_override_def{};

//lvds_misc
enum atom_sys_info_lvds_misc_def
{};


//memorytype  DMI Type 17 offset 12h - Memory Type
enum atom_dmi_t17_mem_type_def{};


// this Table is used starting from NL/AM, used by SBIOS and pass the IntegratedSystemInfoTable/PowerPlayInfoTable/SystemCameraInfoTable 
struct atom_fusion_system_info_v4
{}; 


/* 
  ***************************************************************************
    Data Table gfx_info  structure
  ***************************************************************************
*/

struct  atom_gfx_info_v2_2
{};

struct  atom_gfx_info_v2_3 {};

struct  atom_gfx_info_v2_4
{};

struct atom_gfx_info_v2_7 {};

struct atom_gfx_info_v3_0 {};

/* 
  ***************************************************************************
    Data Table smu_info  structure
  ***************************************************************************
*/
struct atom_smu_info_v3_1
{};

struct atom_smu_info_v3_2 {};

struct atom_smu_info_v3_3 {};

struct atom_smu_info_v3_5
{};

struct atom_smu_info_v3_6
{};

struct atom_smu_info_v4_0 {};

/*
 ***************************************************************************
   Data Table smc_dpm_info  structure
 ***************************************************************************
 */
struct atom_smc_dpm_info_v4_1
{};

/*
 ***************************************************************************
   Data Table smc_dpm_info  structure
 ***************************************************************************
 */
struct atom_smc_dpm_info_v4_3
{};

struct smudpm_i2ccontrollerconfig_t {};

struct atom_smc_dpm_info_v4_4
{};

enum smudpm_v4_5_i2ccontrollername_e{};

enum smudpm_v4_5_i2ccontrollerthrottler_e{};

enum smudpm_v4_5_i2ccontrollerprotocol_e{};

struct smudpm_i2c_controller_config_v2
{};

struct atom_smc_dpm_info_v4_5
{};

struct atom_smc_dpm_info_v4_6
{};

struct atom_smc_dpm_info_v4_7
{};

struct smudpm_i2c_controller_config_v3
{};

struct atom_smc_dpm_info_v4_9
{};

struct atom_smc_dpm_info_v4_10
{};

/* 
  ***************************************************************************
    Data Table asic_profiling_info  structure
  ***************************************************************************
*/
struct  atom_asic_profiling_info_v4_1
{};

struct  atom_asic_profiling_info_v4_2 {};

/* 
  ***************************************************************************
    Data Table multimedia_info  structure
  ***************************************************************************
*/
struct atom_multimedia_info_v2_1
{};


/* 
  ***************************************************************************
    Data Table umc_info  structure
  ***************************************************************************
*/
struct atom_umc_info_v3_1
{};

// umc_info.umc_config
enum atom_umc_config_def {};

struct atom_umc_info_v3_2
{};

struct atom_umc_info_v3_3
{};

enum atom_umc_config1_def {};

struct atom_umc_info_v4_0 {};

/* 
  ***************************************************************************
    Data Table vram_info  structure
  ***************************************************************************
*/
struct atom_vram_module_v9 {};

struct atom_vram_info_header_v2_3 {};

/*
  ***************************************************************************
    Data Table vram_info v3.0  structure
  ***************************************************************************
*/
struct atom_vram_module_v3_0 {};

struct atom_vram_info_header_v3_0 {};

struct atom_umc_register_addr_info{};

//atom_umc_register_addr_info.
enum atom_umc_register_addr_info_flag{};

atom_umc_register_addr_info_access;

struct atom_umc_reg_setting_id_config{};

atom_umc_reg_setting_id_config_access;

struct atom_umc_reg_setting_data_block{};

struct atom_umc_init_reg_block{};

struct atom_vram_module_v10 {};

struct atom_vram_info_header_v2_4 {};

struct atom_vram_module_v11 {};

struct atom_gddr6_ac_timing_v2_5 {};

struct atom_gddr6_bit_byte_remap {};

struct atom_gddr6_dram_data_remap {};

struct atom_vram_info_header_v2_5 {};

struct atom_vram_info_header_v2_6 {};
/* 
  ***************************************************************************
    Data Table voltageobject_info  structure
  ***************************************************************************
*/
struct  atom_i2c_data_entry
{};

struct atom_voltage_object_header_v4{};

// atom_voltage_object_header_v4.voltage_mode
enum atom_voltage_object_mode 
{};

struct  atom_i2c_voltage_object_v4
{};

// ATOM_I2C_VOLTAGE_OBJECT_V3.ucVoltageControlFlag
enum atom_i2c_voltage_control_flag
{};


struct atom_voltage_gpio_map_lut
{};

struct atom_gpio_voltage_object_v4
{};

struct  atom_svid2_voltage_object_v4
{};

struct atom_merged_voltage_object_v4
{};

atom_voltage_object_v4;

struct  atom_voltage_objects_info_v4_1
{};


/* 
  ***************************************************************************
              All Command Function structure definition 
  *************************************************************************** 
*/   

/* 
  ***************************************************************************
              Structures used by asic_init
  *************************************************************************** 
*/   

struct asic_init_engine_parameters
{};

struct asic_init_mem_parameters
{};

struct asic_init_parameters_v2_1
{};

struct asic_init_ps_allocation_v2_1
{};


enum atom_asic_init_engine_flag
{};

enum atom_asic_init_mem_flag
{};

/* 
  ***************************************************************************
              Structures used by setengineclock
  *************************************************************************** 
*/   

struct set_engine_clock_parameters_v2_1
{};

struct set_engine_clock_ps_allocation_v2_1
{};


enum atom_set_engine_mem_clock_flag
{};

/* 
  ***************************************************************************
              Structures used by getengineclock
  *************************************************************************** 
*/   
struct get_engine_clock_parameter
{};

/* 
  ***************************************************************************
              Structures used by setmemoryclock
  *************************************************************************** 
*/   
struct set_memory_clock_parameters_v2_1
{};

struct set_memory_clock_ps_allocation_v2_1
{};


/* 
  ***************************************************************************
              Structures used by getmemoryclock
  *************************************************************************** 
*/   
struct get_memory_clock_parameter
{};



/* 
  ***************************************************************************
              Structures used by setvoltage
  *************************************************************************** 
*/   

struct set_voltage_parameters_v1_4
{};

//set_voltage_parameters_v2_1.voltagemode
enum atom_set_voltage_command{};

struct set_voltage_ps_allocation_v1_4
{};


/* 
  ***************************************************************************
              Structures used by computegpuclockparam
  *************************************************************************** 
*/   

//ATOM_COMPUTE_CLOCK_FREQ.ulComputeClockFlag
enum atom_gpu_clock_type 
{};

struct compute_gpu_clock_input_parameter_v1_8
{};


struct compute_gpu_clock_output_parameter_v1_8
{};



/* 
  ***************************************************************************
              Structures used by ReadEfuseValue
  *************************************************************************** 
*/   

struct read_efuse_input_parameters_v3_1
{};

// ReadEfuseValue input/output parameter
read_efuse_value_parameters_v3_1;


/* 
  ***************************************************************************
              Structures used by getsmuclockinfo
  *************************************************************************** 
*/   
struct atom_get_smu_clock_info_parameters_v3_1
{};

enum atom_get_smu_clock_info_command 
{};

enum atom_smu9_syspll0_clock_id
{};

enum atom_smu11_syspll_id {};

enum atom_smu11_syspll0_clock_id {};

enum atom_smu11_syspll1_0_clock_id {};

enum atom_smu11_syspll1_1_clock_id {};

enum atom_smu11_syspll1_2_clock_id {};

enum atom_smu11_syspll2_clock_id {};

enum atom_smu11_syspll3_0_clock_id {};

enum atom_smu11_syspll3_1_clock_id {};

enum atom_smu12_syspll_id {};

enum atom_smu12_syspll0_clock_id {};

enum atom_smu12_syspll1_clock_id {};

enum atom_smu12_syspll2_clock_id {};

enum atom_smu12_syspll3_0_clock_id {};

enum atom_smu12_syspll3_1_clock_id {};

struct  atom_get_smu_clock_info_output_parameters_v3_1
{};



/* 
  ***************************************************************************
              Structures used by dynamicmemorysettings
  *************************************************************************** 
*/   

enum atom_dynamic_memory_setting_command 
{};

/* when command = COMPUTE_MEMORY_PLL_PARAM or ADJUST_MC_SETTING_PARAM */
struct dynamic_mclk_settings_parameters_v2_1
{};

/* when command = COMPUTE_ENGINE_PLL_PARAM */
struct dynamic_sclk_settings_parameters_v2_1
{};

dynamic_memory_settings_parameters_v2_1;



/* 
  ***************************************************************************
              Structures used by memorytraining
  *************************************************************************** 
*/   

enum atom_umc6_0_ucode_function_call_enum_id
{};


struct memory_training_parameters_v2_1
{};


/* 
  ***************************************************************************
              Structures used by setpixelclock
  *************************************************************************** 
*/   

struct set_pixel_clock_parameter_v1_7
{};

//ucMiscInfo
enum atom_set_pixel_clock_v1_7_misc_info
{};

/* deep_color_ratio */
enum atom_set_pixel_clock_v1_7_deepcolor_ratio
{};

/* 
  ***************************************************************************
              Structures used by setdceclock
  *************************************************************************** 
*/   

// SetDCEClock input parameter for DCE11.2( ELM and BF ) and above 
struct set_dce_clock_parameters_v2_1
{};

//ucDCEClkType
enum atom_set_dce_clock_clock_type
{};

//ucDCEClkFlag when ucDCEClkType == DPREFCLK 
enum atom_set_dce_clock_dprefclk_flag
{};

//ucDCEClkFlag when ucDCEClkType == PIXCLK 
enum atom_set_dce_clock_pixclk_flag
{};

struct set_dce_clock_ps_allocation_v2_1
{};


/****************************************************************************/   
// Structures used by BlankCRTC
/****************************************************************************/   
struct blank_crtc_parameters
{};

enum atom_blank_crtc_command
{};

/****************************************************************************/   
// Structures used by enablecrtc
/****************************************************************************/   
struct enable_crtc_parameters
{};


/****************************************************************************/   
// Structure used by EnableDispPowerGating
/****************************************************************************/   
struct enable_disp_power_gating_parameters_v2_1
{};

struct enable_disp_power_gating_ps_allocation 
{};

/****************************************************************************/   
// Structure used in setcrtc_usingdtdtiming
/****************************************************************************/   
struct set_crtc_using_dtd_timing_parameters
{};


/****************************************************************************/   
// Structures used by processi2cchanneltransaction
/****************************************************************************/   
struct process_i2c_channel_transaction_parameters
{};

//ucFlag
enum atom_process_i2c_flag
{};

//status
enum atom_process_i2c_status
{};


/****************************************************************************/   
// Structures used by processauxchanneltransaction
/****************************************************************************/   

struct process_aux_channel_transaction_parameters_v1_2
{};


/****************************************************************************/   
// Structures used by selectcrtc_source
/****************************************************************************/   

struct select_crtc_source_parameters_v2_3
{};


/****************************************************************************/   
// Structures used by digxencodercontrol
/****************************************************************************/   

// ucAction:
enum atom_dig_encoder_control_action
{};

//define ucPanelMode
enum atom_dig_encoder_control_panelmode
{};

//ucDigId
enum atom_dig_encoder_control_v5_digid
{};

struct dig_encoder_stream_setup_parameters_v1_5
{};

struct dig_encoder_link_setup_parameters_v1_5
{};

struct dp_panel_mode_set_parameters_v1_5
{};

struct dig_encoder_generic_cmd_parameters_v1_5 
{};

dig_encoder_control_parameters_v1_5;

/* 
  ***************************************************************************
              Structures used by dig1transmittercontrol
  *************************************************************************** 
*/   
struct dig_transmitter_control_parameters_v1_6
{};

struct dig_transmitter_control_ps_allocation_v1_6
{};

//ucAction
enum atom_dig_transmitter_control_action
{};

// digfe_sel
enum atom_dig_transmitter_control_digfe_sel
{};


//ucHPDSel
enum atom_dig_transmitter_control_hpd_sel
{};

// ucDPLaneSet
enum atom_dig_transmitter_control_dplaneset
{};



/****************************************************************************/ 
// Structures used by ExternalEncoderControl V2.4
/****************************************************************************/   

struct external_encoder_control_parameters_v2_4
{};


// ucAction
enum external_encoder_control_action_def
{};

// ucConfig
enum external_encoder_control_v2_4_config_def
{};

struct external_encoder_control_ps_allocation_v2_4
{};


/* 
  ***************************************************************************
                           AMD ACPI Table
  
  *************************************************************************** 
*/   

struct amd_acpi_description_header{};

struct uefi_acpi_vfct{};

struct vfct_image_header{};


struct gop_vbios_content {};

struct gop_lib1_content {};



/* 
  ***************************************************************************
                   Scratch Register definitions
  Each number below indicates which scratch regiser request, Active and 
  Connect all share the same definitions as display_device_tag defines
  *************************************************************************** 
*/   

enum scratch_register_def{};

enum scratch_device_connect_info_bit_def{};

enum scratch_bl_bri_level_info_bit_def{};

enum scratch_active_info_bits_def{};

enum scratch_device_req_info_bits_def{};

enum scratch_acc_change_info_bitshift_def{};

enum scratch_acc_change_info_bits_def{};

enum scratch_pre_os_mode_info_bits_def{};



/* 
  ***************************************************************************
                       ATOM firmware ID header file
              !! Please keep it at end of the atomfirmware.h !!
  *************************************************************************** 
*/   
#include "atomfirmwareid.h"
#pragma pack()

#endif