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