hdmitx: fix VSDB block parsing error

PD#160588: hdmitx: fix VSDB parsing error

It cann't parse YUV format when using special
edid with support YUV.

Change-Id: Ic17e3b3dc1f26694252e608fa2e609d08578aa71
Signed-off-by: Kaifu Hu <kaifu.hu@amlogic.com>
This commit is contained in:
Kaifu Hu
2018-05-28 11:01:25 +08:00
committed by Yixun Lan
parent 05bcd153b0
commit 4db0efd03b

View File

@@ -247,13 +247,12 @@ static void set_vsdb_phy_addr(struct hdmitx_dev *hdev,
hdmitx_event_notify(HDMITX_PHY_ADDR_VALID, &phy_addr);
}
static void set_vsdb_dc_cap(struct rx_cap *pRXCap,
unsigned char *edid_offset)
static void set_vsdb_dc_cap(struct rx_cap *pRXCap)
{
pRXCap->dc_y444 = !!(edid_offset[6] & (1 << 3));
pRXCap->dc_30bit = !!(edid_offset[6] & (1 << 4));
pRXCap->dc_36bit = !!(edid_offset[6] & (1 << 5));
pRXCap->dc_48bit = !!(edid_offset[6] & (1 << 6));
pRXCap->dc_y444 = !!(pRXCap->ColorDeepSupport & (1 << 3));
pRXCap->dc_30bit = !!(pRXCap->ColorDeepSupport & (1 << 4));
pRXCap->dc_36bit = !!(pRXCap->ColorDeepSupport & (1 << 5));
pRXCap->dc_48bit = !!(pRXCap->ColorDeepSupport & (1 << 6));
}
static void set_vsdb_dc_420_cap(struct rx_cap *pRXCap,
@@ -307,7 +306,6 @@ int Edid_Parse_check_HDMI_VSDB(struct hdmitx_dev *hdev,
info->vsdb_phy_addr.c,
info->vsdb_phy_addr.d);
}
set_vsdb_dc_cap(&hdev->RXCap, &buff[BlockAddr]);
if (temp_addr >= VSpecificBoundary)
ret = -1;
@@ -899,7 +897,6 @@ static void Edid_ParsingVendSpec(struct rx_cap *pRXCap,
if (pos > dv->length)
pr_info("hdmitx: edid: maybe invalid dv%d data\n", dv->ver);
return;
}
/* ----------------------------------------------------------- */
@@ -1382,6 +1379,7 @@ static int hdmitx_edid_block_parse(struct hdmitx_dev *hdmitx_device,
pRXCap->IEEEOUI = 0x000c03;
pRXCap->ColorDeepSupport =
(count > 5) ? BlockBuf[offset+5] : 0;
set_vsdb_dc_cap(pRXCap);
pRXCap->Max_TMDS_Clock1 =
(count > 6) ? BlockBuf[offset+6] : 0;