1
0
Fork 0

drm: sti: fix hdmi avi infoframe

The hardware expect to have the infoframe checksum in the first byte.
In consequence shift all infoframe on one byte.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
hifive-unleashed-5.1
Benjamin Gaignard 2014-12-04 11:26:59 +01:00
parent eb929dc4d3
commit 589b347b54
1 changed files with 17 additions and 16 deletions

View File

@ -272,31 +272,32 @@ static int hdmi_avi_infoframe_config(struct sti_hdmi *hdmi)
hdmi_write(hdmi, val, HDMI_SW_DI_CFG);
/* Infoframe header */
val = buffer[0x0];
val |= buffer[0x1] << 8;
val |= buffer[0x2] << 16;
val = buffer[0];
val |= buffer[1] << 8;
val |= buffer[2] << 16;
hdmi_write(hdmi, val, HDMI_SW_DI_N_HEAD_WORD(HDMI_IFRAME_SLOT_AVI));
/* Infoframe packet bytes */
val = frame[0x0];
val |= frame[0x1] << 8;
val |= frame[0x2] << 16;
val |= frame[0x3] << 24;
val = buffer[3];
val |= *(frame++) << 8;
val |= *(frame++) << 16;
val |= *(frame++) << 24;
hdmi_write(hdmi, val, HDMI_SW_DI_N_PKT_WORD0(HDMI_IFRAME_SLOT_AVI));
val = frame[0x4];
val |= frame[0x5] << 8;
val |= frame[0x6] << 16;
val |= frame[0x7] << 24;
val = *(frame++);
val |= *(frame++) << 8;
val |= *(frame++) << 16;
val |= *(frame++) << 24;
hdmi_write(hdmi, val, HDMI_SW_DI_N_PKT_WORD1(HDMI_IFRAME_SLOT_AVI));
val = frame[0x8];
val |= frame[0x9] << 8;
val |= frame[0xA] << 16;
val |= frame[0xB] << 24;
val = *(frame++);
val |= *(frame++) << 8;
val |= *(frame++) << 16;
val |= *(frame++) << 24;
hdmi_write(hdmi, val, HDMI_SW_DI_N_PKT_WORD2(HDMI_IFRAME_SLOT_AVI));
val = frame[0xC];
val = *(frame++);
val |= *(frame) << 8;
hdmi_write(hdmi, val, HDMI_SW_DI_N_PKT_WORD3(HDMI_IFRAME_SLOT_AVI));
/* Enable transmission slot for AVI infoframe