]> rtime.felk.cvut.cz Git - vajnamar/linux-xlnx.git/blobdiff - drivers/gpu/drm/xilinx/xilinx_drm_sdi.c
drm: sdi: xilinx: correcting multi link payload value
[vajnamar/linux-xlnx.git] / drivers / gpu / drm / xilinx / xilinx_drm_sdi.c
index d56e94c776413c15e396b680510d34b565a4fa49..5b0c429fd279977f4f159255ab32df896e2a43cb 100644 (file)
@@ -978,9 +978,11 @@ static void xilinx_sdi_mode_set(struct drm_encoder *encoder,
        payload = xilinx_sdi_calc_st352_payld(sdi, adjusted_mode);
        dev_dbg(sdi->dev, "payload : %0x\n", payload);
 
-       for (i = 0; i < sdi->sdi_data_strm_prop_val / 2; i++)
-               xilinx_sdi_set_payload_data(sdi, i, payload |
-                                           (i << XSDI_CH_SHIFT));
+       for (i = 0; i < sdi->sdi_data_strm_prop_val / 2; i++) {
+               if (sdi->sdi_mod_prop_val == XSDI_MODE_3GB)
+                       payload |= (i << 1) << XSDI_CH_SHIFT;
+               xilinx_sdi_set_payload_data(sdi, i, payload);
+       }
 
        /* UHDSDI is fixed 2 pixels per clock, horizontal timings div by 2 */
        vm.hactive = adjusted_mode->hdisplay / PIXELS_PER_CLK;