struct nv50_mstm *mstm = NULL;
        int ret;
        u8 *dpcd = outp->dp.dpcd;
-       u8 tmp;
 
        ret = drm_dp_dpcd_read(aux, DP_DPCD_REV, dpcd, DP_RECEIVER_CAP_SIZE);
        if (ret == DP_RECEIVER_CAP_SIZE && dpcd[DP_DPCD_REV]) {
                return connector_status_disconnected;
        }
 
-       if (nouveau_mst)
+       if (nouveau_mst) {
                mstm = outp->dp.mstm;
-
-       if (mstm) {
-               if (dpcd[DP_DPCD_REV] >= DP_DPCD_REV_12) {
-                       ret = drm_dp_dpcd_readb(aux, DP_MSTM_CAP, &tmp);
-                       if (ret < 0)
-                               return connector_status_disconnected;
-
-                       mstm->can_mst = !!(tmp & DP_MST_CAP);
-               } else {
-                       mstm->can_mst = false;
-               }
+               if (mstm)
+                       mstm->can_mst = drm_dp_read_mst_cap(aux, dpcd);
        }
 
        return connector_status_connected;