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_ACCESSORY_IF_H 10 #define AUDIO_ACCESSORY_IF_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 /** 22 * @brief Defines Accessory Codec device name and data. 23 * 24 * @since 1.0 25 * @version 1.0 26 */ 27 struct AccessoryDevice { 28 const char *devAccessoryName; /**< Accesssory device name */ 29 struct AccessoryData *devData; /**< Accesssory private data */ 30 struct HdfDeviceObject *device; /**< HDF device */ 31 struct DListHead list; /**< Accesssory list */ 32 struct OsalMutex mutex; /**< Accesssory mutex */ 33 }; 34 35 /** 36 * @brief Defines Accessory host in audio driver. 37 * 38 * @since 1.0 39 * @version 1.0 40 */ 41 struct AccessoryHost { 42 struct IDeviceIoService service; /**< Services provided by Accesssory */ 43 struct HdfDeviceObject *device; /**< HDF device */ 44 void *priv; /**< Accesssory private data interface */ 45 }; 46 47 /** 48 * @brief Defines Accesssory private data. 49 * 50 * @since 1.0 51 * @version 1.0 52 */ 53 struct AccessoryData { 54 const char *drvAccessoryName; /**< Accesssory driver name */ 55 56 /** 57 * @brief Defines Accesssory device init. 58 * 59 * @param audioCard Indicates a audio card device. 60 * @param accesssory Indicates a Accesssory device. 61 * 62 * @return Returns <b>0</b> if Accesssory device init success; returns a non-zero value otherwise. 63 * 64 * @since 1.0 65 * @version 1.0 66 */ 67 int32_t (*Init)(struct AudioCard *audioCard, const struct AccessoryDevice *accesssory); 68 69 /** 70 * @brief Defines Accesssory device reg read. 71 * 72 * @param accesssory Indicates a accesssory device. 73 * @param reg Indicates read reg address. 74 * @param value Indicates read reg value. 75 * 76 * @return Returns <b>0</b> if accesssory device read reg success; returns a non-zero value otherwise. 77 * 78 * @since 1.0 79 * @version 1.0 80 */ 81 int32_t (*Read)(const struct AccessoryDevice *accesssory, uint32_t reg, uint32_t *value); 82 83 /** 84 * @brief Defines accesssory device reg write. 85 * 86 * @param accesssory Indicates a accesssory device. 87 * @param reg Indicates write reg address. 88 * @param value Indicates write reg value. 89 * 90 * @return Returns <b>0</b> if accesssory device write reg success; returns a non-zero value otherwise. 91 * 92 * @since 1.0 93 * @version 1.0 94 */ 95 int32_t (*Write)(const struct AccessoryDevice *accesssory, uint32_t reg, uint32_t value); 96 97 const struct AudioKcontrol *controls; /**< Accesssory control structure array pointer */ 98 int numControls; /**< Accesssory controls the number of structure array elements */ 99 struct AudioRegCfgData* regConfig; /**< Accesssory registers configured in HCS */ 100 }; 101 102 #ifdef __cplusplus 103 #if __cplusplus 104 } 105 #endif 106 #endif /* __cplusplus */ 107 108 #endif 109