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_CORE_H 10 #define AUDIO_CORE_H 11 12 #include "audio_control.h" 13 #include "audio_codec_if.h" 14 #include "audio_dai_if.h" 15 #include "audio_dsp_if.h" 16 #include "audio_host.h" 17 #include "audio_platform_if.h" 18 19 #ifdef __cplusplus 20 #if __cplusplus 21 extern "C" { 22 #endif 23 #endif /* __cplusplus */ 24 25 int32_t AudioCodecRegUpdate(struct CodecDevice *codec, struct AudioMixerControl *mixerCtrl); 26 int32_t AudioDaiRegUpdate(const struct DaiDevice *dai, struct AudioMixerControl *mixerCtrl); 27 28 int32_t AudioCodecMuxRegUpdate(struct CodecDevice *codec, struct AudioEnumKcontrol *enumCtrl, const uint32_t *value); 29 30 int32_t AudioSocRegisterPlatform(struct HdfDeviceObject *device, struct PlatformData *platformData); 31 int32_t AudioSocRegisterDai(struct HdfDeviceObject *device, struct DaiData *daiData); 32 int32_t AudioRegisterDsp(struct HdfDeviceObject *device, struct DspData *dspData, struct DaiData *DaiData); 33 int32_t AudioRegisterCodec(struct HdfDeviceObject *device, struct CodecData *codecData, struct DaiData *daiData); 34 35 int32_t AudioBindDaiLink(struct AudioCard *audioCard, const struct AudioConfigData *configData); 36 37 int32_t AudioUpdateCodecRegBits(struct CodecDevice *codec, uint32_t reg, 38 const uint32_t mask, const uint32_t shift, uint32_t value); 39 40 int32_t AudioUpdateDaiRegBits(const struct DaiDevice *dai, uint32_t reg, 41 const uint32_t mask, const uint32_t shift, uint32_t value); 42 43 struct DaiDevice *AudioKcontrolGetCpuDai(const struct AudioKcontrol *kcontrol); 44 struct CodecDevice *AudioKcontrolGetCodec(const struct AudioKcontrol *kcontrol); 45 46 int32_t AudioAddControls(struct AudioCard *audioCard, 47 const struct AudioKcontrol *controls, int32_t controlMaxNum); 48 struct AudioKcontrol *AudioAddControl(const struct AudioCard *audioCard, const struct AudioKcontrol *ctl); 49 50 int32_t AudioGetCtrlOpsRReg(struct AudioCtrlElemValue *elemValue, 51 const struct AudioMixerControl *mixerCtrl, uint32_t rcurValue); 52 int32_t AudioGetCtrlOpsReg(struct AudioCtrlElemValue *elemValue, 53 const struct AudioMixerControl *mixerCtrl, uint32_t curValue); 54 int32_t AudioSetCtrlOpsReg(const struct AudioKcontrol *kcontrol, const struct AudioCtrlElemValue *elemValue, 55 const struct AudioMixerControl *mixerCtrl, uint32_t *value); 56 int32_t AudioSetCtrlOpsRReg(const struct AudioCtrlElemValue *elemValue, 57 struct AudioMixerControl *mixerCtrl, uint32_t *rvalue, bool *updateRReg); 58 int32_t AudioDaiReadReg(const struct DaiDevice *dai, uint32_t reg, uint32_t *val); 59 int32_t AudioDaiWriteReg(const struct DaiDevice *dai, uint32_t reg, uint32_t val); 60 61 int32_t AudioCodecReadReg(const struct CodecDevice *codec, uint32_t reg, uint32_t *val); 62 int32_t AudioCodecWriteReg(const struct CodecDevice *codec, uint32_t reg, uint32_t val); 63 64 int32_t AudioInfoCtrlOps(const struct AudioKcontrol *kcontrol, struct AudioCtrlElemInfo *elemInfo); 65 int32_t AudioCodecGetCtrlOps(const struct AudioKcontrol *kcontrol, struct AudioCtrlElemValue *elemValue); 66 int32_t AudioCodecSetCtrlOps(const struct AudioKcontrol *kcontrol, const struct AudioCtrlElemValue *elemValue); 67 68 int32_t AudioInfoEnumCtrlOps(const struct AudioKcontrol *kcontrol, struct AudioCtrlElemInfo *elemInfo); 69 int32_t AudioCodecGetEnumCtrlOps(const struct AudioKcontrol *kcontrol, struct AudioCtrlElemValue *elemValue); 70 int32_t AudioCodecSetEnumCtrlOps(const struct AudioKcontrol *kcontrol, const struct AudioCtrlElemValue *elemValue); 71 72 int32_t AudioCpuDaiSetCtrlOps(const struct AudioKcontrol *kcontrol, const struct AudioCtrlElemValue *elemValue); 73 int32_t AudioCpuDaiGetCtrlOps(const struct AudioKcontrol *kcontrol, struct AudioCtrlElemValue *elemValue); 74 75 #ifdef __cplusplus 76 #if __cplusplus 77 } 78 #endif 79 #endif /* __cplusplus */ 80 81 #endif /* AUDIO_CORE_H */ 82