Commit 5a8132b9 authored by Dmytro Laktyushkin's avatar Dmytro Laktyushkin Committed by Alex Deucher
Browse files

drm/amd/display: remove dead dc vbios code

parent 61ea4c6f
Loading
Loading
Loading
Loading
+0 −1177

File changed.

Preview size limit exceeded, changes collapsed.

+39 −273
Original line number Diff line number Diff line
@@ -166,21 +166,6 @@ static uint8_t bios_parser_get_connectors_number(struct dc_bios *dcb)
	return count;
}

static struct graphics_object_id bios_parser_get_encoder_id(
	struct dc_bios *dcb,
	uint32_t i)
{
	struct bios_parser *bp = BP_FROM_DCB(dcb);
	struct graphics_object_id object_id = dal_graphics_object_id_init(
		0, ENUM_ID_UNKNOWN, OBJECT_TYPE_UNKNOWN);

	if (bp->object_info_tbl.v1_4->number_of_path > i)
		object_id = object_id_from_bios_object_id(
		bp->object_info_tbl.v1_4->display_path[i].encoderobjid);

	return object_id;
}

static struct graphics_object_id bios_parser_get_connector_id(
	struct dc_bios *dcb,
	uint8_t i)
@@ -204,26 +189,6 @@ static struct graphics_object_id bios_parser_get_connector_id(
	return object_id;
}


/*  TODO:  GetNumberOfSrc*/

static uint32_t bios_parser_get_dst_number(struct dc_bios *dcb,
	struct graphics_object_id id)
{
	/* connector has 1 Dest, encoder has 0 Dest */
	switch (id.type) {
	case OBJECT_TYPE_ENCODER:
		return 0;
	case OBJECT_TYPE_CONNECTOR:
		return 1;
	default:
		return 0;
	}
}

/*  removed getSrcObjList, getDestObjList*/


static enum bp_result bios_parser_get_src_obj(struct dc_bios *dcb,
	struct graphics_object_id object_id, uint32_t index,
	struct graphics_object_id *src_object_id)
@@ -283,48 +248,6 @@ static enum bp_result bios_parser_get_src_obj(struct dc_bios *dcb,
	return bp_result;
}

static enum bp_result bios_parser_get_dst_obj(struct dc_bios *dcb,
	struct graphics_object_id object_id, uint32_t index,
	struct graphics_object_id *dest_object_id)
{
	struct bios_parser *bp = BP_FROM_DCB(dcb);
	unsigned int i;
	enum bp_result  bp_result = BP_RESULT_BADINPUT;
	struct graphics_object_id obj_id = {0};
	struct object_info_table *tbl = &bp->object_info_tbl;

	if (!dest_object_id)
		return BP_RESULT_BADINPUT;

	switch (object_id.type) {
	case OBJECT_TYPE_ENCODER:
		/* TODO: since num of src must be less than 2.
		 * If found in for loop, should break.
		 * DAL2 implementation may be changed too
		 */
		for (i = 0; i < tbl->v1_4->number_of_path; i++) {
			obj_id = object_id_from_bios_object_id(
				tbl->v1_4->display_path[i].encoderobjid);
			if (object_id.type == obj_id.type &&
					object_id.id == obj_id.id &&
						object_id.enum_id ==
							obj_id.enum_id) {
				*dest_object_id =
					object_id_from_bios_object_id(
				tbl->v1_4->display_path[i].display_objid);
				/* break; */
			}
		}
		bp_result = BP_RESULT_OK;
		break;
	default:
		break;
	}

	return bp_result;
}


