• 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 #ifndef __DRV_HDMI_IOCTL_H__
19 #define __DRV_HDMI_IOCTL_H__
20 
21 #include "hi_type.h"
22 #include "autoconf.h"
23 #include "drv_hdmi_infoframe.h"
24 #include "drv_hdmi_edid.h"
25 #include "drv_hdmi_common.h"
26 #if defined(CONFIG_HI_PLATFORM_H8)
27 #include "hi_common_hdmi.h"
28 #else
29 #include "hi_comm_hdmi.h"
30 #include "hi_comm_hdmi_adapt.h"
31 #endif
32 #include "mkp_ioctl.h"
33 
34 typedef struct {
35     hdmi_device_id hdmi_id;
36     hdmi_video_capability video_cap;
37 } drv_hdmi_video_capability;
38 
39 #if defined(CONFIG_HI_PLATFORM_H8)
40 typedef hi_hdmi_colorimetry     drv_hdmi_colorimetry;
41 typedef hi_hdmi_rgb_quant_range drv_hdmi_rgb_quant_range;
42 typedef hi_hdmi_ycc_quant_range drv_hdmi_ycc_quant_range;
43 typedef hi_hdmi_pic_scaline     drv_hdmi_pic_scaline;
44 #else
45 typedef HI_HDMI_VIDEO_FMT_E       hi_hdmi_video_format;
46 typedef HI_HDMI_COLORIMETRY_E     drv_hdmi_colorimetry;
47 typedef HI_HDMI_RGB_QUAN_RAGE_E   drv_hdmi_rgb_quant_range;
48 typedef HI_HDMI_YCC_QUAN_RAGE_E   drv_hdmi_ycc_quant_range;
49 typedef HI_HDMI_PICTURE_SCALING_E drv_hdmi_pic_scaline;
50 #endif
51 
52 typedef struct {
53     hi_hdmi_video_format     video_fmt;
54     hi_u32                   clk_fs;
55     hi_u32                   pixel_repeat;
56     hdmi_3d_mode             stereo_mode;
57     hi_hdmi_video_mode       in_color_space;
58     hdmi_hvsync_polarity     hv_sync_pol;
59     drv_hdmi_colorimetry     colorimetry;
60     drv_hdmi_rgb_quant_range rgb_quantization;
61     drv_hdmi_ycc_quant_range ycc_quantization;
62     hi_pic_aspect_ratio      picture_aspect;
63     hdmi_active_aspect       active_aspect;
64     drv_hdmi_pic_scaline     picture_scaling;
65     hi_hdmi_deep_color       in_bit_depth;
66 } hdmi_video_attr;
67 
68 typedef struct {
69     hdmi_device_id  hdmi_id;
70     hdmi_video_attr video_attr;
71 } drv_hdmi_disp_attr;
72 
73 typedef struct {
74     hdmi_device_id      hdmi_id;
75     hdmi_default_action default_mode;
76 } hdmi_open;
77 
78 typedef struct {
79     hdmi_device_id hdmi_id;
80     hdmi_event     event;
81 } drv_hdmi_event;
82 
83 typedef struct {
84     hdmi_device_id      hdmi_id;
85     hdmi_default_action default_action;
86 } drv_hdmi_default_action;
87 
88 typedef struct {
89     hdmi_device_id        hdmi_id;
90     hdmi_audio_capability audio_cap;
91 } drv_hdmi_audio_capability;
92 
93 typedef struct {
94     hdmi_device_id       hdmi_id;
95     hdmi_sink_capability cap;
96 } drv_hdmi_sink_capability;
97 
98 typedef struct {
99     hdmi_device_id hdmi_id;
100     hdmi_property  prop;
101 } drv_hdmi_property;
102 
103 typedef struct {
104     hdmi_device_id hdmi_id;
105     hdmi_vo_attr   vo_attr;
106 } drv_hdmi_vo_attr;
107 
108 typedef struct {
109     hdmi_device_id    hdmi_id;
110     hdmi_infoframe_id infoframe_id;
111     hdmi_infoframe    infoframe;
112 } drv_hdmi_infoframe;
113 
114 typedef struct {
115     hdmi_device_id hdmi_id;
116     hi_bool        avmute;
117 } drv_hdmi_avmute;
118 
119 typedef struct {
120     hdmi_device_id  hdmi_id;
121     hdmi_deep_color deep_color_mode;
122 } drv_hdmi_deep_color;
123 
124 typedef struct {
125     hdmi_device_id hdmi_id;
126     hdmi_cec_info  cec_info;
127 } drv_hdmi_cec_info;
128 
129 typedef struct {
130     hdmi_device_id hdmi_id;
131     hdmi_cec_cmd   cec_cmd;
132     hi_u32 timeout;
133 } drv_hdmi_cec_cmd_code;
134 
135 typedef struct {
136     hdmi_device_id     hdmi_id;
137     hdmi_edid_raw_data edid_raw;
138 } drv_hdmi_edid_raw_data;
139 
140 typedef struct {
141     hdmi_device_id hdmi_id;
142     hdmi_load_key  key;
143 } drv_hdmi_load_key;
144 
145 typedef struct {
146     hdmi_device_id hdmi_id;
147     hdmi_status    status;
148 } drv_hdmi_status;
149 
150 typedef struct {
151     hdmi_device_id hdmi_id;
152     hi_bool        enable;
153 } drv_hdmi_xvycc_enable;
154 
155 typedef struct {
156     hdmi_device_id hdmi_id;
157     hi_u32         status;
158 } drv_hdmi_play_status;
159 
160 typedef struct {
161     hdmi_device_id hdmi_id;
162     hdmi_delay     delay;
163 } drv_hdmi_delay;
164 
165 typedef struct {
166     hdmi_device_id    hdmi_id;
167     drv_hdmi_hdr_attr hdr_attr;
168 } drv_hdmi_hdr;
169 
170 typedef struct {
171     hdmi_device_id hdmi_id;
172     hdmi_trace_len trace_len;
173 } drv_hdmi_mod_param;
174 
175 typedef struct {
176     hdmi_device_id hdmi_id;
177     hdmi_hw_spec   hw_spec;
178 } drv_hdmi_hw_spec;
179 
180 enum hi_ioctl_hdmi {
181     IOCTL_HDMI_INIT = 0x01,
182     IOCTL_HDMI_DEINIT,
183     IOCTL_HDMI_OPEN,
184     IOCTL_HDMI_CLOSE,
185     IOCTL_HDMI_START,
186     IOCTL_HDMI_STOP,
187     IOCTL_HDMI_GET_AUDIO_CAPABILITY,
188     IOCTL_HDMI_GET_SINK_CAPABILITY,
189     IOCTL_HDMI_POLL_EVENT,
190     IOCTL_HDMI_GET_ATTR,
191     IOCTL_HDMI_SET_ATTR,
192     IOCTL_HDMI_GET_VO_ATTR,
193     IOCTL_HDMI_SET_VO_ATTR,
194     IOCTL_HDMI_GET_INFOFRAME,
195     IOCTL_HDMI_SET_INFOFRAME,
196     IOCTL_HDMI_AVMUTE,
197     IOCTL_HDMI_GET_DEEPCOLOR,
198     IOCTL_HDMI_SET_DEEPCOLOR,
199     IOCTL_HDMI_XVYCC,
200     IOCTL_HDMI_SET_CEC,
201     IOCTL_HDMI_GET_CEC,
202     IOCTL_HDMI_GET_CECSTATUS,
203     IOCTL_HDMI_UPDATE_EDID,
204     IOCTL_HDMI_GET_HDMI_PLAYSTATUS,
205     IOCTL_HDMI_CEC_ENABLE,
206     IOCTL_HDMI_CEC_DISABLE,
207     IOCTL_HDMI_REG_CALLBACK_FUNC,
208     IOCTL_HDMI_LOAD_KEY,
209     IOCTL_HDMI_LOAD_HDCP22_CODE,
210     IOCTL_HDMI_GET_STATUS,
211     IOCTL_HDMI_GET_DELAY,
212     IOCTL_HDMI_SET_DELAY,
213     IOCTL_HDMI_REGISTER_CALLBACK,
214     IOCTL_HDMI_UNREGISTER_CALLBACK,
215     IOCTL_HDMI_GET_VIDEO_CAPABILITY,
216     IOCTL_HDMI_SET_DISP_ATTR,
217     IOCTL_HDMI_SET_MOD_PARAM,
218     IOCTL_HDMI_GET_MOD_PARAM,
219     IOCTL_HDMI_SET_HW_SPEC,
220     IOCTL_HDMI_GET_HW_SPEC,
221 #ifdef HDMI_HDR_SUPPORT
222     IOCTL_HDMI_GET_HDR_ATTR,
223     IOCTL_HDMI_SET_HDR_ATTR,
224 #endif
225     IOCTL_HDMI_MAX
226 };
227 
228 #define CMD_HDMI_INIT                 _IO(IOC_TYPE_HDMI, IOCTL_HDMI_INIT)
229 #define CMD_HDMI_DEINIT               _IO(IOC_TYPE_HDMI, IOCTL_HDMI_DEINIT)
230 #define CMD_HDMI_OPEN                 _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_OPEN, drv_hdmi_default_action)
231 #define CMD_HDMI_CLOSE                _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_CLOSE, hdmi_device_id)
232 #define CMD_HDMI_START                _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_START, hdmi_device_id)
233 #define CMD_HDMI_STOP                 _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_STOP, hdmi_device_id)
234 #define CMD_HDMI_GET_AUDIO_CAPABILITY _IOWR(HI_ID_HDMI, IOCTL_HDMI_GET_AUDIO_CAPABILITY, drv_hdmi_audio_capability)
235 #define CMD_HDMI_GET_SINK_CAPABILITY  _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_GET_SINK_CAPABILITY, drv_hdmi_sink_capability)
236 #define CMD_HDMI_POLL_EVENT           _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_POLL_EVENT, drv_hdmi_event)
237 #define CMD_HDMI_GET_INFOFRAME        _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_GET_INFOFRAME, drv_hdmi_infoframe)
238 #define CMD_HDMI_SET_INFOFRAME        _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_SET_INFOFRAME, drv_hdmi_infoframe)
239 #define CMD_HDMI_SET_AVMUTE           _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_AVMUTE, drv_hdmi_avmute)
240 #define CMD_HDMI_GET_DEEPCOLOR        _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_GET_DEEPCOLOR, drv_hdmi_deep_color)
241 #define CMD_HDMI_SET_DEEPCOLOR        _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_SET_DEEPCOLOR, drv_hdmi_deep_color)
242 #define CMD_HDMI_SET_XVYCC            _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_XVYCC, drv_hdmi_xvycc_enable)
243 #define CMD_HDMI_GET_CEC              _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_GET_CEC, drv_hdmi_cec_cmd_code)
244 #define CMD_HDMI_SET_CEC              _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_SET_CEC, drv_hdmi_cec_cmd_code)
245 #define CMD_HDMI_GET_CECSTATUS        _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_GET_CECSTATUS, drv_hdmi_cec_info)
246 #define CMD_HDMI_UPDATE_EDID          _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_UPDATE_EDID, drv_hdmi_edid_raw_data)
247 #define CMD_HDMI_GET_HDMI_PLAYSTATUS  _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_GET_HDMI_PLAYSTATUS, drv_hdmi_play_status)
248 #define CMD_HDMI_CEC_ENABLE           _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_CEC_ENABLE, hdmi_device_id)
249 #define CMD_HDMI_CEC_DISABLE          _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_CEC_DISABLE, hdmi_device_id)
250 #define CMD_HDMI_LOAD_KEY             _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_LOAD_KEY, drv_hdmi_load_key)
251 #define CMD_HDMI_GET_STATUS           _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_GET_STATUS, drv_hdmi_status)
252 #define CMD_HDMI_GET_DELAY            _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_GET_DELAY, hdmi_delay)
253 #define CMD_HDMI_SET_DELAY            _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_SET_DELAY, hdmi_delay)
254 #define CMD_HDMI_GET_VIDEO_CAPABILITY _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_GET_VIDEO_CAPABILITY, drv_hdmi_video_capability)
255 #define CMD_HDMI_SET_DISP_ATTR        _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_SET_DISP_ATTR, drv_hdmi_disp_attr)
256 #define CMD_HDMI_REGISTER_CALLBACK    _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_REGISTER_CALLBACK, hdmi_device_id)
257 #define CMD_HDMI_UNREGISTER_CALLBACK  _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_UNREGISTER_CALLBACK, hdmi_device_id)
258 #define CMD_HDMI_SET_MOD_PARAM        _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_SET_MOD_PARAM, drv_hdmi_mod_param)
259 #define CMD_HDMI_GET_MOD_PARAM        _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_GET_MOD_PARAM, drv_hdmi_mod_param)
260 #define CMD_HDMI_SET_ATTR             _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_SET_ATTR, drv_hdmi_property)
261 #define CMD_HDMI_GET_ATTR             _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_GET_ATTR, drv_hdmi_property)
262 #define CMD_HDMI_SET_VO_ATTR          _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_SET_VO_ATTR, drv_hdmi_vo_attr)
263 #define CMD_HDMI_GET_VO_ATTR          _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_GET_VO_ATTR, drv_hdmi_vo_attr)
264 #define CMD_HDMI_GET_HW_SPEC          _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_GET_HW_SPEC, drv_hdmi_hw_spec)
265 #define CMD_HDMI_SET_HW_SPEC          _IOWR(IOC_TYPE_HDMI, IOCTL_HDMI_SET_HW_SPEC, drv_hdmi_hw_spec)
266 #ifdef HDMI_HDR_SUPPORT
267 #define CMD_HDMI_GET_HDR_ATTR         _IOWR(HI_ID_HDMI, IOCTL_HDMI_GET_HDR_ATTR, drv_hdmi_hdr)
268 #define CMD_HDMI_SET_HDR_ATTR         _IOWR(HI_ID_HDMI, IOCTL_HDMI_SET_HDR_ATTR, drv_hdmi_hdr)
269 #endif
270 
271 #endif /* __DRV_HDMI_IOCTL_H__ */
272 
273