hdmitx: fix VSDB block parsing error
authorKaifu Hu <kaifu.hu@amlogic.com>
Mon, 28 May 2018 03:01:25 +0000 (11:01 +0800)
committerYixun Lan <yixun.lan@amlogic.com>
Tue, 29 May 2018 04:05:18 +0000 (21:05 -0700)
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>
drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_edid.c

index f5e9a66..5f0d7ed 100644 (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;