diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0703-drm-amd-dal-Override-some-virtual-functions-for-Diag.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0703-drm-amd-dal-Override-some-virtual-functions-for-Diag.patch | 1709 |
1 files changed, 0 insertions, 1709 deletions
diff --git a/common/recipes-kernel/linux/files/0703-drm-amd-dal-Override-some-virtual-functions-for-Diag.patch b/common/recipes-kernel/linux/files/0703-drm-amd-dal-Override-some-virtual-functions-for-Diag.patch deleted file mode 100644 index ab27d06e..00000000 --- a/common/recipes-kernel/linux/files/0703-drm-amd-dal-Override-some-virtual-functions-for-Diag.patch +++ /dev/null @@ -1,1709 +0,0 @@ -From 060a4205ae78b9cb3ffafcf0078c4011ca20d8ee Mon Sep 17 00:00:00 2001 -From: David Rokhvarg <David.Rokhvarg@amd.com> -Date: Tue, 19 Jan 2016 13:43:50 -0500 -Subject: [PATCH 0703/1110] drm/amd/dal: Override some virtual functions for - Diagnostics use. - -This will prevent access to registers which are non-existent on -FPGA emulation. - -Signed-off-by: David Rokhvarg <David.Rokhvarg@amd.com> -Acked-by: Harry Wentland <harry.wentland@amd.com> ---- - drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c | 2 + - drivers/gpu/drm/amd/dal/dc/adapter/Makefile | 6 + - .../gpu/drm/amd/dal/dc/adapter/adapter_service.c | 180 +++++++++++++-------- - .../gpu/drm/amd/dal/dc/adapter/adapter_service.h | 4 +- - .../diagnostics/hw_ctx_adapter_service_diag.c | 133 +++++++++++++++ - .../diagnostics/hw_ctx_adapter_service_diag.h | 33 ++++ - drivers/gpu/drm/amd/dal/dc/core/dc.c | 6 + - drivers/gpu/drm/amd/dal/dc/gpio/Makefile | 8 + - .../drm/amd/dal/dc/gpio/diagnostics/hw_ddc_diag.c | 98 +++++++++++ - .../drm/amd/dal/dc/gpio/diagnostics/hw_ddc_diag.h | 34 ++++ - .../amd/dal/dc/gpio/diagnostics/hw_factory_diag.c | 70 ++++++++ - .../amd/dal/dc/gpio/diagnostics/hw_factory_diag.h | 32 ++++ - .../drm/amd/dal/dc/gpio/diagnostics/hw_hpd_diag.c | 102 ++++++++++++ - .../drm/amd/dal/dc/gpio/diagnostics/hw_hpd_diag.h | 35 ++++ - .../dal/dc/gpio/diagnostics/hw_translate_diag.c | 42 +++++ - .../dal/dc/gpio/diagnostics/hw_translate_diag.h | 34 ++++ - drivers/gpu/drm/amd/dal/dc/gpio/gpio_service.c | 9 +- - drivers/gpu/drm/amd/dal/dc/gpio/hw_factory.c | 14 +- - drivers/gpu/drm/amd/dal/dc/gpio/hw_factory.h | 3 +- - drivers/gpu/drm/amd/dal/dc/gpio/hw_translate.c | 13 +- - drivers/gpu/drm/amd/dal/dc/gpio/hw_translate.h | 3 +- - drivers/gpu/drm/amd/dal/dc/i2caux/Makefile | 10 ++ - .../amd/dal/dc/i2caux/diagnostics/i2caux_diag.c | 113 +++++++++++++ - .../amd/dal/dc/i2caux/diagnostics/i2caux_diag.h | 33 ++++ - drivers/gpu/drm/amd/dal/dc/i2caux/i2caux.c | 11 ++ - drivers/gpu/drm/amd/dal/dc/inc/core_dc.h | 6 + - .../amd/dal/include/adapter_service_interface.h | 4 + - drivers/gpu/drm/amd/dal/include/dal_types.h | 7 + - .../drm/amd/dal/include/gpio_service_interface.h | 3 +- - 29 files changed, 973 insertions(+), 75 deletions(-) - create mode 100644 drivers/gpu/drm/amd/dal/dc/adapter/diagnostics/hw_ctx_adapter_service_diag.c - create mode 100644 drivers/gpu/drm/amd/dal/dc/adapter/diagnostics/hw_ctx_adapter_service_diag.h - create mode 100644 drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_ddc_diag.c - create mode 100644 drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_ddc_diag.h - create mode 100644 drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_factory_diag.c - create mode 100644 drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_factory_diag.h - create mode 100644 drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_hpd_diag.c - create mode 100644 drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_hpd_diag.h - create mode 100644 drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_translate_diag.c - create mode 100644 drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_translate_diag.h - create mode 100644 drivers/gpu/drm/amd/dal/dc/i2caux/diagnostics/i2caux_diag.c - create mode 100644 drivers/gpu/drm/amd/dal/dc/i2caux/diagnostics/i2caux_diag.h - -diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c -index 9879512..7614ac8 100644 ---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c -+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c -@@ -527,6 +527,8 @@ int amdgpu_dm_init(struct amdgpu_device *adev) - init_data.display_param.bool_param_values |= - 1 << DAL_PARAM_ENABLE_GPU_SCALING; - -+ init_data.dce_environment = DCE_ENV_PRODUCTION_DRV; -+ - /* Display Core create. */ - adev->dm.dc = dc_create(&init_data); - -diff --git a/drivers/gpu/drm/amd/dal/dc/adapter/Makefile b/drivers/gpu/drm/amd/dal/dc/adapter/Makefile -index 8ede504..2c6ca7a 100644 ---- a/drivers/gpu/drm/amd/dal/dc/adapter/Makefile -+++ b/drivers/gpu/drm/amd/dal/dc/adapter/Makefile -@@ -16,3 +16,9 @@ AMD_DAL_FILES += $(AMD_DAL_ADAPTER) - ifdef CONFIG_DRM_AMD_DAL_DCE11_0 - AMD_DAL_FILES += $(AMDDALPATH)/dc/adapter/dce110/hw_ctx_adapter_service_dce110.o - endif -+ -+############################################################################### -+# FPGA Diagnositcs -+############################################################################### -+ -+AMD_DAL_FILES += $(AMDDALPATH)/dc/adapter/diagnostics/hw_ctx_adapter_service_diag.o -diff --git a/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.c b/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.c -index b3b3be7..b8d6033 100644 ---- a/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.c -+++ b/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.c -@@ -45,6 +45,8 @@ - #include "dce110/hw_ctx_adapter_service_dce110.h" - #endif - -+#include "diagnostics/hw_ctx_adapter_service_diag.h" -+ - /* - * Adapter service feature entry table. - * -@@ -224,6 +226,7 @@ static void initialize_backlight_caps( - struct platform_info_params params; - bool custom_curve_present = false; - bool custom_min_max_present = false; -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); - - if (!(PM_GET_EXTENDED_BRIGHNESS_CAPS & as->platform_methods_mask)) { - dal_logger_write(as->ctx->logger, -@@ -233,8 +236,8 @@ static void initialize_backlight_caps( - return; - } - -- if (as->dcb->funcs->get_firmware_info(as->dcb, &fw_info) != BP_RESULT_OK || -- as->dcb->funcs->get_embedded_panel_info(as->dcb, &panel_info) != BP_RESULT_OK) -+ if (dcb->funcs->get_firmware_info(dcb, &fw_info) != BP_RESULT_OK || -+ dcb->funcs->get_embedded_panel_info(dcb, &panel_info) != BP_RESULT_OK) - return; - - params.data = ∩︀ -@@ -550,8 +553,9 @@ static bool get_hpd_info(struct adapter_service *as, - struct graphics_object_id id, - struct graphics_object_hpd_info *info) - { -- return BP_RESULT_OK == -- as->dcb->funcs->get_hpd_info(as->dcb, id, info); -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); -+ -+ return BP_RESULT_OK == dcb->funcs->get_hpd_info(dcb, id, info); - } - - /* -@@ -662,8 +666,16 @@ static bool generate_feature_set( - */ - static struct hw_ctx_adapter_service *create_hw_ctx( - enum dce_version dce_version, -+ enum dce_environment dce_environment, - struct dc_context *ctx) - { -+ switch (dce_environment) { -+ case DCE_ENV_DIAG_FPGA_MAXIMUS: -+ return dal_adapter_service_create_hw_ctx_diag(ctx); -+ default: -+ break; -+ } -+ - switch (dce_version) { - #if defined(CONFIG_DRM_AMD_DAL_DCE11_0) - case DCE_VERSION_11_0: -@@ -683,12 +695,20 @@ static struct hw_ctx_adapter_service *create_hw_ctx( - static void adapter_service_destruct( - struct adapter_service *as) - { -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); -+ - dal_adapter_service_destroy_hw_ctx(&as->hw_ctx); - dal_i2caux_destroy(&as->i2caux); - dal_gpio_service_destroy(&as->gpio_service); - dal_asic_capability_destroy(&as->asic_cap); -- as->dcb->funcs->destroy_integrated_info(as->dcb, &as->integrated_info); -- dal_bios_parser_destroy(&as->dcb); -+ -+ dcb->funcs->destroy_integrated_info(dcb, &as->integrated_info); -+ -+ if (as->dcb_internal) { -+ /* We are responsible only for destruction of Internal BIOS. -+ * The External one will be destroyed by its creator. */ -+ dal_bios_parser_destroy(&as->dcb_internal); -+ } - } - - /* -@@ -700,6 +720,9 @@ static bool adapter_service_construct( - struct adapter_service *as, - struct as_init_data *init_data) - { -+ struct dc_bios *dcb; -+ enum dce_version dce_version; -+ - if (!init_data) - return false; - -@@ -734,25 +757,32 @@ static bool adapter_service_construct( - goto failed_to_generate_features; - } - -+ as->dce_environment = init_data->dce_environment; -+ - if (init_data->vbios_override) -- as->dcb = init_data->vbios_override; -+ as->dcb_override = init_data->vbios_override; - else { - /* Create BIOS parser */ - init_data->bp_init_data.ctx = init_data->ctx; - -- as->dcb = dal_bios_parser_create(&init_data->bp_init_data, as); -- } -+ as->dcb_internal = dal_bios_parser_create( -+ &init_data->bp_init_data, as); - -- if (!as->dcb) { -- ASSERT_CRITICAL(false); -- goto failed_to_create_bios_parser; -+ if (!as->dcb_internal) { -+ ASSERT_CRITICAL(false); -+ goto failed_to_create_bios_parser; -+ } - } - -+ dcb = dal_adapter_service_get_bios_parser(as); -+ -+ dce_version = dal_adapter_service_get_dce_version(as); -+ - /* Create GPIO service */ -- as->gpio_service = -- dal_gpio_service_create( -- dal_adapter_service_get_dce_version(as), -- as->ctx); -+ as->gpio_service = dal_gpio_service_create( -+ dce_version, -+ as->dce_environment, -+ as->ctx); - - if (!as->gpio_service) { - ASSERT_CRITICAL(false); -@@ -769,8 +799,9 @@ static bool adapter_service_construct( - - /* Create Adapter Service HW Context*/ - as->hw_ctx = create_hw_ctx( -- dal_adapter_service_get_dce_version(as), -- as->ctx); -+ dce_version, -+ as->dce_environment, -+ as->ctx); - - if (!as->hw_ctx) { - ASSERT_CRITICAL(false); -@@ -780,10 +811,9 @@ static bool adapter_service_construct( - /* Avoid wireless encoder creation in upstream branch. */ - - /* Integrated info is not provided on discrete ASIC. NULL is allowed */ -- as->integrated_info = as->dcb->funcs->create_integrated_info( -- as->dcb); -+ as->integrated_info = dcb->funcs->create_integrated_info(dcb); - -- as->dcb->funcs->post_init(as->dcb); -+ dcb->funcs->post_init(dcb); - - /* Generate backlight translation table and initializes - other brightness properties */ -@@ -805,7 +835,8 @@ failed_to_create_i2caux: - dal_gpio_service_destroy(&as->gpio_service); - - failed_to_create_gpio_service: -- dal_bios_parser_destroy(&as->dcb); -+ if (as->dcb_internal) -+ dal_bios_parser_destroy(&as->dcb_internal); - - failed_to_create_bios_parser: - dal_asic_capability_destroy(&as->asic_cap); -@@ -890,6 +921,13 @@ enum dce_version dal_adapter_service_get_dce_version( - } - } - -+enum dce_environment dal_adapter_service_get_dce_environment( -+ const struct adapter_service *as) -+{ -+ return as->dce_environment; -+} -+ -+ - /* - * dal_adapter_service_get_controllers_num - * -@@ -956,10 +994,12 @@ static bool is_wireless_object(struct graphics_object_id id) - uint32_t dal_adapter_service_get_src_num( - struct adapter_service *as, struct graphics_object_id id) - { -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); -+ - if (is_wireless_object(id)) - return wireless_get_srcs_num(as, id); - else -- return as->dcb->funcs->get_src_number(as->dcb, id); -+ return dcb->funcs->get_src_number(dcb, id); - } - - /** -@@ -979,18 +1019,19 @@ struct graphics_object_id dal_adapter_service_get_src_obj( - uint32_t index) - { - struct graphics_object_id src_object_id; -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); - - if (is_wireless_object(id)) - src_object_id = wireless_get_src_obj_id(as, id, index); - else { -- if (BP_RESULT_OK != -- as->dcb->funcs->get_src_obj( -- as->dcb, id, index, &src_object_id)) -+ if (BP_RESULT_OK != dcb->funcs->get_src_obj(dcb, id, index, -+ &src_object_id)) { - src_object_id = - dal_graphics_object_id_init( - 0, - ENUM_ID_UNKNOWN, - OBJECT_TYPE_UNKNOWN); -+ } - } - - return src_object_id; -@@ -1017,13 +1058,9 @@ struct graphics_object_id dal_adapter_service_get_connector_obj_id( - bios_connectors_num = dcb->funcs->get_connectors_number(dcb); - - if (connector_index >= bios_connectors_num) -- return wireless_get_connector_id( -- as, -- connector_index); -+ return wireless_get_connector_id(as, connector_index); - else -- return as->dcb->funcs->get_connector_id( -- as->dcb, -- connector_index); -+ return dcb->funcs->get_connector_id(dcb, connector_index); - } - - bool dal_adapter_service_get_device_tag( -@@ -1032,7 +1069,9 @@ bool dal_adapter_service_get_device_tag( - uint32_t device_tag_index, - struct connector_device_tag_info *info) - { -- if (BP_RESULT_OK == as->dcb->funcs->get_device_tag(as->dcb, -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); -+ -+ if (BP_RESULT_OK == dcb->funcs->get_device_tag(dcb, - connector_object_id, device_tag_index, info)) - return true; - else -@@ -1043,7 +1082,9 @@ bool dal_adapter_service_get_device_tag( - bool dal_adapter_service_is_device_id_supported(struct adapter_service *as, - struct device_id id) - { -- return as->dcb->funcs->is_device_id_supported(as->dcb, id); -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); -+ -+ return dcb->funcs->is_device_id_supported(dcb, id); - } - - bool dal_adapter_service_is_meet_underscan_req(struct adapter_service *as) -@@ -1080,14 +1121,13 @@ uint8_t dal_adapter_service_get_clock_sources_num( - struct firmware_info fw_info; - uint32_t max_clk_src = 0; - uint32_t num = as->asic_cap->data[ASIC_DATA_CLOCKSOURCES_NUM]; -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); - - /* - * Check is system supports the use of the External clock source - * as a clock source for DP - */ -- enum bp_result bp_result = -- as->dcb->funcs->get_firmware_info(as->dcb, -- &fw_info); -+ enum bp_result bp_result = dcb->funcs->get_firmware_info(dcb, &fw_info); - - if (BP_RESULT_OK == bp_result && - fw_info.external_clock_source_frequency_for_dp != 0) -@@ -1199,13 +1239,14 @@ bool dal_adapter_service_get_i2c_info( - struct graphics_object_id id, - struct graphics_object_i2c_info *i2c_info) - { -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); -+ - if (!i2c_info) { - ASSERT_CRITICAL(false); - return false; - } - -- return BP_RESULT_OK == -- as->dcb->funcs->get_i2c_info(as->dcb, id, i2c_info); -+ return BP_RESULT_OK == dcb->funcs->get_i2c_info(dcb, id, i2c_info); - } - - /* -@@ -1256,14 +1297,14 @@ struct irq *dal_adapter_service_obtain_hpd_irq( - struct graphics_object_id id) - { - enum bp_result bp_result; -- -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); - struct graphics_object_hpd_info hpd_info; - struct gpio_pin_info pin_info; - - if (!get_hpd_info(as, id, &hpd_info)) - return NULL; - -- bp_result = as->dcb->funcs->get_gpio_pin_info(as->dcb, -+ bp_result = dcb->funcs->get_gpio_pin_info(dcb, - hpd_info.hpd_int_gpio_uid, &pin_info); - - if (bp_result != BP_RESULT_OK) { -@@ -1298,7 +1339,9 @@ uint32_t dal_adapter_service_get_ss_info_num( - struct adapter_service *as, - enum as_signal_type signal) - { -- return as->dcb->funcs->get_ss_entry_number(as->dcb, signal); -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); -+ -+ return dcb->funcs->get_ss_entry_number(dcb, signal); - } - - /* -@@ -1312,9 +1355,10 @@ bool dal_adapter_service_get_ss_info( - uint32_t idx, - struct spread_spectrum_info *info) - { -- enum bp_result bp_result = -- as->dcb->funcs->get_spread_spectrum_info( -- as->dcb, signal, idx, info); -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); -+ -+ enum bp_result bp_result = dcb->funcs->get_spread_spectrum_info(dcb, -+ signal, idx, info); - - return BP_RESULT_OK == bp_result; - } -@@ -1521,17 +1565,18 @@ struct gpio *dal_adapter_service_obtain_stereo_gpio( - - struct bp_gpio_cntl_info cntl_info; - struct gpio_pin_info pin_info; -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); - - /* Get GPIO record for this object. - * Stereo GPIO record should have exactly one entry - * where active state defines stereosync polarity */ -- if (1 != as->dcb->funcs->get_gpio_record( -- as->dcb, id, &cntl_info, -+ if (1 != dcb->funcs->get_gpio_record( -+ dcb, id, &cntl_info, - 1)) { - return NULL; - } else if (BP_RESULT_OK -- != as->dcb->funcs->get_gpio_pin_info( -- as->dcb, cntl_info.id, -+ != dcb->funcs->get_gpio_pin_info( -+ dcb, cntl_info.id, - &pin_info)) { - /*ASSERT_CRITICAL(false);*/ - return NULL; -@@ -1564,8 +1609,9 @@ bool dal_adapter_service_get_firmware_info( - struct adapter_service *as, - struct firmware_info *info) - { -- return as->dcb->funcs->get_firmware_info(as->dcb, info) == -- BP_RESULT_OK; -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); -+ -+ return dcb->funcs->get_firmware_info(dcb, info) == BP_RESULT_OK; - } - - /* -@@ -1664,7 +1710,7 @@ uint32_t dal_adapter_service_get_memory_type_multiplier( - struct dc_bios *dal_adapter_service_get_bios_parser( - struct adapter_service *as) - { -- return as->dcb; -+ return as->dcb_override ? as->dcb_override : as->dcb_internal; - } - - /* -@@ -1751,12 +1797,13 @@ bool dal_adapter_service_get_embedded_panel_info( - struct embedded_panel_info *info) - { - enum bp_result result; -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); - - if (info == NULL) - /*TODO: add DALASSERT_MSG here*/ - return false; - -- result = as->dcb->funcs->get_embedded_panel_info(as->dcb, info); -+ result = dcb->funcs->get_embedded_panel_info(dcb, info); - - return result == BP_RESULT_OK; - } -@@ -1767,13 +1814,13 @@ bool dal_adapter_service_enum_embedded_panel_patch_mode( - struct embedded_panel_patch_mode *mode) - { - enum bp_result result; -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); - - if (mode == NULL) - /*TODO: add DALASSERT_MSG here*/ - return false; - -- result = as->dcb->funcs->enum_embedded_panel_patch_mode( -- as->dcb, index, mode); -+ result = dcb->funcs->enum_embedded_panel_patch_mode(dcb, index, mode); - - return result == BP_RESULT_OK; - } -@@ -1783,8 +1830,9 @@ bool dal_adapter_service_get_faked_edid_len( - uint32_t *len) - { - enum bp_result result; -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); - -- result = as->dcb->funcs->get_faked_edid_len(as->dcb, len); -+ result = dcb->funcs->get_faked_edid_len(dcb, len); - - return result == BP_RESULT_OK; - } -@@ -1795,11 +1843,10 @@ bool dal_adapter_service_get_faked_edid_buf( - uint32_t len) - { - enum bp_result result; -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); -+ -+ result = dcb->funcs->get_faked_edid_buf(dcb, buf, len); - -- result = as->dcb->funcs->get_faked_edid_buf( -- as->dcb, -- buf, -- len); - return result == BP_RESULT_OK; - - } -@@ -1886,7 +1933,9 @@ bool dal_adapter_service_should_optimize( - */ - bool dal_adapter_service_is_in_accelerated_mode(struct adapter_service *as) - { -- return as->dcb->funcs->is_accelerated_mode(as->dcb); -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); -+ -+ return dcb->funcs->is_accelerated_mode(dcb); - } - - struct ddc *dal_adapter_service_obtain_ddc_from_i2c_info( -@@ -1927,6 +1976,7 @@ bool dal_adapter_service_is_lid_open(struct adapter_service *as) - { - bool is_lid_open = false; - struct platform_info_params params; -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); - - params.data = &is_lid_open; - params.method = PM_GET_LID_STATE; -@@ -1936,7 +1986,7 @@ bool dal_adapter_service_is_lid_open(struct adapter_service *as) - return is_lid_open; - - #if defined(CONFIG_DRM_AMD_DAL_VBIOS_PRESENT) -- return as->dcb->funcs->is_lid_open(as->dcb); -+ return dcb->funcs->is_lid_open(dcb); - #else - return false; - #endif -@@ -2009,6 +2059,7 @@ bool dal_adapter_service_get_encoder_cap_info( - { - struct bp_encoder_cap_info bp_cap_info = {0}; - enum bp_result result; -+ struct dc_bios *dcb = dal_adapter_service_get_bios_parser(as); - - if (NULL == info) { - ASSERT_CRITICAL(false); -@@ -2023,10 +2074,7 @@ bool dal_adapter_service_get_encoder_cap_info( - * - dpHbr2Cap: indicates supported/not supported by HW Encoder - * - dpHbr2En : indicates DP spec compliant/not compliant - */ -- result = as->dcb->funcs->get_encoder_cap_info( -- as->dcb, -- id, -- &bp_cap_info); -+ result = dcb->funcs->get_encoder_cap_info(dcb, id, &bp_cap_info); - - /* Set dp_hbr2_validated flag (it's equal to Enable) */ - info->dp_hbr2_validated = bp_cap_info.DP_HBR2_EN; -diff --git a/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.h b/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.h -index 5bb4446..60464e8 100644 ---- a/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.h -+++ b/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.h -@@ -42,7 +42,9 @@ struct asic_cap; - struct adapter_service { - struct dc_context *ctx; - struct asic_capability *asic_cap; -- struct dc_bios *dcb; -+ struct dc_bios *dcb_internal;/* created by DC */ -+ struct dc_bios *dcb_override;/* supplied by creator of DC */ -+ enum dce_environment dce_environment; - struct gpio_service *gpio_service; - struct i2caux *i2caux; - struct wireless_data wireless_data; -diff --git a/drivers/gpu/drm/amd/dal/dc/adapter/diagnostics/hw_ctx_adapter_service_diag.c b/drivers/gpu/drm/amd/dal/dc/adapter/diagnostics/hw_ctx_adapter_service_diag.c -new file mode 100644 -index 0000000..de45ce3 ---- /dev/null -+++ b/drivers/gpu/drm/amd/dal/dc/adapter/diagnostics/hw_ctx_adapter_service_diag.c -@@ -0,0 +1,133 @@ -+/* -+ * Copyright 2012-16 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 -+ * -+ */ -+ -+/* FPGA Diagnostics version of AS HW CTX. */ -+ -+#include "dal_services.h" -+ -+#include "../hw_ctx_adapter_service.h" -+ -+#include "hw_ctx_adapter_service_diag.h" -+ -+#include "include/logger_interface.h" -+#include "include/grph_object_id.h" -+ -+static const struct graphics_object_id invalid_go = { -+ 0, ENUM_ID_UNKNOWN, OBJECT_TYPE_UNKNOWN -+}; -+ -+static void destroy( -+ struct hw_ctx_adapter_service *hw_ctx) -+{ -+} -+ -+static bool power_up( -+ struct hw_ctx_adapter_service *hw_ctx) -+{ -+ return true; -+} -+ -+static struct graphics_object_id enum_fake_path_resource( -+ const struct hw_ctx_adapter_service *hw_ctx, -+ uint32_t index) -+{ -+ return invalid_go; -+} -+ -+static struct graphics_object_id enum_stereo_sync_object( -+ const struct hw_ctx_adapter_service *hw_ctx, -+ uint32_t index) -+{ -+ return invalid_go; -+} -+ -+static struct graphics_object_id enum_sync_output_object( -+ const struct hw_ctx_adapter_service *hw_ctx, -+ uint32_t index) -+{ -+ return invalid_go; -+} -+ -+static struct graphics_object_id enum_audio_object( -+ const struct hw_ctx_adapter_service *hw_ctx, -+ uint32_t index) -+{ -+ return invalid_go; -+} -+ -+static void update_audio_connectivity( -+ struct hw_ctx_adapter_service *hw_ctx, -+ uint32_t number_of_audio_capable_display_path, -+ uint32_t number_of_controllers) -+{ -+} -+ -+static const struct hw_ctx_adapter_service_funcs funcs = { -+ destroy, -+ power_up, -+ enum_fake_path_resource, -+ enum_stereo_sync_object, -+ enum_sync_output_object, -+ enum_audio_object, -+ update_audio_connectivity -+}; -+ -+static bool construct( -+ struct hw_ctx_adapter_service *hw_ctx, -+ struct dc_context *ctx) -+ -+{ -+ if (!dal_adapter_service_construct_hw_ctx(hw_ctx, ctx)) { -+ ASSERT_CRITICAL(false); -+ return false; -+ } -+ -+ hw_ctx->funcs = &funcs; -+ -+ return true; -+} -+ -+struct hw_ctx_adapter_service *dal_adapter_service_create_hw_ctx_diag( -+ struct dc_context *ctx) -+{ -+ struct hw_ctx_adapter_service *hw_ctx = dc_service_alloc(ctx, -+ sizeof(*hw_ctx)); -+ -+ if (!hw_ctx) { -+ ASSERT_CRITICAL(false); -+ return NULL; -+ } -+ -+ if (construct(hw_ctx, ctx)) -+ return hw_ctx; -+ -+ ASSERT_CRITICAL(false); -+ -+ dc_service_free(ctx, hw_ctx); -+ -+ return NULL; -+} -+ -+/*****************************************************************************/ -diff --git a/drivers/gpu/drm/amd/dal/dc/adapter/diagnostics/hw_ctx_adapter_service_diag.h b/drivers/gpu/drm/amd/dal/dc/adapter/diagnostics/hw_ctx_adapter_service_diag.h -new file mode 100644 -index 0000000..39ae752 ---- /dev/null -+++ b/drivers/gpu/drm/amd/dal/dc/adapter/diagnostics/hw_ctx_adapter_service_diag.h -@@ -0,0 +1,33 @@ -+/* -+ * Copyright 2012-16 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 __DAL_HW_CTX_ADAPTER_SERVICE_DIAG_H__ -+#define __DAL_HW_CTX_ADAPTER_SERVICE_DIAG_H__ -+ -+ -+struct hw_ctx_adapter_service *dal_adapter_service_create_hw_ctx_diag( -+ struct dc_context *ctx); -+ -+#endif /* __DAL_HW_CTX_ADAPTER_SERVICE_DIAG_H__ */ -diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc.c b/drivers/gpu/drm/amd/dal/dc/core/dc.c -index 4e87da5..14a1171 100644 ---- a/drivers/gpu/drm/amd/dal/dc/core/dc.c -+++ b/drivers/gpu/drm/amd/dal/dc/core/dc.c -@@ -228,6 +228,7 @@ static struct adapter_service *create_as( - - init_data.display_param = &init->display_param; - init_data.vbios_override = init->vbios_override; -+ init_data.dce_environment = init->dce_environment; - - as = dal_adapter_service_create(&init_data); - -@@ -334,6 +335,11 @@ static bool construct(struct dc *dc, const struct dal_init_data *init_params) - - dc->ctx = dc_init_data.ctx; - -+ dc->dce_version = dal_adapter_service_get_dce_version( -+ dc_init_data.adapter_srv); -+ dc->dce_environment = dal_adapter_service_get_dce_environment( -+ dc_init_data.adapter_srv); -+ - /* Create hardware sequencer */ - if (!dc_construct_hw_sequencer(dc_init_data.adapter_srv, dc)) - goto hwss_fail; -diff --git a/drivers/gpu/drm/amd/dal/dc/gpio/Makefile b/drivers/gpu/drm/amd/dal/dc/gpio/Makefile -index 7380910..50a1d34 100644 ---- a/drivers/gpu/drm/amd/dal/dc/gpio/Makefile -+++ b/drivers/gpu/drm/amd/dal/dc/gpio/Makefile -@@ -22,3 +22,11 @@ AMD_DAL_GPIO_DCE110 = $(addprefix $(AMDDALPATH)/dc/gpio/dce110/,$(GPIO_DCE110)) - AMD_DAL_FILES += $(AMD_DAL_GPIO_DCE110) - endif - -+############################################################################### -+# Diagnostics on FPGA -+############################################################################### -+GPIO_DIAG_FPGA = hw_translate_diag.o hw_factory_diag.o hw_hpd_diag.o hw_ddc_diag.o -+ -+AMD_DAL_GPIO_DIAG_FPGA = $(addprefix $(AMDDALPATH)/dc/gpio/diagnostics/,$(GPIO_DIAG_FPGA)) -+ -+AMD_DAL_FILES += $(AMD_DAL_GPIO_DIAG_FPGA) -diff --git a/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_ddc_diag.c b/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_ddc_diag.c -new file mode 100644 -index 0000000..f566241 ---- /dev/null -+++ b/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_ddc_diag.c -@@ -0,0 +1,98 @@ -+/* -+ * Copyright 2012-16 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 -+ * -+ */ -+ -+#include "dal_services.h" -+ -+/* -+ * Pre-requisites: headers required by header of this unit -+ */ -+ -+#include "include/gpio_types.h" -+#include "../hw_gpio_pin.h" -+#include "../hw_gpio.h" -+#include "../hw_ddc.h" -+ -+/* -+ * This unit -+ */ -+static void destruct( -+ struct hw_ddc *pin) -+{ -+ dal_hw_ddc_destruct(pin); -+} -+ -+static void destroy( -+ struct hw_gpio_pin **ptr) -+{ -+ struct hw_ddc *pin = HW_DDC_FROM_BASE(*ptr); -+ -+ destruct(pin); -+ -+ dc_service_free((*ptr)->ctx, pin); -+ -+ *ptr = NULL; -+} -+ -+static const struct hw_gpio_pin_funcs funcs = { -+ .destroy = destroy, -+ .open = NULL, -+ .get_value = NULL, -+ .set_value = NULL, -+ .set_config = NULL, -+ .change_mode = NULL, -+ .close = NULL, -+}; -+ -+static bool construct( -+ struct hw_ddc *pin, -+ enum gpio_id id, -+ uint32_t en, -+ struct dc_context *ctx) -+{ -+ pin->base.base.funcs = &funcs; -+ return true; -+} -+ -+struct hw_gpio_pin *dal_hw_ddc_diag_fpga_create( -+ struct dc_context *ctx, -+ enum gpio_id id, -+ uint32_t en) -+{ -+ struct hw_ddc *pin = dc_service_alloc(ctx, sizeof(struct hw_ddc)); -+ -+ if (!pin) { -+ ASSERT_CRITICAL(false); -+ return NULL; -+ } -+ -+ if (construct(pin, id, en, ctx)) -+ return &pin->base.base; -+ -+ ASSERT_CRITICAL(false); -+ -+ dc_service_free(ctx, pin); -+ -+ return NULL; -+} -diff --git a/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_ddc_diag.h b/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_ddc_diag.h -new file mode 100644 -index 0000000..7515aaf ---- /dev/null -+++ b/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_ddc_diag.h -@@ -0,0 +1,34 @@ -+/* -+ * Copyright 2012-16 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 __DAL_HW_DDC_DIAG_FPGA_H__ -+#define __DAL_HW_DDC_DIAG_FPGA_H__ -+ -+struct hw_gpio_pin *dal_hw_ddc_diag_fpga_create( -+ struct dc_context *ctx, -+ enum gpio_id id, -+ uint32_t en); -+ -+#endif -diff --git a/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_factory_diag.c b/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_factory_diag.c -new file mode 100644 -index 0000000..13b69e2 ---- /dev/null -+++ b/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_factory_diag.c -@@ -0,0 +1,70 @@ -+/* -+ * Copyright 2013-16 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 -+ * -+ */ -+ -+/* -+ * Pre-requisites: headers required by header of this unit -+ */ -+ -+#include "dal_services.h" -+#include "include/gpio_types.h" -+#include "../hw_factory.h" -+ -+/* -+ * Header of this unit -+ */ -+ -+#include "../hw_gpio_pin.h" -+#include "../hw_gpio.h" -+#include "../hw_ddc.h" -+#include "../hw_hpd.h" -+ -+/* function table */ -+static const struct hw_factory_funcs funcs = { -+ .create_dvo = NULL, -+ .create_ddc_data = NULL, -+ .create_ddc_clock = NULL, -+ .create_generic = NULL, -+ .create_hpd = NULL, -+ .create_gpio_pad = NULL, -+ .create_sync = NULL, -+ .create_gsl = NULL, -+}; -+ -+void dal_hw_factory_diag_fpga_init(struct hw_factory *factory) -+{ -+ factory->number_of_pins[GPIO_ID_DVO1] = 24; -+ factory->number_of_pins[GPIO_ID_DVO12] = 2; -+ factory->number_of_pins[GPIO_ID_DVO24] = 1; -+ factory->number_of_pins[GPIO_ID_DDC_DATA] = 8; -+ factory->number_of_pins[GPIO_ID_DDC_CLOCK] = 8; -+ factory->number_of_pins[GPIO_ID_GENERIC] = 7; -+ factory->number_of_pins[GPIO_ID_HPD] = 6; -+ factory->number_of_pins[GPIO_ID_GPIO_PAD] = 31; -+ factory->number_of_pins[GPIO_ID_VIP_PAD] = 0; -+ factory->number_of_pins[GPIO_ID_SYNC] = 2; -+ factory->number_of_pins[GPIO_ID_GSL] = 4; -+ -+ factory->funcs = &funcs; -+} -diff --git a/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_factory_diag.h b/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_factory_diag.h -new file mode 100644 -index 0000000..8a74f6a ---- /dev/null -+++ b/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_factory_diag.h -@@ -0,0 +1,32 @@ -+/* -+ * Copyright 2013-16 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 __DAL_HW_FACTORY_DIAG_FPGA_H__ -+#define __DAL_HW_FACTORY_DIAG_FPGA_H__ -+ -+/* Initialize HW factory function pointers and pin info */ -+void dal_hw_factory_diag_fpga_init(struct hw_factory *factory); -+ -+#endif /* __DAL_HW_FACTORY_DIAG_FPGA_H__ */ -diff --git a/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_hpd_diag.c b/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_hpd_diag.c -new file mode 100644 -index 0000000..baf5caf ---- /dev/null -+++ b/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_hpd_diag.c -@@ -0,0 +1,102 @@ -+/* -+ * Copyright 2012-16 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 -+ * -+ */ -+ -+#include "dal_services.h" -+ -+/* -+ * Pre-requisites: headers required by header of this unit -+ */ -+ -+#include "include/gpio_types.h" -+#include "../hw_gpio_pin.h" -+#include "../hw_gpio.h" -+#include "../hw_hpd.h" -+ -+ -+static void destruct( -+ struct hw_hpd *pin) -+{ -+ dal_hw_hpd_destruct(pin); -+} -+ -+static void destroy( -+ struct hw_gpio_pin **ptr) -+{ -+ struct hw_hpd *pin = HW_HPD_FROM_BASE(*ptr); -+ -+ destruct(pin); -+ -+ dc_service_free((*ptr)->ctx, pin); -+ -+ *ptr = NULL; -+} -+ -+static const struct hw_gpio_pin_funcs funcs = { -+ .destroy = destroy, -+ .open = NULL, -+ .get_value = NULL, -+ .set_value = NULL, -+ .set_config = NULL, -+ .change_mode = NULL, -+ .close = NULL, -+}; -+ -+static bool construct( -+ struct hw_hpd *pin, -+ enum gpio_id id, -+ uint32_t en, -+ struct dc_context *ctx) -+{ -+ if (!dal_hw_hpd_construct(pin, id, en, ctx)) { -+ ASSERT_CRITICAL(false); -+ return false; -+ } -+ -+ pin->base.base.funcs = &funcs; -+ -+ return true; -+} -+ -+struct hw_gpio_pin *dal_hw_hpd_diag_fpga_create( -+ struct dc_context *ctx, -+ enum gpio_id id, -+ uint32_t en) -+{ -+ struct hw_hpd *pin = dc_service_alloc(ctx, sizeof(struct hw_hpd)); -+ -+ if (!pin) { -+ ASSERT_CRITICAL(false); -+ return NULL; -+ } -+ -+ if (construct(pin, id, en, ctx)) -+ return &pin->base.base; -+ -+ ASSERT_CRITICAL(false); -+ -+ dc_service_free(ctx, pin); -+ -+ return NULL; -+} -diff --git a/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_hpd_diag.h b/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_hpd_diag.h -new file mode 100644 -index 0000000..bfa2c24 ---- /dev/null -+++ b/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_hpd_diag.h -@@ -0,0 +1,35 @@ -+/* -+ * Copyright 2012-16 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 __DAL_HW_HPD_DIAG_FPGA_H__ -+#define __DAL_HW_HPD_DIAG_FPGA_H__ -+ -+ -+struct hw_gpio_pin *dal_hw_hpd_diag_fpga_create( -+ struct dc_context *ctx, -+ enum gpio_id id, -+ uint32_t en); -+ -+#endif /*__DAL_HW_HPD_DIAG_FPGA_H__*/ -diff --git a/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_translate_diag.c b/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_translate_diag.c -new file mode 100644 -index 0000000..6d4da30 ---- /dev/null -+++ b/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_translate_diag.c -@@ -0,0 +1,42 @@ -+/* -+ * Copyright 2013-16 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 -+ * -+ */ -+ -+ -+#include "dal_services.h" -+#include "include/gpio_types.h" -+ -+#include "../hw_translate.h" -+ -+ -+/* function table */ -+static const struct hw_translate_funcs funcs = { -+ .offset_to_id = NULL, -+ .id_to_offset = NULL, -+}; -+ -+void dal_hw_translate_diag_fpga_init(struct hw_translate *tr) -+{ -+ tr->funcs = &funcs; -+} -diff --git a/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_translate_diag.h b/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_translate_diag.h -new file mode 100644 -index 0000000..4f05324 ---- /dev/null -+++ b/drivers/gpu/drm/amd/dal/dc/gpio/diagnostics/hw_translate_diag.h -@@ -0,0 +1,34 @@ -+/* -+ * Copyright 2013-16 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 __DAL_HW_TRANSLATE_DIAG_FPGA_H__ -+#define __DAL_HW_TRANSLATE_DIAG_FPGA_H__ -+ -+struct hw_translate; -+ -+/* Initialize Hw translate function pointers */ -+void dal_hw_translate_diag_fpga_init(struct hw_translate *tr); -+ -+#endif /* __DAL_HW_TRANSLATE_DIAG_FPGA_H__ */ -diff --git a/drivers/gpu/drm/amd/dal/dc/gpio/gpio_service.c b/drivers/gpu/drm/amd/dal/dc/gpio/gpio_service.c -index 660f80f..3a6b5f4 100644 ---- a/drivers/gpu/drm/amd/dal/dc/gpio/gpio_service.c -+++ b/drivers/gpu/drm/amd/dal/dc/gpio/gpio_service.c -@@ -63,7 +63,8 @@ - */ - - struct gpio_service *dal_gpio_service_create( -- enum dce_version dce_version, -+ enum dce_version dce_version_major, -+ enum dce_version dce_version_minor, - struct dc_context *ctx) - { - struct gpio_service *service; -@@ -77,12 +78,14 @@ struct gpio_service *dal_gpio_service_create( - return NULL; - } - -- if (!dal_hw_translate_init(&service->translate, dce_version)) { -+ if (!dal_hw_translate_init(&service->translate, dce_version_major, -+ dce_version_minor)) { - BREAK_TO_DEBUGGER(); - goto failure_1; - } - -- if (!dal_hw_factory_init(&service->factory, dce_version)) { -+ if (!dal_hw_factory_init(&service->factory, dce_version_major, -+ dce_version_minor)) { - BREAK_TO_DEBUGGER(); - goto failure_1; - } -diff --git a/drivers/gpu/drm/amd/dal/dc/gpio/hw_factory.c b/drivers/gpu/drm/amd/dal/dc/gpio/hw_factory.c -index d1b6b7e..a01024e 100644 ---- a/drivers/gpu/drm/amd/dal/dc/gpio/hw_factory.c -+++ b/drivers/gpu/drm/amd/dal/dc/gpio/hw_factory.c -@@ -44,14 +44,26 @@ - #if defined(CONFIG_DRM_AMD_DAL_DCE11_0) - #include "dce110/hw_factory_dce110.h" - #endif -+ -+#include "diagnostics/hw_factory_diag.h" -+ - /* - * This unit - */ - - bool dal_hw_factory_init( - struct hw_factory *factory, -- enum dce_version dce_version) -+ enum dce_version dce_version, -+ enum dce_environment dce_environment) - { -+ switch (dce_environment) { -+ case DCE_ENV_DIAG_FPGA_MAXIMUS: -+ dal_hw_factory_diag_fpga_init(factory); -+ return true; -+ default: -+ break; -+ } -+ - switch (dce_version) { - - #if defined(CONFIG_DRM_AMD_DAL_DCE11_0) -diff --git a/drivers/gpu/drm/amd/dal/dc/gpio/hw_factory.h b/drivers/gpu/drm/amd/dal/dc/gpio/hw_factory.h -index f16678c..7fef3fa 100644 ---- a/drivers/gpu/drm/amd/dal/dc/gpio/hw_factory.h -+++ b/drivers/gpu/drm/amd/dal/dc/gpio/hw_factory.h -@@ -69,6 +69,7 @@ struct hw_factory { - - bool dal_hw_factory_init( - struct hw_factory *factory, -- enum dce_version dce_version); -+ enum dce_version dce_version, -+ enum dce_environment dce_environment); - - #endif -diff --git a/drivers/gpu/drm/amd/dal/dc/gpio/hw_translate.c b/drivers/gpu/drm/amd/dal/dc/gpio/hw_translate.c -index 96e135f..d49e952 100644 ---- a/drivers/gpu/drm/amd/dal/dc/gpio/hw_translate.c -+++ b/drivers/gpu/drm/amd/dal/dc/gpio/hw_translate.c -@@ -45,14 +45,25 @@ - #include "dce110/hw_translate_dce110.h" - #endif - -+#include "diagnostics/hw_translate_diag.h" -+ - /* - * This unit - */ - - bool dal_hw_translate_init( - struct hw_translate *translate, -- enum dce_version dce_version) -+ enum dce_version dce_version, -+ enum dce_environment dce_environment) - { -+ switch (dce_environment) { -+ case DCE_ENV_DIAG_FPGA_MAXIMUS: -+ dal_hw_translate_diag_fpga_init(translate); -+ return true; -+ default: -+ break; -+ } -+ - switch (dce_version) { - - #if defined(CONFIG_DRM_AMD_DAL_DCE11_0) -diff --git a/drivers/gpu/drm/amd/dal/dc/gpio/hw_translate.h b/drivers/gpu/drm/amd/dal/dc/gpio/hw_translate.h -index d5740ac..3a7d89c 100644 ---- a/drivers/gpu/drm/amd/dal/dc/gpio/hw_translate.h -+++ b/drivers/gpu/drm/amd/dal/dc/gpio/hw_translate.h -@@ -44,6 +44,7 @@ struct hw_translate { - - bool dal_hw_translate_init( - struct hw_translate *translate, -- enum dce_version dce_version); -+ enum dce_version dce_version, -+ enum dce_environment dce_environment); - - #endif -diff --git a/drivers/gpu/drm/amd/dal/dc/i2caux/Makefile b/drivers/gpu/drm/amd/dal/dc/i2caux/Makefile -index 15902a8..390d83d 100644 ---- a/drivers/gpu/drm/amd/dal/dc/i2caux/Makefile -+++ b/drivers/gpu/drm/amd/dal/dc/i2caux/Makefile -@@ -21,3 +21,13 @@ AMD_DAL_I2CAUX_DCE110 = $(addprefix $(AMDDALPATH)/dc/i2caux/dce110/,$(I2CAUX_DCE - - AMD_DAL_FILES += $(AMD_DAL_I2CAUX_DCE110) - endif -+ -+############################################################################### -+# Diagnostics on FPGA -+############################################################################### -+I2CAUX_DIAG = i2caux_diag.o -+ -+AMD_DAL_I2CAUX_DIAG = $(addprefix $(AMDDALPATH)/dc/i2caux/diagnostics/,$(I2CAUX_DIAG)) -+ -+AMD_DAL_FILES += $(AMD_DAL_I2CAUX_DIAG) -+ -diff --git a/drivers/gpu/drm/amd/dal/dc/i2caux/diagnostics/i2caux_diag.c b/drivers/gpu/drm/amd/dal/dc/i2caux/diagnostics/i2caux_diag.c -new file mode 100644 -index 0000000..86b606d ---- /dev/null -+++ b/drivers/gpu/drm/amd/dal/dc/i2caux/diagnostics/i2caux_diag.c -@@ -0,0 +1,113 @@ -+/* -+ * Copyright 2012-16 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 -+ * -+ */ -+ -+#include "dal_services.h" -+ -+/* -+ * Pre-requisites: headers required by header of this unit -+ */ -+ -+#include "include/i2caux_interface.h" -+#include "../i2caux.h" -+#include "../engine.h" -+#include "../i2c_engine.h" -+#include "../i2c_sw_engine.h" -+#include "../i2c_hw_engine.h" -+ -+/* -+ * Header of this unit -+ */ -+#include "i2caux_diag.h" -+ -+/* -+ * Post-requisites: headers required by this unit -+ */ -+ -+/* -+ * This unit -+ */ -+ -+static void destruct( -+ struct i2caux *i2caux) -+{ -+ dal_i2caux_destruct(i2caux); -+} -+ -+static void destroy( -+ struct i2caux **i2c_engine) -+{ -+ destruct(*i2c_engine); -+ -+ dc_service_free((*i2c_engine)->ctx, *i2c_engine); -+ -+ *i2c_engine = NULL; -+} -+ -+ -+ -+/* function table */ -+static const struct i2caux_funcs i2caux_funcs = { -+ .destroy = destroy, -+ .acquire_i2c_hw_engine = NULL, -+ .release_engine = NULL, -+ .acquire_i2c_sw_engine = NULL, -+ .acquire_aux_engine = NULL, -+}; -+ -+static bool construct( -+ struct i2caux *i2caux, -+ struct adapter_service *as, -+ struct dc_context *ctx) -+{ -+ if (!dal_i2caux_construct(i2caux, as, ctx)) { -+ ASSERT_CRITICAL(false); -+ return false; -+ } -+ -+ i2caux->funcs = &i2caux_funcs; -+ -+ return true; -+} -+ -+struct i2caux *dal_i2caux_diag_fpga_create( -+ struct adapter_service *as, -+ struct dc_context *ctx) -+{ -+ struct i2caux *i2caux = dc_service_alloc(ctx, sizeof(struct i2caux)); -+ -+ if (!i2caux) { -+ ASSERT_CRITICAL(false); -+ return NULL; -+ } -+ -+ if (construct(i2caux, as, ctx)) -+ return i2caux; -+ -+ ASSERT_CRITICAL(false); -+ -+ dc_service_free(ctx, i2caux); -+ -+ return NULL; -+} -diff --git a/drivers/gpu/drm/amd/dal/dc/i2caux/diagnostics/i2caux_diag.h b/drivers/gpu/drm/amd/dal/dc/i2caux/diagnostics/i2caux_diag.h -new file mode 100644 -index 0000000..3de250b ---- /dev/null -+++ b/drivers/gpu/drm/amd/dal/dc/i2caux/diagnostics/i2caux_diag.h -@@ -0,0 +1,33 @@ -+/* -+ * Copyright 2012-16 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 __DAL_I2C_AUX_DIAG_FPGA_H__ -+#define __DAL_I2C_AUX_DIAG_FPGA_H__ -+ -+struct i2caux *dal_i2caux_diag_fpga_create( -+ struct adapter_service *as, -+ struct dc_context *ctx); -+ -+#endif /* __DAL_I2C_AUX_DIAG_FPGA_H__ */ -diff --git a/drivers/gpu/drm/amd/dal/dc/i2caux/i2caux.c b/drivers/gpu/drm/amd/dal/dc/i2caux/i2caux.c -index 50262a4..6de108c 100644 ---- a/drivers/gpu/drm/amd/dal/dc/i2caux/i2caux.c -+++ b/drivers/gpu/drm/amd/dal/dc/i2caux/i2caux.c -@@ -53,6 +53,8 @@ - #include "dce110/i2caux_dce110.h" - #endif - -+#include "diagnostics/i2caux_diag.h" -+ - /* - * @brief - * Plain API, available publicly -@@ -63,6 +65,7 @@ struct i2caux *dal_i2caux_create( - struct dc_context *ctx) - { - enum dce_version dce_version; -+ enum dce_environment dce_environment; - - if (!as) { - BREAK_TO_DEBUGGER(); -@@ -70,6 +73,14 @@ struct i2caux *dal_i2caux_create( - } - - dce_version = dal_adapter_service_get_dce_version(as); -+ dce_environment = dal_adapter_service_get_dce_environment(as); -+ -+ switch (dce_environment) { -+ case DCE_ENV_DIAG_FPGA_MAXIMUS: -+ return dal_i2caux_diag_fpga_create(as, ctx); -+ default: -+ break; -+ } - - switch (dce_version) { - #if defined(CONFIG_DRM_AMD_DAL_DCE11_0) -diff --git a/drivers/gpu/drm/amd/dal/dc/inc/core_dc.h b/drivers/gpu/drm/amd/dal/dc/inc/core_dc.h -index 9d62a24..be46f97 100644 ---- a/drivers/gpu/drm/amd/dal/dc/inc/core_dc.h -+++ b/drivers/gpu/drm/amd/dal/dc/inc/core_dc.h -@@ -34,6 +34,12 @@ struct dc { - - /* HW functions */ - struct hw_sequencer_funcs hwss; -+ -+ /* Diagnostics */ -+ enum dce_version dce_version; -+ enum dce_environment dce_environment; - }; - -+#define IS_DIAGNOSTICS_DC(dc) ((dc)->dce_environment == DCE_ENV_DIAG_FPGA_MAXIMUS) -+ - #endif /* __CORE_DC_H__ */ -diff --git a/drivers/gpu/drm/amd/dal/include/adapter_service_interface.h b/drivers/gpu/drm/amd/dal/include/adapter_service_interface.h -index 2851266..8ebbe65 100644 ---- a/drivers/gpu/drm/amd/dal/include/adapter_service_interface.h -+++ b/drivers/gpu/drm/amd/dal/include/adapter_service_interface.h -@@ -322,6 +322,7 @@ struct as_init_data { - struct bdf_info bdf_info; - const struct dal_override_parameters *display_param; - struct dc_bios *vbios_override; -+ enum dce_environment dce_environment; - }; - - /* Create adapter service */ -@@ -336,6 +337,9 @@ void dal_adapter_service_destroy( - enum dce_version dal_adapter_service_get_dce_version( - const struct adapter_service *as); - -+enum dce_environment dal_adapter_service_get_dce_environment( -+ const struct adapter_service *as); -+ - /* Get firmware information from BIOS */ - bool dal_adapter_service_get_firmware_info( - struct adapter_service *as, -diff --git a/drivers/gpu/drm/amd/dal/include/dal_types.h b/drivers/gpu/drm/amd/dal/include/dal_types.h -index caaacf6..f756d36 100644 ---- a/drivers/gpu/drm/amd/dal/include/dal_types.h -+++ b/drivers/gpu/drm/amd/dal/include/dal_types.h -@@ -40,6 +40,12 @@ enum dce_version { - DCE_VERSION_MAX - }; - -+enum dce_environment { -+ DCE_ENV_PRODUCTION_DRV = 0, -+ DCE_ENV_DIAG_FPGA_MAXIMUS, /* Emulation on FPGA, in Maximus System. */ -+ DCE_ENV_DIAG_SILICON, /* Emulation on real HW */ -+}; -+ - /* - * ASIC Runtime Flags - */ -@@ -141,6 +147,7 @@ struct dal_init_data { - /* If 'vbios_override' not NULL, it will be called instead - * of the real VBIOS. Intended use is Diagnostics on FPGA. */ - struct dc_bios *vbios_override; -+ enum dce_environment dce_environment; - }; - - struct dal_dc_init_data { -diff --git a/drivers/gpu/drm/amd/dal/include/gpio_service_interface.h b/drivers/gpu/drm/amd/dal/include/gpio_service_interface.h -index b22bb1b..b4f30dd 100644 ---- a/drivers/gpu/drm/amd/dal/include/gpio_service_interface.h -+++ b/drivers/gpu/drm/amd/dal/include/gpio_service_interface.h -@@ -35,7 +35,8 @@ - struct gpio_service; - - struct gpio_service *dal_gpio_service_create( -- enum dce_version dce_version, -+ enum dce_version dce_version_major, -+ enum dce_version dce_version_minor, - struct dc_context *ctx); - - struct gpio *dal_gpio_service_create_gpio( --- -2.7.4 - |