• 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_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