dpcd_caps
if (link_status->dpcd_caps->dpcd_rev.raw < 0x12) {
link->link_status.dpcd_caps = &link->dpcd_caps;
link->link_status.dpcd_caps = &link->dpcd_caps;
link->dpcd_caps.panel_mode_edp,
const struct dpcd_caps *dpcd_caps)
const struct dc_dongle_caps *dongle_caps = &dpcd_caps->dongle_caps;
switch (dpcd_caps->dongle_type) {
struct dpcd_caps *dpcd_caps = &link->dpcd_caps;
if (!dp_active_dongle_validate_timing(timing, dpcd_caps))
if (!link->dpcd_caps.sink_count.bits.SINK_COUNT) {
if (link->dpcd_caps.dongle_type != DISPLAY_DONGLE_DP_HDMI_CONVERTER)
struct dpcd_caps prev_dpcd_caps;
memcpy(&prev_dpcd_caps, &link->dpcd_caps, sizeof(struct dpcd_caps));
if (memcmp(&link->dpcd_caps, &prev_dpcd_caps, sizeof(struct dpcd_caps)))
&& link->dpcd_caps.sink_count.
if (link->dpcd_caps.sink_count.bits.SINK_COUNT)
link->dpcd_sink_count = link->dpcd_caps.sink_count.
if (link->dpcd_caps.branch_dev_id == DP_BRANCH_DEVICE_ID_4 &&
!memcmp(link->dpcd_caps.branch_dev_name,
sizeof(link->dpcd_caps.branch_dev_name)))
link->dpcd_caps.max_ln_count.bits.POST_LT_ADJ_REQ_SUPPORTED;
if (link->dpcd_caps.dpcd_rev.raw < DPCD_REV_14)
enum display_dongle_type dongle_type = link->dpcd_caps.dongle_type;
link->dpcd_caps.dongle_type = DISPLAY_DONGLE_NONE;
link->dpcd_caps.dongle_type);
link->dpcd_caps.dongle_type = DISPLAY_DONGLE_DP_VGA_CONVERTER;
link->dpcd_caps.dongle_type = DISPLAY_DONGLE_DP_DVI_CONVERTER;
link->dpcd_caps.dongle_type = DISPLAY_DONGLE_NONE;
if (link->dpcd_caps.dpcd_rev.raw >= DPCD_REV_11) {
link->dpcd_caps.dongle_type =
link->dpcd_caps.dongle_type =
link->dpcd_caps.dongle_type =
link->dpcd_caps.dongle_caps.dongle_type = link->dpcd_caps.dongle_type;
link->dpcd_caps.dongle_caps.dp_hdmi_max_pixel_clk =
link->dpcd_caps.dongle_caps.is_dp_hdmi_s3d_converter =
link->dpcd_caps.dongle_caps.is_dp_hdmi_ycbcr422_pass_through =
link->dpcd_caps.dongle_caps.is_dp_hdmi_ycbcr420_pass_through =
link->dpcd_caps.dongle_caps.is_dp_hdmi_ycbcr422_converter =
link->dpcd_caps.dongle_caps.is_dp_hdmi_ycbcr420_converter =
link->dpcd_caps.dongle_caps.dp_hdmi_max_bpc =
if (link->dpcd_caps.dongle_caps.dp_hdmi_max_pixel_clk != 0)
link->dpcd_caps.dongle_caps.extendedCapValid = true;
ddc_service_set_dongle_type(link->ddc, link->dpcd_caps.dongle_type);
link->dpcd_caps.branch_dev_id =
link->dpcd_caps.branch_dev_name,
link->dpcd_caps.branch_hw_revision =
link->dpcd_caps.branch_fw_revision,
if (!link->dpcd_caps.dpcd_rev.raw) {
link->dpcd_caps.dpcd_rev.raw = dpcd_data[
} while (retry++ < 4 && !link->dpcd_caps.dpcd_rev.raw);
if (link->dpcd_caps.dongle_type == DISPLAY_DONGLE_DP_VGA_CONVERTER) {
switch (link->dpcd_caps.branch_dev_id) {
link->dpcd_caps.dpcd_rev.raw =
link->dpcd_caps.allow_invalid_MSA_timing_param =
link->dpcd_caps.max_ln_count.raw = dpcd_data[
link->dpcd_caps.max_down_spread.raw = dpcd_data[
link->dpcd_caps.max_ln_count.bits.MAX_LANE_COUNT;
link->dpcd_caps.max_down_spread.bits.MAX_DOWN_SPREAD ?
link->dpcd_caps.panel_mode_edp =
link->dpcd_caps.dpcd_display_control_capable =
&link->dpcd_caps.sink_count.raw,
sizeof(link->dpcd_caps.sink_count.raw));
link->dpcd_caps.sink_dev_id =
link->dpcd_caps.sink_dev_id_str,
link->dpcd_caps.sink_hw_revision =
link->dpcd_caps.sink_fw_revision,
if (link->dpcd_caps.dpcd_rev.raw >= DPCD_REV_12) {
} else if (link->dpcd_caps.dpcd_rev.raw >= DPCD_REV_10 ||
link->dpcd_caps.dpcd_rev.raw == 0) {
if (link->dpcd_caps.dpcd_rev.raw >= DPCD_REV_12) {
struct dpcd_caps *dpcd_caps = &link->dpcd_caps;
if (dpcd_caps->max_down_spread.bits.TPS4_SUPPORTED &&
if (dpcd_caps->max_ln_count.bits.TPS3_SUPPORTED &&
if (link->dpcd_caps.max_ln_count.bits.POST_LT_ADJ_REQ_SUPPORTED != 1 ||
switch (link->dpcd_caps.branch_dev_id) {
link->dpcd_caps.branch_dev_name,
link->dpcd_caps.
if (strncmp(link->dpcd_caps.branch_dev_name,
link->dpcd_caps.
if (link->dpcd_caps.panel_mode_edp) {
struct dpcd_caps dpcd_caps;
struct dpcd_caps *dpcd_caps;