default:
return SIGNAL_TYPE_NONE;
}
- } else if (downstream.type == OBJECT_TYPE_ENCODER) {
- switch (downstream.id) {
- case ENCODER_ID_EXTERNAL_NUTMEG:
- case ENCODER_ID_EXTERNAL_TRAVIS:
- return SIGNAL_TYPE_DISPLAY_PORT;
- default:
- return SIGNAL_TYPE_NONE;
- }
}
return SIGNAL_TYPE_NONE;
struct audio_support *aud_support;
struct graphics_object_id enc_id;
+ /* External DP bridges should use DP signal regardless of connector type. */
+ if (link->ext_enc_id.id)
+ return SIGNAL_TYPE_DISPLAY_PORT;
+
if (link->is_dig_mapping_flexible)
enc_id = (struct graphics_object_id){.id = ENCODER_ID_UNKNOWN};
else
link->dpcd_caps.usb4_dp_tun_info.dp_tun_cap.raw = 0;
}
+ if (link->ext_enc_id.id) {
+ /* Fix number of connected sinks reported by external DP bridge */
+ link->dpcd_caps.sink_count.bits.SINK_COUNT = 1;
+ /* NUTMEG requires that we use HBR, doesn't work with RBR. */
+ if (link->dpcd_caps.branch_dev_id == DP_BRANCH_DEVICE_ID_00001A)
+ link->preferred_link_setting.link_rate = LINK_RATE_HIGH;
+ }
+
return true;
}
enum dp_panel_mode dp_get_panel_mode(struct dc_link *link)
{
- /* We need to explicitly check that connector
- * is not DP. Some Travis_VGA get reported
- * by video bios as DP.
- */
- if (link->connector_signal != SIGNAL_TYPE_DISPLAY_PORT) {
+ if (link->ext_enc_id.id) {
switch (link->dpcd_caps.branch_dev_id) {
case DP_BRANCH_DEVICE_ID_0022B9:
}
break;
case DP_BRANCH_DEVICE_ID_00001A:
- /* alternate scrambler reset is required for Travis
+ /* alternate scrambler reset is required for NUTMEG
* for the case when external chip does not provide
* sink device id, alternate scrambler scheme will
* be overriden later by querying Encoder feature