{
int i;
int pkt_data_len = 0;
+ unsigned int IEEECode = 0;
switch (type) {
case HDMI_PACKET_AVI:
if ((!DB) || (!HB)) {
hdmitx_set_reg_bits(HDMITX_DWC_FC_DATAUTO0, 0, 3, 1);
hdmitx_wr_reg(HDMITX_DWC_FC_VSDSIZE, 0x0);
+ hdmitx_wr_reg(HDMITX_DWC_FC_VSDIEEEID0, 0x00);
+ hdmitx_wr_reg(HDMITX_DWC_FC_VSDIEEEID1, 0x00);
+ hdmitx_wr_reg(HDMITX_DWC_FC_VSDIEEEID2, 0x00);
+ for (i = 0; i < 24; i++)
+ hdmitx_wr_reg(HDMITX_DWC_FC_VSDPAYLOAD0 + i,
+ 0x00);
return;
}
hdmitx_wr_reg(HDMITX_DWC_FC_VSDIEEEID0, DB[0]);
hdmitx_wr_reg(HDMITX_DWC_FC_VSDIEEEID2, DB[2]);
hdmitx_wr_reg(HDMITX_DWC_FC_VSDPAYLOAD0, DB[3]);
hdmitx_wr_reg(HDMITX_DWC_FC_VSDSIZE, HB[2]);
- if (DB[3] == 0x20) { /* set HDMI VIC */
+ IEEECode = DB[0] | DB[1] << 8 | DB[2] << 16;
+ if ((IEEECode == HDMI_IEEEOUI) && (DB[3] == 0x20)) {
+ /* set HDMI VIC */
hdmitx_wr_reg(HDMITX_DWC_FC_AVIVID, 0);
hdmitx_wr_reg(HDMITX_DWC_FC_VSDPAYLOAD1, DB[4]);
}
- if (DB[3] == 0x40) { /* 3D VSI */
+ if ((IEEECode == HDMI_IEEEOUI) && (DB[3] == 0x40)) {
+ /* 3D VSI */
hdmitx_wr_reg(HDMITX_DWC_FC_VSDPAYLOAD1, DB[4]);
hdmitx_wr_reg(HDMITX_DWC_FC_VSDPAYLOAD2, DB[5]);
if ((DB[4] >> 4) == T3D_FRAME_PACKING)
else
hdmitx_wr_reg(HDMITX_DWC_FC_VSDSIZE, 6);
}
- if (HB[2] == 0x1b) {/*set dolby vsif data information*/
+ if ((IEEECode == DOVI_IEEEOUI) && (HB[2] == 0x1b)) {
+ /*set dolby vsif data information*/
hdmitx_wr_reg(HDMITX_DWC_FC_VSDPAYLOAD1, DB[4]);
hdmitx_wr_reg(HDMITX_DWC_FC_VSDPAYLOAD2, DB[5]);
hdmitx_wr_reg(HDMITX_DWC_FC_VSDPAYLOAD3, DB[6]);
hdmitx_wr_reg(HDMITX_DWC_FC_VSDPAYLOAD5, DB[8]);
}
/*set hdr 10+ vsif data information*/
- if ((DB[0] == 0x8b) && (DB[1] == 0x84) && (DB[2] == 0x90)) {
+ if (IEEECode == HDR10PLUS_IEEEOUI) {
for (i = 0; i < 23; i++)
hdmitx_wr_reg(HDMITX_DWC_FC_VSDPAYLOAD1 + i,
DB[4 + i]);
#define HDMITX_VIC_MASK 0xff
/* Refer to http://standards-oui.ieee.org/oui/oui.txt */
-#define HDMI_IEEEOUI 0x000C03
+#define HDMI_IEEEOUI 0x000C03
#define HF_IEEEOUI 0xC45DD8
+#define DOVI_IEEEOUI 0x00D046
+#define HDR10PLUS_IEEEOUI 0x90848B
+
#define GET_OUI_BYTE0(oui) (oui & 0xff) /* Little Endian */
#define GET_OUI_BYTE1(oui) ((oui >> 8) & 0xff)
#define GET_OUI_BYTE2(oui) ((oui >> 16) & 0xff)