return mode;
 }
 EXPORT_SYMBOL(drm_dp_pcon_hdmi_link_mode);
+
+/**
+ * drm_dp_pcon_hdmi_frl_link_error_count() - print the error count per lane
+ * during link failure between PCON and HDMI sink
+ * @aux: DisplayPort AUX channel
+ * @connector: DRM connector
+ * code.
+ **/
+
+void drm_dp_pcon_hdmi_frl_link_error_count(struct drm_dp_aux *aux,
+                                          struct drm_connector *connector)
+{
+       u8 buf, error_count;
+       int i, num_error;
+       struct drm_hdmi_info *hdmi = &connector->display_info.hdmi;
+
+       for (i = 0; i < hdmi->max_lanes; i++) {
+               if (drm_dp_dpcd_readb(aux, DP_PCON_HDMI_ERROR_STATUS_LN0 + i, &buf) < 0)
+                       return;
+
+               error_count = buf & DP_PCON_HDMI_ERROR_COUNT_MASK;
+               switch (error_count) {
+               case DP_PCON_HDMI_ERROR_COUNT_HUNDRED_PLUS:
+                       num_error = 100;
+                       break;
+               case DP_PCON_HDMI_ERROR_COUNT_TEN_PLUS:
+                       num_error = 10;
+                       break;
+               case DP_PCON_HDMI_ERROR_COUNT_THREE_PLUS:
+                       num_error = 3;
+                       break;
+               default:
+                       num_error = 0;
+               }
+
+               DRM_ERROR("More than %d errors since the last read for lane %d", num_error, i);
+       }
+}
+EXPORT_SYMBOL(drm_dp_pcon_hdmi_frl_link_error_count);
 
 # define DP_CEC_IRQ                          (1 << 2)
 
 #define DP_LINK_SERVICE_IRQ_VECTOR_ESI0     0x2005   /* 1.2 */
+# define RX_CAP_CHANGED                      (1 << 0)
+# define LINK_STATUS_CHANGED                 (1 << 1)
+# define STREAM_STATUS_CHANGED               (1 << 2)
+# define HDMI_LINK_STATUS_CHANGED            (1 << 3)
+# define CONNECTED_OFF_ENTRY_REQUESTED       (1 << 4)
 
 #define DP_PSR_ERROR_STATUS                 0x2006  /* XXX 1.2? */
 # define DP_PSR_LINK_CRC_ERROR              (1 << 0)
 #define DP_PROTOCOL_CONVERTER_CONTROL_2                0x3052 /* DP 1.3 */
 # define DP_CONVERSION_TO_YCBCR422_ENABLE      (1 << 0) /* DP 1.3 */
 
+/* PCON Downstream HDMI ERROR Status per Lane */
+#define DP_PCON_HDMI_ERROR_STATUS_LN0          0x3037
+#define DP_PCON_HDMI_ERROR_STATUS_LN1          0x3038
+#define DP_PCON_HDMI_ERROR_STATUS_LN2          0x3039
+#define DP_PCON_HDMI_ERROR_STATUS_LN3          0x303A
+# define DP_PCON_HDMI_ERROR_COUNT_MASK         (0x7 << 0)
+# define DP_PCON_HDMI_ERROR_COUNT_THREE_PLUS   (1 << 0)
+# define DP_PCON_HDMI_ERROR_COUNT_TEN_PLUS     (1 << 1)
+# define DP_PCON_HDMI_ERROR_COUNT_HUNDRED_PLUS (1 << 2)
+
 /* HDCP 1.3 and HDCP 2.2 */
 #define DP_AUX_HDCP_BKSV               0x68000
 #define DP_AUX_HDCP_RI_PRIME           0x68005
 
 bool drm_dp_pcon_hdmi_link_active(struct drm_dp_aux *aux);
 int drm_dp_pcon_hdmi_link_mode(struct drm_dp_aux *aux, u8 *frl_trained_mask);
+void drm_dp_pcon_hdmi_frl_link_error_count(struct drm_dp_aux *aux,
+                                          struct drm_connector *connector);
 
 #endif /* _DRM_DP_HELPER_H_ */