2 * HAL (Hardware Abstract Layer) Common API
4 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
6 * Licensed under the Apache License, Version 2.0 (the License);
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
19 #ifndef __HAL_COMMON__
20 #define __HAL_COMMON__
22 #include "hal-common-interface.h"
29 HAL_LICENSE_UNKNOWN = 0,
30 HAL_LICENSE_APACHE_2_0,
37 HAL_GROUP_UNKNOWN = 0,
40 HAL_GROUP_CONNECTIVITY,
47 static const char *const hal_group_string[] = {
48 [HAL_GROUP_UNKNOWN] = "HAL_GROUP_UNKNOWN",
49 [HAL_GROUP_GRAPHICS] = "HAL_GROUP_GRAPHICS",
50 [HAL_GROUP_MULTIMEDIA] = "HAL_GROUP_MULTIMEDIA",
51 [HAL_GROUP_CONNECTIVITY] = "HAL_GROUP_CONNECTIVITY",
52 [HAL_GROUP_TELEPHONY] = "HAL_GROUP_TELEPHONY",
53 [HAL_GROUP_LOCATION] = "HAL_GROUP_LOCATION",
54 [HAL_GROUP_SYSTEM] = "HAL_GROUP_SYSTEM",
58 HAL_MODULE_UNKNOWN = 0,
60 /* HAL_GROUP_GRAPHICS */
66 /* HAL_GROUP_MULTIMEDIA */
74 /* HAL_GROUP_CONNECTIVITY */
83 /* HAL_GROUP_TELEPHONY */
86 /* HAL_GROUP_LOCATION */
89 /* HAL_GROUP_SYSTEM */
93 HAL_MODULE_PERIPHERAL,
94 HAL_MODULE_DEVICE_BATTERY,
95 HAL_MODULE_DEVICE_BEZEL,
96 HAL_MODULE_DEVICE_DISPLAY,
98 HAL_MODULE_DEVICE_TOUCHSCREEN,
99 HAL_MODULE_DEVICE_LED,
100 HAL_MODULE_DEVICE_BOARD,
101 HAL_MODULE_DEVICE_EXTERNAL_CONNECTION,
102 HAL_MODULE_DEVICE_THERMAL,
103 HAL_MODULE_DEVICE_USB_GADGET,
104 HAL_MODULE_DEVICE_HAPTIC,
105 HAL_MODULE_DEVICE_MEMORY,
108 * TODO: If need to add new module, have to add it below
109 * without modifying already defined module id.
115 static const char *const hal_module_string[] = {
116 [HAL_MODULE_UNKNOWN] = "HAL_MODULE_UNKNOWN",
118 /* HAL_GROUP_GRAPHICS */
119 [HAL_MODULE_TBM] = "HAL_MODULE_TBM",
120 [HAL_MODULE_TDM] = "HAL_MODULE_TDM",
121 [HAL_MODULE_COREGL] = "HAL_MODULE_COREGL",
122 [HAL_MODULE_INPUT] = "HAL_MODULE_INPUT",
124 /* HAL_GROUP_MULTIMEDIA */
125 [HAL_MODULE_AUDIO] = "HAL_MODULE_AUDIO",
126 [HAL_MODULE_CAMERA] = "HAL_MODULE_CAMERA",
127 [HAL_MODULE_RADIO] = "HAL_MODULE_RADIO",
128 [HAL_MODULE_CODEC] = "HAL_MODULE_CODEC",
129 [HAL_MODULE_USB_AUDIO] = "HAL_MODULE_USB_AUDIO",
130 [HAL_MODULE_ALSAUCM] = "HAL_MODULE_ALSAUCM",
132 /* HAL_GROUP_CONNECTIVITY */
133 [HAL_MODULE_BLUETOOTH] = "HAL_MODULE_BLUETOOTH",
134 [HAL_MODULE_WIFI] = "HAL_MODULE_WIFI",
135 [HAL_MODULE_NAN] = "HAL_MODULE_NAN",
136 [HAL_MODULE_NFC] = "HAL_MODULE_NFC",
137 [HAL_MODULE_ZIGBEE] = "HAL_MODULE_ZIGBEE",
138 [HAL_MODULE_UWB] = "HAL_MODULE_UWB",
139 [HAL_MODULE_MTP] = "HAL_MODULE_MTP",
141 /* HAL_GROUP_TELEPHONY */
142 [HAL_MODULE_TELEPHONY] = "HAL_MODULE_TELEPHONY",
144 /* HAL_GROUP_LOCATION */
145 [HAL_MODULE_LOCATION] = "HAL_MODULE_LOCATION",
147 /* HAL_GROUP_SYSTEM */
148 [HAL_MODULE_COMMON] = "HAL_MODULE_COMMON",
149 [HAL_MODULE_POWER] = "HAL_MODULE_POWER",
150 [HAL_MODULE_SENSOR] = "HAL_MODULE_SENSOR",
151 [HAL_MODULE_PERIPHERAL] = "HAL_MODULE_PERIPHERAL",
152 [HAL_MODULE_DEVICE_BATTERY] = "HAL_MODULE_DEVICE_BATTERY",
153 [HAL_MODULE_DEVICE_BEZEL] = "HAL_MODULE_DEVICE_BEZEL",
154 [HAL_MODULE_DEVICE_DISPLAY] = "HAL_MODULE_DEVICE_DISPLAY",
155 [HAL_MODULE_DEVICE_IR] = "HAL_MODULE_DEVICE_IR",
156 [HAL_MODULE_DEVICE_TOUCHSCREEN] = "HAL_MODULE_DEVICE_TOUCHSCREEN",
157 [HAL_MODULE_DEVICE_LED] = "HAL_MODULE_DEVICE_LED",
158 [HAL_MODULE_DEVICE_BOARD] = "HAL_MODULE_DEVICE_BOARD",
159 [HAL_MODULE_DEVICE_EXTERNAL_CONNECTION] = "HAL_MODULE_DEVICE_EXTERNAL_CONNECTION",
160 [HAL_MODULE_DEVICE_THERMAL] = "HAL_MODULE_DEVICE_THERMAL",
161 [HAL_MODULE_DEVICE_USB_GADGET] = "HAL_MODULE_DEVICE_USB_GADGET",
162 [HAL_MODULE_DEVICE_HAPTIC] = "HAL_MODULE_DEVICE_HAPTIC",
163 [HAL_MODULE_DEVICE_MEMORY] = "HAL_MODULE_DEVICE_MEMORY",
165 [HAL_MODULE_END] = "HAL_MODULE_END",
169 * @brief Get the backend library name according to the type of HAL module
170 * @param[in] HAL module id among enum hal_moudle
171 * @param[out] Backend Library name of HAL module
172 * @param[in] Arrary size of name[]
173 * @return @c 0 on success, otherwise a negative error value
175 int hal_common_get_backend_library_name(enum hal_module module, char *name, int size);
178 * @brief Get the backend symbol name according to the type of HAL module
179 * @param[in] HAL module id among enum hal_moudle
180 * @param[out] Backend symbol name of HAL module
181 * @param[in] Arrary size of name[]
182 * @return @c 0 on success, otherwise a negative error value
184 int hal_common_get_backend_symbol_name(enum hal_module module, char *name, int size);
187 * @brief Get the backend data according to the type of HAL module
188 * @param[in] HAL module id among enum hal_moudle
189 * @param[out] Data pointer where 'hal_backend_[module]_funcs' instance
190 * should be stored from HAL backend binary.
191 * @return @c 0 on success, otherwise a negative error value
193 int hal_common_get_backend(enum hal_module module, void **data);
196 * @brief Put the backend data according to the type of HAL module
197 * @param[in] HAL module id among enum hal_moudle
198 * @param[in] Data pointer where 'hal_backend_[module]_funcs' instance
199 * @return @c 0 on success, otherwise a negative error value
201 int hal_common_put_backend(enum hal_module module, void *data);
204 * @brief Get the backend data with the specific library name according to the type of HAL module
205 * @param[in] HAL module id among enum hal_moudle
206 * @param[out] Data pointer where 'hal_backend_[module]_funcs' instance
207 * should be stored from HAL backend binary.
208 * @param[in] HAL backend library name which is not default library name
209 * @return @c 0 on success, otherwise a negative error value
211 int hal_common_get_backend_with_library_name(enum hal_module module,
212 void **data, const char *library_name);
215 * @brief Put the backend data with the specific library name according to the type of HAL module
216 * @param[in] HAL module id among enum hal_moudle
217 * @param[in] Data pointer where 'hal_backend_[module]_funcs' instance
218 * @param[in] HAL backend library name which is not default library name
219 * @return @c 0 on success, otherwise a negative error value
221 int hal_common_put_backend_with_library_name(enum hal_module module,
222 void *data, const char *library_name);
225 * @brief Check HAL ABI version whehter is suppored or not on current platform
226 * @param[in] HAL module id among enum hal_moudle
227 * @param[in] HAL ABI version of backend module among enum hal_abi_version
228 * @return @c 0 on success, otherwise a negative error value
230 int hal_common_check_backend_abi_version(enum hal_module module,
231 enum hal_abi_version abi_version);
236 #endif /* __HAL_COMMON__ */