/* * Copyright (c) 2021 Huawei Device Co., Ltd. * * HDF is dual licensed: you can use it either under the terms of * the GPL, or the BSD license, at your option. * See the LICENSE file in the root of this repository for complete details. */ #ifndef AUDIO_ACCESSORY_IF_H #define AUDIO_ACCESSORY_IF_H #include "audio_host.h" #include "audio_control.h" #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif /* __cplusplus */ /** * @brief Defines Accessory Codec device name and data. * * @since 1.0 * @version 1.0 */ struct AccessoryDevice { const char *devAccessoryName; /**< Accesssory device name */ struct AccessoryData *devData; /**< Accesssory private data */ struct HdfDeviceObject *device; /**< HDF device */ struct DListHead list; /**< Accesssory list */ struct OsalMutex mutex; /**< Accesssory mutex */ }; /** * @brief Defines Accessory host in audio driver. * * @since 1.0 * @version 1.0 */ struct AccessoryHost { struct IDeviceIoService service; /**< Services provided by Accesssory */ struct HdfDeviceObject *device; /**< HDF device */ void *priv; /**< Accesssory private data interface */ }; /** * @brief Defines Accesssory private data. * * @since 1.0 * @version 1.0 */ struct AccessoryData { const char *drvAccessoryName; /**< Accesssory driver name */ /** * @brief Defines Accesssory device init. * * @param audioCard Indicates a audio card device. * @param accesssory Indicates a Accesssory device. * * @return Returns 0 if Accesssory device init success; returns a non-zero value otherwise. * * @since 1.0 * @version 1.0 */ int32_t (*Init)(struct AudioCard *audioCard, const struct AccessoryDevice *accesssory); /** * @brief Defines Accesssory device reg read. * * @param accesssory Indicates a accesssory device. * @param reg Indicates read reg address. * @param value Indicates read reg value. * * @return Returns 0 if accesssory device read reg success; returns a non-zero value otherwise. * * @since 1.0 * @version 1.0 */ int32_t (*Read)(const struct AccessoryDevice *accesssory, uint32_t reg, uint32_t *value); /** * @brief Defines accesssory device reg write. * * @param accesssory Indicates a accesssory device. * @param reg Indicates write reg address. * @param value Indicates write reg value. * * @return Returns 0 if accesssory device write reg success; returns a non-zero value otherwise. * * @since 1.0 * @version 1.0 */ int32_t (*Write)(const struct AccessoryDevice *accesssory, uint32_t reg, uint32_t value); const struct AudioKcontrol *controls; /**< Accesssory control structure array pointer */ int numControls; /**< Accesssory controls the number of structure array elements */ struct AudioRegCfgData* regConfig; /**< Accesssory registers configured in HCS */ }; #ifdef __cplusplus #if __cplusplus } #endif #endif /* __cplusplus */ #endif