• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 Huawei Device Co., Ltd.
3  *
4  * HDF is dual licensed: you can use it either under the terms of
5  * the GPL, or the BSD license, at your option.
6  * See the LICENSE file in the root of this repository for complete details.
7  */
8 
9 #ifndef AUDIO_PARSE_H
10 #define AUDIO_PARSE_H
11 
12 #include "audio_host.h"
13 #include "audio_control.h"
14 
15 #ifdef __cplusplus
16 #if __cplusplus
17 extern "C" {
18 #endif
19 #endif /* __cplusplus */
20 
21 #define AUDIO_CONFIG_MAX_ITEM 500
22 #define AUDIO_CTRL_LIST_MAX 10
23 #define AUDIO_SAPM_COMP_NAME_LIST_MAX 9
24 #define AUDIO_SAPM_CFG_NAME_LIST_MAX 4
25 
26 enum AudioRegOpsType {
27     AUDIO_RSET_GROUP = 0,
28     AUDIO_INIT_GROUP,
29     AUDIO_CTRL_PATAM_GROUP,
30     AUDIO_CTRL_SAPM_PATAM_GROUP,
31     AUDIO_DAI_STARTUP_PATAM_GROUP,
32     AUDIO_DAI_PATAM_GROUP,
33     AUDIO_DAI_TRIGGER_GROUP,
34     AUDIO_CTRL_CFG_GROUP,
35     AUDIO_SAPM_COMP_GROUP,
36     AUDIO_SAPM_CFG_GROUP,
37     AUDIO_GROUP_MAX
38 };
39 
40 struct AudioIdInfo {
41     const char *chipName;
42     uint32_t chipIdRegister;
43     uint32_t chipIdSize;
44 };
45 
46 struct AudioControlConfig {
47     uint8_t arrayIndex;
48     uint8_t iface;
49     uint8_t enable;
50 };
51 
52 struct AudioAddrConfig {
53     uint32_t addr;
54     uint32_t value;
55 };
56 
57 struct AudioSapmCtrlConfig {
58     uint8_t sapmType;
59     uint8_t compNameIndex;
60     uint8_t reg;
61     uint8_t mask;
62     uint8_t shift;
63     uint8_t invert;
64     uint8_t kcontrolNews;
65     uint8_t kcontrolsNum;
66 };
67 
68 
69 struct AudioRegCfgGroupNode {
70     uint8_t itemNum;
71     enum AudioRegOpsType groupIndex;
72     struct AudioAddrConfig *addrCfgItem;
73     struct AudioMixerControl *regCfgItem;
74     struct AudioControlConfig *ctrlCfgItem;
75     struct AudioSapmCtrlConfig *sapmCompItem;
76 };
77 
78 struct AudioRegCfgData {
79     struct AudioIdInfo audioIdInfo;
80     struct AudioRegCfgGroupNode *audioRegParams[AUDIO_GROUP_MAX];
81 };
82 
83 int32_t AudioFillConfigData(const struct HdfDeviceObject *device, struct AudioConfigData *configData);
84 
85 int32_t CodecGetRegConfig(const struct HdfDeviceObject *device, struct AudioRegCfgData *configData);
86 
87 #ifdef __cplusplus
88 #if __cplusplus
89 }
90 #endif
91 #endif /* __cplusplus */
92 
93 #endif /* AUDIO_PARSE_H */
94