hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/* 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