drm/bridge: tc358767: fix AUXDATAn registers access
authorAndrey Gusakov <andrey.gusakov@cogentembedded.com>
Tue, 7 Nov 2017 16:56:23 +0000 (19:56 +0300)
committerAndrzej Hajda <a.hajda@samsung.com>
Thu, 30 Nov 2017 06:56:12 +0000 (07:56 +0100)
First four bytes should go to DP0_AUXWDATA0. Due to bug if
len > 4 first four bytes was writen to DP0_AUXWDATA1 and all
data get shifted by 4 bytes. Fix it.

Acked-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Andrey Gusakov <andrey.gusakov@cogentembedded.com>
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Link: https://patchwork.freedesktop.org/patch/msgid/1510073785-16108-6-git-send-email-andrey.gusakov@cogentembedded.com
drivers/gpu/drm/bridge/tc358767.c

index b916346b933a5f2e4144fc1e3dac2b2bf7049808..24f495bf0567bdacb24363355c677f52cd2c7c0c 100644 (file)
@@ -318,7 +318,7 @@ static ssize_t tc_aux_transfer(struct drm_dp_aux *aux,
                                tmp = (tmp << 8) | buf[i];
                        i++;
                        if (((i % 4) == 0) || (i == size)) {
-                               tc_write(DP0_AUXWDATA(i >> 2), tmp);
+                               tc_write(DP0_AUXWDATA((i - 1) >> 2), tmp);
                                tmp = 0;
                        }
                }