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