| /* |
| * Copyright (c) 2013-2018, The Linux Foundation. All rights reserved. |
| * Not a Contribution. |
| * |
| * Copyright (C) 2013 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef ACDB_H |
| #define ACDB_H |
| |
| #include <stdbool.h> |
| #include <linux/msm_audio_calibration.h> |
| |
| #define MAX_CVD_VERSION_STRING_SIZE 100 |
| #define LIB_ACDB_LOADER "libacdbloader.so" |
| #define CVD_VERSION_MIXER_CTL "CVD Version" |
| #define ACDB_METAINFO_KEY_MODULE_NAME_LEN 100 |
| |
| #ifdef LINUX_ENABLED |
| #define PLATFORM_INFO_XML_PATH "/etc/audio_platform_info.xml" |
| #else |
| #define PLATFORM_INFO_XML_PATH "/vendor/etc/audio_platform_info.xml" |
| #endif |
| |
| enum { |
| ACDB_LOADER_INIT_V1 = 1, |
| ACDB_LOADER_INIT_V2, |
| ACDB_LOADER_INIT_V3, |
| ACDB_LOADER_INIT_V4, |
| }; |
| |
| struct mixer; |
| /* Audio calibration related functions */ |
| typedef void (*acdb_deallocate_t)(); |
| typedef int (*acdb_init_t)(); |
| typedef int (*acdb_init_v2_t)(const char *, char *, int); |
| typedef int (*acdb_init_v3_t)(const char *, char *, struct listnode *); |
| typedef int (*acdb_init_v4_t)(void *, int); |
| typedef void (*acdb_send_audio_cal_t)(int, int, int , int); |
| typedef void (*acdb_send_audio_cal_v3_t)(int, int, int, int, int); |
| typedef void (*acdb_send_voice_cal_t)(int, int); |
| typedef int (*acdb_reload_vocvoltable_t)(int); |
| typedef int (*acdb_get_default_app_type_t)(void); |
| typedef int (*acdb_loader_get_calibration_t)(char *attr, int size, void *data); |
| typedef int (*acdb_set_audio_cal_t) (void *, void *, uint32_t); |
| typedef int (*acdb_get_audio_cal_t) (void *, void *, uint32_t*); |
| typedef int (*acdb_send_common_top_t) (void); |
| typedef int (*acdb_set_codec_data_t) (void *, char *); |
| typedef int (*acdb_reload_t) (char *, char *, char *, int); |
| typedef int (*acdb_reload_v2_t) (char *, char *, char *, struct listnode *); |
| typedef int (*acdb_send_gain_dep_cal_t)(int, int, int, int, int); |
| |
| struct meta_key_list { |
| struct listnode list; |
| struct audio_cal_info_metainfo cal_info; |
| char name[ACDB_METAINFO_KEY_MODULE_NAME_LEN]; |
| }; |
| |
| struct acdb_init_data_v4 { |
| char *cvd_version; |
| char *snd_card_name; |
| struct listnode *meta_key_list; |
| bool *is_instance_id_supported; |
| }; |
| |
| struct acdb_platform_data { |
| /* Audio calibration related functions */ |
| void *acdb_handle; |
| acdb_init_t acdb_init; |
| acdb_init_v2_t acdb_init_v2; |
| acdb_init_v3_t acdb_init_v3; |
| acdb_init_v4_t acdb_init_v4; |
| struct listnode acdb_meta_key_list; |
| struct acdb_init_data_v4 acdb_init_data; |
| }; |
| |
| int acdb_init(int); |
| int acdb_init_v2(struct mixer *); |
| |
| int acdb_set_metainfo_key(void *platform, char *name, int key); |
| #endif //ACDB_H |