diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2411-amdgpu-dc-separate-out-some-common-code-from-bios-pa.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2411-amdgpu-dc-separate-out-some-common-code-from-bios-pa.patch | 984 |
1 files changed, 984 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2411-amdgpu-dc-separate-out-some-common-code-from-bios-pa.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2411-amdgpu-dc-separate-out-some-common-code-from-bios-pa.patch new file mode 100644 index 00000000..237cc54a --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2411-amdgpu-dc-separate-out-some-common-code-from-bios-pa.patch @@ -0,0 +1,984 @@ +From 6bd741d4de5a9bc9ac982fefa5fe5d5ff13780f1 Mon Sep 17 00:00:00 2001 +From: Dave Airlie <airlied@redhat.com> +Date: Thu, 28 Sep 2017 11:24:06 +1000 +Subject: [PATCH 2411/4131] amdgpu/dc: separate out some common code from bios + parsers. + +This extracts the bios parser object id handling into a common file. + +Signed-off-by: Dave Airlie <airlied@redhat.com> +Reviewed-by: Harry Wentland <harry.wentland@amd.com> +--- + drivers/gpu/drm/amd/display/dc/bios/Makefile | 2 +- + drivers/gpu/drm/amd/display/dc/bios/bios_parser.c | 274 +------------------- + drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c | 284 +------------------- + .../drm/amd/display/dc/bios/bios_parser_common.c | 288 +++++++++++++++++++++ + .../drm/amd/display/dc/bios/bios_parser_common.h | 33 +++ + 5 files changed, 324 insertions(+), 557 deletions(-) + create mode 100644 drivers/gpu/drm/amd/display/dc/bios/bios_parser_common.c + create mode 100644 drivers/gpu/drm/amd/display/dc/bios/bios_parser_common.h + +diff --git a/drivers/gpu/drm/amd/display/dc/bios/Makefile b/drivers/gpu/drm/amd/display/dc/bios/Makefile +index a26cc60..6ec815d 100644 +--- a/drivers/gpu/drm/amd/display/dc/bios/Makefile ++++ b/drivers/gpu/drm/amd/display/dc/bios/Makefile +@@ -2,7 +2,7 @@ + # Makefile for the 'bios' sub-component of DAL. + # It provides the parsing and executing controls for atom bios image. + +-BIOS = bios_parser.o bios_parser_interface.o bios_parser_helper.o command_table.o command_table_helper.o ++BIOS = bios_parser.o bios_parser_interface.o bios_parser_helper.o command_table.o command_table_helper.o bios_parser_common.o + + BIOS += command_table2.o command_table_helper2.o bios_parser2.o + +diff --git a/drivers/gpu/drm/amd/display/dc/bios/bios_parser.c b/drivers/gpu/drm/amd/display/dc/bios/bios_parser.c +index 47d673a1..f6828f4 100644 +--- a/drivers/gpu/drm/amd/display/dc/bios/bios_parser.c ++++ b/drivers/gpu/drm/amd/display/dc/bios/bios_parser.c +@@ -41,6 +41,7 @@ + #include "bios_parser_types_internal.h" + #include "bios_parser_interface.h" + ++#include "bios_parser_common.h" + /* TODO remove - only needed for default i2c speed */ + #include "dc.h" + +@@ -57,18 +58,6 @@ static const uint8_t ext_display_connection_guid[NUMBER_OF_UCHAR_FOR_GUID] = { + + #define DATA_TABLES(table) (bp->master_data_tbl->ListOfDataTables.table) + +-static enum object_type object_type_from_bios_object_id( +- uint32_t bios_object_id); +-static struct graphics_object_id object_id_from_bios_object_id( +- uint32_t bios_object_id); +-static enum object_enum_id enum_id_from_bios_object_id(uint32_t bios_object_id); +-static enum encoder_id encoder_id_from_bios_object_id(uint32_t bios_object_id); +-static enum connector_id connector_id_from_bios_object_id( +- uint32_t bios_object_id); +-static uint32_t id_from_bios_object_id(enum object_type type, +- uint32_t bios_object_id); +-static uint32_t gpu_id_from_bios_object_id(uint32_t bios_object_id); +-static enum generic_id generic_id_from_bios_object_id(uint32_t bios_object_id); + static void get_atom_data_table_revision( + ATOM_COMMON_TABLE_HEADER *atom_data_tbl, + struct atom_data_revision *tbl_revision); +@@ -2403,267 +2392,6 @@ static uint32_t get_dst_number_from_object(struct bios_parser *bp, + return *number; + } + +- +-static struct graphics_object_id object_id_from_bios_object_id( +- uint32_t bios_object_id) +-{ +- enum object_type type; +- enum object_enum_id enum_id; +- struct graphics_object_id go_id = { 0 }; +- +- type = object_type_from_bios_object_id(bios_object_id); +- +- if (OBJECT_TYPE_UNKNOWN == type) +- return go_id; +- +- enum_id = enum_id_from_bios_object_id(bios_object_id); +- +- if (ENUM_ID_UNKNOWN == enum_id) +- return go_id; +- +- go_id = dal_graphics_object_id_init( +- id_from_bios_object_id(type, bios_object_id), enum_id, type); +- +- return go_id; +-} +- +-static enum object_type object_type_from_bios_object_id(uint32_t bios_object_id) +-{ +- uint32_t bios_object_type = (bios_object_id & OBJECT_TYPE_MASK) +- >> OBJECT_TYPE_SHIFT; +- enum object_type object_type; +- +- switch (bios_object_type) { +- case GRAPH_OBJECT_TYPE_GPU: +- object_type = OBJECT_TYPE_GPU; +- break; +- case GRAPH_OBJECT_TYPE_ENCODER: +- object_type = OBJECT_TYPE_ENCODER; +- break; +- case GRAPH_OBJECT_TYPE_CONNECTOR: +- object_type = OBJECT_TYPE_CONNECTOR; +- break; +- case GRAPH_OBJECT_TYPE_ROUTER: +- object_type = OBJECT_TYPE_ROUTER; +- break; +- case GRAPH_OBJECT_TYPE_GENERIC: +- object_type = OBJECT_TYPE_GENERIC; +- break; +- default: +- object_type = OBJECT_TYPE_UNKNOWN; +- break; +- } +- +- return object_type; +-} +- +-static enum object_enum_id enum_id_from_bios_object_id(uint32_t bios_object_id) +-{ +- uint32_t bios_enum_id = +- (bios_object_id & ENUM_ID_MASK) >> ENUM_ID_SHIFT; +- enum object_enum_id id; +- +- switch (bios_enum_id) { +- case GRAPH_OBJECT_ENUM_ID1: +- id = ENUM_ID_1; +- break; +- case GRAPH_OBJECT_ENUM_ID2: +- id = ENUM_ID_2; +- break; +- case GRAPH_OBJECT_ENUM_ID3: +- id = ENUM_ID_3; +- break; +- case GRAPH_OBJECT_ENUM_ID4: +- id = ENUM_ID_4; +- break; +- case GRAPH_OBJECT_ENUM_ID5: +- id = ENUM_ID_5; +- break; +- case GRAPH_OBJECT_ENUM_ID6: +- id = ENUM_ID_6; +- break; +- case GRAPH_OBJECT_ENUM_ID7: +- id = ENUM_ID_7; +- break; +- default: +- id = ENUM_ID_UNKNOWN; +- break; +- } +- +- return id; +-} +- +-static uint32_t id_from_bios_object_id(enum object_type type, +- uint32_t bios_object_id) +-{ +- switch (type) { +- case OBJECT_TYPE_GPU: +- return gpu_id_from_bios_object_id(bios_object_id); +- case OBJECT_TYPE_ENCODER: +- return (uint32_t)encoder_id_from_bios_object_id(bios_object_id); +- case OBJECT_TYPE_CONNECTOR: +- return (uint32_t)connector_id_from_bios_object_id( +- bios_object_id); +- case OBJECT_TYPE_GENERIC: +- return generic_id_from_bios_object_id(bios_object_id); +- default: +- return 0; +- } +-} +- +-static enum connector_id connector_id_from_bios_object_id( +- uint32_t bios_object_id) +-{ +- uint32_t bios_connector_id = gpu_id_from_bios_object_id(bios_object_id); +- +- enum connector_id id; +- +- switch (bios_connector_id) { +- case CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I: +- id = CONNECTOR_ID_SINGLE_LINK_DVII; +- break; +- case CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I: +- id = CONNECTOR_ID_DUAL_LINK_DVII; +- break; +- case CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D: +- id = CONNECTOR_ID_SINGLE_LINK_DVID; +- break; +- case CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D: +- id = CONNECTOR_ID_DUAL_LINK_DVID; +- break; +- case CONNECTOR_OBJECT_ID_VGA: +- id = CONNECTOR_ID_VGA; +- break; +- case CONNECTOR_OBJECT_ID_HDMI_TYPE_A: +- id = CONNECTOR_ID_HDMI_TYPE_A; +- break; +- case CONNECTOR_OBJECT_ID_LVDS: +- id = CONNECTOR_ID_LVDS; +- break; +- case CONNECTOR_OBJECT_ID_PCIE_CONNECTOR: +- id = CONNECTOR_ID_PCIE; +- break; +- case CONNECTOR_OBJECT_ID_HARDCODE_DVI: +- id = CONNECTOR_ID_HARDCODE_DVI; +- break; +- case CONNECTOR_OBJECT_ID_DISPLAYPORT: +- id = CONNECTOR_ID_DISPLAY_PORT; +- break; +- case CONNECTOR_OBJECT_ID_eDP: +- id = CONNECTOR_ID_EDP; +- break; +- case CONNECTOR_OBJECT_ID_MXM: +- id = CONNECTOR_ID_MXM; +- break; +- default: +- id = CONNECTOR_ID_UNKNOWN; +- break; +- } +- +- return id; +-} +- +-static enum encoder_id encoder_id_from_bios_object_id(uint32_t bios_object_id) +-{ +- uint32_t bios_encoder_id = gpu_id_from_bios_object_id(bios_object_id); +- enum encoder_id id; +- +- switch (bios_encoder_id) { +- case ENCODER_OBJECT_ID_INTERNAL_LVDS: +- id = ENCODER_ID_INTERNAL_LVDS; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_TMDS1: +- id = ENCODER_ID_INTERNAL_TMDS1; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_TMDS2: +- id = ENCODER_ID_INTERNAL_TMDS2; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_DAC1: +- id = ENCODER_ID_INTERNAL_DAC1; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_DAC2: +- id = ENCODER_ID_INTERNAL_DAC2; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_LVTM1: +- id = ENCODER_ID_INTERNAL_LVTM1; +- break; +- case ENCODER_OBJECT_ID_HDMI_INTERNAL: +- id = ENCODER_ID_INTERNAL_HDMI; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1: +- id = ENCODER_ID_INTERNAL_KLDSCP_TMDS1; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1: +- id = ENCODER_ID_INTERNAL_KLDSCP_DAC1; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2: +- id = ENCODER_ID_INTERNAL_KLDSCP_DAC2; +- break; +- case ENCODER_OBJECT_ID_MVPU_FPGA: +- id = ENCODER_ID_EXTERNAL_MVPU_FPGA; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_DDI: +- id = ENCODER_ID_INTERNAL_DDI; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: +- id = ENCODER_ID_INTERNAL_UNIPHY; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: +- id = ENCODER_ID_INTERNAL_KLDSCP_LVTMA; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: +- id = ENCODER_ID_INTERNAL_UNIPHY1; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: +- id = ENCODER_ID_INTERNAL_UNIPHY2; +- break; +- case ENCODER_OBJECT_ID_ALMOND: /* ENCODER_OBJECT_ID_NUTMEG */ +- id = ENCODER_ID_EXTERNAL_NUTMEG; +- break; +- case ENCODER_OBJECT_ID_TRAVIS: +- id = ENCODER_ID_EXTERNAL_TRAVIS; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_UNIPHY3: +- id = ENCODER_ID_INTERNAL_UNIPHY3; +- break; +- default: +- id = ENCODER_ID_UNKNOWN; +- ASSERT(0); +- break; +- } +- +- return id; +-} +- +-uint32_t gpu_id_from_bios_object_id(uint32_t bios_object_id) +-{ +- return (bios_object_id & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT; +-} +- +-enum generic_id generic_id_from_bios_object_id(uint32_t bios_object_id) +-{ +- uint32_t bios_generic_id = gpu_id_from_bios_object_id(bios_object_id); +- +- enum generic_id id; +- +- switch (bios_generic_id) { +- case GENERIC_OBJECT_ID_MXM_OPM: +- id = GENERIC_ID_MXM_OPM; +- break; +- case GENERIC_OBJECT_ID_GLSYNC: +- id = GENERIC_ID_GLSYNC; +- break; +- case GENERIC_OBJECT_ID_STEREO_PIN: +- id = GENERIC_ID_STEREO; +- break; +- default: +- id = GENERIC_ID_UNKNOWN; +- break; +- } +- +- return id; +-} +- + static struct device_id device_type_from_device_id(uint16_t device_id) + { + +diff --git a/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c b/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c +index 3f8e605..852bb0d 100644 +--- a/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c ++++ b/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c +@@ -25,8 +25,6 @@ + + #include "dm_services.h" + +-#define _BIOS_PARSER_2_ +- + #include "ObjectID.h" + #include "atomfirmware.h" + +@@ -44,6 +42,7 @@ + #include "bios_parser_types_internal2.h" + #include "bios_parser_interface.h" + ++#include "bios_parser_common.h" + #define LAST_RECORD_TYPE 0xff + + +@@ -54,26 +53,6 @@ struct i2c_id_config_access { + uint8_t ucAccess; + }; + +-static enum object_type object_type_from_bios_object_id( +- uint32_t bios_object_id); +- +-static enum object_enum_id enum_id_from_bios_object_id(uint32_t bios_object_id); +- +-static struct graphics_object_id object_id_from_bios_object_id( +- uint32_t bios_object_id); +- +-static uint32_t id_from_bios_object_id(enum object_type type, +- uint32_t bios_object_id); +- +-static uint32_t gpu_id_from_bios_object_id(uint32_t bios_object_id); +- +-static enum encoder_id encoder_id_from_bios_object_id(uint32_t bios_object_id); +- +-static enum connector_id connector_id_from_bios_object_id( +- uint32_t bios_object_id); +- +-static enum generic_id generic_id_from_bios_object_id(uint32_t bios_object_id); +- + static enum bp_result get_gpio_i2c_info(struct bios_parser *bp, + struct atom_i2c_record *record, + struct graphics_object_i2c_info *info); +@@ -148,267 +127,6 @@ static void get_atom_data_table_revision( + (uint32_t) atom_data_tbl->content_revision & 0x3f; + } + +-static struct graphics_object_id object_id_from_bios_object_id( +- uint32_t bios_object_id) +-{ +- enum object_type type; +- enum object_enum_id enum_id; +- struct graphics_object_id go_id = { 0 }; +- +- type = object_type_from_bios_object_id(bios_object_id); +- +- if (type == OBJECT_TYPE_UNKNOWN) +- return go_id; +- +- enum_id = enum_id_from_bios_object_id(bios_object_id); +- +- if (enum_id == ENUM_ID_UNKNOWN) +- return go_id; +- +- go_id = dal_graphics_object_id_init( +- id_from_bios_object_id(type, bios_object_id), +- enum_id, type); +- +- return go_id; +-} +- +-static enum object_type object_type_from_bios_object_id(uint32_t bios_object_id) +-{ +- uint32_t bios_object_type = (bios_object_id & OBJECT_TYPE_MASK) +- >> OBJECT_TYPE_SHIFT; +- enum object_type object_type; +- +- switch (bios_object_type) { +- case GRAPH_OBJECT_TYPE_GPU: +- object_type = OBJECT_TYPE_GPU; +- break; +- case GRAPH_OBJECT_TYPE_ENCODER: +- object_type = OBJECT_TYPE_ENCODER; +- break; +- case GRAPH_OBJECT_TYPE_CONNECTOR: +- object_type = OBJECT_TYPE_CONNECTOR; +- break; +- case GRAPH_OBJECT_TYPE_ROUTER: +- object_type = OBJECT_TYPE_ROUTER; +- break; +- case GRAPH_OBJECT_TYPE_GENERIC: +- object_type = OBJECT_TYPE_GENERIC; +- break; +- default: +- object_type = OBJECT_TYPE_UNKNOWN; +- break; +- } +- +- return object_type; +-} +- +-static enum object_enum_id enum_id_from_bios_object_id(uint32_t bios_object_id) +-{ +- uint32_t bios_enum_id = +- (bios_object_id & ENUM_ID_MASK) >> ENUM_ID_SHIFT; +- enum object_enum_id id; +- +- switch (bios_enum_id) { +- case GRAPH_OBJECT_ENUM_ID1: +- id = ENUM_ID_1; +- break; +- case GRAPH_OBJECT_ENUM_ID2: +- id = ENUM_ID_2; +- break; +- case GRAPH_OBJECT_ENUM_ID3: +- id = ENUM_ID_3; +- break; +- case GRAPH_OBJECT_ENUM_ID4: +- id = ENUM_ID_4; +- break; +- case GRAPH_OBJECT_ENUM_ID5: +- id = ENUM_ID_5; +- break; +- case GRAPH_OBJECT_ENUM_ID6: +- id = ENUM_ID_6; +- break; +- case GRAPH_OBJECT_ENUM_ID7: +- id = ENUM_ID_7; +- break; +- default: +- id = ENUM_ID_UNKNOWN; +- break; +- } +- +- return id; +-} +- +-static uint32_t id_from_bios_object_id(enum object_type type, +- uint32_t bios_object_id) +-{ +- switch (type) { +- case OBJECT_TYPE_GPU: +- return gpu_id_from_bios_object_id(bios_object_id); +- case OBJECT_TYPE_ENCODER: +- return (uint32_t)encoder_id_from_bios_object_id(bios_object_id); +- case OBJECT_TYPE_CONNECTOR: +- return (uint32_t)connector_id_from_bios_object_id( +- bios_object_id); +- case OBJECT_TYPE_GENERIC: +- return generic_id_from_bios_object_id(bios_object_id); +- default: +- return 0; +- } +-} +- +-uint32_t gpu_id_from_bios_object_id(uint32_t bios_object_id) +-{ +- return (bios_object_id & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT; +-} +- +-static enum encoder_id encoder_id_from_bios_object_id(uint32_t bios_object_id) +-{ +- uint32_t bios_encoder_id = gpu_id_from_bios_object_id(bios_object_id); +- enum encoder_id id; +- +- switch (bios_encoder_id) { +- case ENCODER_OBJECT_ID_INTERNAL_LVDS: +- id = ENCODER_ID_INTERNAL_LVDS; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_TMDS1: +- id = ENCODER_ID_INTERNAL_TMDS1; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_TMDS2: +- id = ENCODER_ID_INTERNAL_TMDS2; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_DAC1: +- id = ENCODER_ID_INTERNAL_DAC1; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_DAC2: +- id = ENCODER_ID_INTERNAL_DAC2; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_LVTM1: +- id = ENCODER_ID_INTERNAL_LVTM1; +- break; +- case ENCODER_OBJECT_ID_HDMI_INTERNAL: +- id = ENCODER_ID_INTERNAL_HDMI; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1: +- id = ENCODER_ID_INTERNAL_KLDSCP_TMDS1; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1: +- id = ENCODER_ID_INTERNAL_KLDSCP_DAC1; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2: +- id = ENCODER_ID_INTERNAL_KLDSCP_DAC2; +- break; +- case ENCODER_OBJECT_ID_MVPU_FPGA: +- id = ENCODER_ID_EXTERNAL_MVPU_FPGA; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_DDI: +- id = ENCODER_ID_INTERNAL_DDI; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: +- id = ENCODER_ID_INTERNAL_UNIPHY; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: +- id = ENCODER_ID_INTERNAL_KLDSCP_LVTMA; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: +- id = ENCODER_ID_INTERNAL_UNIPHY1; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: +- id = ENCODER_ID_INTERNAL_UNIPHY2; +- break; +- case ENCODER_OBJECT_ID_ALMOND: /* ENCODER_OBJECT_ID_NUTMEG */ +- id = ENCODER_ID_EXTERNAL_NUTMEG; +- break; +- case ENCODER_OBJECT_ID_TRAVIS: +- id = ENCODER_ID_EXTERNAL_TRAVIS; +- break; +- case ENCODER_OBJECT_ID_INTERNAL_UNIPHY3: +- id = ENCODER_ID_INTERNAL_UNIPHY3; +- break; +- default: +- id = ENCODER_ID_UNKNOWN; +- ASSERT(0); +- break; +- } +- +- return id; +-} +- +-static enum connector_id connector_id_from_bios_object_id( +- uint32_t bios_object_id) +-{ +- uint32_t bios_connector_id = gpu_id_from_bios_object_id(bios_object_id); +- +- enum connector_id id; +- +- switch (bios_connector_id) { +- case CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I: +- id = CONNECTOR_ID_SINGLE_LINK_DVII; +- break; +- case CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I: +- id = CONNECTOR_ID_DUAL_LINK_DVII; +- break; +- case CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D: +- id = CONNECTOR_ID_SINGLE_LINK_DVID; +- break; +- case CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D: +- id = CONNECTOR_ID_DUAL_LINK_DVID; +- break; +- case CONNECTOR_OBJECT_ID_VGA: +- id = CONNECTOR_ID_VGA; +- break; +- case CONNECTOR_OBJECT_ID_HDMI_TYPE_A: +- id = CONNECTOR_ID_HDMI_TYPE_A; +- break; +- case CONNECTOR_OBJECT_ID_LVDS: +- id = CONNECTOR_ID_LVDS; +- break; +- case CONNECTOR_OBJECT_ID_PCIE_CONNECTOR: +- id = CONNECTOR_ID_PCIE; +- break; +- case CONNECTOR_OBJECT_ID_HARDCODE_DVI: +- id = CONNECTOR_ID_HARDCODE_DVI; +- break; +- case CONNECTOR_OBJECT_ID_DISPLAYPORT: +- id = CONNECTOR_ID_DISPLAY_PORT; +- break; +- case CONNECTOR_OBJECT_ID_eDP: +- id = CONNECTOR_ID_EDP; +- break; +- case CONNECTOR_OBJECT_ID_MXM: +- id = CONNECTOR_ID_MXM; +- break; +- default: +- id = CONNECTOR_ID_UNKNOWN; +- break; +- } +- +- return id; +-} +- +-enum generic_id generic_id_from_bios_object_id(uint32_t bios_object_id) +-{ +- uint32_t bios_generic_id = gpu_id_from_bios_object_id(bios_object_id); +- +- enum generic_id id; +- +- switch (bios_generic_id) { +- case GENERIC_OBJECT_ID_MXM_OPM: +- id = GENERIC_ID_MXM_OPM; +- break; +- case GENERIC_OBJECT_ID_GLSYNC: +- id = GENERIC_ID_GLSYNC; +- break; +- case GENERIC_OBJECT_ID_STEREO_PIN: +- id = GENERIC_ID_STEREO; +- break; +- default: +- id = GENERIC_ID_UNKNOWN; +- break; +- } +- +- return id; +-} +- + /* BIOS oject table displaypath is per connector. + * There is extra path not for connector. BIOS fill its encoderid as 0 + */ +diff --git a/drivers/gpu/drm/amd/display/dc/bios/bios_parser_common.c b/drivers/gpu/drm/amd/display/dc/bios/bios_parser_common.c +new file mode 100644 +index 0000000..a8cb039 +--- /dev/null ++++ b/drivers/gpu/drm/amd/display/dc/bios/bios_parser_common.c +@@ -0,0 +1,288 @@ ++/* ++ * Copyright 2012-15 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 "bios_parser_common.h" ++#include "include/grph_object_ctrl_defs.h" ++ ++static enum object_type object_type_from_bios_object_id(uint32_t bios_object_id) ++{ ++ uint32_t bios_object_type = (bios_object_id & OBJECT_TYPE_MASK) ++ >> OBJECT_TYPE_SHIFT; ++ enum object_type object_type; ++ ++ switch (bios_object_type) { ++ case GRAPH_OBJECT_TYPE_GPU: ++ object_type = OBJECT_TYPE_GPU; ++ break; ++ case GRAPH_OBJECT_TYPE_ENCODER: ++ object_type = OBJECT_TYPE_ENCODER; ++ break; ++ case GRAPH_OBJECT_TYPE_CONNECTOR: ++ object_type = OBJECT_TYPE_CONNECTOR; ++ break; ++ case GRAPH_OBJECT_TYPE_ROUTER: ++ object_type = OBJECT_TYPE_ROUTER; ++ break; ++ case GRAPH_OBJECT_TYPE_GENERIC: ++ object_type = OBJECT_TYPE_GENERIC; ++ break; ++ default: ++ object_type = OBJECT_TYPE_UNKNOWN; ++ break; ++ } ++ ++ return object_type; ++} ++ ++static enum object_enum_id enum_id_from_bios_object_id(uint32_t bios_object_id) ++{ ++ uint32_t bios_enum_id = ++ (bios_object_id & ENUM_ID_MASK) >> ENUM_ID_SHIFT; ++ enum object_enum_id id; ++ ++ switch (bios_enum_id) { ++ case GRAPH_OBJECT_ENUM_ID1: ++ id = ENUM_ID_1; ++ break; ++ case GRAPH_OBJECT_ENUM_ID2: ++ id = ENUM_ID_2; ++ break; ++ case GRAPH_OBJECT_ENUM_ID3: ++ id = ENUM_ID_3; ++ break; ++ case GRAPH_OBJECT_ENUM_ID4: ++ id = ENUM_ID_4; ++ break; ++ case GRAPH_OBJECT_ENUM_ID5: ++ id = ENUM_ID_5; ++ break; ++ case GRAPH_OBJECT_ENUM_ID6: ++ id = ENUM_ID_6; ++ break; ++ case GRAPH_OBJECT_ENUM_ID7: ++ id = ENUM_ID_7; ++ break; ++ default: ++ id = ENUM_ID_UNKNOWN; ++ break; ++ } ++ ++ return id; ++} ++ ++static uint32_t gpu_id_from_bios_object_id(uint32_t bios_object_id) ++{ ++ return (bios_object_id & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT; ++} ++ ++static enum encoder_id encoder_id_from_bios_object_id(uint32_t bios_object_id) ++{ ++ uint32_t bios_encoder_id = gpu_id_from_bios_object_id(bios_object_id); ++ enum encoder_id id; ++ ++ switch (bios_encoder_id) { ++ case ENCODER_OBJECT_ID_INTERNAL_LVDS: ++ id = ENCODER_ID_INTERNAL_LVDS; ++ break; ++ case ENCODER_OBJECT_ID_INTERNAL_TMDS1: ++ id = ENCODER_ID_INTERNAL_TMDS1; ++ break; ++ case ENCODER_OBJECT_ID_INTERNAL_TMDS2: ++ id = ENCODER_ID_INTERNAL_TMDS2; ++ break; ++ case ENCODER_OBJECT_ID_INTERNAL_DAC1: ++ id = ENCODER_ID_INTERNAL_DAC1; ++ break; ++ case ENCODER_OBJECT_ID_INTERNAL_DAC2: ++ id = ENCODER_ID_INTERNAL_DAC2; ++ break; ++ case ENCODER_OBJECT_ID_INTERNAL_LVTM1: ++ id = ENCODER_ID_INTERNAL_LVTM1; ++ break; ++ case ENCODER_OBJECT_ID_HDMI_INTERNAL: ++ id = ENCODER_ID_INTERNAL_HDMI; ++ break; ++ case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1: ++ id = ENCODER_ID_INTERNAL_KLDSCP_TMDS1; ++ break; ++ case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1: ++ id = ENCODER_ID_INTERNAL_KLDSCP_DAC1; ++ break; ++ case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2: ++ id = ENCODER_ID_INTERNAL_KLDSCP_DAC2; ++ break; ++ case ENCODER_OBJECT_ID_MVPU_FPGA: ++ id = ENCODER_ID_EXTERNAL_MVPU_FPGA; ++ break; ++ case ENCODER_OBJECT_ID_INTERNAL_DDI: ++ id = ENCODER_ID_INTERNAL_DDI; ++ break; ++ case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: ++ id = ENCODER_ID_INTERNAL_UNIPHY; ++ break; ++ case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: ++ id = ENCODER_ID_INTERNAL_KLDSCP_LVTMA; ++ break; ++ case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: ++ id = ENCODER_ID_INTERNAL_UNIPHY1; ++ break; ++ case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: ++ id = ENCODER_ID_INTERNAL_UNIPHY2; ++ break; ++ case ENCODER_OBJECT_ID_ALMOND: /* ENCODER_OBJECT_ID_NUTMEG */ ++ id = ENCODER_ID_EXTERNAL_NUTMEG; ++ break; ++ case ENCODER_OBJECT_ID_TRAVIS: ++ id = ENCODER_ID_EXTERNAL_TRAVIS; ++ break; ++ case ENCODER_OBJECT_ID_INTERNAL_UNIPHY3: ++ id = ENCODER_ID_INTERNAL_UNIPHY3; ++ break; ++ default: ++ id = ENCODER_ID_UNKNOWN; ++ ASSERT(0); ++ break; ++ } ++ ++ return id; ++} ++ ++static enum connector_id connector_id_from_bios_object_id( ++ uint32_t bios_object_id) ++{ ++ uint32_t bios_connector_id = gpu_id_from_bios_object_id(bios_object_id); ++ ++ enum connector_id id; ++ ++ switch (bios_connector_id) { ++ case CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I: ++ id = CONNECTOR_ID_SINGLE_LINK_DVII; ++ break; ++ case CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I: ++ id = CONNECTOR_ID_DUAL_LINK_DVII; ++ break; ++ case CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D: ++ id = CONNECTOR_ID_SINGLE_LINK_DVID; ++ break; ++ case CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D: ++ id = CONNECTOR_ID_DUAL_LINK_DVID; ++ break; ++ case CONNECTOR_OBJECT_ID_VGA: ++ id = CONNECTOR_ID_VGA; ++ break; ++ case CONNECTOR_OBJECT_ID_HDMI_TYPE_A: ++ id = CONNECTOR_ID_HDMI_TYPE_A; ++ break; ++ case CONNECTOR_OBJECT_ID_LVDS: ++ id = CONNECTOR_ID_LVDS; ++ break; ++ case CONNECTOR_OBJECT_ID_PCIE_CONNECTOR: ++ id = CONNECTOR_ID_PCIE; ++ break; ++ case CONNECTOR_OBJECT_ID_HARDCODE_DVI: ++ id = CONNECTOR_ID_HARDCODE_DVI; ++ break; ++ case CONNECTOR_OBJECT_ID_DISPLAYPORT: ++ id = CONNECTOR_ID_DISPLAY_PORT; ++ break; ++ case CONNECTOR_OBJECT_ID_eDP: ++ id = CONNECTOR_ID_EDP; ++ break; ++ case CONNECTOR_OBJECT_ID_MXM: ++ id = CONNECTOR_ID_MXM; ++ break; ++ default: ++ id = CONNECTOR_ID_UNKNOWN; ++ break; ++ } ++ ++ return id; ++} ++ ++static enum generic_id generic_id_from_bios_object_id(uint32_t bios_object_id) ++{ ++ uint32_t bios_generic_id = gpu_id_from_bios_object_id(bios_object_id); ++ ++ enum generic_id id; ++ ++ switch (bios_generic_id) { ++ case GENERIC_OBJECT_ID_MXM_OPM: ++ id = GENERIC_ID_MXM_OPM; ++ break; ++ case GENERIC_OBJECT_ID_GLSYNC: ++ id = GENERIC_ID_GLSYNC; ++ break; ++ case GENERIC_OBJECT_ID_STEREO_PIN: ++ id = GENERIC_ID_STEREO; ++ break; ++ default: ++ id = GENERIC_ID_UNKNOWN; ++ break; ++ } ++ ++ return id; ++} ++ ++static uint32_t id_from_bios_object_id(enum object_type type, ++ uint32_t bios_object_id) ++{ ++ switch (type) { ++ case OBJECT_TYPE_GPU: ++ return gpu_id_from_bios_object_id(bios_object_id); ++ case OBJECT_TYPE_ENCODER: ++ return (uint32_t)encoder_id_from_bios_object_id(bios_object_id); ++ case OBJECT_TYPE_CONNECTOR: ++ return (uint32_t)connector_id_from_bios_object_id( ++ bios_object_id); ++ case OBJECT_TYPE_GENERIC: ++ return generic_id_from_bios_object_id(bios_object_id); ++ default: ++ return 0; ++ } ++} ++ ++struct graphics_object_id object_id_from_bios_object_id(uint32_t bios_object_id) ++{ ++ enum object_type type; ++ enum object_enum_id enum_id; ++ struct graphics_object_id go_id = { 0 }; ++ ++ type = object_type_from_bios_object_id(bios_object_id); ++ ++ if (OBJECT_TYPE_UNKNOWN == type) ++ return go_id; ++ ++ enum_id = enum_id_from_bios_object_id(bios_object_id); ++ ++ if (ENUM_ID_UNKNOWN == enum_id) ++ return go_id; ++ ++ go_id = dal_graphics_object_id_init( ++ id_from_bios_object_id(type, bios_object_id), enum_id, type); ++ ++ return go_id; ++} ++ ++ +diff --git a/drivers/gpu/drm/amd/display/dc/bios/bios_parser_common.h b/drivers/gpu/drm/amd/display/dc/bios/bios_parser_common.h +new file mode 100644 +index 0000000..a076c61 +--- /dev/null ++++ b/drivers/gpu/drm/amd/display/dc/bios/bios_parser_common.h +@@ -0,0 +1,33 @@ ++/* ++ * Copyright 2012-15 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 __BIOS_PARSER_COMMON_H__ ++#define __BIOS_PARSER_COMMON_H__ ++ ++#include "dm_services.h" ++#include "ObjectID.h" ++ ++struct graphics_object_id object_id_from_bios_object_id(uint32_t bios_object_id); ++#endif +-- +2.7.4 + |