[PATCH] amdgpu/dc: separate out some common code from bios parsers.

Harry Wentland harry.wentland at amd.com
Thu Sep 28 14:35:06 UTC 2017


On 2017-09-27 09:24 PM, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
> 
> This extracts the bios parser object id handling into a common file.
> 
> Signed-off-by: Dave Airlie <airlied at redhat.com>

Reviewed-by: Harry Wentland <harry.wentland at amd.com>

Harry

> ---
>  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 2c41144..c742720 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 95fe50f..1dd7d0b 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
> 


More information about the amd-gfx mailing list