hdmitx: repeater need to update edid [1/1]
authorKaifu Hu <kaifu.hu@amlogic.com>
Mon, 15 Oct 2018 03:22:55 +0000 (11:22 +0800)
committerJianxin Pan <jianxin.pan@amlogic.com>
Sat, 20 Oct 2018 14:31:07 +0000 (07:31 -0700)
PD#174510

Problem:
Soundbar has no sound when playing DTS audio
on HDMI source.

Solution:
Only repeater need to update RX edid as TV edid.

Verify:
Atom

Change-Id: I3d6def33477e6846a7365e888c207b1758060a38
Signed-off-by: Kaifu Hu <kaifu.hu@amlogic.com>
drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_edid.c

index 09f46f8..793bc45 100644 (file)
@@ -1195,11 +1195,12 @@ MODULE_PARM_DESC(rptx_edid_aud, "\n receive_edid\n");
 module_param(rptx_edid_aud, charp, 0444);
 
 /* ----------------------------------------------------------- */
-int Edid_ParsingCEADataBlockCollection(struct hdmitx_info *info,
+int Edid_ParsingCEADataBlockCollection(struct hdmitx_dev *hdmitx_device,
        unsigned char *buff)
 {
        unsigned char AddrTag, D, Addr, Data;
        int temp_addr, i, len, pos;
+       struct hdmitx_info *info = &(hdmitx_device->hdmi_info);
 
        /* Byte number offset d where Detailed Timing data begins */
        D = buff[2];
@@ -1217,7 +1218,8 @@ int Edid_ParsingCEADataBlockCollection(struct hdmitx_info *info,
 
                case AUDIO_TAG:
                        len = (Data & 0x1f) + 1;
-                       rx_set_receiver_edid(&buff[AddrTag], len);
+                       if (hdmitx_device->repeater_tx)
+                               rx_set_receiver_edid(&buff[AddrTag], len);
                        for (pos = 0, i = 0; i < len; i++)
                                pos += sprintf(rptx_edid_buf+pos, "%02x",
                                        buff[AddrTag + i]);
@@ -2052,8 +2054,7 @@ int hdmitx_edid_parse(struct hdmitx_dev *hdmitx_device)
                                        &hdmitx_device->hdmi_info,
                                        EDID_buf[i * 128 + 3]);
                                ret_val = Edid_ParsingCEADataBlockCollection(
-                                       &hdmitx_device->hdmi_info,
-                                       &EDID_buf[i * 128]);
+                                       hdmitx_device, &EDID_buf[i * 128]);
                                Edid_ParseCEADetailedTimingDescriptors(
                                        &hdmitx_device->hdmi_info, 5,
                                        EDID_buf[i * 128 + 2],