• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 HiSilicon (Shanghai) Technologies CO., LIMITED.
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17  */
18 #include "drv_hdmi_common.h"
19 #include "drv_hdmi_infoframe.h"
20 #include "hdmi_product_define.h"
21 
22 hdmi_video_def g_vesa_video_codes_des[VESA_VIDEO_CODE_MAX] = {
23     { 0, 0,      0,     0,    0,    0,   0,   0,   0,   0,   0, 0, 0,  HDMI_PICTURE_ASPECT_NONE,
24         HDMI_VIDEO_TIMING_UNKNOWN,              HDMI_VIDEO_UNKNOWN,     "NONE"               },
25     { 0, 40000,  60317, 800,  600,  256, 28,  40,  128, 88,  1, 4, 23, HDMI_PICTURE_ASPECT_16_9,
26         HDMI_VIDEO_TIMING_VESA_800X600_60,      HDMI_VIDEO_PROGRESSIVE, "VESA800*600p60"     },
27     { 0, 33750,  60000, 848,  480,  240, 37,  16,  112, 112, 6, 8, 23, HDMI_PICTURE_ASPECT_16_9,
28         HDMI_VIDEO_TIMING_VESA_848X480_60,      HDMI_VIDEO_PROGRESSIVE, "VESA848*480p60"     },
29     { 0, 65000,  60004, 1024, 768,  320, 38,  24,  136, 160, 3, 6, 29, HDMI_PICTURE_ASPECT_16_9,
30         HDMI_VIDEO_TIMING_VESA_1024X768_60,     HDMI_VIDEO_PROGRESSIVE, "VESA1024*768p60"    },
31     { 0, 74250,  60000, 1280, 720,  370, 30,  110, 40,  220, 5, 5, 20, HDMI_PICTURE_ASPECT_16_9,
32         HDMI_VIDEO_TIMING_VESA_1280X720_60,     HDMI_VIDEO_PROGRESSIVE, "VESA1280*720p60"    },
33     { 0, 68250,  59995, 1280, 768,  160, 22,  48,  32,  80,  3, 7, 12, HDMI_PICTURE_ASPECT_16_9,
34         HDMI_VIDEO_TIMING_VESA_1280X768_60_RB,  HDMI_VIDEO_PROGRESSIVE, "VESA1280*768p60RB"  },
35     { 0, 79500,  59870, 1280, 768,  384, 30,  64,  128, 192, 3, 7, 20, HDMI_PICTURE_ASPECT_16_9,
36         HDMI_VIDEO_TIMING_VESA_1280X768_60,     HDMI_VIDEO_PROGRESSIVE, "VESA1280*768p60"    },
37     { 0, 71001,  59910, 1280, 800,  160, 23,  48,  32,  80,  3, 6, 14, HDMI_PICTURE_ASPECT_16_9,
38         HDMI_VIDEO_TIMING_VESA_1280X800_60_RB,  HDMI_VIDEO_PROGRESSIVE, "VESA1280*800p60RB"  },
39     { 0, 83500,  59810, 1280, 800,  400, 31,  72,  128, 200, 3, 6, 22, HDMI_PICTURE_ASPECT_16_9,
40         HDMI_VIDEO_TIMING_VESA_1280X800_60,     HDMI_VIDEO_PROGRESSIVE, "VESA1280*800p60"    },
41     { 0, 108000, 60000, 1280, 960,  520, 40,  96,  112, 312, 1, 3, 36, HDMI_PICTURE_ASPECT_16_9,
42         HDMI_VIDEO_TIMING_VESA_1280X960_60,     HDMI_VIDEO_PROGRESSIVE, "VESA1280*960p60"    },
43     { 0, 108000, 60020, 1280, 1024, 408, 42,  48,  112, 248, 1, 3, 38, HDMI_PICTURE_ASPECT_16_9,
44         HDMI_VIDEO_TIMING_VESA_1280X1024_60,    HDMI_VIDEO_PROGRESSIVE, "VESA1280*1024p60"   },
45     { 0, 85500,  60015, 1360, 768,  432, 27,  64,  112, 256, 3, 6, 18, HDMI_PICTURE_ASPECT_16_9,
46         HDMI_VIDEO_TIMING_VESA_1360X768_60,     HDMI_VIDEO_PROGRESSIVE, "VESA1360*768p60"    },
47     { 0, 85501,  59790, 1366, 768,  426, 30,  70,  143, 213, 3, 3, 24, HDMI_PICTURE_ASPECT_16_9,
48         HDMI_VIDEO_TIMING_VESA_1366X768_60,     HDMI_VIDEO_PROGRESSIVE, "VESA1366*768p60"    },
49     { 0, 121749, 59978, 1400, 1050, 464, 39,  88,  144, 232, 3, 4, 32, HDMI_PICTURE_ASPECT_16_9,
50         HDMI_VIDEO_TIMING_VESA_1400X1050_60,    HDMI_VIDEO_PROGRESSIVE, "VESA1400*1050p60"   },
51     { 0, 88749,  59901, 1440, 900,  160, 26,  48,  32,  80,  3, 6, 17, HDMI_PICTURE_ASPECT_16_9,
52         HDMI_VIDEO_TIMING_VESA_1440X900_60_RB,  HDMI_VIDEO_PROGRESSIVE, "VESA1440*900p60RB"  },
53     { 0, 106499, 59887, 1440, 900,  464, 34,  80,  152, 232, 3, 6, 25, HDMI_PICTURE_ASPECT_16_9,
54         HDMI_VIDEO_TIMING_VESA_1440X900_60,     HDMI_VIDEO_PROGRESSIVE, "VESA1440*900p60"    },
55     { 0, 108000, 60000, 1440, 1050, 144, 49,  12,  64,  68,  3, 6, 25, HDMI_PICTURE_ASPECT_16_9,
56         HDMI_VIDEO_TIMING_VESA_1440X1050_60,    HDMI_VIDEO_PROGRESSIVE, "VESA1440*1050p60"   },
57     { 0, 108000, 60000, 1440, 1050, 144, 49,  12,  64,  68,  3, 6, 25, HDMI_PICTURE_ASPECT_16_9,
58         HDMI_VIDEO_TIMING_VESA_1440X1050_60_RB, HDMI_VIDEO_PROGRESSIVE, "VESA1440*1050p60RB" },
59     { 0, 108000, 60000, 1600, 900,  200, 100, 24,  80,  96,  1, 3, 96, HDMI_PICTURE_ASPECT_16_9,
60         HDMI_VIDEO_TIMING_VESA_1600X900_60_RB,  HDMI_VIDEO_PROGRESSIVE, "VESA1600*900p60"    },
61     { 0, 162000, 60000, 1600, 1200, 560, 50,  64,  192, 304, 1, 3, 46, HDMI_PICTURE_ASPECT_16_9,
62         HDMI_VIDEO_TIMING_VESA_1600X1200_60,    HDMI_VIDEO_PROGRESSIVE, "VESA1600*1200p60"   },
63     { 0, 118999, 59883, 1680, 1050, 160, 30,  48,  32,  80,  3, 6, 21, HDMI_PICTURE_ASPECT_16_9,
64         HDMI_VIDEO_TIMING_VESA_1680X1050_60_RB, HDMI_VIDEO_PROGRESSIVE, "VESA1680*1050p60RB" },
65     { 0, 146249, 59954, 1680, 1050, 560, 39,  104, 176, 280, 3, 6, 30, HDMI_PICTURE_ASPECT_16_9,
66         HDMI_VIDEO_TIMING_VESA_1680X1050_60,    HDMI_VIDEO_PROGRESSIVE, "VESA1680*1050p60"   },
67     { 0, 204751, 60000, 1792, 1344, 656, 50,  128, 200, 328, 1, 3, 46, HDMI_PICTURE_ASPECT_16_9,
68         HDMI_VIDEO_TIMING_VESA_1792X1344_60,    HDMI_VIDEO_PROGRESSIVE, "VESA1792*1344p60"   },
69     { 0, 218249, 59995, 1856, 1392, 672, 47,  96,  224, 352, 1, 3, 43, HDMI_PICTURE_ASPECT_16_9,
70         HDMI_VIDEO_TIMING_VESA_1856X1392_60,    HDMI_VIDEO_PROGRESSIVE, "VESA1856*1392p60"   },
71     { 0, 148500, 60000, 1920, 1080, 280, 45,  88,  44,  148, 4, 5, 36, HDMI_PICTURE_ASPECT_16_9,
72         HDMI_VIDEO_TIMING_VESA_1920X1080_60,    HDMI_VIDEO_PROGRESSIVE, "VESA1920*1080p60"   },
73     { 0, 154000, 59950, 1920, 1200, 160, 35,  48,  32,  80,  3, 6, 26, HDMI_PICTURE_ASPECT_16_9,
74         HDMI_VIDEO_TIMING_VESA_1920X1200_60_RB, HDMI_VIDEO_PROGRESSIVE, "VESA1920*1200p60RB" },
75     { 0, 193251, 59885, 1920, 1200, 672, 45,  136, 200, 336, 3, 6, 36, HDMI_PICTURE_ASPECT_16_9,
76         HDMI_VIDEO_TIMING_VESA_1920X1200_60,    HDMI_VIDEO_PROGRESSIVE, "VESA1920*1200p60"   },
77     { 0, 234000, 60000, 1920, 1440, 680, 60,  128, 208, 344, 1, 3, 56, HDMI_PICTURE_ASPECT_16_9,
78         HDMI_VIDEO_TIMING_VESA_1920X1440_60,    HDMI_VIDEO_PROGRESSIVE, "VESA1920*1440p60"   },
79     { 0, 162000, 60000, 2048, 1152, 202, 48,  26,  80,  96,  1, 3, 44, HDMI_PICTURE_ASPECT_16_9,
80         HDMI_VIDEO_TIMING_VESA_2048X1152_60,    HDMI_VIDEO_PROGRESSIVE, "VESA2048*1152p60"   },
81     { 0, 82500,  50000, 2560, 1440, 520, 30,  260, 40,  220, 3, 3, 24, HDMI_PICTURE_ASPECT_16_9,
82         HDMI_VIDEO_TIMING_VESA_2560X1440_60_RB, HDMI_VIDEO_PROGRESSIVE, "VESA2560*1440p60RB" },
83     { 0, 348502, 59987, 2560, 1600, 944, 58,  192, 280, 472, 3, 6, 49, HDMI_PICTURE_ASPECT_16_9,
84         HDMI_VIDEO_TIMING_VESA_2560X1600_60,    HDMI_VIDEO_PROGRESSIVE, "VESA2560*1600p60"   }
85 };
86 
87 hdmi_video_def g_cea_video_codes_des[CEA_VIDEO_CODE_MAX] = {
88     { 0,                          0,       0,      0,    0,    0,    0,   0,    0,   0,   0,  0,  0,
89       HDMI_PICTURE_ASPECT_NONE,    HDMI_VIDEO_TIMING_UNKNOWN,          HDMI_VIDEO_UNKNOWN,     "NONE" },
90     { HDMI_640X480P60_4_3,        25175,   59940,  640,  480,  160,  45,  16,   96,  48,  10, 2,  33,
91       HDMI_PICTURE_ASPECT_4_3,     HDMI_VIDEO_TIMING_640X480P_60000,   HDMI_VIDEO_PROGRESSIVE, "640*480p60 4:3" },
92     { HDMI_720X480P60_4_3,        27000,   59940,  720,  480,  138,  45,  16,   62,  60,  9,  6,  30,
93       HDMI_PICTURE_ASPECT_4_3,     HDMI_VIDEO_TIMING_720X480P_60000,   HDMI_VIDEO_PROGRESSIVE, "720*480p60 4:3" },
94     { HDMI_720X480P60_16_9,       27000,   59940,  720,  480,  138,  45,  16,   62,  60,  9,  6,  30,
95       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_720X480P_60000,   HDMI_VIDEO_PROGRESSIVE, "720*480p60 16:9" },
96     { HDMI_1280X720P60_16_9,      74250,   60000,  1280, 720,  370,  30,  110,  40,  220, 5,  5,  20,
97       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_1280X720P_60000,  HDMI_VIDEO_PROGRESSIVE, "1280*720p60 16:9" },
98     { HDMI_1920X1080I60_16_9,     74250,   60000,  1920, 1080, 280,  22,  88,   44,  148, 2,  5,  15,
99       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_1920X1080I_60000, HDMI_VIDEO_INTERLACE,   "1920*1080i60 16:9" },
100     { HDMI_1440X480I60_4_3,       27000,   59940,  1440, 480,  276,  22,  38,   124, 114, 4,  3,  15,
101       HDMI_PICTURE_ASPECT_4_3,     HDMI_VIDEO_TIMING_1440X480I_60000,  HDMI_VIDEO_INTERLACE,   "1440*480i60 4:3" },
102     { HDMI_1440X480I60_16_9,      27000,   59940,  1440, 480,  276,  22,  38,   124, 114, 4,  3,  15,
103       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_1440X480I_60000,  HDMI_VIDEO_INTERLACE,   "1440*480i60 16:9" },
104     { HDMI_1440X240P60_4_3,       27000,   60054,  1440, 240,  276,  22,  38,   124, 114, 4,  3,  15,
105       HDMI_PICTURE_ASPECT_4_3,     HDMI_VIDEO_TIMING_1440X240P_60000,  HDMI_VIDEO_PROGRESSIVE, "1440*240p60 4:3" },
106     { HDMI_1440X240P60_16_9,      27000,   60054,  1440, 240,  276,  22,  38,   124, 114, 4,  3,  15,
107       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_1440X240P_60000,  HDMI_VIDEO_PROGRESSIVE, "1440*240p60 16:9" },
108     { HDMI_2880X480I60_4_3,       54000,   59940,  2880, 480,  552,  22,  76,   248, 228, 4,  3,  15,
109       HDMI_PICTURE_ASPECT_4_3,     HDMI_VIDEO_TIMING_2880X480I_60000,  HDMI_VIDEO_INTERLACE,   "2880*480i60 4:3" },
110     { HDMI_2880X480I60_16_9,      54000,   59940,  2880, 480,  552,  22,  76,   248, 228, 4,  3,  15,
111       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_2880X480I_60000,  HDMI_VIDEO_INTERLACE,   "2880*480i60 16:9" },
112     { HDMI_2880X240P60_4_3,       54000,   60054,  2880, 240,  552,  22,  76,   248, 228, 4,  3,  15,
113       HDMI_PICTURE_ASPECT_4_3,     HDMI_VIDEO_TIMING_2880X240I_60000,  HDMI_VIDEO_PROGRESSIVE, "2880*240i60 4:3" },
114     { HDMI_2880X240P60_16_9,      54000,   60054,  2880, 240,  552,  23,  76,   248, 228, 4,  3,  15,
115       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_2880X240I_60000,  HDMI_VIDEO_PROGRESSIVE, "2880*240i60 16:9" },
116     { HDMI_1440X480P60_4_3,       54000,   59940,  1440, 480,  276,  45,  32,   124, 120, 9,  6,  30,
117       HDMI_PICTURE_ASPECT_4_3,     HDMI_VIDEO_TIMING_1440X480P_60000,  HDMI_VIDEO_PROGRESSIVE, "1440*480p60 4:3" },
118     { HDMI_1440X480P60_16_9,      54000,   59940,  1440, 480,  276,  45,  32,   124, 120, 9,  6,  30,
119       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_1440X480P_60000,  HDMI_VIDEO_PROGRESSIVE, "1440*480p60 16:9" },
120     { HDMI_1920X1080P60_16_9,     148500,  60000,  1920, 1080, 280,  45,  88,   44,  148, 4,  5,  36,
121       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_1920X1080P_60000, HDMI_VIDEO_PROGRESSIVE, "1920*1080p60 16:9" },
122     { HDMI_720X576P50_4_3,        27000,   50000,  720,  576,  144,  49,  12,   64,  68,  5,  5,  39,
123       HDMI_PICTURE_ASPECT_4_3,     HDMI_VIDEO_TIMING_720X576P_50000,   HDMI_VIDEO_PROGRESSIVE, "720*576p50 4:3" },
124     { HDMI_720X576P50_16_9,       27000,   50000,  720,  576,  144,  49,  12,   64,  68,  5,  5,  39,
125       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_720X576P_50000,   HDMI_VIDEO_PROGRESSIVE, "720*576p50 16:9" },
126     { HDMI_1280X720P50_16_9,      74250,   50000,  1280, 720,  700,  30,  440,  40,  220, 5,  5,  20,
127       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_1280X720P_50000,  HDMI_VIDEO_PROGRESSIVE, "1280*720p50 16:9" },
128     { HDMI_1920X1080I50_16_9,     74250,   50000,  1920, 1080, 720,  24,  528,  44,  148, 2,  5,  15,
129       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_1920X1080I_50000, HDMI_VIDEO_INTERLACE,   "1920*1080i50 16:9" },
130     { HDMI_1440X576I50_4_3,       27000,   50000,  1440, 576,  288,  24,  24,   126, 138, 2,  3,  19,
131       HDMI_PICTURE_ASPECT_4_3,     HDMI_VIDEO_TIMING_1440X576I_50000,  HDMI_VIDEO_INTERLACE,   "1440*576i50 4:3" },
132     { HDMI_1440X576I50_16_9,      27000,   50000,  1440, 576,  288,  24,  24,   126, 138, 2,  3,  19,
133       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_1440X576I_50000,  HDMI_VIDEO_INTERLACE,   "1440*576i50 16:9" },
134     { HDMI_1440X576P50_4_3,       54000,   50000,  1440, 576,  288,  49,  24,   128, 136, 5,  5,  39,
135       HDMI_PICTURE_ASPECT_4_3,     HDMI_VIDEO_TIMING_1440X576P_50000,  HDMI_VIDEO_PROGRESSIVE, "1440*576p50 4:3" },
136     { HDMI_1440X576P50_16_9,      54000,   50000,  1440, 576,  288,  49,  24,   128, 136, 5,  5,  39,
137       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_1440X576P_50000,  HDMI_VIDEO_PROGRESSIVE, "1440*576p50 16:9" },
138     { HDMI_1920X1080P50_16_9,     148500,  50000,  1920, 1080, 720,  45,  528,  44,  148, 4,  5,  36,
139       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_1920X1080P_50000, HDMI_VIDEO_PROGRESSIVE, "1920*1080p50 16:9" },
140     { HDMI_1920X1080P24_16_9,     742500,  24000,  1920, 1080, 830,  45,  638,  44,  148, 4,  5,  36,
141       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_1920X1080P_24000, HDMI_VIDEO_PROGRESSIVE, "1920*1080p24 16:9" },
142     { HDMI_1920X1080P25_16_9,     742500,  25000,  1920, 1080, 720,  45,  528,  44,  148, 4,  5,  36,
143       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_1920X1080P_25000, HDMI_VIDEO_PROGRESSIVE, "1920*1080p25 16:9" },
144     { HDMI_1920X1080P30_16_9,     742500,  30000,  1920, 1080, 280,  45,  88,   44,  148, 4,  5,  36,
145       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_1920X1080P_30000, HDMI_VIDEO_PROGRESSIVE, "1920*1080p30 16:9" },
146     { HDMI_3840X2160P24_16_9,     297000,  24000,  3840, 2160, 1660, 90,  1276, 88,  296, 8,  10, 72,
147       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_3840X2160P_24000, HDMI_VIDEO_PROGRESSIVE, "3840*2160p24 16:9" },
148     { HDMI_3840X2160P25_16_9,     297000,  25000,  3840, 2160, 1440, 90,  1056, 88,  296, 8,  10, 72,
149       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_3840X2160P_25000, HDMI_VIDEO_PROGRESSIVE, "3840*2160p25 16:9" },
150     { HDMI_3840X2160P30_16_9,     297000,  30000,  3840, 2160, 560,  90,  176,  88,  296, 8,  10, 72,
151       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_3840X2160P_30000, HDMI_VIDEO_PROGRESSIVE, "3840*2160p30 16:9" },
152     { HDMI_3840X2160P50_16_9,     594000,  50000,  3840, 2160, 1440, 90,  1056, 88,  296, 8,  10, 72,
153       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_3840X2160P_50000, HDMI_VIDEO_PROGRESSIVE, "3840*2160p50 16:9" },
154     { HDMI_3840X2160P60_16_9,     594000,  60000,  3840, 2160, 560,  90,  176,  88,  296, 8,  10, 72,
155       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_3840X2160P_60000, HDMI_VIDEO_PROGRESSIVE, "3840*2160p60 16:9" },
156     { HDMI_4096X2160P24_256_135,  297000,  24000,  4096, 2160, 1404, 90,  1020, 88,  296, 8,  10, 72,
157       HDMI_PICTURE_ASPECT_256_135, HDMI_VIDEO_TIMING_4096X2160P_24000, HDMI_VIDEO_PROGRESSIVE, "4096*2160p24 256:135" },
158     { HDMI_4096X2160P25_256_135,  297000,  25000,  4096, 2160, 1184, 90,  968,  88,  128, 8,  10, 72,
159       HDMI_PICTURE_ASPECT_256_135, HDMI_VIDEO_TIMING_4096X2160P_25000, HDMI_VIDEO_PROGRESSIVE, "4096*2160p25 256:135" },
160     { HDMI_4096X2160P30_256_135,  297000,  30000,  4096, 2160, 304,  90,  88,   88,  128, 8,  10, 72,
161       HDMI_PICTURE_ASPECT_256_135, HDMI_VIDEO_TIMING_4096X2160P_30000, HDMI_VIDEO_PROGRESSIVE, "4096*2160p30 256:135" },
162     { HDMI_4096X2160P50_256_135,  594000,  50000,  4096, 2160, 1184, 90,  968,  88,  128, 8,  10, 72,
163       HDMI_PICTURE_ASPECT_256_135, HDMI_VIDEO_TIMING_4096X2160P_50000, HDMI_VIDEO_PROGRESSIVE, "4096*2160p50 256:135" },
164     { HDMI_4096X2160P60_256_135,  594000,  60000,  4096, 2160, 304,  90,  88,   88,  128, 8,  10, 72,
165       HDMI_PICTURE_ASPECT_256_135, HDMI_VIDEO_TIMING_4096X2160P_60000, HDMI_VIDEO_PROGRESSIVE, "4096*2160p60 256:135" },
166     { HDMI_3840X2160P120_16_9,    1188000, 120000, 3840, 2160, 560,  90,  176,  88,  296, 8,  10, 72,
167       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_3840X2160P_120000, HDMI_VIDEO_PROGRESSIVE, "3840*2160p120 16:9" },
168     { HDMI_7680X4320P24_16_9,     1188000, 24000,  7680, 4320, 3320, 180, 2552, 176, 592, 16, 20, 144,
169       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_7680X4320P_24000, HDMI_VIDEO_PROGRESSIVE, "7680*4320p24 16:9" },
170     { HDMI_7680X4320P25_16_9,     1188000, 25000,  7680, 4320, 3120, 80,  2352, 176, 592, 16, 20, 44,
171       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_7680X4320P_25000, HDMI_VIDEO_PROGRESSIVE, "7680*4320p25 16:9" },
172     { HDMI_7680X4320P30_16_9,     1188000, 30000,  7680, 4320, 1320, 80,  552,  176, 592, 16, 20, 44,
173       HDMI_PICTURE_ASPECT_16_9,    HDMI_VIDEO_TIMING_7680X4320P_30000, HDMI_VIDEO_PROGRESSIVE, "7680*4320p30 16:9" },
174     { HDMI_4096X2160P120_256_135, 1188000, 120000, 4096, 2160, 304,  90,  88,   88,  128, 8,  10, 72,
175       HDMI_PICTURE_ASPECT_256_135, HDMI_VIDEO_TIMING_4096X2160P_120000, HDMI_VIDEO_PROGRESSIVE, "4096*2160p120 16:9" }
176 };
177 
178 // 4k mode
179 hdmi_video_4k_def g_h14b_hdmi_video_codes_4k[CEA861_F_VIDEO_CODES_MAX_4K] = {
180     { 1, HDMI_3840X2160P30_16_9,    296703, 30, 3840, 2160, HDMI_PICTURE_ASPECT_16_9,
181         HDMI_VIDEO_TIMING_3840X2160P_30000, HDMI_VIDEO_PROGRESSIVE, "3840*2160p30 16:9"    },
182     { 2, HDMI_3840X2160P25_16_9,    297000, 25, 3840, 2160, HDMI_PICTURE_ASPECT_16_9,
183         HDMI_VIDEO_TIMING_3840X2160P_25000, HDMI_VIDEO_PROGRESSIVE, "3840*2160p25 16:9"    },
184     { 3, HDMI_3840X2160P24_16_9,    296703, 24, 3840, 2160, HDMI_PICTURE_ASPECT_16_9,
185         HDMI_VIDEO_TIMING_3840X2160P_24000, HDMI_VIDEO_PROGRESSIVE, "3840*2160p24 16:9"    },
186     { 4, HDMI_4096X2160P24_256_135, 297000, 24, 4096, 2160, HDMI_PICTURE_ASPECT_256_135,
187         HDMI_VIDEO_TIMING_4096X2160P_24000, HDMI_VIDEO_PROGRESSIVE, "4096*2160p24 256:135" }
188 };
189 
190 /* des: vic search */
drv_hdmi_vic_search(hdmi_video_timing timing,hdmi_picture_aspect aspect,hi_bool _3d_enable)191 hdmi_video_code_vic drv_hdmi_vic_search(hdmi_video_timing timing, hdmi_picture_aspect aspect, hi_bool _3d_enable)
192 {
193     hi_u32 i;
194     hdmi_video_def *video_id = &g_cea_video_codes_des[0];
195     hdmi_video_code_vic vic = 0;
196 
197     for (i = 0; i < hdmi_array_size(g_cea_video_codes_des); i++, video_id++) {
198         if ((timing == video_id->timing) && (aspect == video_id->aspect_ratio)) {
199             vic = video_id->video_code;
200             break;
201         }
202     }
203 
204     if (_3d_enable == HI_TRUE) {
205         /*
206          * VIC = 0 when the timing is HDMI_3840X2160P24_16_9, HDMI_3840X2160P25_16_9,
207          * HDMI_3840X2160P30_16_9, HDMI_4096X2160P24_256_135 at 2D mode
208          */
209         if (vic == HDMI_3840X2160P24_16_9 || vic == HDMI_3840X2160P25_16_9 ||
210             vic == HDMI_3840X2160P30_16_9 || vic == HDMI_4096X2160P24_256_135) {
211             hdmi_info("4k x 2k 2D vic:%u \n", vic);
212             vic = 0;
213         }
214     }
215 
216     return vic;
217 }
218 
drv_hdmi_vic_to_index(hi_u32 vic)219 hi_u32 drv_hdmi_vic_to_index(hi_u32 vic)
220 {
221     hi_u32 i;
222     hdmi_video_def *video_id = &g_cea_video_codes_des[0];
223 
224     for (i = 0; i < hdmi_array_size(g_cea_video_codes_des); i++, video_id++) {
225         if (vic == video_id->video_code) {
226             break;
227         }
228     }
229 
230     return i;
231 }
232 
drv_hdmi_video_timing_get(hdmi_video_code_vic vic,hdmi_picture_aspect aspect)233 hdmi_video_timing drv_hdmi_video_timing_get(hdmi_video_code_vic vic, hdmi_picture_aspect aspect)
234 {
235     hi_u32 cnt;
236     hdmi_video_timing video_timing = HDMI_VIDEO_TIMING_UNKNOWN;
237 
238     for (cnt = 0; cnt < hdmi_array_size(g_cea_video_codes_des); cnt++) {
239         if (g_cea_video_codes_des[cnt].video_code == vic &&
240             g_cea_video_codes_des[cnt].aspect_ratio == aspect) {
241             video_timing = g_cea_video_codes_des[cnt].timing;
242             break;
243         }
244     }
245 
246     return video_timing;
247 }
248 
drv_hdmi_vsif_video_timing_get(hdmi_vsif_vic vic)249 hdmi_video_timing drv_hdmi_vsif_video_timing_get(hdmi_vsif_vic vic)
250 {
251     hi_u32 cnt;
252     hdmi_video_timing video_timing = 0;
253 
254     for (cnt = 0; cnt < hdmi_array_size(g_h14b_hdmi_video_codes_4k); cnt++) {
255         if (g_h14b_hdmi_video_codes_4k[cnt].hdmi_vic == vic) {
256             video_timing = g_h14b_hdmi_video_codes_4k[cnt].timing;
257             break;
258         }
259     }
260 
261     return video_timing;
262 }
263 
drv_hdmi_video_codes_4k_get(hi_u32 vic)264 hdmi_video_4k_def *drv_hdmi_video_codes_4k_get(hi_u32 vic)
265 {
266     hi_u32 i;
267     hdmi_video_4k_def *tmp_fmt = HI_NULL;
268 
269     for (i = 0, tmp_fmt = &g_h14b_hdmi_video_codes_4k[0];
270          i < hdmi_array_size(g_h14b_hdmi_video_codes_4k);
271          i++, tmp_fmt++) {
272         if (tmp_fmt->hdmi_vic == vic) {
273             return tmp_fmt;
274         }
275     }
276     hdmi_warn("not support vic=%u\n", vic);
277     return HI_NULL;
278 }
279 
drv_hdmi_comm_format_param_get(hdmi_video_code_vic vic)280 hdmi_video_def *drv_hdmi_comm_format_param_get(hdmi_video_code_vic vic)
281 {
282     hi_u32 i;
283     hdmi_video_def *tmp_fmt = HI_NULL;
284 
285     for (i = 0, tmp_fmt = &g_cea_video_codes_des[0];
286          i < hdmi_array_size(g_cea_video_codes_des);
287          i++, tmp_fmt++) {
288         if (tmp_fmt->video_code == vic) {
289             return tmp_fmt;
290         }
291     }
292     hdmi_warn("not support vic=%u\n", vic);
293     return HI_NULL;
294 }
295 
296 #ifdef HDMI_FRL_SUPPORT
drv_hdmi_vesa_format_param_get(hdmi_video_timing timing)297 hdmi_video_def *drv_hdmi_vesa_format_param_get(hdmi_video_timing timing)
298 {
299     hi_u32 i;
300     hdmi_video_def *tmp_fmt = HI_NULL;
301 
302     for (i = 0, tmp_fmt = &g_vesa_video_codes_des[0];
303          i < hdmi_array_size(g_vesa_video_codes_des);
304          i++, tmp_fmt++) {
305         if (tmp_fmt->timing == timing) {
306             return tmp_fmt;
307         }
308     }
309     hdmi_warn("not support vic=%u\n", timing);
310 
311     return HI_NULL;
312 }
313 #endif
314 
hdmi_reg_write(volatile hi_void * reg_addr,hi_u32 value)315 hi_void hdmi_reg_write(volatile hi_void *reg_addr, hi_u32 value)
316 {
317     if (reg_addr != HI_NULL) {
318         *(volatile hi_u32 *)reg_addr = value;
319     }
320 }
321 
hdmi_reg_read(volatile hi_void * reg_addr)322 hi_u32 hdmi_reg_read(volatile hi_void *reg_addr)
323 {
324     if (reg_addr == HI_NULL) {
325         return 0;
326     }
327     return *(volatile hi_u32 *)reg_addr;
328 }
329 
drv_hdmi_milli_delay(hi_u32 m_sec)330 hi_void drv_hdmi_milli_delay(hi_u32 m_sec)
331 {
332     osal_msleep(m_sec);
333 }
334 
335