/* from graphics_object_id, find display path which includes the object_id */
static struct atom_display_object_path_v2 *get_bios_object(
		struct bios_parser *bp,
@@ -338,11 +261,9 @@ static struct atom_display_object_path_v2 *get_bios_object(
		for (i = 0; i < bp->object_info_tbl.v1_4->number_of_path; i++) {
			obj_id = object_id_from_bios_object_id(
					bp->object_info_tbl.v1_4->display_path[i].encoderobjid);
			if (id.type == obj_id.type &&
					id.id == obj_id.id &&
						id.enum_id == obj_id.enum_id)
				return
				&bp->object_info_tbl.v1_4->display_path[i];
			if (id.type == obj_id.type && id.id == obj_id.id
					&& id.enum_id == obj_id.enum_id)
				return &bp->object_info_tbl.v1_4->display_path[i];
		}
	case OBJECT_TYPE_CONNECTOR:
	case OBJECT_TYPE_GENERIC:
@@ -351,13 +272,10 @@ static struct atom_display_object_path_v2 *get_bios_object(
		 */
		for (i = 0; i < bp->object_info_tbl.v1_4->number_of_path; i++) {
			obj_id = object_id_from_bios_object_id(
			bp->object_info_tbl.v1_4->display_path[i].display_objid
			);
			if (id.type == obj_id.type &&
					id.id == obj_id.id &&
						id.enum_id == obj_id.enum_id)
				return
				&bp->object_info_tbl.v1_4->display_path[i];
					bp->object_info_tbl.v1_4->display_path[i].display_objid);
			if (id.type == obj_id.type && id.id == obj_id.id
					&& id.enum_id == obj_id.enum_id)
				return &bp->object_info_tbl.v1_4->display_path[i];
		}
	default:
		return NULL;
@@ -489,99 +407,6 @@ static enum bp_result get_gpio_i2c_info(
	return BP_RESULT_OK;
}

static enum bp_result get_voltage_ddc_info_v4(
	uint8_t *i2c_line,
	uint32_t index,
	struct atom_common_table_header *header,
	uint8_t *address)
{
	enum bp_result result = BP_RESULT_NORECORD;
	struct atom_voltage_objects_info_v4_1 *info =
		(struct atom_voltage_objects_info_v4_1 *) address;

	uint8_t *voltage_current_object =
		(uint8_t *) (&(info->voltage_object[0]));

	while ((address + le16_to_cpu(header->structuresize)) >
						voltage_current_object) {
		struct atom_i2c_voltage_object_v4 *object =
			(struct atom_i2c_voltage_object_v4 *)
						voltage_current_object;

		if (object->header.voltage_mode ==
			ATOM_INIT_VOLTAGE_REGULATOR) {
			if (object->header.voltage_type == index) {
				*i2c_line = object->i2c_id ^ 0x90;
				result = BP_RESULT_OK;
				break;
			}
		}

		voltage_current_object +=
				le16_to_cpu(object->header.object_size);
	}
	return result;
}

static enum bp_result bios_parser_get_thermal_ddc_info(
	struct dc_bios *dcb,
	uint32_t i2c_channel_id,
	struct graphics_object_i2c_info *info)
{
	struct bios_parser *bp = BP_FROM_DCB(dcb);
	struct i2c_id_config_access *config;
	struct atom_i2c_record record;

	if (!info)
		return BP_RESULT_BADINPUT;

	config = (struct i2c_id_config_access *) &i2c_channel_id;

	record.i2c_id = config->bfHW_Capable;
	record.i2c_id |= config->bfI2C_LineMux;
	record.i2c_id |= config->bfHW_EngineID;

	return get_gpio_i2c_info(bp, &record, info);
}

static enum bp_result bios_parser_get_voltage_ddc_info(struct dc_bios *dcb,
	uint32_t index,
	struct graphics_object_i2c_info *info)
{
	uint8_t i2c_line = 0;
	enum bp_result result = BP_RESULT_NORECORD;
	uint8_t *voltage_info_address;
	struct atom_common_table_header *header;
	struct atom_data_revision revision = {0};
	struct bios_parser *bp = BP_FROM_DCB(dcb);

	if (!DATA_TABLES(voltageobject_info))
		return result;

	voltage_info_address = bios_get_image(&bp->base,
			DATA_TABLES(voltageobject_info),
			sizeof(struct atom_common_table_header));

	header = (struct atom_common_table_header *) voltage_info_address;

	get_atom_data_table_revision(header, &revision);

	switch (revision.major) {
	case 4:
		if (revision.minor != 1)
			break;
		result = get_voltage_ddc_info_v4(&i2c_line, index, header,
			voltage_info_address);
		break;
	}

	if (result == BP_RESULT_OK)
		result = bios_parser_get_thermal_ddc_info(dcb,
			i2c_line, info);

	return result;
}

static enum bp_result bios_parser_get_hpd_info(
	struct dc_bios *dcb,
	struct graphics_object_id id,
@@ -1021,68 +846,55 @@ static enum bp_result get_embedded_panel_info_v2_1(
	memset(info, 0, sizeof(struct embedded_panel_info));

	/* We need to convert from 10KHz units into KHz units */
	info->lcd_timing.pixel_clk =
			le16_to_cpu(lvds->lcd_timing.pixclk) * 10;
	info->lcd_timing.pixel_clk = le16_to_cpu(lvds->lcd_timing.pixclk) * 10;
	/* usHActive does not include borders, according to VBIOS team */
	info->lcd_timing.horizontal_addressable =
			le16_to_cpu(lvds->lcd_timing.h_active);
	info->lcd_timing.horizontal_addressable = le16_to_cpu(lvds->lcd_timing.h_active);
	/* usHBlanking_Time includes borders, so we should really be
	 * subtractingborders duing this translation, but LVDS generally
	 * doesn't have borders, so we should be okay leaving this as is for
	 * now.  May need to revisit if we ever have LVDS with borders
	 */
	info->lcd_timing.horizontal_blanking_time =
		le16_to_cpu(lvds->lcd_timing.h_blanking_time);
	info->lcd_timing.horizontal_blanking_time = le16_to_cpu(lvds->lcd_timing.h_blanking_time);
	/* usVActive does not include borders, according to VBIOS team*/
	info->lcd_timing.vertical_addressable =
		le16_to_cpu(lvds->lcd_timing.v_active);
	info->lcd_timing.vertical_addressable = le16_to_cpu(lvds->lcd_timing.v_active);
	/* usVBlanking_Time includes borders, so we should really be
	 * subtracting borders duing this translation, but LVDS generally
	 * doesn't have borders, so we should be okay leaving this as is for
	 * now. May need to revisit if we ever have LVDS with borders
	 */
	info->lcd_timing.vertical_blanking_time =
		le16_to_cpu(lvds->lcd_timing.v_blanking_time);
	info->lcd_timing.horizontal_sync_offset =
		le16_to_cpu(lvds->lcd_timing.h_sync_offset);
	info->lcd_timing.horizontal_sync_width =
		le16_to_cpu(lvds->lcd_timing.h_sync_width);
	info->lcd_timing.vertical_sync_offset =
		le16_to_cpu(lvds->lcd_timing.v_sync_offset);
	info->lcd_timing.vertical_sync_width =
		le16_to_cpu(lvds->lcd_timing.v_syncwidth);
	info->lcd_timing.vertical_blanking_time = le16_to_cpu(lvds->lcd_timing.v_blanking_time);
	info->lcd_timing.horizontal_sync_offset = le16_to_cpu(lvds->lcd_timing.h_sync_offset);
	info->lcd_timing.horizontal_sync_width = le16_to_cpu(lvds->lcd_timing.h_sync_width);
	info->lcd_timing.vertical_sync_offset = le16_to_cpu(lvds->lcd_timing.v_sync_offset);
	info->lcd_timing.vertical_sync_width = le16_to_cpu(lvds->lcd_timing.v_syncwidth);
	info->lcd_timing.horizontal_border = lvds->lcd_timing.h_border;
	info->lcd_timing.vertical_border = lvds->lcd_timing.v_border;

	/* not provided by VBIOS */
	info->lcd_timing.misc_info.HORIZONTAL_CUT_OFF = 0;

	info->lcd_timing.misc_info.H_SYNC_POLARITY =
		~(uint32_t)
		(lvds->lcd_timing.miscinfo & ATOM_HSYNC_POLARITY);
	info->lcd_timing.misc_info.V_SYNC_POLARITY =
		~(uint32_t)
		(lvds->lcd_timing.miscinfo & ATOM_VSYNC_POLARITY);
	info->lcd_timing.misc_info.H_SYNC_POLARITY = ~(uint32_t) (lvds->lcd_timing.miscinfo
			& ATOM_HSYNC_POLARITY);
	info->lcd_timing.misc_info.V_SYNC_POLARITY = ~(uint32_t) (lvds->lcd_timing.miscinfo
			& ATOM_VSYNC_POLARITY);

	/* not provided by VBIOS */
	info->lcd_timing.misc_info.VERTICAL_CUT_OFF = 0;

	info->lcd_timing.misc_info.H_REPLICATION_BY2 =
		!!(lvds->lcd_timing.miscinfo & ATOM_H_REPLICATIONBY2);
	info->lcd_timing.misc_info.V_REPLICATION_BY2 =
		!!(lvds->lcd_timing.miscinfo & ATOM_V_REPLICATIONBY2);
	info->lcd_timing.misc_info.COMPOSITE_SYNC =
		!!(lvds->lcd_timing.miscinfo & ATOM_COMPOSITESYNC);
	info->lcd_timing.misc_info.INTERLACE =
		!!(lvds->lcd_timing.miscinfo & ATOM_INTERLACE);
	info->lcd_timing.misc_info.H_REPLICATION_BY2 = !!(lvds->lcd_timing.miscinfo
			& ATOM_H_REPLICATIONBY2);
	info->lcd_timing.misc_info.V_REPLICATION_BY2 = !!(lvds->lcd_timing.miscinfo
			& ATOM_V_REPLICATIONBY2);
	info->lcd_timing.misc_info.COMPOSITE_SYNC = !!(lvds->lcd_timing.miscinfo
			& ATOM_COMPOSITESYNC);
	info->lcd_timing.misc_info.INTERLACE = !!(lvds->lcd_timing.miscinfo & ATOM_INTERLACE);

	/* not provided by VBIOS*/
	info->lcd_timing.misc_info.DOUBLE_CLOCK = 0;
	/* not provided by VBIOS*/
	info->ss_id = 0;

	info->realtek_eDPToLVDS =
			!!(lvds->dplvdsrxid == eDP_TO_LVDS_REALTEK_ID);
	info->realtek_eDPToLVDS = !!(lvds->dplvdsrxid == eDP_TO_LVDS_REALTEK_ID);

	return BP_RESULT_OK;
}
@@ -1091,22 +903,21 @@ static enum bp_result bios_parser_get_embedded_panel_info(
		struct dc_bios *dcb,
		struct embedded_panel_info *info)
{
	struct bios_parser *bp = BP_FROM_DCB(dcb);
	struct bios_parser
	*bp = BP_FROM_DCB(dcb);
	struct atom_common_table_header *header;
	struct atom_data_revision tbl_revision;

	if (!DATA_TABLES(lcd_info))
		return BP_RESULT_FAILURE;

	header = GET_IMAGE(struct atom_common_table_header,
					DATA_TABLES(lcd_info));
	header = GET_IMAGE(struct atom_common_table_header, DATA_TABLES(lcd_info));

	if (!header)
		return BP_RESULT_BADBIOSTABLE;

	get_atom_data_table_revision(header, &tbl_revision);


	switch (tbl_revision.major) {
	case 2:
		switch (tbl_revision.minor) {
@@ -1174,12 +985,6 @@ static bool bios_parser_is_device_id_supported(
								mask) != 0;
}

static void bios_parser_post_init(
	struct dc_bios *dcb)
{
	/* TODO for OPM module. Need implement later */
}

static uint32_t bios_parser_get_ss_entry_number(
	struct dc_bios *dcb,
	enum as_signal_type signal)
@@ -1238,17 +1043,6 @@ static enum bp_result bios_parser_set_dce_clock(
	return bp->cmd_tbl.set_dce_clock(bp, bp_params);
}

static unsigned int bios_parser_get_smu_clock_info(
	struct dc_bios *dcb)
{
	struct bios_parser *bp = BP_FROM_DCB(dcb);

	if (!bp->cmd_tbl.get_smu_clock_info)
		return BP_RESULT_FAILURE;

	return bp->cmd_tbl.get_smu_clock_info(bp, 0);
}

static enum bp_result bios_parser_program_crtc_timing(
	struct dc_bios *dcb,
	struct bp_hw_crtc_timing_parameters *bp_params)
@@ -1306,13 +1100,6 @@ static bool bios_parser_is_accelerated_mode(
	return bios_is_accelerated_mode(dcb);
}

static uint32_t bios_parser_get_vga_enabled_displays(
	struct dc_bios *bios)
{
	return bios_get_vga_enabled_displays(bios);
}


/**
 * bios_parser_set_scratch_critical_state
 *
@@ -2071,22 +1858,12 @@ static enum bp_result bios_get_board_layout_info(
static const struct dc_vbios_funcs vbios_funcs = {
	.get_connectors_number = bios_parser_get_connectors_number,

	.get_encoder_id = bios_parser_get_encoder_id,

	.get_connector_id = bios_parser_get_connector_id,

	.get_dst_number = bios_parser_get_dst_number,

	.get_src_obj = bios_parser_get_src_obj,

	.get_dst_obj = bios_parser_get_dst_obj,

	.get_i2c_info = bios_parser_get_i2c_info,

	.get_voltage_ddc_info = bios_parser_get_voltage_ddc_info,

	.get_thermal_ddc_info = bios_parser_get_thermal_ddc_info,

	.get_hpd_info = bios_parser_get_hpd_info,

	.get_device_tag = bios_parser_get_device_tag,
@@ -2105,10 +1882,7 @@ static const struct dc_vbios_funcs vbios_funcs = {

	.is_device_id_supported = bios_parser_is_device_id_supported,



	.is_accelerated_mode = bios_parser_is_accelerated_mode,
	.get_vga_enabled_displays = bios_parser_get_vga_enabled_displays,

	.set_scratch_critical_state = bios_parser_set_scratch_critical_state,

@@ -2126,20 +1900,12 @@ static const struct dc_vbios_funcs vbios_funcs = {

	.program_crtc_timing = bios_parser_program_crtc_timing,

	/* .blank_crtc = bios_parser_blank_crtc, */

	.crtc_source_select = bios_parser_crtc_source_select,

	/* .external_encoder_control = bios_parser_external_encoder_control, */

	.enable_disp_power_gating = bios_parser_enable_disp_power_gating,

	.post_init = bios_parser_post_init,

	.bios_parser_destroy = firmware_parser_destroy,

	.get_smu_clock_info = bios_parser_get_smu_clock_info,

	.get_board_layout_info = bios_get_board_layout_info,
};

+0 −64
Original line number Diff line number Diff line
@@ -41,38 +41,17 @@
struct dc_vbios_funcs {
	uint8_t (*get_connectors_number)(struct dc_bios *bios);

	struct graphics_object_id (*get_encoder_id)(
		struct dc_bios *bios,
		uint32_t i);
	struct graphics_object_id (*get_connector_id)(
		struct dc_bios *bios,
		uint8_t connector_index);
	uint32_t (*get_dst_number)(
		struct dc_bios *bios,
		struct graphics_object_id id);

	enum bp_result (*get_src_obj)(
		struct dc_bios *bios,
		struct graphics_object_id object_id, uint32_t index,
		struct graphics_object_id *src_object_id);
	enum bp_result (*get_dst_obj)(
		struct dc_bios *bios,
		struct graphics_object_id object_id, uint32_t index,
		struct graphics_object_id *dest_object_id);

	enum bp_result (*get_i2c_info)(
		struct dc_bios *dcb,
		struct graphics_object_id id,
		struct graphics_object_i2c_info *info);

	enum bp_result (*get_voltage_ddc_info)(
		struct dc_bios *bios,
		uint32_t index,
		struct graphics_object_i2c_info *info);
	enum bp_result (*get_thermal_ddc_info)(
		struct dc_bios *bios,
		uint32_t i2c_channel_id,
		struct graphics_object_i2c_info *info);
	enum bp_result (*get_hpd_info)(
		struct dc_bios *bios,
		struct graphics_object_id id,
@@ -105,35 +84,8 @@ struct dc_vbios_funcs {
		struct graphics_object_id object_id,
		struct bp_encoder_cap_info *info);

	bool (*is_lid_status_changed)(
		struct dc_bios *bios);
	bool (*is_display_config_changed)(
		struct dc_bios *bios);
	bool (*is_accelerated_mode)(
		struct dc_bios *bios);
	uint32_t (*get_vga_enabled_displays)(
		struct dc_bios *bios);
	void (*get_bios_event_info)(
		struct dc_bios *bios,
		struct bios_event_info *info);
	void (*update_requested_backlight_level)(
		struct dc_bios *bios,
		uint32_t backlight_8bit);
	uint32_t (*get_requested_backlight_level)(
		struct dc_bios *bios);
	void (*take_backlight_control)(
		struct dc_bios *bios,
		bool cntl);

	bool (*is_active_display)(
		struct dc_bios *bios,
		enum signal_type signal,
		const struct connector_device_tag_info *device_tag);
	enum controller_id (*get_embedded_display_controller_id)(
		struct dc_bios *bios);
	uint32_t (*get_embedded_display_refresh_rate)(
		struct dc_bios *bios);

	void (*set_scratch_critical_state)(
		struct dc_bios *bios,
		bool state);
@@ -149,11 +101,6 @@ struct dc_vbios_funcs {
	enum bp_result (*transmitter_control)(
		struct dc_bios *bios,
		struct bp_transmitter_control *cntl);
	enum bp_result (*crt_control)(
		struct dc_bios *bios,
		enum engine_id engine_id,
		bool enable,
		uint32_t pixel_clock);
	enum bp_result (*enable_crtc)(
		struct dc_bios *bios,
		enum controller_id id,
@@ -167,8 +114,6 @@ struct dc_vbios_funcs {
	enum bp_result (*set_dce_clock)(
		struct dc_bios *bios,
		struct bp_set_dce_clock_parameters *bp_params);
	unsigned int (*get_smu_clock_info)(
		struct dc_bios *bios);
	enum bp_result (*enable_spread_spectrum_on_ppll)(
		struct dc_bios *bios,
		struct bp_spread_spectrum_parameters *bp_params,
@@ -183,20 +128,11 @@ struct dc_vbios_funcs {
	enum bp_result (*program_display_engine_pll)(
		struct dc_bios *bios,
		struct bp_pixel_clock_parameters *bp_params);

	enum signal_type (*dac_load_detect)(
		struct dc_bios *bios,
		struct graphics_object_id encoder,
		struct graphics_object_id connector,
		enum signal_type display_signal);

	enum bp_result (*enable_disp_power_gating)(
		struct dc_bios *bios,
		enum controller_id controller_id,
		enum bp_pipe_control_action action);

	void (*post_init)(struct dc_bios *bios);

	void (*bios_parser_destroy)(struct dc_bios **dcb);

	enum bp_result (*get_board_layout_info)(