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