Commit e09b6473 authored by Anthony Koo's avatar Anthony Koo Committed by Alex Deucher

drm/amd/display: Rename encoder_info_packet to dc_info_packet

Move this out of the HW includes to dc_types.h
Signed-off-by: default avatarHarry Wentland <harry.wentland@amd.com>
Reviewed-by: default avatarHarry Wentland <Harry.Wentland@amd.com>
Reviewed-by: default avatarTony Cheng <Tony.Cheng@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent f412e830
...@@ -1811,7 +1811,7 @@ enum dc_status dc_validate_global_state( ...@@ -1811,7 +1811,7 @@ enum dc_status dc_validate_global_state(
} }
static void patch_gamut_packet_checksum( static void patch_gamut_packet_checksum(
struct encoder_info_packet *gamut_packet) struct dc_info_packet *gamut_packet)
{ {
/* For gamut we recalc checksum */ /* For gamut we recalc checksum */
if (gamut_packet->valid) { if (gamut_packet->valid) {
...@@ -1830,12 +1830,11 @@ static void patch_gamut_packet_checksum( ...@@ -1830,12 +1830,11 @@ static void patch_gamut_packet_checksum(
} }
static void set_avi_info_frame( static void set_avi_info_frame(
struct encoder_info_packet *info_packet, struct dc_info_packet *info_packet,
struct pipe_ctx *pipe_ctx) struct pipe_ctx *pipe_ctx)
{ {
struct dc_stream_state *stream = pipe_ctx->stream; struct dc_stream_state *stream = pipe_ctx->stream;
enum dc_color_space color_space = COLOR_SPACE_UNKNOWN; enum dc_color_space color_space = COLOR_SPACE_UNKNOWN;
struct info_frame info_frame = { {0} };
uint32_t pixel_encoding = 0; uint32_t pixel_encoding = 0;
enum scanning_type scan_type = SCANNING_TYPE_NODATA; enum scanning_type scan_type = SCANNING_TYPE_NODATA;
enum dc_aspect_ratio aspect = ASPECT_RATIO_NO_DATA; enum dc_aspect_ratio aspect = ASPECT_RATIO_NO_DATA;
...@@ -1845,7 +1844,7 @@ static void set_avi_info_frame( ...@@ -1845,7 +1844,7 @@ static void set_avi_info_frame(
unsigned int cn0_cn1_value = 0; unsigned int cn0_cn1_value = 0;
uint8_t *check_sum = NULL; uint8_t *check_sum = NULL;
uint8_t byte_index = 0; uint8_t byte_index = 0;
union hdmi_info_packet *hdmi_info = &info_frame.avi_info_packet.info_packet_hdmi; union hdmi_info_packet hdmi_info = {0};
union display_content_support support = {0}; union display_content_support support = {0};
unsigned int vic = pipe_ctx->stream->timing.vic; unsigned int vic = pipe_ctx->stream->timing.vic;
enum dc_timing_3d_format format; enum dc_timing_3d_format format;
...@@ -1856,11 +1855,11 @@ static void set_avi_info_frame( ...@@ -1856,11 +1855,11 @@ static void set_avi_info_frame(
COLOR_SPACE_SRGB:COLOR_SPACE_YCBCR709; COLOR_SPACE_SRGB:COLOR_SPACE_YCBCR709;
/* Initialize header */ /* Initialize header */
hdmi_info->bits.header.info_frame_type = HDMI_INFOFRAME_TYPE_AVI; hdmi_info.bits.header.info_frame_type = HDMI_INFOFRAME_TYPE_AVI;
/* InfoFrameVersion_3 is defined by CEA861F (Section 6.4), but shall /* InfoFrameVersion_3 is defined by CEA861F (Section 6.4), but shall
* not be used in HDMI 2.0 (Section 10.1) */ * not be used in HDMI 2.0 (Section 10.1) */
hdmi_info->bits.header.version = 2; hdmi_info.bits.header.version = 2;
hdmi_info->bits.header.length = HDMI_AVI_INFOFRAME_SIZE; hdmi_info.bits.header.length = HDMI_AVI_INFOFRAME_SIZE;
/* /*
* IDO-defined (Y2,Y1,Y0 = 1,1,1) shall not be used by devices built * IDO-defined (Y2,Y1,Y0 = 1,1,1) shall not be used by devices built
...@@ -1886,39 +1885,39 @@ static void set_avi_info_frame( ...@@ -1886,39 +1885,39 @@ static void set_avi_info_frame(
/* Y0_Y1_Y2 : The pixel encoding */ /* Y0_Y1_Y2 : The pixel encoding */
/* H14b AVI InfoFrame has extension on Y-field from 2 bits to 3 bits */ /* H14b AVI InfoFrame has extension on Y-field from 2 bits to 3 bits */
hdmi_info->bits.Y0_Y1_Y2 = pixel_encoding; hdmi_info.bits.Y0_Y1_Y2 = pixel_encoding;
/* A0 = 1 Active Format Information valid */ /* A0 = 1 Active Format Information valid */
hdmi_info->bits.A0 = ACTIVE_FORMAT_VALID; hdmi_info.bits.A0 = ACTIVE_FORMAT_VALID;
/* B0, B1 = 3; Bar info data is valid */ /* B0, B1 = 3; Bar info data is valid */
hdmi_info->bits.B0_B1 = BAR_INFO_BOTH_VALID; hdmi_info.bits.B0_B1 = BAR_INFO_BOTH_VALID;
hdmi_info->bits.SC0_SC1 = PICTURE_SCALING_UNIFORM; hdmi_info.bits.SC0_SC1 = PICTURE_SCALING_UNIFORM;
/* S0, S1 : Underscan / Overscan */ /* S0, S1 : Underscan / Overscan */
/* TODO: un-hardcode scan type */ /* TODO: un-hardcode scan type */
scan_type = SCANNING_TYPE_UNDERSCAN; scan_type = SCANNING_TYPE_UNDERSCAN;
hdmi_info->bits.S0_S1 = scan_type; hdmi_info.bits.S0_S1 = scan_type;
/* C0, C1 : Colorimetry */ /* C0, C1 : Colorimetry */
if (color_space == COLOR_SPACE_YCBCR709 || if (color_space == COLOR_SPACE_YCBCR709 ||
color_space == COLOR_SPACE_YCBCR709_LIMITED) color_space == COLOR_SPACE_YCBCR709_LIMITED)
hdmi_info->bits.C0_C1 = COLORIMETRY_ITU709; hdmi_info.bits.C0_C1 = COLORIMETRY_ITU709;
else if (color_space == COLOR_SPACE_YCBCR601 || else if (color_space == COLOR_SPACE_YCBCR601 ||
color_space == COLOR_SPACE_YCBCR601_LIMITED) color_space == COLOR_SPACE_YCBCR601_LIMITED)
hdmi_info->bits.C0_C1 = COLORIMETRY_ITU601; hdmi_info.bits.C0_C1 = COLORIMETRY_ITU601;
else { else {
hdmi_info->bits.C0_C1 = COLORIMETRY_NO_DATA; hdmi_info.bits.C0_C1 = COLORIMETRY_NO_DATA;
} }
if (color_space == COLOR_SPACE_2020_RGB_FULLRANGE || if (color_space == COLOR_SPACE_2020_RGB_FULLRANGE ||
color_space == COLOR_SPACE_2020_RGB_LIMITEDRANGE || color_space == COLOR_SPACE_2020_RGB_LIMITEDRANGE ||
color_space == COLOR_SPACE_2020_YCBCR) { color_space == COLOR_SPACE_2020_YCBCR) {
hdmi_info->bits.EC0_EC2 = COLORIMETRYEX_BT2020RGBYCBCR; hdmi_info.bits.EC0_EC2 = COLORIMETRYEX_BT2020RGBYCBCR;
hdmi_info->bits.C0_C1 = COLORIMETRY_EXTENDED; hdmi_info.bits.C0_C1 = COLORIMETRY_EXTENDED;
} else if (color_space == COLOR_SPACE_ADOBERGB) { } else if (color_space == COLOR_SPACE_ADOBERGB) {
hdmi_info->bits.EC0_EC2 = COLORIMETRYEX_ADOBERGB; hdmi_info.bits.EC0_EC2 = COLORIMETRYEX_ADOBERGB;
hdmi_info->bits.C0_C1 = COLORIMETRY_EXTENDED; hdmi_info.bits.C0_C1 = COLORIMETRY_EXTENDED;
} }
/* TODO: un-hardcode aspect ratio */ /* TODO: un-hardcode aspect ratio */
...@@ -1927,18 +1926,18 @@ static void set_avi_info_frame( ...@@ -1927,18 +1926,18 @@ static void set_avi_info_frame(
switch (aspect) { switch (aspect) {
case ASPECT_RATIO_4_3: case ASPECT_RATIO_4_3:
case ASPECT_RATIO_16_9: case ASPECT_RATIO_16_9:
hdmi_info->bits.M0_M1 = aspect; hdmi_info.bits.M0_M1 = aspect;
break; break;
case ASPECT_RATIO_NO_DATA: case ASPECT_RATIO_NO_DATA:
case ASPECT_RATIO_64_27: case ASPECT_RATIO_64_27:
case ASPECT_RATIO_256_135: case ASPECT_RATIO_256_135:
default: default:
hdmi_info->bits.M0_M1 = 0; hdmi_info.bits.M0_M1 = 0;
} }
/* Active Format Aspect ratio - same as Picture Aspect Ratio. */ /* Active Format Aspect ratio - same as Picture Aspect Ratio. */
hdmi_info->bits.R0_R3 = ACTIVE_FORMAT_ASPECT_RATIO_SAME_AS_PICTURE; hdmi_info.bits.R0_R3 = ACTIVE_FORMAT_ASPECT_RATIO_SAME_AS_PICTURE;
/* TODO: un-hardcode cn0_cn1 and itc */ /* TODO: un-hardcode cn0_cn1 and itc */
...@@ -1981,8 +1980,8 @@ static void set_avi_info_frame( ...@@ -1981,8 +1980,8 @@ static void set_avi_info_frame(
} }
} }
} }
hdmi_info->bits.CN0_CN1 = cn0_cn1_value; hdmi_info.bits.CN0_CN1 = cn0_cn1_value;
hdmi_info->bits.ITC = itc_value; hdmi_info.bits.ITC = itc_value;
} }
/* TODO : We should handle YCC quantization */ /* TODO : We should handle YCC quantization */
...@@ -1991,19 +1990,19 @@ static void set_avi_info_frame( ...@@ -1991,19 +1990,19 @@ static void set_avi_info_frame(
stream->sink->edid_caps.qy_bit == 1) { stream->sink->edid_caps.qy_bit == 1) {
if (color_space == COLOR_SPACE_SRGB || if (color_space == COLOR_SPACE_SRGB ||
color_space == COLOR_SPACE_2020_RGB_FULLRANGE) { color_space == COLOR_SPACE_2020_RGB_FULLRANGE) {
hdmi_info->bits.Q0_Q1 = RGB_QUANTIZATION_FULL_RANGE; hdmi_info.bits.Q0_Q1 = RGB_QUANTIZATION_FULL_RANGE;
hdmi_info->bits.YQ0_YQ1 = YYC_QUANTIZATION_FULL_RANGE; hdmi_info.bits.YQ0_YQ1 = YYC_QUANTIZATION_FULL_RANGE;
} else if (color_space == COLOR_SPACE_SRGB_LIMITED || } else if (color_space == COLOR_SPACE_SRGB_LIMITED ||
color_space == COLOR_SPACE_2020_RGB_LIMITEDRANGE) { color_space == COLOR_SPACE_2020_RGB_LIMITEDRANGE) {
hdmi_info->bits.Q0_Q1 = RGB_QUANTIZATION_LIMITED_RANGE; hdmi_info.bits.Q0_Q1 = RGB_QUANTIZATION_LIMITED_RANGE;
hdmi_info->bits.YQ0_YQ1 = YYC_QUANTIZATION_LIMITED_RANGE; hdmi_info.bits.YQ0_YQ1 = YYC_QUANTIZATION_LIMITED_RANGE;
} else { } else {
hdmi_info->bits.Q0_Q1 = RGB_QUANTIZATION_DEFAULT_RANGE; hdmi_info.bits.Q0_Q1 = RGB_QUANTIZATION_DEFAULT_RANGE;
hdmi_info->bits.YQ0_YQ1 = YYC_QUANTIZATION_LIMITED_RANGE; hdmi_info.bits.YQ0_YQ1 = YYC_QUANTIZATION_LIMITED_RANGE;
} }
} else { } else {
hdmi_info->bits.Q0_Q1 = RGB_QUANTIZATION_DEFAULT_RANGE; hdmi_info.bits.Q0_Q1 = RGB_QUANTIZATION_DEFAULT_RANGE;
hdmi_info->bits.YQ0_YQ1 = YYC_QUANTIZATION_LIMITED_RANGE; hdmi_info.bits.YQ0_YQ1 = YYC_QUANTIZATION_LIMITED_RANGE;
} }
///VIC ///VIC
...@@ -2028,51 +2027,49 @@ static void set_avi_info_frame( ...@@ -2028,51 +2027,49 @@ static void set_avi_info_frame(
break; break;
} }
} }
hdmi_info->bits.VIC0_VIC7 = vic; hdmi_info.bits.VIC0_VIC7 = vic;
/* pixel repetition /* pixel repetition
* PR0 - PR3 start from 0 whereas pHwPathMode->mode.timing.flags.pixel * PR0 - PR3 start from 0 whereas pHwPathMode->mode.timing.flags.pixel
* repetition start from 1 */ * repetition start from 1 */
hdmi_info->bits.PR0_PR3 = 0; hdmi_info.bits.PR0_PR3 = 0;
/* Bar Info /* Bar Info
* barTop: Line Number of End of Top Bar. * barTop: Line Number of End of Top Bar.
* barBottom: Line Number of Start of Bottom Bar. * barBottom: Line Number of Start of Bottom Bar.
* barLeft: Pixel Number of End of Left Bar. * barLeft: Pixel Number of End of Left Bar.
* barRight: Pixel Number of Start of Right Bar. */ * barRight: Pixel Number of Start of Right Bar. */
hdmi_info->bits.bar_top = stream->timing.v_border_top; hdmi_info.bits.bar_top = stream->timing.v_border_top;
hdmi_info->bits.bar_bottom = (stream->timing.v_total hdmi_info.bits.bar_bottom = (stream->timing.v_total
- stream->timing.v_border_bottom + 1); - stream->timing.v_border_bottom + 1);
hdmi_info->bits.bar_left = stream->timing.h_border_left; hdmi_info.bits.bar_left = stream->timing.h_border_left;
hdmi_info->bits.bar_right = (stream->timing.h_total hdmi_info.bits.bar_right = (stream->timing.h_total
- stream->timing.h_border_right + 1); - stream->timing.h_border_right + 1);
/* check_sum - Calculate AFMT_AVI_INFO0 ~ AFMT_AVI_INFO3 */ /* check_sum - Calculate AFMT_AVI_INFO0 ~ AFMT_AVI_INFO3 */
check_sum = &info_frame.avi_info_packet.info_packet_hdmi.packet_raw_data.sb[0]; check_sum = &hdmi_info.packet_raw_data.sb[0];
*check_sum = HDMI_INFOFRAME_TYPE_AVI + HDMI_AVI_INFOFRAME_SIZE + 2; *check_sum = HDMI_INFOFRAME_TYPE_AVI + HDMI_AVI_INFOFRAME_SIZE + 2;
for (byte_index = 1; byte_index <= HDMI_AVI_INFOFRAME_SIZE; byte_index++) for (byte_index = 1; byte_index <= HDMI_AVI_INFOFRAME_SIZE; byte_index++)
*check_sum += hdmi_info->packet_raw_data.sb[byte_index]; *check_sum += hdmi_info.packet_raw_data.sb[byte_index];
/* one byte complement */ /* one byte complement */
*check_sum = (uint8_t) (0x100 - *check_sum); *check_sum = (uint8_t) (0x100 - *check_sum);
/* Store in hw_path_mode */ /* Store in hw_path_mode */
info_packet->hb0 = hdmi_info->packet_raw_data.hb0; info_packet->hb0 = hdmi_info.packet_raw_data.hb0;
info_packet->hb1 = hdmi_info->packet_raw_data.hb1; info_packet->hb1 = hdmi_info.packet_raw_data.hb1;
info_packet->hb2 = hdmi_info->packet_raw_data.hb2; info_packet->hb2 = hdmi_info.packet_raw_data.hb2;
for (byte_index = 0; byte_index < sizeof(info_frame.avi_info_packet. for (byte_index = 0; byte_index < sizeof(hdmi_info.packet_raw_data.sb); byte_index++)
info_packet_hdmi.packet_raw_data.sb); byte_index++) info_packet->sb[byte_index] = hdmi_info.packet_raw_data.sb[byte_index];
info_packet->sb[byte_index] = info_frame.avi_info_packet.
info_packet_hdmi.packet_raw_data.sb[byte_index];
info_packet->valid = true; info_packet->valid = true;
} }
static void set_vendor_info_packet( static void set_vendor_info_packet(
struct encoder_info_packet *info_packet, struct dc_info_packet *info_packet,
struct dc_stream_state *stream) struct dc_stream_state *stream)
{ {
uint32_t length = 0; uint32_t length = 0;
...@@ -2185,7 +2182,7 @@ static void set_vendor_info_packet( ...@@ -2185,7 +2182,7 @@ static void set_vendor_info_packet(
} }
static void set_spd_info_packet( static void set_spd_info_packet(
struct encoder_info_packet *info_packet, struct dc_info_packet *info_packet,
struct dc_stream_state *stream) struct dc_stream_state *stream)
{ {
/* SPD info packet for FreeSync */ /* SPD info packet for FreeSync */
...@@ -2306,7 +2303,7 @@ static void set_spd_info_packet( ...@@ -2306,7 +2303,7 @@ static void set_spd_info_packet(
} }
static void set_hdr_static_info_packet( static void set_hdr_static_info_packet(
struct encoder_info_packet *info_packet, struct dc_info_packet *info_packet,
struct dc_stream_state *stream) struct dc_stream_state *stream)
{ {
uint16_t i = 0; uint16_t i = 0;
...@@ -2403,7 +2400,7 @@ static void set_hdr_static_info_packet( ...@@ -2403,7 +2400,7 @@ static void set_hdr_static_info_packet(
} }
static void set_vsc_info_packet( static void set_vsc_info_packet(
struct encoder_info_packet *info_packet, struct dc_info_packet *info_packet,
struct dc_stream_state *stream) struct dc_stream_state *stream)
{ {
unsigned int vscPacketRevision = 0; unsigned int vscPacketRevision = 0;
......
...@@ -530,6 +530,15 @@ struct vrr_params { ...@@ -530,6 +530,15 @@ struct vrr_params {
uint32_t frame_counter; uint32_t frame_counter;
}; };
struct dc_info_packet {
bool valid;
uint8_t hb0;
uint8_t hb1;
uint8_t hb2;
uint8_t hb3;
uint8_t sb[32];
};
#define DC_PLANE_UPDATE_TIMES_MAX 10 #define DC_PLANE_UPDATE_TIMES_MAX 10
struct dc_plane_flip_time { struct dc_plane_flip_time {
......
...@@ -80,7 +80,7 @@ enum { ...@@ -80,7 +80,7 @@ enum {
static void dce110_update_generic_info_packet( static void dce110_update_generic_info_packet(
struct dce110_stream_encoder *enc110, struct dce110_stream_encoder *enc110,
uint32_t packet_index, uint32_t packet_index,
const struct encoder_info_packet *info_packet) const struct dc_info_packet *info_packet)
{ {
uint32_t regval; uint32_t regval;
/* TODOFPGA Figure out a proper number for max_retries polling for lock /* TODOFPGA Figure out a proper number for max_retries polling for lock
...@@ -196,7 +196,7 @@ static void dce110_update_generic_info_packet( ...@@ -196,7 +196,7 @@ static void dce110_update_generic_info_packet(
static void dce110_update_hdmi_info_packet( static void dce110_update_hdmi_info_packet(
struct dce110_stream_encoder *enc110, struct dce110_stream_encoder *enc110,
uint32_t packet_index, uint32_t packet_index,
const struct encoder_info_packet *info_packet) const struct dc_info_packet *info_packet)
{ {
uint32_t cont, send, line; uint32_t cont, send, line;
......
...@@ -34,26 +34,17 @@ struct dc_bios; ...@@ -34,26 +34,17 @@ struct dc_bios;
struct dc_context; struct dc_context;
struct dc_crtc_timing; struct dc_crtc_timing;
struct encoder_info_packet {
bool valid;
uint8_t hb0;
uint8_t hb1;
uint8_t hb2;
uint8_t hb3;
uint8_t sb[32];
};
struct encoder_info_frame { struct encoder_info_frame {
/* auxiliary video information */ /* auxiliary video information */
struct encoder_info_packet avi; struct dc_info_packet avi;
struct encoder_info_packet gamut; struct dc_info_packet gamut;
struct encoder_info_packet vendor; struct dc_info_packet vendor;
/* source product description */ /* source product description */
struct encoder_info_packet spd; struct dc_info_packet spd;
/* video stream configuration */ /* video stream configuration */
struct encoder_info_packet vsc; struct dc_info_packet vsc;
/* HDR Static MetaData */ /* HDR Static MetaData */
struct encoder_info_packet hdrsmd; struct dc_info_packet hdrsmd;
}; };
struct encoder_unblank_param { struct encoder_unblank_param {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment