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