1*14bd8572SWeidong Wang // SPDX-License-Identifier: GPL-2.0-only
2*14bd8572SWeidong Wang //
3*14bd8572SWeidong Wang // aw883_data_type.h --  The data type of the AW88395 chip
4*14bd8572SWeidong Wang //
5*14bd8572SWeidong Wang // Copyright (c) 2022-2023 AWINIC Technology CO., LTD
6*14bd8572SWeidong Wang //
7*14bd8572SWeidong Wang // Author: Bruce zhao <zhaolei@awinic.com>
8*14bd8572SWeidong Wang //
9*14bd8572SWeidong Wang 
10*14bd8572SWeidong Wang #ifndef __AW88395_DATA_TYPE_H__
11*14bd8572SWeidong Wang #define __AW88395_DATA_TYPE_H__
12*14bd8572SWeidong Wang 
13*14bd8572SWeidong Wang #define PROJECT_NAME_MAX		(24)
14*14bd8572SWeidong Wang #define CUSTOMER_NAME_MAX		(16)
15*14bd8572SWeidong Wang #define CFG_VERSION_MAX		(4)
16*14bd8572SWeidong Wang #define DEV_NAME_MAX			(16)
17*14bd8572SWeidong Wang #define PROFILE_STR_MAX		(32)
18*14bd8572SWeidong Wang 
19*14bd8572SWeidong Wang #define ACF_FILE_ID			(0xa15f908)
20*14bd8572SWeidong Wang 
21*14bd8572SWeidong Wang enum aw_cfg_hdr_version {
22*14bd8572SWeidong Wang 	AW88395_CFG_HDR_VER	= 0x00000001,
23*14bd8572SWeidong Wang 	AW88395_CFG_HDR_VER_V1	= 0x01000000,
24*14bd8572SWeidong Wang };
25*14bd8572SWeidong Wang 
26*14bd8572SWeidong Wang enum aw_cfg_dde_type {
27*14bd8572SWeidong Wang 	AW88395_DEV_NONE_TYPE_ID	= 0xFFFFFFFF,
28*14bd8572SWeidong Wang 	AW88395_DEV_TYPE_ID		= 0x00000000,
29*14bd8572SWeidong Wang 	AW88395_SKT_TYPE_ID		= 0x00000001,
30*14bd8572SWeidong Wang 	AW88395_DEV_DEFAULT_TYPE_ID	= 0x00000002,
31*14bd8572SWeidong Wang };
32*14bd8572SWeidong Wang 
33*14bd8572SWeidong Wang enum aw_sec_type {
34*14bd8572SWeidong Wang 	ACF_SEC_TYPE_REG = 0,
35*14bd8572SWeidong Wang 	ACF_SEC_TYPE_DSP,
36*14bd8572SWeidong Wang 	ACF_SEC_TYPE_DSP_CFG,
37*14bd8572SWeidong Wang 	ACF_SEC_TYPE_DSP_FW,
38*14bd8572SWeidong Wang 	ACF_SEC_TYPE_HDR_REG,
39*14bd8572SWeidong Wang 	ACF_SEC_TYPE_HDR_DSP_CFG,
40*14bd8572SWeidong Wang 	ACF_SEC_TYPE_HDR_DSP_FW,
41*14bd8572SWeidong Wang 	ACF_SEC_TYPE_MULTIPLE_BIN,
42*14bd8572SWeidong Wang 	ACF_SEC_TYPE_SKT_PROJECT,
43*14bd8572SWeidong Wang 	ACF_SEC_TYPE_DSP_PROJECT,
44*14bd8572SWeidong Wang 	ACF_SEC_TYPE_MONITOR,
45*14bd8572SWeidong Wang 	ACF_SEC_TYPE_MAX,
46*14bd8572SWeidong Wang };
47*14bd8572SWeidong Wang 
48*14bd8572SWeidong Wang enum profile_data_type {
49*14bd8572SWeidong Wang 	AW88395_DATA_TYPE_REG = 0,
50*14bd8572SWeidong Wang 	AW88395_DATA_TYPE_DSP_CFG,
51*14bd8572SWeidong Wang 	AW88395_DATA_TYPE_DSP_FW,
52*14bd8572SWeidong Wang 	AW88395_DATA_TYPE_MAX,
53*14bd8572SWeidong Wang };
54*14bd8572SWeidong Wang 
55*14bd8572SWeidong Wang enum aw_prof_type {
56*14bd8572SWeidong Wang 	AW88395_PROFILE_MUSIC = 0,
57*14bd8572SWeidong Wang 	AW88395_PROFILE_VOICE,
58*14bd8572SWeidong Wang 	AW88395_PROFILE_VOIP,
59*14bd8572SWeidong Wang 	AW88395_PROFILE_RINGTONE,
60*14bd8572SWeidong Wang 	AW88395_PROFILE_RINGTONE_HS,
61*14bd8572SWeidong Wang 	AW88395_PROFILE_LOWPOWER,
62*14bd8572SWeidong Wang 	AW88395_PROFILE_BYPASS,
63*14bd8572SWeidong Wang 	AW88395_PROFILE_MMI,
64*14bd8572SWeidong Wang 	AW88395_PROFILE_FM,
65*14bd8572SWeidong Wang 	AW88395_PROFILE_NOTIFICATION,
66*14bd8572SWeidong Wang 	AW88395_PROFILE_RECEIVER,
67*14bd8572SWeidong Wang 	AW88395_PROFILE_MAX,
68*14bd8572SWeidong Wang };
69*14bd8572SWeidong Wang 
70*14bd8572SWeidong Wang enum aw_profile_status {
71*14bd8572SWeidong Wang 	AW88395_PROFILE_WAIT = 0,
72*14bd8572SWeidong Wang 	AW88395_PROFILE_OK,
73*14bd8572SWeidong Wang };
74*14bd8572SWeidong Wang 
75*14bd8572SWeidong Wang struct aw_cfg_hdr {
76*14bd8572SWeidong Wang 	u32 id;
77*14bd8572SWeidong Wang 	char project[PROJECT_NAME_MAX];
78*14bd8572SWeidong Wang 	char custom[CUSTOMER_NAME_MAX];
79*14bd8572SWeidong Wang 	char version[CFG_VERSION_MAX];
80*14bd8572SWeidong Wang 	u32 author_id;
81*14bd8572SWeidong Wang 	u32 ddt_size;
82*14bd8572SWeidong Wang 	u32 ddt_num;
83*14bd8572SWeidong Wang 	u32 hdr_offset;
84*14bd8572SWeidong Wang 	u32 hdr_version;
85*14bd8572SWeidong Wang 	u32 reserved[3];
86*14bd8572SWeidong Wang };
87*14bd8572SWeidong Wang 
88*14bd8572SWeidong Wang struct aw_cfg_dde {
89*14bd8572SWeidong Wang 	u32 type;
90*14bd8572SWeidong Wang 	char dev_name[DEV_NAME_MAX];
91*14bd8572SWeidong Wang 	u16 dev_index;
92*14bd8572SWeidong Wang 	u16 dev_bus;
93*14bd8572SWeidong Wang 	u16 dev_addr;
94*14bd8572SWeidong Wang 	u16 dev_profile;
95*14bd8572SWeidong Wang 	u32 data_type;
96*14bd8572SWeidong Wang 	u32 data_size;
97*14bd8572SWeidong Wang 	u32 data_offset;
98*14bd8572SWeidong Wang 	u32 data_crc;
99*14bd8572SWeidong Wang 	u32 reserved[5];
100*14bd8572SWeidong Wang };
101*14bd8572SWeidong Wang 
102*14bd8572SWeidong Wang struct aw_cfg_dde_v1 {
103*14bd8572SWeidong Wang 	u32 type;
104*14bd8572SWeidong Wang 	char dev_name[DEV_NAME_MAX];
105*14bd8572SWeidong Wang 	u16 dev_index;
106*14bd8572SWeidong Wang 	u16 dev_bus;
107*14bd8572SWeidong Wang 	u16 dev_addr;
108*14bd8572SWeidong Wang 	u16 dev_profile;
109*14bd8572SWeidong Wang 	u32 data_type;
110*14bd8572SWeidong Wang 	u32 data_size;
111*14bd8572SWeidong Wang 	u32 data_offset;
112*14bd8572SWeidong Wang 	u32 data_crc;
113*14bd8572SWeidong Wang 	char dev_profile_str[PROFILE_STR_MAX];
114*14bd8572SWeidong Wang 	u32 chip_id;
115*14bd8572SWeidong Wang 	u32 reserved[4];
116*14bd8572SWeidong Wang };
117*14bd8572SWeidong Wang 
118*14bd8572SWeidong Wang struct aw_sec_data_desc {
119*14bd8572SWeidong Wang 	u32 len;
120*14bd8572SWeidong Wang 	u8 *data;
121*14bd8572SWeidong Wang };
122*14bd8572SWeidong Wang 
123*14bd8572SWeidong Wang struct aw_prof_desc {
124*14bd8572SWeidong Wang 	u32 id;
125*14bd8572SWeidong Wang 	u32 prof_st;
126*14bd8572SWeidong Wang 	char *prf_str;
127*14bd8572SWeidong Wang 	u32 fw_ver;
128*14bd8572SWeidong Wang 	struct aw_sec_data_desc sec_desc[AW88395_DATA_TYPE_MAX];
129*14bd8572SWeidong Wang };
130*14bd8572SWeidong Wang 
131*14bd8572SWeidong Wang struct aw_all_prof_info {
132*14bd8572SWeidong Wang 	struct aw_prof_desc prof_desc[AW88395_PROFILE_MAX];
133*14bd8572SWeidong Wang };
134*14bd8572SWeidong Wang 
135*14bd8572SWeidong Wang struct aw_prof_info {
136*14bd8572SWeidong Wang 	int count;
137*14bd8572SWeidong Wang 	int prof_type;
138*14bd8572SWeidong Wang 	char **prof_name_list;
139*14bd8572SWeidong Wang 	struct aw_prof_desc *prof_desc;
140*14bd8572SWeidong Wang };
141*14bd8572SWeidong Wang 
142*14bd8572SWeidong Wang #endif
143