/* SPDX-License-Identifier: GPL-2.0+ */ #ifndef __AWINIC_DATA_TYPE_H__ #define __AWINIC_DATA_TYPE_H__ #define AW_NAME_BUF_MAX (50) /****************************************************************** * aw profile *******************************************************************/ #define PROJECT_NAME_MAX (24) #define CUSTOMER_NAME_MAX (16) #define CFG_VERSION_MAX (4) #define DEV_NAME_MAX (16) #define PROFILE_STR_MAX (32) #define ACF_FILE_ID (0xa15f908) struct aw_msg_hdr { int32_t type; int32_t opcode_id; int32_t version; int32_t reseriver[3]; }; enum aw_cfg_hdr_version { AW_CFG_HDR_VER_0_0_0_1 = 0x00000001, AW_CFG_HDR_VER_1_0_0_0 = 0x01000000, }; enum aw_cfg_dde_type { AW_DEV_NONE_TYPE_ID = 0xFFFFFFFF, AW_DEV_TYPE_ID = 0x00000000, AW_SKT_TYPE_ID = 0x00000001, AW_DEV_DEFAULT_TYPE_ID = 0x00000002, }; enum aw_sec_type { ACF_SEC_TYPE_REG = 0, ACF_SEC_TYPE_DSP, ACF_SEC_TYPE_DSP_CFG, ACF_SEC_TYPE_DSP_FW, ACF_SEC_TYPE_HDR_REG, ACF_SEC_TYPE_HDR_DSP_CFG, ACF_SEC_TYPE_HDR_DSP_FW, ACF_SEC_TYPE_MUTLBIN, ACF_SEC_TYPE_SKT_PROJECT, ACF_SEC_TYPE_DSP_PROJECT, ACF_SEC_TYPE_MONITOR, ACF_SEC_TYPE_MAX, }; enum profile_data_type { AW_DATA_TYPE_REG = 0, AW_DATA_TYPE_DSP_CFG, AW_DATA_TYPE_DSP_FW, AW_DATA_TYPE_MAX, }; enum aw_prof_type { AW_PROFILE_MUSIC = 0, AW_PROFILE_VOICE, AW_PROFILE_VOIP, AW_PROFILE_RINGTONE, AW_PROFILE_RINGTONE_HS, AW_PROFILE_LOWPOWER, AW_PROFILE_BYPASS, AW_PROFILE_MMI, AW_PROFILE_FM, AW_PROFILE_NOTIFICATION, AW_PROFILE_RECEIVER, AW_PROFILE_MAX, }; enum aw_profile_status { AW_PROFILE_WAIT = 0, AW_PROFILE_OK, }; struct aw_cfg_hdr { uint32_t a_id; /*acf file ID 0xa15f908*/ char a_project[PROJECT_NAME_MAX]; /*project name*/ char a_custom[CUSTOMER_NAME_MAX]; /*custom name :huawei xiaomi vivo oppo*/ char a_version[CFG_VERSION_MAX]; /*author update version*/ uint32_t a_author_id; /*author id*/ uint32_t a_ddt_size; /*sub section table entry size*/ uint32_t a_ddt_num; /*sub section table entry num*/ uint32_t a_hdr_offset; /*sub section table offset in file*/ uint32_t a_hdr_version; /*sub section table version*/ uint32_t reserve[3]; }; struct aw_cfg_dde { uint32_t type; /*DDE type id*/ char dev_name[DEV_NAME_MAX]; uint16_t dev_index; /*dev id*/ uint16_t dev_bus; /*dev bus id*/ uint16_t dev_addr; /*dev addr id*/ uint16_t dev_profile; /*dev profile id*/ uint32_t data_type; /*data type id*/ uint32_t data_size; uint32_t data_offset; uint32_t data_crc; uint32_t reserve[5]; }; struct aw_cfg_dde_v_1_0_0_0 { uint32_t type; /*DDE type id*/ char dev_name[DEV_NAME_MAX]; uint16_t dev_index; /*dev id*/ uint16_t dev_bus; /*dev bus id*/ uint16_t dev_addr; /*dev addr id*/ uint16_t dev_profile; /*dev profile id*/ uint32_t data_type; /*data type id*/ uint32_t data_size; uint32_t data_offset; uint32_t data_crc; char dev_profile_str[PROFILE_STR_MAX]; uint32_t chip_id; uint32_t reserve[4]; }; struct aw_sec_data_desc { uint32_t len; unsigned char *data; }; struct aw_prof_desc { uint32_t id; uint32_t prof_st; char *prf_str; uint32_t fw_ver; struct aw_sec_data_desc sec_desc[AW_DATA_TYPE_MAX]; }; struct aw_all_prof_info { struct aw_prof_desc prof_desc[AW_PROFILE_MAX]; }; struct aw_prof_info { int count; int prof_type; char **prof_name_list; struct aw_prof_desc *prof_desc; }; #endif