Merge v6.5-rc1 into drm-misc-fixes
[linux-2.6-microblaze.git] / drivers / gpu / drm / nouveau / dispnv50 / disp.c
index 1637e08..38d3fad 100644 (file)
@@ -64,6 +64,7 @@
 #include "nouveau_connector.h"
 #include "nouveau_encoder.h"
 #include "nouveau_fence.h"
+#include "nv50_display.h"
 
 #include <subdev/bios/dp.h>
 
@@ -1362,22 +1363,26 @@ nv50_mstm_service(struct nouveau_drm *drm,
        u8 esi[8] = {};
 
        while (handled) {
+               u8 ack[8] = {};
+
                rc = drm_dp_dpcd_read(aux, DP_SINK_COUNT_ESI, esi, 8);
                if (rc != 8) {
                        ret = false;
                        break;
                }
 
-               drm_dp_mst_hpd_irq(&mstm->mgr, esi, &handled);
+               drm_dp_mst_hpd_irq_handle_event(&mstm->mgr, esi, ack, &handled);
                if (!handled)
                        break;
 
-               rc = drm_dp_dpcd_write(aux, DP_SINK_COUNT_ESI + 1, &esi[1],
-                                      3);
-               if (rc != 3) {
+               rc = drm_dp_dpcd_writeb(aux, DP_SINK_COUNT_ESI + 1, ack[1]);
+
+               if (rc != 1) {
                        ret = false;
                        break;
                }
+
+               drm_dp_mst_hpd_irq_send_new_request(&mstm->mgr);
        }
 
        if (!ret)