drm/bridge/sii8620: fix peer device capabilities read code
authorAndrzej Hajda <a.hajda@samsung.com>
Tue, 22 Nov 2016 15:39:09 +0000 (16:39 +0100)
committerSeung-Woo Kim <sw0312.kim@samsung.com>
Wed, 14 Dec 2016 04:54:22 +0000 (13:54 +0900)
Peer capabilities should be read differently depending on protocol version.

Change-Id: I3344af6068da07ccc7842a6e8affc63ee31a33a0
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
drivers/gpu/drm/bridge/sil-sii8620.c

index 7fdd50791b2728411140342555be190922b8c85a..c9341a4fe67c15393e89f2e146bbff5727176b69 100644 (file)
@@ -1409,7 +1409,8 @@ static void sii8620_status_changed_path(struct sii8620 *ctx)
                sii8620_mt_write_stat(ctx, MHL_DST_REG(LINK_MODE),
                                      MHL_DST_LM_CLK_MODE_NORMAL
                                      | MHL_DST_LM_PATH_ENABLED);
-               sii8620_mt_read_devcap(ctx, false);
+               if (ctx->mode < CM_MHL3)
+                       sii8620_mt_read_devcap(ctx, false);
        } else {
                sii8620_mt_write_stat(ctx, MHL_DST_REG(LINK_MODE),
                                      MHL_DST_LM_CLK_MODE_NORMAL);
@@ -1661,6 +1662,11 @@ static void sii8620_irq_infr(struct sii8620 *ctx)
                sii8620_start_video(ctx);
 }
 
+static void sii8620_got_xdevcap(struct sii8620 *ctx, int ret)
+{
+       sii8620_mt_read_devcap(ctx, false);
+}
+
 static void sii8620_irq_tdm(struct sii8620 *ctx)
 {
        u8 stat = sii8620_readb(ctx, REG_TRXINTH);
@@ -1672,6 +1678,7 @@ static void sii8620_irq_tdm(struct sii8620 *ctx)
                ctx->burst.r_size = SII8620_BURST_BUF_LEN;
                sii8620_burst_tx_rbuf_info(ctx, SII8620_BURST_BUF_LEN);
                sii8620_mt_read_devcap(ctx, true);
+               sii8620_mt_set_cont(ctx, sii8620_got_xdevcap);
        } else {
                sii8620_write_seq_static(ctx,
                        REG_MHL_PLL_CTL2, 0,