18e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda/* 28e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda * Copyright (C) 2014 The Android Open Source Project 38e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda * 48e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda * Licensed under the Apache License, Version 2.0 (the "License"); 58e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda * you may not use this file except in compliance with the License. 68e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda * You may obtain a copy of the License at 78e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda * 88e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda * http://www.apache.org/licenses/LICENSE-2.0 98e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda * 108e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda * Unless required by applicable law or agreed to in writing, software 118e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda * distributed under the License is distributed on an "AS IS" BASIS, 128e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda * See the License for the specific language governing permissions and 148e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda * limitations under the License. 158e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda */ 168e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda 178e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda#ifndef AUDIO_EXTN_H 188e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda#define AUDIO_EXTN_H 198e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda 208e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda#include <cutils/str_parms.h> 218e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda 22de4849cee04a23ae84da96487e344f75f93e5585vivek mehta#define HW_INFO_ARRAY_MAX_SIZE 32 23de4849cee04a23ae84da96487e344f75f93e5585vivek mehta 24de4849cee04a23ae84da96487e344f75f93e5585vivek mehtastruct snd_card_split { 25de4849cee04a23ae84da96487e344f75f93e5585vivek mehta char device[HW_INFO_ARRAY_MAX_SIZE]; 26de4849cee04a23ae84da96487e344f75f93e5585vivek mehta char snd_card[HW_INFO_ARRAY_MAX_SIZE]; 27de4849cee04a23ae84da96487e344f75f93e5585vivek mehta char form_factor[HW_INFO_ARRAY_MAX_SIZE]; 28de4849cee04a23ae84da96487e344f75f93e5585vivek mehta}; 29de4849cee04a23ae84da96487e344f75f93e5585vivek mehta 300499d4fc40cafb9fbb0e8eace1657cfaf79c5699Eric Laurentvoid *audio_extn_extspk_init(struct audio_device *adev); 310499d4fc40cafb9fbb0e8eace1657cfaf79c5699Eric Laurentvoid audio_extn_extspk_deinit(void *extn); 320499d4fc40cafb9fbb0e8eace1657cfaf79c5699Eric Laurentvoid audio_extn_extspk_update(void* extn); 330499d4fc40cafb9fbb0e8eace1657cfaf79c5699Eric Laurentvoid audio_extn_extspk_set_mode(void* extn, audio_mode_t mode); 344cc4ce1a92a47fa1d98c884a33e5e93d3d468b15Eric Laurentvoid audio_extn_extspk_set_voice_vol(void* extn, float vol); 35de4849cee04a23ae84da96487e344f75f93e5585vivek mehtastruct snd_card_split *audio_extn_get_snd_card_split(); 36de4849cee04a23ae84da96487e344f75f93e5585vivek mehtavoid audio_extn_set_snd_card_split(const char* in_snd_card_name); 370499d4fc40cafb9fbb0e8eace1657cfaf79c5699Eric Laurent 3863863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamanda#ifndef SPKR_PROT_ENABLED 3963863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamanda#define audio_extn_spkr_prot_init(adev) (0) 4063863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamanda#define audio_extn_spkr_prot_start_processing(snd_device) (-EINVAL) 4163863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamanda#define audio_extn_spkr_prot_calib_cancel(adev) (0) 4263863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamanda#define audio_extn_spkr_prot_stop_processing(snd_device) (0) 4363863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamanda#define audio_extn_spkr_prot_is_enabled() (false) 4463863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamanda#define audio_extn_spkr_prot_get_acdb_id(snd_device) (-EINVAL) 4563863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamanda#define audio_extn_get_spkr_prot_snd_device(snd_device) (snd_device) 4663863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamanda#else 4763863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamandavoid audio_extn_spkr_prot_init(void *adev); 4863863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamandaint audio_extn_spkr_prot_start_processing(snd_device_t snd_device); 4963863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamandavoid audio_extn_spkr_prot_stop_processing(snd_device_t snd_device); 5063863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamandabool audio_extn_spkr_prot_is_enabled(); 5163863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamandaint audio_extn_spkr_prot_get_acdb_id(snd_device_t snd_device); 5263863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamandaint audio_extn_get_spkr_prot_snd_device(snd_device_t snd_device); 5363863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamandavoid audio_extn_spkr_prot_calib_cancel(void *adev); 5463863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamanda#endif 5563863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamanda 568e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda#ifndef HFP_ENABLED 578e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda#define audio_extn_hfp_is_active(adev) (0) 588e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda#define audio_extn_hfp_get_usecase() (-1) 598e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda#define audio_extn_hfp_set_parameters(adev, params) (0) 608e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda#else 618e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamandabool audio_extn_hfp_is_active(struct audio_device *adev); 628e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda 638e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamandaaudio_usecase_t audio_extn_hfp_get_usecase(); 648e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda 658e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamandavoid audio_extn_hfp_set_parameters(struct audio_device *adev, 668e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda struct str_parms *parms); 678e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda#endif 688e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda 69a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#ifndef SOUND_TRIGGER_ENABLED 70a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#define audio_extn_sound_trigger_init(adev) (0) 71a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#define audio_extn_sound_trigger_deinit(adev) (0) 72a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#define audio_extn_sound_trigger_update_device_status(snd_dev, event) (0) 73a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#define audio_extn_sound_trigger_set_parameters(adev, parms) (0) 74a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#define audio_extn_sound_trigger_check_and_get_session(in) (0) 75a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#define audio_extn_sound_trigger_stop_lab(in) (0) 76a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#define audio_extn_sound_trigger_read(in, buffer, bytes) (0) 77a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda 78a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#else 79a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda 80a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandaenum st_event_type { 81a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda ST_EVENT_SND_DEVICE_FREE, 82a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda ST_EVENT_SND_DEVICE_BUSY, 83a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda ST_EVENT_STREAM_FREE, 84a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda ST_EVENT_STREAM_BUSY 85a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda}; 86a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandatypedef enum st_event_type st_event_type_t; 87a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda 88a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandaint audio_extn_sound_trigger_init(struct audio_device *adev); 89a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandavoid audio_extn_sound_trigger_deinit(struct audio_device *adev); 90a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandavoid audio_extn_sound_trigger_update_device_status(snd_device_t snd_device, 91a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda st_event_type_t event); 92a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandavoid audio_extn_sound_trigger_set_parameters(struct audio_device *adev, 93a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda struct str_parms *parms); 94a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandavoid audio_extn_sound_trigger_check_and_get_session(struct stream_in *in); 95a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandavoid audio_extn_sound_trigger_stop_lab(struct stream_in *in); 96a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandaint audio_extn_sound_trigger_read(struct stream_in *in, void *buffer, 97a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda size_t bytes); 98a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#endif 99a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda 1004211fad32ff21574a3935dbe28397c55a1895649zhaoyang yin#ifndef DSM_FEEDBACK_ENABLED 1014211fad32ff21574a3935dbe28397c55a1895649zhaoyang yin#define audio_extn_dsm_feedback_enable(adev, snd_device, benable) (0) 1024211fad32ff21574a3935dbe28397c55a1895649zhaoyang yin#else 1034211fad32ff21574a3935dbe28397c55a1895649zhaoyang yinvoid audio_extn_dsm_feedback_enable(struct audio_device *adev, 1044211fad32ff21574a3935dbe28397c55a1895649zhaoyang yin snd_device_t snd_device, 1054211fad32ff21574a3935dbe28397c55a1895649zhaoyang yin bool benable); 1064211fad32ff21574a3935dbe28397c55a1895649zhaoyang yin#endif 1074211fad32ff21574a3935dbe28397c55a1895649zhaoyang yin 1087631557cda5515b07b06dd0def53e5813f2442f3Ravi Kumar Alamanda#ifndef HWDEP_CAL_ENABLED 1097631557cda5515b07b06dd0def53e5813f2442f3Ravi Kumar Alamanda#define audio_extn_hwdep_cal_send(snd_card, acdb_handle) (0) 1107631557cda5515b07b06dd0def53e5813f2442f3Ravi Kumar Alamanda#else 1117631557cda5515b07b06dd0def53e5813f2442f3Ravi Kumar Alamandavoid audio_extn_hwdep_cal_send(int snd_card, void *acdb_handle); 1127631557cda5515b07b06dd0def53e5813f2442f3Ravi Kumar Alamanda#endif 1137631557cda5515b07b06dd0def53e5813f2442f3Ravi Kumar Alamanda 114533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamanda#ifndef KPI_OPTIMIZE_ENABLED 115533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamanda#define audio_extn_perf_lock_init() (0) 116533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamanda#define audio_extn_perf_lock_acquire() (0) 117533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamanda#define audio_extn_perf_lock_release() (0) 118533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamanda#else 119533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamandaint audio_extn_perf_lock_init(void); 120533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamandavoid audio_extn_perf_lock_acquire(void); 121533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamandavoid audio_extn_perf_lock_release(void); 122533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamanda#endif /* KPI_OPTIMIZE_ENABLED */ 123de4849cee04a23ae84da96487e344f75f93e5585vivek mehta 124de4849cee04a23ae84da96487e344f75f93e5585vivek mehta#ifndef HW_VARIANTS_ENABLED 125de4849cee04a23ae84da96487e344f75f93e5585vivek mehta#define hw_info_init(snd_card_name) (0) 126de4849cee04a23ae84da96487e344f75f93e5585vivek mehta#define hw_info_deinit(hw_info) (0) 127de4849cee04a23ae84da96487e344f75f93e5585vivek mehta#define hw_info_append_hw_type(hw_info,\ 128de4849cee04a23ae84da96487e344f75f93e5585vivek mehta snd_device, device_name) (0) 129de4849cee04a23ae84da96487e344f75f93e5585vivek mehta#else 130de4849cee04a23ae84da96487e344f75f93e5585vivek mehtavoid *hw_info_init(const char *snd_card_name); 131de4849cee04a23ae84da96487e344f75f93e5585vivek mehtavoid hw_info_deinit(void *hw_info); 132de4849cee04a23ae84da96487e344f75f93e5585vivek mehtavoid hw_info_append_hw_type(void *hw_info, snd_device_t snd_device, 133de4849cee04a23ae84da96487e344f75f93e5585vivek mehta char *device_name); 134de4849cee04a23ae84da96487e344f75f93e5585vivek mehta#endif /* HW_VARIANTS_ENABLED */ 1358e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda#endif /* AUDIO_EXTN_H */ 136