• 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 
19 #ifndef __SYS_EXT_H__
20 #define __SYS_EXT_H__
21 
22 #include "hi_type.h"
23 #include "mod_ext.h"
24 #include "hi_comm_video_adapt.h"
25 #include "hi_comm_sys_adapt.h"
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif /* end of #ifdef __cplusplus */
30 
31 #define SYS_DDR_MAXNUM                16
32 
33 #define SYS_SEND_DATA_BLOCK_MASK      0x1
34 #define SYS_SEND_DATA_BLOCK_OFFSET    0
35 #define SYS_SEND_DATA_NOBLOCK         ((0 << SYS_SEND_DATA_BLOCK_OFFSET) & SYS_SEND_DATA_BLOCK_MASK)
36 #define SYS_SEND_DATA_BLOCK           ((1 << SYS_SEND_DATA_BLOCK_OFFSET) & SYS_SEND_DATA_BLOCK_MASK)
37 
38 #define SYS_SEND_DATA_DELAY_MASK      0x6
39 #define SYS_SEND_DATA_DELAY_OFFSET    1
40 #define SYS_SEND_DATA_FINISH          ((0 << SYS_SEND_DATA_DELAY_OFFSET) & SYS_SEND_DATA_DELAY_MASK)
41 #define SYS_SEND_DATA_LOWDELAY        ((1 << SYS_SEND_DATA_DELAY_OFFSET) & SYS_SEND_DATA_DELAY_MASK)
42 #define SYS_SEND_DATA_LOWDELAY_FINISH ((2 << SYS_SEND_DATA_DELAY_OFFSET) & SYS_SEND_DATA_DELAY_MASK)
43 
44 typedef struct {
45     hi_u32 num;
46     hi_void *mmz_name[SYS_DDR_MAXNUM];
47 } mpp_sys_ddr_name;
48 
49 typedef enum {
50     MPP_DATA_VI_FRAME,
51     MPP_DATA_VOU_FRAME,
52     MPP_DATA_VDEC_FRAME,
53     MPP_DATA_VIDEO_FRAME,
54     MPP_DATA_VOU_WBC_FRAME,
55     MPP_DATA_AUDIO_FRAME,
56     MPP_DATA_VPSS_FRAME,
57     MPP_DATA_DPU_RECT_FRAME,
58     MPP_DATA_AVS_FRAME,
59     MPP_DATA_MCF_FRAME,
60     MPP_DATA_BUTT
61 } mpp_data_type;
62 
63 typedef struct {
64     hi_mod_id mod_id;
65     hi_u32 max_dev_cnt;
66     hi_u32 max_chn_cnt;
67     hi_s32 (*give_bind_call_back)(hi_s32 dev_id, hi_s32 chn_id, hi_mpp_bind_dest *bind_send);
68 } bind_sender_info;
69 
70 typedef struct {
71     hi_mod_id mod_id;
72     hi_u32 max_dev_cnt;
73     hi_u32 max_chn_cnt;
74     hi_s32 (*call_back)(hi_s32 dev_id, hi_s32 chn_id, hi_bool block, mpp_data_type data_type, hi_void *pv_data);
75     hi_s32 (*reset_call_back)(hi_s32 dev_id, hi_s32 chn_id, hi_void *pv_data);
76     hi_bool support_delay_data;
77 } bind_receiver_info;
78 
79 typedef struct {
80     hi_pixel_format pixel_format;
81     hi_u32 width;
82     hi_u32 height;
83     hi_u32 buf_line;
84     hi_u32 align;  /* 0:auto */
85     hi_dynamic_range dynamic_range;
86     hi_compress_mode compress_mode;
87     hi_video_format video_format;
88     hi_bool is_3dnr_buffer;
89 } vb_base_info;
90 
91 typedef enum {
92     SYS_VO_BT1120_CLK_SEL,
93     SYS_VO_HDDAC_CLK_SEL,
94     SYS_VO_HDDATE_CLK_SEL,
95     SYS_VO_HDMI_CLK_SEL,
96     SYS_VO_GET_HD_CLK_SEL,
97     SYS_VO_BT1120_CLK_EN,
98     SYS_VO_MIPI_TX_CLK_EN,
99     SYS_VO_MIPI_CLK_EN,
100     SYS_VO_HDMI_TX_CLK_EN,
101     SYS_VO_MIPI_CLK_SEL,
102     SYS_VO_MIPI_CHN_SEL,
103     SYS_VO_PLL_FRAC_SET,
104     SYS_VO_PLL_POSTDIV1_SET,
105     SYS_VO_PLL_POSTDIV2_SET,
106     SYS_VO_PLL_REFDIV_SET,
107     SYS_VO_PLL_FBDIV_SET,
108     SYS_VO_SPLL_FRAC_SET,
109     SYS_VO_SPLL_POSTDIV1_SET,
110     SYS_VO_SPLL_POSTDIV2_SET,
111     SYS_VO_SPLL_REFDIV_SET,
112     SYS_VO_SPLL_FBDIV_SET,
113 
114     SYS_AI_SAMPLECLK_DIVSEL,
115     SYS_AI_BITCKL_DIVSEL,
116     SYS_AI_SYSCKL_SEL,
117     SYS_AI_MASTER,
118     SYS_AI_RESET_SEL,
119     SYS_AI_CLK_EN,
120 
121     SYS_AO_SAMPLECLK_DIVSEL,
122     SYS_AO_BITCKL_DIVSEL,
123     SYS_AO_SYSCKL_SEL,
124     SYS_AO_MASTER,
125     SYS_AO_RESET_SEL,
126     SYS_AO_CLK_EN,
127 
128     SYS_AIO_RESET_SEL,
129     SYS_AIO_CLK_EN,
130     SYS_AIO_CLK_SEL,
131 
132     SYS_AIO_RX0SD_SEL,
133     SYS_AIO_HDMISD_SEL,
134     SYS_AIO_PADSD_SEL,
135     SYS_AIO_CODECSD_SEL,
136     SYS_AIO_HDMICLK_SEL,
137     SYS_AIO_PADCLK_SEL,
138     SYS_AIO_CODECCLK_SEL,
139 
140     SYS_ACODEC_RESET_SEL,
141 
142     SYS_VI_BUS_RESET_SEL,
143     SYS_VI_BUS_CLK_EN,
144     SYS_VI_PPC_RESET_SEL,
145     SYS_VI_PPC_CLK_EN,
146     SYS_VI_PORT_RESET_SEL,
147     SYS_VI_PORT_CLK_EN,
148     SYS_VI_PPC_PORT_CLK_EN,
149     SYS_VI_PPC_CHN_CLK_EN,
150     SYS_VI_DEV_RESET_SEL,
151     SYS_VI_DEV_CLK_EN,
152     SYS_VI_PROC_RESET_SEL,
153     SYS_VI_PROC_CLK_EN,
154     SYS_VI_PROC_PWR_EN,
155     SYS_VI_PROC_PWR_ISO,
156 
157     SYS_VI_ISP_CFG_RESET_SEL,
158     SYS_VI_ISP_CORE_RESET_SEL,
159     SYS_VI_ISP_CLK_EN,
160     SYS_VI_CAP_GET_ONLINE_FLAG,
161     SYS_VI_CAP_PROC_ONLINE_SEL,
162     SYS_VI_PROC_VPSS_ONLINE_SEL,
163     SYS_VI_DEV_BIND_MIPI_SEL,
164     SYS_VI_DEV_BIND_SLVS_SEL,
165     SYS_VI_DEV_INPUT_SEL,
166     SYS_VI_DEV_GET_PORT_CLK,
167     SYS_VI_DEV_SET_PORT_CLK,
168     SYS_VI_DEV_GET_PPC_CLK,
169     SYS_VI_DEV_SET_PPC_CLK,
170     SYS_VI_PROC_GET_CLK,
171     SYS_VI_PROC_SET_CLK,
172     SYS_ISPFE_SET_CLK,
173     SYS_ISPFE_GET_CLK,
174     SYS_SENSOR_CLK_OUT_SEL,
175 
176     SYS_VOU_BUS_CLK_EN,
177     SYS_VOU_BUS_RESET_SEL,
178     SYS_VOU_SD_RESET_SEL,
179     SYS_VOU_HD_RESET_SEL,
180     SYS_VOU_HD_DATE_RESET_SEL,
181     SYS_VOU_HD_CLK_EN,
182     SYS_VOU_DEV_CLK_EN,
183     SYS_VOU_HD_OUT_CLK_EN,
184     SYS_VOU_HD_CLKOUT_PHASIC_REVERSE_EN,
185     SYS_VOU_DAC_CLK_PHASIC_REVERSE_EN,
186     SYS_VOU_CFG_CLK_EN,
187     SYS_VOU_CORE_CLK_EN,
188     SYS_VOU_PPC_CLK_EN,
189     SYS_VOU_APB_CLK_EN,
190     SYS_VOU_OUT_CLK_EN,
191     SYS_VOU_OUT_CLK_SEL,
192     SYS_VOU_HD_CLK_SEL,
193     SYS_VOU_HD0_PPC_SEL,
194     SYS_VOU_HD1_PPC_SEL,
195     SYS_VOU_HD1_DIV_MOD,
196     SYS_VOU_HD0_DIV_MOD,
197     SYS_VO_HDMI_CLK_EN,
198     SYS_VOU_SD_DATE_CLK_EN,
199     SYS_VOU_HD_DATE_CLK_EN,
200     SYS_VOU_SD_DAC_EN,
201     SYS_VOU_SD_DAC_PWR_EN,
202     SYS_VOU_SD_DAC_DETECT_EN,
203     SYS_VOU_HD_DAC_EN,
204     SYS_VOU_DEV_MODE_SEL,
205     SYS_VO_CLK_SEL,
206     SYS_VO_SD_CLK_DIV,
207     SYS_VOU_WORK_EN,
208     SYS_VOU_LCD_CLK_SEL,
209     SYS_VOU_HD_LCD_CLK_SEL,
210     SYS_VOU_LCD_CLK_EN,
211     SYS_LCD_MCLK_DIV,
212     SYS_LCD_DATA_MODE,
213 
214     SYS_HDMI_RESET_SEL,
215     SYS_HDMI_PIXEL_CLK_EN,
216     SYS_HDMI_BUS_CLK_EN,
217 
218     SYS_VO_LOW_POWER_CTRL,
219 
220     SYS_VEDU_RESET_SEL,
221     SYS_VEDU_CLK_EN,
222     SYS_VEDU_CLK_SEL,
223     SYS_VEDU_SED_RESET_SEL,
224     SYS_VEDU_SED_CLK_EN,
225     SYS_VEDU_PWR_EN,
226     SYS_VEDU_PWR_ISO,
227     SYS_VEDU_PWR_STATE,
228 
229     SYS_VPSS_CLK_SEL,
230     SYS_VPSS_RESET_SEL,
231     SYS_VPSS_CLK_EN,
232     SYS_VPSS_GET_CLK_SEL,
233     SYS_VPSS_SET_CLK_SEL,
234     SYS_AVS_RESET_SEL,
235     SYS_AVS_CLK_EN,
236     SYS_AVS_PWR_EN,
237     SYS_AVS_PWR_ISO,
238     SYS_AVS_PWR_STATE,
239 
240     SYS_TDE_RESET_SEL,
241     SYS_TDE_CLK_EN,
242 
243     SYS_JPGE_RESET_SEL,
244     SYS_JPGE_CLK_EN,
245     SYS_JPGE_SEL_CLK,
246 
247     SYS_JPGD_CLOCK_SEL,
248     SYS_JPGD_RESET_SEL,
249     SYS_JPGD_CLK_EN,
250 
251     SYS_MD_RESET_SEL,
252     SYS_MD_CLK_EN,
253 
254     SYS_IVE_RESET_SEL,
255     SYS_IVE_CLK_EN,
256     SYS_IVE_CLK_SET,
257 
258     SYS_FD_RESET_SEL,
259     SYS_FD_CLK_EN,
260 
261     SYS_DSP_CLK_SET,
262     SYS_DSP_LOW_POWER_CLK_GT_EN,
263     SYS_DSP0_CORE_RESET_SEL,
264     SYS_DSP0_CFG_RESET_SEL,
265     SYS_DSP0_DBG_RESET_SEL,
266     SYS_DSP0_CLK_EN,
267     SYS_DSP0_POWER_EN,
268     SYS_DSP0_POWER_STATE,
269     SYS_DSP1_CORE_RESET_SEL,
270     SYS_DSP1_CFG_RESET_SEL,
271     SYS_DSP1_DBG_RESET_SEL,
272     SYS_DSP1_CLK_EN,
273     SYS_DSP1_POWER_EN,
274     SYS_DSP1_POWER_STATE,
275     SYS_DSP2_CORE_RESET_SEL,
276     SYS_DSP2_CFG_RESET_SEL,
277     SYS_DSP2_DBG_RESET_SEL,
278     SYS_DSP2_CLK_EN,
279     SYS_DSP2_POWER_EN,
280     SYS_DSP2_POWER_STATE,
281     SYS_DSP3_CORE_RESET_SEL,
282     SYS_DSP3_CFG_RESET_SEL,
283     SYS_DSP3_DBG_RESET_SEL,
284     SYS_DSP3_CLK_EN,
285     SYS_DSP3_POWER_EN,
286     SYS_DSP3_POWER_STATE,
287 
288     SYS_EV_CNN_RESET_SEL,
289     SYS_EV_CNN_CFG_RESET_SEL,
290     SYS_EV_CNN_CLK_EN,
291 
292     SYS_WK_CNN_RESET_SEL,
293     SYS_WK_CNN_CLK_EN,
294     SYS_WK_CNN_GET_CLK_STATE,
295     SYS_WK_CNN_CLK_SET,
296     SYS_WK_CNN_CLK_GET,
297     SYS_WK_CNN_PWR_EN,
298     SYS_WK_CNN_PWR_ISO,
299     SYS_WK_CNN_PWR_STATE,
300     SYS_WK_CNN1_RESET_SEL,
301     SYS_WK_CNN1_CLK_EN,
302     SYS_WK_CNN1_CLK_SET,
303     SYS_WK_CNN1_CLK_GET,
304     SYS_WK_CNN1_PWR_EN,
305     SYS_WK_CNN1_PWR_ISO,
306     SYS_WK_CNN1_PWR_STATE,
307     SYS_DPU_CLK_SET,
308     SYS_DPU_RESET_SEL,
309     SYS_DPU_CLK_EN,
310 
311     SYS_PCIE_RESET_SEL,
312     SYS_PCIE_CLK_EN,
313 
314     SYS_CIPHER_RESET_SEL,
315     SYS_CIPHER_CLK_EN,
316 
317     SYS_VGS_RESET_SEL,
318     SYS_VGS_CLK_EN,
319     SYS_VGS_GET_CLK_SEL,
320     SYS_VGS_SET_CLK_SEL,
321     SYS_VGS_BOOTROOM_RAM_USE,
322 
323     SYS_GDC_RESET_SEL,
324     SYS_GDC_CLK_EN,
325     SYS_GDC_GET_CLK_STATE,
326     SYS_GDC_NNIE_RAM_USE,
327     SYS_GDC_GET_CLKSEL,
328     SYS_GDC_SET_CLKSEL,
329 
330     SYS_GDC_VGS_PWR_EN,
331     SYS_GDC_VGS_PWR_ISO,
332     SYS_GDC_VGS_PWR_STATE,
333 
334     SYS_VPSS_PWR_EN,
335     SYS_VPSS_PWR_ISO,
336     SYS_VPSS_PWR_STATE,
337 
338     SYS_DIS_RESET_SEL,
339     SYS_DIS_CLK_EN,
340 
341     SYS_GDC_NNIE_MUTEX_SEL,
342     SYS_VENC_NNIE_MUTEX_SEL,
343     SYS_NNIE_GET_MUTEX_STATE,
344     SYS_NNIE_GDC_GET_MUTEX_STATE,
345 
346     SYS_GET_SYS,
347     SYS_GET_SCT,
348     SYS_SOFT_INT_EN,
349 
350     SYS_GET_UDIR_CLK_STATE,
351     SYS_SET_UDIR_CLK_STATE,
352     SYS_UDIR_RESET_SEL,
353 
354     SYS_BUTT,
355 } sys_func;
356 
357 #ifdef CONFIG_HI_TZASC_SUPPORT
358 typedef enum {
359     NON_TEE_VERSION = 0,
360     TEE_VERSION = 1,
361 } sys_security_version;
362 #endif
363 
364 typedef struct {
365     hi_u64 (*pfn_sys_get_time_stamp)(hi_void);
366     hi_u64 (*pfn_sys_get_local_time_stamp)(hi_void);
367     hi_void (*pfn_sys_sync_time_stamp)(hi_u64 base, hi_bool init);
368     hi_u32 (*pfn_sys_get_chip_version)(hi_void);
369     hi_s32 (*pfn_sys_get_stride)(hi_u32 width, hi_u32 *stride);
370     hi_s32 (*pfn_sys_drv_ioctrl)(hi_mpp_chn *mpp_chn, sys_func func_id, hi_void *io_args);
371 
372     hi_s32 (*pfn_sys_register_sender)(bind_sender_info *info);
373     hi_s32 (*pfn_sys_unregister_sender)(hi_mod_id mod_id);
374     hi_s32 (*pfn_sys_register_receiver)(bind_receiver_info *info);
375     hi_s32 (*pfn_sys_unregister_receiver)(hi_mod_id mod_id);
376     hi_s32 (*pfn_sys_send_data)(hi_mod_id mod_id, hi_s32 dev_id, hi_s32 chn_id, hi_u32 flag,
377         mpp_data_type data_type, hi_void *pv_data);
378     hi_s32 (*pfn_sys_reset_data)(hi_mod_id mod_id, hi_s32 dev_id, hi_s32 chn_id, hi_void *private);
379 
380     hi_s32 (*pfn_get_bind_by_src)(hi_mpp_chn *src_chn, hi_mpp_bind_dest *bind_src);
381     hi_s32 (*pfn_get_bind_num_by_src)(hi_mpp_chn *src_chn, hi_u32 *bind_num);
382     hi_s32 (*pfn_get_bind_by_dest)(hi_mpp_chn *dest_chn, hi_mpp_chn *src_chn);
383     hi_s32 (*pfn_get_mmz_name)(hi_mpp_chn *chn, hi_void **mmz_name);
384     hi_s32 (*pfn_get_mem_ddr)(hi_mpp_chn *chn, mpp_sys_ddr_name *mem_ddr);
385     hi_s32 (*pfn_get_spin_rec)(hi_u32 *spin_rec);
386 
387     hi_u32 (*pfn_sys_vreg_read)(hi_u32 addr, hi_u32 bytes);
388     hi_s32 (*pfn_sys_vreg_write)(hi_u32 addr, hi_u32 value, hi_u32 bytes);
389     hi_u32 (*pfn_sys_get_vreg_addr)(hi_void);
390     hi_u32 (*pfn_sys_get_scale_coef)(hi_mod_id mod_id, hi_void *scale_coef_opt, hi_void *pv_rate, hi_void *pv_cfg);
391     hi_u64 (*pfn_sys_get_sched_clock)(hi_void);
392     hi_s32 (*pfn_sys_get_full_chip_id)(hi_u32 *chip_id);
393 
394     hi_u32 (*pfn_sys_get_chip_id)(hi_void);
395     hi_u64 (*pfn_sys_get_efuse_addr)(hi_void);
396 
397     hi_s32 (*pfn_sys_get_time_zone)(hi_s32 *time_zone);
398     hi_s32 (*pfn_sys_get_now_string)(hi_u8 *now_time);
399     hi_gps_info *(*pfn_sys_get_gps_info)(hi_void);
400 
401     hi_void (*pfn_sys_get_vb_cfg)(hi_void *vb_base_info, hi_void *vb_cal_config);
402     hi_void (*pfn_sys_get_vdec_buffer_cfg)(hi_payload_type type, hi_void *vb_base_info, hi_void *vb_cal_config);
403 
404     hi_void (*pfn_sys_get_cmp_seg_cfg)(hi_void *sys_cmp_in, hi_void *y_cmp_cfg, hi_void *cmp_cfg);
405     hi_void (*pfn_sys_get_cmp_bayer_cfg)(hi_void *sys_cmp_in, hi_void *bayer_cmp_cfg, hi_void *bayer_dcmp_cfg);
406     hi_void (*pfn_sys_get_cmp_3dnr_cfg)(hi_void *sys_cmp_in, hi_void *y_cmp_cfg, hi_void *cmp_cfg);
407 #ifdef CONFIG_HI_AVS_SUPPORT
408     hi_void (*pfn_sys_get_cmp_tile16x8_cfg)(hi_void *sys_cmp_in, hi_void *cmp_out);
409 #endif
410 #ifdef HI_DEBUG
411     hi_void (*pfn_sys_get_cmp_tde_cfg)(hi_void *sys_cmp_in, hi_void *cmp_out);
412 #endif
413 
414 #ifdef CONFIG_HI_TZASC_SUPPORT
415     hi_s32 (*pfn_sys_get_security_version)(sys_security_version *version);
416 #endif
417 } sys_export_func;
418 
419 #define ckfn_sys_entry() check_func_entry(HI_ID_SYS)
420 
421 #define ckfn_sys_get_sched_clock() \
422     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_get_sched_clock != HI_NULL)
423 #define call_sys_get_sched_clock() \
424     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_get_sched_clock())
425 
426 #define ckfn_sys_get_time_stamp() \
427     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_get_time_stamp != HI_NULL)
428 #define call_sys_get_time_stamp() \
429     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_get_time_stamp())
430 
431 #define ckfn_sys_get_local_time_stamp() \
432     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_get_local_time_stamp != HI_NULL)
433 #define call_sys_get_local_time_stamp() \
434     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_get_local_time_stamp())
435 
436 #define ckfn_sys_sync_time_stamp() \
437     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_sync_time_stamp != HI_NULL)
438 #define call_sys_sync_time_stamp(base, init) \
439     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_sync_time_stamp(base, init))
440 #define ckfn_sys_drv_ioctrl() \
441     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_drv_ioctrl != HI_NULL)
442 #define call_sys_drv_ioctrl(mpp_chn, func_id, io_args) \
443     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_drv_ioctrl(mpp_chn, func_id, io_args))
444 
445 #define ckfn_sys_register_sender() \
446     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_register_sender != HI_NULL)
447 #define call_sys_register_sender(info) \
448     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_register_sender(info))
449 
450 #define ckfn_sys_unregister_sender() \
451     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_unregister_sender != HI_NULL)
452 #define call_sys_unregister_sender(mod_id) \
453     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_unregister_sender(mod_id))
454 
455 #define ckfn_sys_register_receiver() \
456     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_register_receiver != HI_NULL)
457 #define call_sys_register_receiver(info) \
458     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_register_receiver(info))
459 
460 #define ckfn_sys_unregister_receiver() \
461     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_unregister_receiver != HI_NULL)
462 #define call_sys_unregister_receiver(mod_id) \
463     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_unregister_receiver(mod_id))
464 
465 #define ckfn_sys_send_data() \
466     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_send_data != HI_NULL)
467 #define call_sys_send_data(mod_id, dev_id, chn_id, flag, data_type, pv_data) \
468     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_send_data(mod_id, dev_id, chn_id, flag, data_type, pv_data))
469 
470 #define ckfn_sys_reset_data() \
471     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_reset_data != HI_NULL)
472 #define call_sys_reset_data(mod_id, dev_id, chn_id, private) \
473     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_reset_data(mod_id, dev_id, chn_id, private))
474 
475 #define ckfn_sys_get_bind_by_src() \
476     (func_entry(sys_export_func, HI_ID_SYS)->pfn_get_bind_by_src != HI_NULL)
477 #define call_sys_get_bind_by_src(src_chn, bind_dest) \
478     (func_entry(sys_export_func, HI_ID_SYS)->pfn_get_bind_by_src(src_chn, bind_dest))
479 
480 #define ckfn_sys_get_bind_num_by_src() \
481     (func_entry(sys_export_func, HI_ID_SYS)->pfn_get_bind_num_by_src != HI_NULL)
482 #define call_sys_get_bind_num_by_src(src_chn, bind_num) \
483     (func_entry(sys_export_func, HI_ID_SYS)->pfn_get_bind_num_by_src(src_chn, bind_num))
484 
485 #define ckfn_sys_get_bind_by_dest() \
486     (func_entry(sys_export_func, HI_ID_SYS)->pfn_get_bind_by_dest != HI_NULL)
487 #define call_sys_get_bind_by_dest(dest_chn, src_chn) \
488     (func_entry(sys_export_func, HI_ID_SYS)->pfn_get_bind_by_dest(dest_chn, src_chn))
489 
490 #define ckfn_sys_get_mmz_name() \
491     (func_entry(sys_export_func, HI_ID_SYS)->pfn_get_mmz_name != HI_NULL)
492 #define call_sys_get_mmz_name(src_chn, mmz_name) \
493     (func_entry(sys_export_func, HI_ID_SYS)->pfn_get_mmz_name(src_chn, mmz_name))
494 
495 #define call_sys_get_efuse_addr() \
496     (func_entry(sys_export_func, HI_ID_SYS)->pfn_sys_get_efuse_addr())
497 
498 #ifdef __cplusplus
499 }
500 #endif /* end of #ifdef __cplusplus */
501 
502 #endif /* __SYS_EXT_H__ */
503