/* * Copyright (c) Hisilicon Technologies Co., Ltd.. 2020-2020. All rights reserved. * Description: pdm driver implement * Author: Hisilicon * Create: 2020-4-13 */ #ifndef __DRV_PDM_H__ #define __DRV_PDM_H__ #include "soc_log.h" #include "drv_pdm_ext.h" #include "osal_ext.h" #ifdef __cplusplus extern "C" { #endif #undef LOG_MODULE_ID #define LOG_MODULE_ID SOC_ID_PDM #define PDM_MAX_BUF_NUM 32 #define PDM_PATH_NAME_LEN_MAX 64 typedef struct { td_char buf_name[PDM_MAX_BUF_NUM]; td_bool release; td_u32 lenth; td_u8 *phy_addr; td_u8 *vir_addr; } pdm_buf_info; typedef struct { pdm_buf_info buf_info[PDM_MAX_BUF_NUM]; td_u32 buf_num; osal_semaphore pdm_mutex; } pdm_global; typedef struct { ext_pdm_set_silence_callback_func fn; td_void *private_data; struct osal_list_head list; } silence_call_back_node; typedef struct { td_u32 module_id; struct osal_list_head list_head; } pdm_silence_cfg_info; extern pdm_global g_pdm_global; td_s32 drv_pdm_release_reserve_mem(const td_char *buf_name); td_s32 drv_pdm_get_data(const td_char *buf_name, td_u8 **data_addr, td_u32 *data_len); td_s32 pdm_get_vir_addr_by_name(const td_char *buf_name, td_u8 **vir_addr, td_u32 *len); td_s32 pdm_get_buf_by_name(const td_char *buf_name, td_u8 **base_phy_addr, td_u32 *len); td_s32 pdm_set_vir_addr_by_name(const td_char *buf_name, td_u8 *vir_addr); /* * Ex interface for compatibility, there is no volume in old baseparam image, * pbVolumeExistInBase can distinguish a image is an old baseparam or a new baseparam; * and there are volume in both old and new fastplay image, fastplay will select using * volume in baseparam first, if baseparam is old image, fastplay will using volume in fastplay image */ td_s32 ext_drv_pdm_release_reserve_mem(const td_char *buf_name); td_s32 ext_drv_pdm_get_reserve_mem(const td_char *buf_name, td_u64 *resever_addr, td_u32 *resever_buf_size); td_s32 ext_drv_pdm_get_data(const td_char *buf_name, td_u8 **data_addr, td_u32 *data_len); td_s32 ext_drv_pdm_set_license_data(td_u64 lic_handle, td_u32 lic_len); td_s32 ext_drv_pdm_get_tcon_param(td_u32 panel_index, td_u32 offset, td_u32 size, td_void *tcon_param, td_u32 tcon_param_len); td_s32 ext_drv_pdm_get_tcon_module_param(td_u32 panel_index, td_u32 mod_id, td_void *data_ptr, td_u32 data_len); td_s32 ext_drv_pdm_is_tcon_module_exist(td_u32 panel_index, td_bool *exist, td_u32 mod_id, td_u32 *len); td_s32 ext_drv_pdm_get_tcon_head(td_void *tcon_head, td_u32 tcon_head_len); td_s32 ext_drv_pdm_get_silence_flag(td_bool *silence); td_s32 ext_drv_pdm_set_silence_flag(td_bool silence); td_s32 ext_drv_pdm_register_callback(td_u32 module_id, ext_pdm_set_silence_callback_func fn, td_void *private_data); td_s32 ext_drv_pdm_resume_handler(td_void); td_s32 ext_drv_pdm_get_ta_revoked_list(td_void *buf, td_u32 buf_size, td_u32 *read_size); td_s32 ext_drv_pdm_db_get_data(const ext_pdm_partion_info *data, td_void *addr, td_u32 size); #ifdef __cplusplus } #endif #endif