diff options
author | Andrzej Hajda <a.hajda@samsung.com> | 2017-02-01 08:47:48 +0100 |
---|---|---|
committer | Archit Taneja <architt@codeaurora.org> | 2017-02-02 15:15:29 +0530 |
commit | 269ed8eec9c2e66a00e4c127e4c06bf87d518112 (patch) | |
tree | 50ba7870b304b82b7a66261a64ce962822dd5efe /drivers/gpu/drm/bridge/sil-sii8620.c | |
parent | bf1722cab55a32a7a18c0155034351084bac59fa (diff) | |
download | linux-269ed8eec9c2e66a00e4c127e4c06bf87d518112.tar.bz2 |
drm/bridge/sii8620: send EMSC features on request
Device should report to the peer which features are really supported.
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Archit Taneja <architt@codeaurora.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1485935272-17337-22-git-send-email-a.hajda@samsung.com
Diffstat (limited to 'drivers/gpu/drm/bridge/sil-sii8620.c')
-rw-r--r-- | drivers/gpu/drm/bridge/sil-sii8620.c | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/drivers/gpu/drm/bridge/sil-sii8620.c b/drivers/gpu/drm/bridge/sil-sii8620.c index c8d06d6123c3..fca49f6105df 100644 --- a/drivers/gpu/drm/bridge/sil-sii8620.c +++ b/drivers/gpu/drm/bridge/sil-sii8620.c @@ -1676,6 +1676,25 @@ static void sii8620_got_ecbus_speed(struct sii8620 *ctx, int ret) sii8620_mt_set_cont(ctx, sii8620_ecbus_up); } +static void sii8620_mhl_burst_emsc_support_set(struct mhl_burst_emsc_support *d, + enum mhl_burst_id id) +{ + sii8620_mhl_burst_hdr_set(&d->hdr, MHL_BURST_ID_EMSC_SUPPORT); + d->num_entries = 1; + d->burst_id[0] = cpu_to_be16(id); +} + +static void sii8620_send_features(struct sii8620 *ctx) +{ + u8 buf[16]; + + sii8620_write(ctx, REG_MDT_XMIT_CTRL, BIT_MDT_XMIT_CTRL_EN + | BIT_MDT_XMIT_CTRL_FIXED_BURST_LEN); + sii8620_mhl_burst_emsc_support_set((void *)buf, + MHL_BURST_ID_HID_PAYLOAD); + sii8620_write_buf(ctx, REG_MDT_XMIT_WRITE_PORT, buf, ARRAY_SIZE(buf)); +} + static void sii8620_msc_mr_set_int(struct sii8620 *ctx) { u8 ints[MHL_INT_SIZE]; @@ -1696,10 +1715,10 @@ static void sii8620_msc_mr_set_int(struct sii8620 *ctx) break; } } - if (ints[MHL_INT_RCHANGE] & MHL_INT_RC_FEAT_REQ) { - sii8620_mt_set_int(ctx, MHL_INT_REG(RCHANGE), - MHL_INT_RC_FEAT_COMPLETE); - } + if (ints[MHL_INT_RCHANGE] & MHL_INT_RC_FEAT_REQ) + sii8620_send_features(ctx); + if (ints[MHL_INT_RCHANGE] & MHL_INT_RC_FEAT_COMPLETE) + sii8620_edid_read(ctx, 0); } static struct sii8620_mt_msg *sii8620_msc_msg_first(struct sii8620 *ctx) |