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