{
        struct cros_typec_port *port = typec->ports[port_num];
        struct typec_displayport_data dp_data;
+       u32 cable_tbt_vdo;
+       u32 cable_dp_vdo;
        int ret;
 
        if (typec->pd_ctrl_ver < 2) {
        port->state.data = &dp_data;
        port->state.mode = TYPEC_MODAL_STATE(ffs(pd_ctrl->dp_mode));
 
+       /* Get cable VDO for cables with DPSID to check DPAM2.1 is supported */
+       cable_dp_vdo = cros_typec_get_cable_vdo(port, USB_TYPEC_DP_SID);
+
+       /**
+        * Get cable VDO for thunderbolt cables and cables with DPSID but does not
+        * support DPAM2.1.
+        */
+       cable_tbt_vdo = cros_typec_get_cable_vdo(port, USB_TYPEC_TBT_SID);
+
+       if (cable_dp_vdo & DP_CAP_DPAM_VERSION) {
+               dp_data.conf |= cable_dp_vdo;
+       } else if (cable_tbt_vdo) {
+               dp_data.conf |=  TBT_CABLE_SPEED(cable_tbt_vdo) << DP_CONF_SIGNALLING_SHIFT;
+
+               /* Cable Type */
+               if (cable_tbt_vdo & TBT_CABLE_OPTICAL)
+                       dp_data.conf |= DP_CONF_CABLE_TYPE_OPTICAL << DP_CONF_CABLE_TYPE_SHIFT;
+               else if (cable_tbt_vdo & TBT_CABLE_RETIMER)
+                       dp_data.conf |= DP_CONF_CABLE_TYPE_RE_TIMER << DP_CONF_CABLE_TYPE_SHIFT;
+               else if (cable_tbt_vdo & TBT_CABLE_ACTIVE_PASSIVE)
+                       dp_data.conf |= DP_CONF_CABLE_TYPE_RE_DRIVER << DP_CONF_CABLE_TYPE_SHIFT;
+       } else if (PD_IDH_PTYPE(port->c_identity.id_header) == IDH_PTYPE_PCABLE) {
+               dp_data.conf |= VDO_TYPEC_CABLE_SPEED(port->c_identity.vdo[0]) <<
+                               DP_CONF_SIGNALLING_SHIFT;
+       }
+
        ret = cros_typec_retimer_set(port->retimer, port->state);
        if (!ret)
                ret = typec_mux_set(port->mux, &port->state);