14562236bSHarry Wentland /*
24562236bSHarry Wentland  * Copyright 2012-15 Advanced Micro Devices, Inc.
34562236bSHarry Wentland  *
44562236bSHarry Wentland  * Permission is hereby granted, free of charge, to any person obtaining a
54562236bSHarry Wentland  * copy of this software and associated documentation files (the "Software"),
64562236bSHarry Wentland  * to deal in the Software without restriction, including without limitation
74562236bSHarry Wentland  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
84562236bSHarry Wentland  * and/or sell copies of the Software, and to permit persons to whom the
94562236bSHarry Wentland  * Software is furnished to do so, subject to the following conditions:
104562236bSHarry Wentland  *
114562236bSHarry Wentland  * The above copyright notice and this permission notice shall be included in
124562236bSHarry Wentland  * all copies or substantial portions of the Software.
134562236bSHarry Wentland  *
144562236bSHarry Wentland  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
154562236bSHarry Wentland  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
164562236bSHarry Wentland  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
174562236bSHarry Wentland  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
184562236bSHarry Wentland  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
194562236bSHarry Wentland  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
204562236bSHarry Wentland  * OTHER DEALINGS IN THE SOFTWARE.
214562236bSHarry Wentland  *
224562236bSHarry Wentland  * Authors: AMD
234562236bSHarry Wentland  *
244562236bSHarry Wentland  */
254562236bSHarry Wentland 
264562236bSHarry Wentland #ifndef __DAL_GRPH_OBJECT_CTRL_DEFS_H__
274562236bSHarry Wentland #define __DAL_GRPH_OBJECT_CTRL_DEFS_H__
284562236bSHarry Wentland 
294562236bSHarry Wentland #include "grph_object_defs.h"
304562236bSHarry Wentland 
314562236bSHarry Wentland /*
324562236bSHarry Wentland  * #####################################################
334562236bSHarry Wentland  * #####################################################
344562236bSHarry Wentland  *
354562236bSHarry Wentland  * These defines shared between asic_control/bios_parser and other
364562236bSHarry Wentland  * DAL components
374562236bSHarry Wentland  *
384562236bSHarry Wentland  * #####################################################
394562236bSHarry Wentland  * #####################################################
404562236bSHarry Wentland  */
414562236bSHarry Wentland 
424562236bSHarry Wentland enum display_output_bit_depth {
434562236bSHarry Wentland 	PANEL_UNDEFINE = 0,
444562236bSHarry Wentland 	PANEL_6BIT_COLOR = 1,
454562236bSHarry Wentland 	PANEL_8BIT_COLOR = 2,
464562236bSHarry Wentland 	PANEL_10BIT_COLOR = 3,
474562236bSHarry Wentland 	PANEL_12BIT_COLOR = 4,
484562236bSHarry Wentland 	PANEL_16BIT_COLOR = 5,
494562236bSHarry Wentland };
504562236bSHarry Wentland 
514562236bSHarry Wentland 
524562236bSHarry Wentland /* Device type as abstracted by ATOM BIOS */
534562236bSHarry Wentland enum dal_device_type {
544562236bSHarry Wentland 	DEVICE_TYPE_UNKNOWN = 0,
554562236bSHarry Wentland 	DEVICE_TYPE_LCD,
564562236bSHarry Wentland 	DEVICE_TYPE_CRT,
574562236bSHarry Wentland 	DEVICE_TYPE_DFP,
584562236bSHarry Wentland 	DEVICE_TYPE_CV,
594562236bSHarry Wentland 	DEVICE_TYPE_TV,
604562236bSHarry Wentland 	DEVICE_TYPE_CF,
614562236bSHarry Wentland 	DEVICE_TYPE_WIRELESS
624562236bSHarry Wentland };
634562236bSHarry Wentland 
644562236bSHarry Wentland /* Device ID as abstracted by ATOM BIOS */
654562236bSHarry Wentland struct device_id {
664562236bSHarry Wentland 	enum dal_device_type device_type:16;
674562236bSHarry Wentland 	uint32_t enum_id:16;	/* 1 based enum */
681e8635eaSZeyu Fan 	uint16_t raw_device_tag;
694562236bSHarry Wentland };
704562236bSHarry Wentland 
714562236bSHarry Wentland struct graphics_object_i2c_info {
724562236bSHarry Wentland 	struct gpio_info {
734562236bSHarry Wentland 		uint32_t clk_mask_register_index;
744562236bSHarry Wentland 		uint32_t clk_en_register_index;
754562236bSHarry Wentland 		uint32_t clk_y_register_index;
764562236bSHarry Wentland 		uint32_t clk_a_register_index;
774562236bSHarry Wentland 		uint32_t data_mask_register_index;
784562236bSHarry Wentland 		uint32_t data_en_register_index;
794562236bSHarry Wentland 		uint32_t data_y_register_index;
804562236bSHarry Wentland 		uint32_t data_a_register_index;
814562236bSHarry Wentland 
824562236bSHarry Wentland 		uint32_t clk_mask_shift;
834562236bSHarry Wentland 		uint32_t clk_en_shift;
844562236bSHarry Wentland 		uint32_t clk_y_shift;
854562236bSHarry Wentland 		uint32_t clk_a_shift;
864562236bSHarry Wentland 		uint32_t data_mask_shift;
874562236bSHarry Wentland 		uint32_t data_en_shift;
884562236bSHarry Wentland 		uint32_t data_y_shift;
894562236bSHarry Wentland 		uint32_t data_a_shift;
904562236bSHarry Wentland 	} gpio_info;
914562236bSHarry Wentland 
924562236bSHarry Wentland 	bool i2c_hw_assist;
934562236bSHarry Wentland 	uint32_t i2c_line;
944562236bSHarry Wentland 	uint32_t i2c_engine_id;
954562236bSHarry Wentland 	uint32_t i2c_slave_address;
964562236bSHarry Wentland };
974562236bSHarry Wentland 
984562236bSHarry Wentland struct graphics_object_hpd_info {
994562236bSHarry Wentland 	uint8_t hpd_int_gpio_uid;
1004562236bSHarry Wentland 	uint8_t hpd_active;
1014562236bSHarry Wentland };
1024562236bSHarry Wentland 
1034562236bSHarry Wentland struct connector_device_tag_info {
1044562236bSHarry Wentland 	uint32_t acpi_device;
1054562236bSHarry Wentland 	struct device_id dev_id;
1064562236bSHarry Wentland };
1074562236bSHarry Wentland 
1084562236bSHarry Wentland struct device_timing {
1094562236bSHarry Wentland 	struct misc_info {
1104562236bSHarry Wentland 		uint32_t HORIZONTAL_CUT_OFF:1;
1114562236bSHarry Wentland 		/* 0=Active High, 1=Active Low */
1124562236bSHarry Wentland 		uint32_t H_SYNC_POLARITY:1;
1134562236bSHarry Wentland 		/* 0=Active High, 1=Active Low */
1144562236bSHarry Wentland 		uint32_t V_SYNC_POLARITY:1;
1154562236bSHarry Wentland 		uint32_t VERTICAL_CUT_OFF:1;
1164562236bSHarry Wentland 		uint32_t H_REPLICATION_BY2:1;
1174562236bSHarry Wentland 		uint32_t V_REPLICATION_BY2:1;
1184562236bSHarry Wentland 		uint32_t COMPOSITE_SYNC:1;
1194562236bSHarry Wentland 		uint32_t INTERLACE:1;
1204562236bSHarry Wentland 		uint32_t DOUBLE_CLOCK:1;
1214562236bSHarry Wentland 		uint32_t RGB888:1;
1224562236bSHarry Wentland 		uint32_t GREY_LEVEL:2;
1234562236bSHarry Wentland 		uint32_t SPATIAL:1;
1244562236bSHarry Wentland 		uint32_t TEMPORAL:1;
1254562236bSHarry Wentland 		uint32_t API_ENABLED:1;
1264562236bSHarry Wentland 	} misc_info;
1274562236bSHarry Wentland 
1284562236bSHarry Wentland 	uint32_t pixel_clk; /* in KHz */
1294562236bSHarry Wentland 	uint32_t horizontal_addressable;
1304562236bSHarry Wentland 	uint32_t horizontal_blanking_time;
1314562236bSHarry Wentland 	uint32_t vertical_addressable;
1324562236bSHarry Wentland 	uint32_t vertical_blanking_time;
1334562236bSHarry Wentland 	uint32_t horizontal_sync_offset;
1344562236bSHarry Wentland 	uint32_t horizontal_sync_width;
1354562236bSHarry Wentland 	uint32_t vertical_sync_offset;
1364562236bSHarry Wentland 	uint32_t vertical_sync_width;
1374562236bSHarry Wentland 	uint32_t horizontal_border;
1384562236bSHarry Wentland 	uint32_t vertical_border;
1394562236bSHarry Wentland };
1404562236bSHarry Wentland 
1414562236bSHarry Wentland struct supported_refresh_rate {
1424562236bSHarry Wentland 	uint32_t REFRESH_RATE_30HZ:1;
1434562236bSHarry Wentland 	uint32_t REFRESH_RATE_40HZ:1;
1444562236bSHarry Wentland 	uint32_t REFRESH_RATE_48HZ:1;
1454562236bSHarry Wentland 	uint32_t REFRESH_RATE_50HZ:1;
1464562236bSHarry Wentland 	uint32_t REFRESH_RATE_60HZ:1;
1474562236bSHarry Wentland };
1484562236bSHarry Wentland 
1494562236bSHarry Wentland struct embedded_panel_info {
1504562236bSHarry Wentland 	struct device_timing lcd_timing;
1514562236bSHarry Wentland 	uint32_t ss_id;
1524562236bSHarry Wentland 	struct supported_refresh_rate supported_rr;
1534562236bSHarry Wentland 	uint32_t drr_enabled;
1544562236bSHarry Wentland 	uint32_t min_drr_refresh_rate;
1554562236bSHarry Wentland 	bool realtek_eDPToLVDS;
1564562236bSHarry Wentland };
1574562236bSHarry Wentland 
1581515a47bSHarry Wentland struct dc_firmware_info {
1594562236bSHarry Wentland 	struct pll_info {
1604562236bSHarry Wentland 		uint32_t crystal_frequency; /* in KHz */
1614562236bSHarry Wentland 		uint32_t min_input_pxl_clk_pll_frequency; /* in KHz */
1624562236bSHarry Wentland 		uint32_t max_input_pxl_clk_pll_frequency; /* in KHz */
1634562236bSHarry Wentland 		uint32_t min_output_pxl_clk_pll_frequency; /* in KHz */
1644562236bSHarry Wentland 		uint32_t max_output_pxl_clk_pll_frequency; /* in KHz */
1654562236bSHarry Wentland 	} pll_info;
1664562236bSHarry Wentland 
1674562236bSHarry Wentland 	struct firmware_feature {
1684562236bSHarry Wentland 		uint32_t memory_clk_ss_percentage;
1694562236bSHarry Wentland 		uint32_t engine_clk_ss_percentage;
1704562236bSHarry Wentland 	} feature;
1714562236bSHarry Wentland 
1724562236bSHarry Wentland 	uint32_t default_display_engine_pll_frequency; /* in KHz */
1734562236bSHarry Wentland 	uint32_t external_clock_source_frequency_for_dp; /* in KHz */
1744562236bSHarry Wentland 	uint32_t smu_gpu_pll_output_freq; /* in KHz */
1754562236bSHarry Wentland 	uint8_t min_allowed_bl_level;
1764562236bSHarry Wentland 	uint8_t remote_display_config;
1774562236bSHarry Wentland 	uint32_t default_memory_clk; /* in KHz */
1784562236bSHarry Wentland 	uint32_t default_engine_clk; /* in KHz */
1794562236bSHarry Wentland 	uint32_t dp_phy_ref_clk; /* in KHz - DCE12 only */
1804562236bSHarry Wentland 	uint32_t i2c_engine_ref_clk; /* in KHz - DCE12 only */
181d9a07577SJun Lei 	bool oem_i2c_present;
182d9a07577SJun Lei 	uint8_t oem_i2c_obj_id;
1834562236bSHarry Wentland 
1844562236bSHarry Wentland };
1854562236bSHarry Wentland 
186d31bdabbSAlvin Lee struct dc_vram_info {
187d31bdabbSAlvin Lee 	unsigned int num_chans;
188d31bdabbSAlvin Lee 	unsigned int dram_channel_width_bytes;
189d31bdabbSAlvin Lee };
190d31bdabbSAlvin Lee 
1914562236bSHarry Wentland struct step_and_delay_info {
1924562236bSHarry Wentland 	uint32_t step;
1934562236bSHarry Wentland 	uint32_t delay;
1944562236bSHarry Wentland 	uint32_t recommended_ref_div;
1954562236bSHarry Wentland };
1964562236bSHarry Wentland 
1974562236bSHarry Wentland struct spread_spectrum_info {
1984562236bSHarry Wentland 	struct spread_spectrum_type {
1994562236bSHarry Wentland 		bool CENTER_MODE:1;
2004562236bSHarry Wentland 		bool EXTERNAL:1;
2014562236bSHarry Wentland 		bool STEP_AND_DELAY_INFO:1;
2024562236bSHarry Wentland 	} type;
2034562236bSHarry Wentland 
2044562236bSHarry Wentland 	/* in unit of 0.01% (spreadPercentageDivider = 100),
2054562236bSHarry Wentland 	otherwise in 0.001% units (spreadPercentageDivider = 1000); */
2064562236bSHarry Wentland 	uint32_t spread_spectrum_percentage;
2074562236bSHarry Wentland 	uint32_t spread_percentage_divider; /* 100 or 1000 */
2084562236bSHarry Wentland 	uint32_t spread_spectrum_range; /* modulation freq (HZ)*/
2094562236bSHarry Wentland 
2104562236bSHarry Wentland 	union {
2114562236bSHarry Wentland 		struct step_and_delay_info step_and_delay_info;
2124562236bSHarry Wentland 		/* For mem/engine/uvd, Clock Out frequence (VCO ),
2134562236bSHarry Wentland 		in unit of kHz. For TMDS/HDMI/LVDS, it is pixel clock,
2144562236bSHarry Wentland 		for DP, it is link clock ( 270000 or 162000 ) */
2154562236bSHarry Wentland 		uint32_t target_clock_range; /* in KHz */
2164562236bSHarry Wentland 	};
2174562236bSHarry Wentland 
2184562236bSHarry Wentland };
2194562236bSHarry Wentland 
2204562236bSHarry Wentland struct graphics_object_encoder_cap_info {
2214562236bSHarry Wentland 	uint32_t dp_hbr2_cap:1;
2224562236bSHarry Wentland 	uint32_t dp_hbr2_validated:1;
2234562236bSHarry Wentland 	/*
2244562236bSHarry Wentland 	 * TODO: added MST and HDMI 6G capable flags
2254562236bSHarry Wentland 	 */
2264562236bSHarry Wentland 	uint32_t reserved:15;
2274562236bSHarry Wentland };
2284562236bSHarry Wentland 
2294562236bSHarry Wentland struct din_connector_info {
2304562236bSHarry Wentland 	uint32_t gpio_id;
2314562236bSHarry Wentland 	bool gpio_tv_active_state;
2324562236bSHarry Wentland };
2334562236bSHarry Wentland 
2344562236bSHarry Wentland /* Invalid channel mapping */
2354562236bSHarry Wentland enum { INVALID_DDI_CHANNEL_MAPPING = 0x0 };
2364562236bSHarry Wentland 
2374562236bSHarry Wentland /**
2384562236bSHarry Wentland  * DDI PHY channel mapping reflecting XBAR setting
2394562236bSHarry Wentland  */
2404562236bSHarry Wentland union ddi_channel_mapping {
2414562236bSHarry Wentland 	struct mapping {
2424562236bSHarry Wentland 		uint8_t lane0:2;	/* Mapping for lane 0 */
2434562236bSHarry Wentland 		uint8_t lane1:2;	/* Mapping for lane 1 */
2444562236bSHarry Wentland 		uint8_t lane2:2;	/* Mapping for lane 2 */
2454562236bSHarry Wentland 		uint8_t lane3:2;	/* Mapping for lane 3 */
2464562236bSHarry Wentland 	} mapping;
2474562236bSHarry Wentland 	uint8_t raw;
2484562236bSHarry Wentland };
2494562236bSHarry Wentland 
2504562236bSHarry Wentland /**
2514562236bSHarry Wentland * Transmitter output configuration description
2524562236bSHarry Wentland */
2534562236bSHarry Wentland struct transmitter_configuration_info {
2544562236bSHarry Wentland 	/* DDI PHY ID for the transmitter */
2554562236bSHarry Wentland 	enum transmitter transmitter_phy_id;
2564562236bSHarry Wentland 	/* DDI PHY channel mapping reflecting crossbar setting */
2574562236bSHarry Wentland 	union ddi_channel_mapping output_channel_mapping;
2584562236bSHarry Wentland };
2594562236bSHarry Wentland 
2604562236bSHarry Wentland struct transmitter_configuration {
2614562236bSHarry Wentland 	/* Configuration for the primary transmitter */
2624562236bSHarry Wentland 	struct transmitter_configuration_info primary_transmitter_config;
2634562236bSHarry Wentland 	/* Secondary transmitter configuration for Dual-link DVI */
2644562236bSHarry Wentland 	struct transmitter_configuration_info secondary_transmitter_config;
2654562236bSHarry Wentland };
2664562236bSHarry Wentland 
2674562236bSHarry Wentland /* These size should be sufficient to store info coming from BIOS */
2684562236bSHarry Wentland #define NUMBER_OF_UCHAR_FOR_GUID 16
2694562236bSHarry Wentland #define MAX_NUMBER_OF_EXT_DISPLAY_PATH 7
2704562236bSHarry Wentland #define NUMBER_OF_CSR_M3_ARB 10
2714562236bSHarry Wentland #define NUMBER_OF_DISP_CLK_VOLTAGE 4
2724562236bSHarry Wentland #define NUMBER_OF_AVAILABLE_SCLK 5
2734562236bSHarry Wentland 
2741e8635eaSZeyu Fan struct i2c_reg_info {
2751e8635eaSZeyu Fan 	unsigned char       i2c_reg_index;
2761e8635eaSZeyu Fan 	unsigned char       i2c_reg_val;
2771e8635eaSZeyu Fan };
2781e8635eaSZeyu Fan 
2791e8635eaSZeyu Fan struct ext_hdmi_settings {
2801e8635eaSZeyu Fan 	unsigned char   slv_addr;
2811e8635eaSZeyu Fan 	unsigned char   reg_num;
2821e8635eaSZeyu Fan 	struct i2c_reg_info      reg_settings[9];
2831e8635eaSZeyu Fan 	unsigned char   reg_num_6g;
2841e8635eaSZeyu Fan 	struct i2c_reg_info      reg_settings_6g[3];
2851e8635eaSZeyu Fan };
2861e8635eaSZeyu Fan 
2873a83e4e6SRoman Li struct edp_info {
2883a83e4e6SRoman Li 	uint16_t edp_backlight_pwm_hz;
2893a83e4e6SRoman Li 	uint16_t edp_ss_percentage;
2903a83e4e6SRoman Li 	uint16_t edp_ss_rate_10hz;
2913a83e4e6SRoman Li 	uint8_t  edp_pwr_on_off_delay;
2923a83e4e6SRoman Li 	uint8_t  edp_pwr_on_vary_bl_to_blon;
2933a83e4e6SRoman Li 	uint8_t  edp_pwr_down_bloff_to_vary_bloff;
2943a83e4e6SRoman Li 	uint8_t  edp_panel_bpc;
2953a83e4e6SRoman Li 	uint8_t  edp_bootup_bl_level;
2963a83e4e6SRoman Li };
2971e8635eaSZeyu Fan 
2984562236bSHarry Wentland /* V6 */
2994562236bSHarry Wentland struct integrated_info {
3004562236bSHarry Wentland 	struct clock_voltage_caps {
3014562236bSHarry Wentland 		/* The Voltage Index indicated by FUSE, same voltage index
3024562236bSHarry Wentland 		shared with SCLK DPM fuse table */
3034562236bSHarry Wentland 		uint32_t voltage_index;
3044562236bSHarry Wentland 		/* Maximum clock supported with specified voltage index */
3054562236bSHarry Wentland 		uint32_t max_supported_clk; /* in KHz */
3064562236bSHarry Wentland 	} disp_clk_voltage[NUMBER_OF_DISP_CLK_VOLTAGE];
3074562236bSHarry Wentland 
3084562236bSHarry Wentland 	struct display_connection_info {
3094562236bSHarry Wentland 		struct external_display_path {
3104562236bSHarry Wentland 			/* A bit vector to show what devices are supported */
3114562236bSHarry Wentland 			uint32_t device_tag;
3124562236bSHarry Wentland 			/* 16bit device ACPI id. */
3134562236bSHarry Wentland 			uint32_t device_acpi_enum;
3144562236bSHarry Wentland 			/* A physical connector for displays to plug in,
3154562236bSHarry Wentland 			using object connector definitions */
3164562236bSHarry Wentland 			struct graphics_object_id device_connector_id;
3174562236bSHarry Wentland 			/* An index into external AUX/DDC channel LUT */
3184562236bSHarry Wentland 			uint8_t ext_aux_ddc_lut_index;
3194562236bSHarry Wentland 			/* An index into external HPD pin LUT */
3204562236bSHarry Wentland 			uint8_t ext_hpd_pin_lut_index;
3214562236bSHarry Wentland 			/* external encoder object id */
3224562236bSHarry Wentland 			struct graphics_object_id ext_encoder_obj_id;
3234562236bSHarry Wentland 			/* XBAR mapping of the PHY channels */
3244562236bSHarry Wentland 			union ddi_channel_mapping channel_mapping;
3251e8635eaSZeyu Fan 
3261e8635eaSZeyu Fan 			unsigned short caps;
3274562236bSHarry Wentland 		} path[MAX_NUMBER_OF_EXT_DISPLAY_PATH];
3284562236bSHarry Wentland 
3294562236bSHarry Wentland 		uint8_t gu_id[NUMBER_OF_UCHAR_FOR_GUID];
3304562236bSHarry Wentland 		uint8_t checksum;
33154fe00beSGeorge Shen 		uint8_t fixdpvoltageswing;
3324562236bSHarry Wentland 	} ext_disp_conn_info; /* exiting long long time */
3334562236bSHarry Wentland 
3344562236bSHarry Wentland 	struct available_s_clk_list {
3354562236bSHarry Wentland 		/* Maximum clock supported with specified voltage index */
3364562236bSHarry Wentland 		uint32_t supported_s_clk; /* in KHz */
3374562236bSHarry Wentland 		/* The Voltage Index indicated by FUSE for specified SCLK */
3384562236bSHarry Wentland 		uint32_t voltage_index;
3394562236bSHarry Wentland 		/* The Voltage ID indicated by FUSE for specified SCLK */
3404562236bSHarry Wentland 		uint32_t voltage_id;
3414562236bSHarry Wentland 	} avail_s_clk[NUMBER_OF_AVAILABLE_SCLK];
3424562236bSHarry Wentland 
3434562236bSHarry Wentland 	uint8_t memory_type;
3444562236bSHarry Wentland 	uint8_t ma_channel_number;
3454562236bSHarry Wentland 	uint32_t boot_up_engine_clock; /* in KHz */
3464562236bSHarry Wentland 	uint32_t dentist_vco_freq; /* in KHz */
3474562236bSHarry Wentland 	uint32_t boot_up_uma_clock; /* in KHz */
3484562236bSHarry Wentland 	uint32_t boot_up_req_display_vector;
3494562236bSHarry Wentland 	uint32_t other_display_misc;
3504562236bSHarry Wentland 	uint32_t gpu_cap_info;
3514562236bSHarry Wentland 	uint32_t sb_mmio_base_addr;
3524562236bSHarry Wentland 	uint32_t system_config;
3534562236bSHarry Wentland 	uint32_t cpu_cap_info;
3544562236bSHarry Wentland 	uint32_t max_nb_voltage;
3554562236bSHarry Wentland 	uint32_t min_nb_voltage;
3564562236bSHarry Wentland 	uint32_t boot_up_nb_voltage;
3574562236bSHarry Wentland 	uint32_t ext_disp_conn_info_offset;
3584562236bSHarry Wentland 	uint32_t csr_m3_arb_cntl_default[NUMBER_OF_CSR_M3_ARB];
3594562236bSHarry Wentland 	uint32_t csr_m3_arb_cntl_uvd[NUMBER_OF_CSR_M3_ARB];
3604562236bSHarry Wentland 	uint32_t csr_m3_arb_cntl_fs3d[NUMBER_OF_CSR_M3_ARB];
3614562236bSHarry Wentland 	uint32_t gmc_restore_reset_time;
3624562236bSHarry Wentland 	uint32_t minimum_n_clk;
3634562236bSHarry Wentland 	uint32_t idle_n_clk;
3644562236bSHarry Wentland 	uint32_t ddr_dll_power_up_time;
3654562236bSHarry Wentland 	uint32_t ddr_pll_power_up_time;
3664562236bSHarry Wentland 	/* start for V6 */
3674562236bSHarry Wentland 	uint32_t pcie_clk_ss_type;
3684562236bSHarry Wentland 	uint32_t lvds_ss_percentage;
3694562236bSHarry Wentland 	uint32_t lvds_sspread_rate_in_10hz;
3704562236bSHarry Wentland 	uint32_t hdmi_ss_percentage;
3714562236bSHarry Wentland 	uint32_t hdmi_sspread_rate_in_10hz;
3724562236bSHarry Wentland 	uint32_t dvi_ss_percentage;
3734562236bSHarry Wentland 	uint32_t dvi_sspread_rate_in_10_hz;
3744562236bSHarry Wentland 	uint32_t sclk_dpm_boost_margin;
3754562236bSHarry Wentland 	uint32_t sclk_dpm_throttle_margin;
3764562236bSHarry Wentland 	uint32_t sclk_dpm_tdp_limit_pg;
3774562236bSHarry Wentland 	uint32_t sclk_dpm_tdp_limit_boost;
3784562236bSHarry Wentland 	uint32_t boost_engine_clock;
3794562236bSHarry Wentland 	uint32_t boost_vid_2bit;
3804562236bSHarry Wentland 	uint32_t enable_boost;
3814562236bSHarry Wentland 	uint32_t gnb_tdp_limit;
3824562236bSHarry Wentland 	/* Start from V7 */
3834562236bSHarry Wentland 	uint32_t max_lvds_pclk_freq_in_single_link;
3844562236bSHarry Wentland 	uint32_t lvds_misc;
3854562236bSHarry Wentland 	uint32_t lvds_pwr_on_seq_dig_on_to_de_in_4ms;
3864562236bSHarry Wentland 	uint32_t lvds_pwr_on_seq_de_to_vary_bl_in_4ms;
3874562236bSHarry Wentland 	uint32_t lvds_pwr_off_seq_vary_bl_to_de_in4ms;
3884562236bSHarry Wentland 	uint32_t lvds_pwr_off_seq_de_to_dig_on_in4ms;
3894562236bSHarry Wentland 	uint32_t lvds_off_to_on_delay_in_4ms;
3904562236bSHarry Wentland 	uint32_t lvds_pwr_on_seq_vary_bl_to_blon_in_4ms;
3914562236bSHarry Wentland 	uint32_t lvds_pwr_off_seq_blon_to_vary_bl_in_4ms;
3924562236bSHarry Wentland 	uint32_t lvds_reserved1;
3934562236bSHarry Wentland 	uint32_t lvds_bit_depth_control_val;
3941e8635eaSZeyu Fan 	//Start from V9
3951e8635eaSZeyu Fan 	unsigned char dp0_ext_hdmi_slv_addr;
3961e8635eaSZeyu Fan 	unsigned char dp0_ext_hdmi_reg_num;
3971e8635eaSZeyu Fan 	struct i2c_reg_info dp0_ext_hdmi_reg_settings[9];
3981e8635eaSZeyu Fan 	unsigned char dp0_ext_hdmi_6g_reg_num;
3991e8635eaSZeyu Fan 	struct i2c_reg_info dp0_ext_hdmi_6g_reg_settings[3];
4001e8635eaSZeyu Fan 	unsigned char dp1_ext_hdmi_slv_addr;
4011e8635eaSZeyu Fan 	unsigned char dp1_ext_hdmi_reg_num;
4021e8635eaSZeyu Fan 	struct i2c_reg_info dp1_ext_hdmi_reg_settings[9];
4031e8635eaSZeyu Fan 	unsigned char dp1_ext_hdmi_6g_reg_num;
4041e8635eaSZeyu Fan 	struct i2c_reg_info dp1_ext_hdmi_6g_reg_settings[3];
4051e8635eaSZeyu Fan 	unsigned char dp2_ext_hdmi_slv_addr;
4061e8635eaSZeyu Fan 	unsigned char dp2_ext_hdmi_reg_num;
4071e8635eaSZeyu Fan 	struct i2c_reg_info dp2_ext_hdmi_reg_settings[9];
4081e8635eaSZeyu Fan 	unsigned char dp2_ext_hdmi_6g_reg_num;
4091e8635eaSZeyu Fan 	struct i2c_reg_info dp2_ext_hdmi_6g_reg_settings[3];
4101e8635eaSZeyu Fan 	unsigned char dp3_ext_hdmi_slv_addr;
4111e8635eaSZeyu Fan 	unsigned char dp3_ext_hdmi_reg_num;
4121e8635eaSZeyu Fan 	struct i2c_reg_info dp3_ext_hdmi_reg_settings[9];
4131e8635eaSZeyu Fan 	unsigned char dp3_ext_hdmi_6g_reg_num;
4141e8635eaSZeyu Fan 	struct i2c_reg_info dp3_ext_hdmi_6g_reg_settings[3];
415ad830e7aSDmytro Laktyushkin 	/* V11 */
416ad830e7aSDmytro Laktyushkin 	uint32_t dp_ss_control;
4173a83e4e6SRoman Li 	/* V2.1 */
4183a83e4e6SRoman Li 	struct edp_info edp1_info;
4193a83e4e6SRoman Li 	struct edp_info edp2_info;
420*51e7b646SCharlene Liu 	uint32_t gpuclk_ss_percentage;
421*51e7b646SCharlene Liu 	uint32_t gpuclk_ss_type;
4224562236bSHarry Wentland };
4234562236bSHarry Wentland 
4244562236bSHarry Wentland /*
4254562236bSHarry Wentland  * DFS-bypass flag
4264562236bSHarry Wentland  */
4274562236bSHarry Wentland /* Copy of SYS_INFO_GPUCAPS__ENABEL_DFS_BYPASS from atombios.h */
4284562236bSHarry Wentland enum {
4294562236bSHarry Wentland 	DFS_BYPASS_ENABLE = 0x10
4304562236bSHarry Wentland };
4314562236bSHarry Wentland 
4324562236bSHarry Wentland enum {
4334562236bSHarry Wentland 	INVALID_BACKLIGHT = -1
4344562236bSHarry Wentland };
4354562236bSHarry Wentland 
4364562236bSHarry Wentland struct panel_backlight_boundaries {
4374562236bSHarry Wentland 	uint32_t min_signal_level;
4384562236bSHarry Wentland 	uint32_t max_signal_level;
4394562236bSHarry Wentland };
4404562236bSHarry Wentland 
4414562236bSHarry Wentland 
4424562236bSHarry Wentland #endif
443