#define HPD_REG(reg)\
(enc110->hpd_regs->reg)
-/* For current ASICs pixel clock - 600MHz */
-#define MAX_ENCODER_CLK 600000
-
-#define DCE11_UNIPHY_MAX_PIXEL_CLK_IN_KHZ 594000
-
#define DEFAULT_AUX_MAX_DATA_SIZE 16
#define AUX_MAX_DEFER_WRITE_RETRY 20
/*
{
uint32_t max_pixel_clock = TMDS_MAX_PIXEL_CLOCK;
- if (enc110->base.features.max_pixel_clock < TMDS_MAX_PIXEL_CLOCK)
- max_pixel_clock = enc110->base.features.max_pixel_clock;
-
if (signal == SIGNAL_TYPE_DVI_DUAL_LINK)
- max_pixel_clock <<= 1;
+ max_pixel_clock *= 2;
/* This handles the case of HDMI downgrade to DVI we don't want to
* we don't want to cap the pixel clock if the DDI is not DVI.
*/
if (connector_signal != SIGNAL_TYPE_DVI_DUAL_LINK &&
connector_signal != SIGNAL_TYPE_DVI_SINGLE_LINK)
- max_pixel_clock = enc110->base.features.max_pixel_clock;
+ max_pixel_clock = enc110->base.features.max_hdmi_pixel_clock;
/* DVI only support RGB pixel encoding */
if (crtc_timing->pixel_encoding != PIXEL_ENCODING_RGB)
enum dc_color_depth max_deep_color =
enc110->base.features.max_hdmi_deep_color;
- if (max_deep_color > enc110->base.features.max_deep_color)
- max_deep_color = enc110->base.features.max_deep_color;
-
if (max_deep_color < crtc_timing->display_color_depth)
return false;
return false;
if ((adjusted_pix_clk_khz == 0) ||
- (adjusted_pix_clk_khz > enc110->base.features.max_hdmi_pixel_clock) ||
- (adjusted_pix_clk_khz > enc110->base.features.max_pixel_clock))
+ (adjusted_pix_clk_khz > enc110->base.features.max_hdmi_pixel_clock))
return false;
/* DCE11 HW does not support 420 */
return true;
}
-bool dce110_link_encoder_validate_rgb_output(
- const struct dce110_link_encoder *enc110,
- const struct dc_crtc_timing *crtc_timing)
-{
- if (crtc_timing->pix_clk_khz > enc110->base.features.max_pixel_clock)
- return false;
-
- if (crtc_timing->pixel_encoding != PIXEL_ENCODING_RGB)
- return false;
-
- return true;
-}
-
bool dce110_link_encoder_validate_dp_output(
const struct dce110_link_encoder *enc110,
const struct dc_crtc_timing *crtc_timing)
return false;
}
-bool dce110_link_encoder_validate_wireless_output(
- const struct dce110_link_encoder *enc110,
- const struct dc_crtc_timing *crtc_timing)
-{
- if (crtc_timing->pix_clk_khz > enc110->base.features.max_pixel_clock)
- return false;
-
- /* Wireless only supports YCbCr444 */
- if (crtc_timing->pixel_encoding ==
- PIXEL_ENCODING_YCBCR444)
- return true;
-
- return false;
-}
-
bool dce110_link_encoder_construct(
struct dce110_link_encoder *enc110,
const struct encoder_init_data *init_data,
enc110->base.transmitter = init_data->transmitter;
- enc110->base.features.flags.bits.IS_AUDIO_CAPABLE = true;
-
- enc110->base.features.max_pixel_clock =
- MAX_ENCODER_CLK;
-
- enc110->base.features.max_deep_color = COLOR_DEPTH_121212;
enc110->base.features.max_hdmi_deep_color = COLOR_DEPTH_121212;
if (enc110->base.ctx->dc->debug.disable_hdmi_deep_color)
bp_cap_info.DP_HBR2_CAP;
enc110->base.features.flags.bits.IS_HBR3_CAPABLE =
bp_cap_info.DP_HBR3_EN;
-
}
/* TODO: check PPLIB maxPhyClockInKHz <= 540000, if yes,
/* test pattern 4 support */
enc110->base.features.flags.bits.IS_TPS4_CAPABLE = true;
- enc110->base.features.flags.bits.IS_Y_ONLY_CAPABLE = false;
/*
dal_adapter_service_is_feature_supported(as,
FEATURE_SUPPORT_DP_Y_ONLY);
&stream->public.timing,
stream->phy_pix_clk);
break;
- case SIGNAL_TYPE_RGB:
- is_valid = dce110_link_encoder_validate_rgb_output(
- enc110, &stream->public.timing);
- break;
case SIGNAL_TYPE_DISPLAY_PORT:
case SIGNAL_TYPE_DISPLAY_PORT_MST:
case SIGNAL_TYPE_EDP:
is_valid = dce110_link_encoder_validate_dp_output(
enc110, &stream->public.timing);
break;
- case SIGNAL_TYPE_WIRELESS:
- is_valid = dce110_link_encoder_validate_wireless_output(
- enc110, &stream->public.timing);
- break;
default:
- is_valid = true;
+ is_valid = false;
break;
}
struct encoder_feature_support {
union {
struct {
- /* 1 - external encoder; 0 - internal encoder */
- uint32_t EXTERNAL_ENCODER:1;
- uint32_t ANALOG_ENCODER:1;
- uint32_t STEREO_SYNC:1;
- /* check the DDC data pin
- * when performing DP Sink detection */
- uint32_t DP_SINK_DETECT_POLL_DATA_PIN:1;
- /* CPLIB authentication
- * for external DP chip supported */
- uint32_t CPLIB_DP_AUTHENTICATION:1;
uint32_t IS_HBR2_CAPABLE:1;
uint32_t IS_HBR3_CAPABLE:1;
- uint32_t IS_HBR2_VALIDATED:1;
uint32_t IS_TPS3_CAPABLE:1;
uint32_t IS_TPS4_CAPABLE:1;
- uint32_t IS_AUDIO_CAPABLE:1;
- uint32_t IS_VCE_SUPPORTED:1;
- uint32_t IS_CONVERTER:1;
- uint32_t IS_Y_ONLY_CAPABLE:1;
uint32_t IS_YCBCR_CAPABLE:1;
} bits;
uint32_t raw;
} flags;
- /* maximum supported deep color depth */
- enum dc_color_depth max_deep_color;
+
enum dc_color_depth max_hdmi_deep_color;
- /* maximum supported clock */
- unsigned int max_pixel_clock;
unsigned int max_hdmi_pixel_clock;
bool ycbcr420_supported;
};