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_get_spkr_prot_snd_device(snd_device) (snd_device)
4563863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamanda#else
4663863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamandavoid audio_extn_spkr_prot_init(void *adev);
4763863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamandaint audio_extn_spkr_prot_start_processing(snd_device_t snd_device);
4863863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamandavoid audio_extn_spkr_prot_stop_processing(snd_device_t snd_device);
4963863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamandabool audio_extn_spkr_prot_is_enabled();
5063863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamandaint audio_extn_get_spkr_prot_snd_device(snd_device_t snd_device);
5163863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamandavoid audio_extn_spkr_prot_calib_cancel(void *adev);
5263863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamanda#endif
5363863001b659b66a367800c39f4a016ec5d544d7Ravi Kumar Alamanda
548e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda#ifndef HFP_ENABLED
558e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda#define audio_extn_hfp_is_active(adev)                  (0)
568e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda#define audio_extn_hfp_get_usecase()                    (-1)
578e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda#define audio_extn_hfp_set_parameters(adev, params)     (0)
5813f26e89c56b41371c69a9a2f59f6ff95f6bab93Alain Vongsouvanh#define audio_extn_hfp_set_mic_mute(adev, state)        (0)
5913f26e89c56b41371c69a9a2f59f6ff95f6bab93Alain Vongsouvanh
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);
6713f26e89c56b41371c69a9a2f59f6ff95f6bab93Alain Vongsouvanhint audio_extn_hfp_set_mic_mute(struct audio_device *adev, bool state);
6813f26e89c56b41371c69a9a2f59f6ff95f6bab93Alain Vongsouvanh
698e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda#endif
708e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda
71ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin#ifndef USB_TUNNEL_ENABLED
72ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin#define audio_extn_usb_init(adev)                                      (0)
73ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin#define audio_extn_usb_deinit()                                        (0)
74ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin#define audio_extn_usb_add_device(device, card)                        (0)
75ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin#define audio_extn_usb_remove_device(device, card)                     (0)
76ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin#define audio_extn_usb_is_config_supported(bit_width, sample_rate, ch, pb) (false)
77ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin#define audio_extn_usb_enable_sidetone(device, enable)                 (0)
78ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin#define audio_extn_usb_set_sidetone_gain(parms, value, len)            (0)
79ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin#define audio_extn_usb_is_capture_supported()                          (false)
80569b7486d9263f62d85a8bdb48340ff7f8d33089Haynes Mathew George#define audio_extn_usb_get_max_channels(dir)                           (0)
81569b7486d9263f62d85a8bdb48340ff7f8d33089Haynes Mathew George#define audio_extn_usb_get_max_bit_width(dir)                          (0)
821885941a7ff85a1ec90214007d13b026a0920149Andy Hung#define audio_extn_usb_sup_sample_rates(t, s, l)        ((t), (s), (l), 0) /* fix unused warn */
83f9f241e45e5a76458e5f5596bca495317981ca3aKevin Rocard#define audio_extn_usb_alive(adev)                                     (false)
8465f6b437dbc2f79b5450ebb283477ae994b0cc26Haynes Mathew George#define audio_extn_usb_find_service_interval(m, p)      ((m), (p), 0) /* fix unused warn */
8565f6b437dbc2f79b5450ebb283477ae994b0cc26Haynes Mathew George#define audio_extn_usb_altset_for_service_interval(p, si, bw, sr, ch) (-1)
86ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin#else
87ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Linvoid audio_extn_usb_init(void *adev);
88ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Linvoid audio_extn_usb_deinit();
89ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Linvoid audio_extn_usb_add_device(audio_devices_t device, int card);
90ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Linvoid audio_extn_usb_remove_device(audio_devices_t device, int card);
91ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Linbool audio_extn_usb_is_config_supported(unsigned int *bit_width,
92ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin                                        unsigned int *sample_rate,
93ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin                                        unsigned int *ch,
94ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin                                        bool is_playback);
95ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Linint audio_extn_usb_enable_sidetone(int device, bool enable);
96ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Linint audio_extn_usb_set_sidetone_gain(struct str_parms *parms,
97ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin                                     char *value, int len);
98ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Linbool audio_extn_usb_is_capture_supported();
99569b7486d9263f62d85a8bdb48340ff7f8d33089Haynes Mathew Georgeint audio_extn_usb_get_max_channels(bool is_playback);
100569b7486d9263f62d85a8bdb48340ff7f8d33089Haynes Mathew Georgeint audio_extn_usb_get_max_bit_width(bool is_playback);
101569b7486d9263f62d85a8bdb48340ff7f8d33089Haynes Mathew Georgeint audio_extn_usb_sup_sample_rates(bool is_playback, uint32_t *sr, uint32_t l);
102f9f241e45e5a76458e5f5596bca495317981ca3aKevin Rocardbool audio_extn_usb_alive(int card);
10365f6b437dbc2f79b5450ebb283477ae994b0cc26Haynes Mathew Georgeunsigned long audio_extn_usb_find_service_interval(bool min, bool playback);
10465f6b437dbc2f79b5450ebb283477ae994b0cc26Haynes Mathew Georgeint audio_extn_usb_altset_for_service_interval(bool is_playback,
10565f6b437dbc2f79b5450ebb283477ae994b0cc26Haynes Mathew George                                               unsigned long service_interval,
10665f6b437dbc2f79b5450ebb283477ae994b0cc26Haynes Mathew George                                               uint32_t *bit_width,
10765f6b437dbc2f79b5450ebb283477ae994b0cc26Haynes Mathew George                                               uint32_t *sample_rate,
10865f6b437dbc2f79b5450ebb283477ae994b0cc26Haynes Mathew George                                               uint32_t *channel_count);
109ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin#endif
110ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin
111ee3fe40f7a48fa0abe8aef40a2abe83777468ebaDavid Lin
112a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#ifndef SOUND_TRIGGER_ENABLED
113a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#define audio_extn_sound_trigger_init(adev)                            (0)
114a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#define audio_extn_sound_trigger_deinit(adev)                          (0)
115a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#define audio_extn_sound_trigger_update_device_status(snd_dev, event)  (0)
1164ee6e3e833b999c2552abb7af8bf58b27099a256Mikhail Naganov#define audio_extn_sound_trigger_update_stream_status(uc_info, event)  (0)
117a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#define audio_extn_sound_trigger_set_parameters(adev, parms)           (0)
118a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#define audio_extn_sound_trigger_check_and_get_session(in)             (0)
119a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#define audio_extn_sound_trigger_stop_lab(in)                          (0)
120a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#define audio_extn_sound_trigger_read(in, buffer, bytes)               (0)
121a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda
122a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#else
123a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda
124a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandaenum st_event_type {
125a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda    ST_EVENT_SND_DEVICE_FREE,
126a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda    ST_EVENT_SND_DEVICE_BUSY,
127a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda    ST_EVENT_STREAM_FREE,
128a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda    ST_EVENT_STREAM_BUSY
129a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda};
130a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandatypedef enum st_event_type st_event_type_t;
131a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda
132a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandaint audio_extn_sound_trigger_init(struct audio_device *adev);
133a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandavoid audio_extn_sound_trigger_deinit(struct audio_device *adev);
134a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandavoid audio_extn_sound_trigger_update_device_status(snd_device_t snd_device,
135a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda                                     st_event_type_t event);
1364ee6e3e833b999c2552abb7af8bf58b27099a256Mikhail Naganovvoid audio_extn_sound_trigger_update_stream_status(struct audio_usecase *uc_info,
1374ee6e3e833b999c2552abb7af8bf58b27099a256Mikhail Naganov                                     st_event_type_t event);
138a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandavoid audio_extn_sound_trigger_set_parameters(struct audio_device *adev,
139a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda                                             struct str_parms *parms);
140a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandavoid audio_extn_sound_trigger_check_and_get_session(struct stream_in *in);
141a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandavoid audio_extn_sound_trigger_stop_lab(struct stream_in *in);
142a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamandaint audio_extn_sound_trigger_read(struct stream_in *in, void *buffer,
143a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda                                  size_t bytes);
144a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda#endif
145a417cc5300f03dde12a2afd2f1f43509e5e62fafRavi Kumar Alamanda
14626483017c151b5de3f36e23307816037264d22e6Aniket Kumar Lata#ifndef A2DP_OFFLOAD_ENABLED
14726483017c151b5de3f36e23307816037264d22e6Aniket Kumar Lata#define audio_extn_a2dp_init(adev)                       (0)
14826483017c151b5de3f36e23307816037264d22e6Aniket Kumar Lata#define audio_extn_a2dp_start_playback()                 (0)
14926483017c151b5de3f36e23307816037264d22e6Aniket Kumar Lata#define audio_extn_a2dp_stop_playback()                  (0)
150d6834efdb15bc9a589a5bebcdbb4e337cf6920d6Aniket Kumar Lata#define audio_extn_a2dp_set_parameters(parms, reconfig)  (0)
151d6834efdb15bc9a589a5bebcdbb4e337cf6920d6Aniket Kumar Lata#define audio_extn_a2dp_get_parameters(query, reply)     (0)
15226483017c151b5de3f36e23307816037264d22e6Aniket Kumar Lata#define audio_extn_a2dp_is_force_device_switch()         (0)
15326483017c151b5de3f36e23307816037264d22e6Aniket Kumar Lata#define audio_extn_a2dp_set_handoff_mode(is_on)          (0)
15426483017c151b5de3f36e23307816037264d22e6Aniket Kumar Lata#define audio_extn_a2dp_get_sample_rate(sample_rate)     (0)
15526483017c151b5de3f36e23307816037264d22e6Aniket Kumar Lata#define audio_extn_a2dp_get_encoder_latency()            (0)
15626483017c151b5de3f36e23307816037264d22e6Aniket Kumar Lata#define audio_extn_a2dp_is_ready()                       (0)
15726483017c151b5de3f36e23307816037264d22e6Aniket Kumar Lata#define audio_extn_a2dp_is_suspended()                   (0)
15826483017c151b5de3f36e23307816037264d22e6Aniket Kumar Lata#else
15926483017c151b5de3f36e23307816037264d22e6Aniket Kumar Latavoid audio_extn_a2dp_init(void *adev);
16026483017c151b5de3f36e23307816037264d22e6Aniket Kumar Lataint audio_extn_a2dp_start_playback();
16126483017c151b5de3f36e23307816037264d22e6Aniket Kumar Lataint audio_extn_a2dp_stop_playback();
162d6834efdb15bc9a589a5bebcdbb4e337cf6920d6Aniket Kumar Lataint audio_extn_a2dp_set_parameters(struct str_parms *parms, bool *reconfig);
163d6834efdb15bc9a589a5bebcdbb4e337cf6920d6Aniket Kumar Lataint audio_extn_a2dp_get_parameters(struct str_parms *query,
164d6834efdb15bc9a589a5bebcdbb4e337cf6920d6Aniket Kumar Lata                                   struct str_parms *reply);
16526483017c151b5de3f36e23307816037264d22e6Aniket Kumar Latabool audio_extn_a2dp_is_force_device_switch();
16626483017c151b5de3f36e23307816037264d22e6Aniket Kumar Latavoid audio_extn_a2dp_set_handoff_mode(bool is_on);
16726483017c151b5de3f36e23307816037264d22e6Aniket Kumar Latavoid audio_extn_a2dp_get_sample_rate(int *sample_rate);
16826483017c151b5de3f36e23307816037264d22e6Aniket Kumar Latauint32_t audio_extn_a2dp_get_encoder_latency();
16926483017c151b5de3f36e23307816037264d22e6Aniket Kumar Latabool audio_extn_a2dp_is_ready();
17026483017c151b5de3f36e23307816037264d22e6Aniket Kumar Latabool audio_extn_a2dp_is_suspended();
17126483017c151b5de3f36e23307816037264d22e6Aniket Kumar Lata#endif
17226483017c151b5de3f36e23307816037264d22e6Aniket Kumar Lata
1734211fad32ff21574a3935dbe28397c55a1895649zhaoyang yin#ifndef DSM_FEEDBACK_ENABLED
1744211fad32ff21574a3935dbe28397c55a1895649zhaoyang yin#define audio_extn_dsm_feedback_enable(adev, snd_device, benable)                (0)
1754211fad32ff21574a3935dbe28397c55a1895649zhaoyang yin#else
1764211fad32ff21574a3935dbe28397c55a1895649zhaoyang yinvoid audio_extn_dsm_feedback_enable(struct audio_device *adev,
1774211fad32ff21574a3935dbe28397c55a1895649zhaoyang yin                         snd_device_t snd_device,
1784211fad32ff21574a3935dbe28397c55a1895649zhaoyang yin                         bool benable);
1794211fad32ff21574a3935dbe28397c55a1895649zhaoyang yin#endif
1804211fad32ff21574a3935dbe28397c55a1895649zhaoyang yin
181e3b9956373beb54b67957675b6e6d99fd3280edaYamit Mehtavoid audio_extn_utils_send_default_app_type_cfg(void *platform, struct mixer *mixer);
182e3b9956373beb54b67957675b6e6d99fd3280edaYamit Mehtaint audio_extn_utils_send_app_type_cfg(struct audio_device *adev,
183e3b9956373beb54b67957675b6e6d99fd3280edaYamit Mehta                                       struct audio_usecase *usecase);
184e5ff0fc8e7126cdd2535641e9463ee8065b6149eHaynes Mathew Georgevoid audio_extn_utils_send_audio_calibration(struct audio_device *adev,
185e5ff0fc8e7126cdd2535641e9463ee8065b6149eHaynes Mathew George                                             struct audio_usecase *usecase);
1864a824779a3f91eea626ab015975ede392f84ec38vivek mehtaint audio_extn_utils_send_app_type_gain(struct audio_device *adev,
1874a824779a3f91eea626ab015975ede392f84ec38vivek mehta                                        int app_type,
1884a824779a3f91eea626ab015975ede392f84ec38vivek mehta                                        int *gain);
1897631557cda5515b07b06dd0def53e5813f2442f3Ravi Kumar Alamanda#ifndef HWDEP_CAL_ENABLED
1907631557cda5515b07b06dd0def53e5813f2442f3Ravi Kumar Alamanda#define  audio_extn_hwdep_cal_send(snd_card, acdb_handle) (0)
1917631557cda5515b07b06dd0def53e5813f2442f3Ravi Kumar Alamanda#else
1927631557cda5515b07b06dd0def53e5813f2442f3Ravi Kumar Alamandavoid audio_extn_hwdep_cal_send(int snd_card, void *acdb_handle);
1937631557cda5515b07b06dd0def53e5813f2442f3Ravi Kumar Alamanda#endif
1947631557cda5515b07b06dd0def53e5813f2442f3Ravi Kumar Alamanda
195533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamanda#ifndef KPI_OPTIMIZE_ENABLED
196533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamanda#define audio_extn_perf_lock_init() (0)
197533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamanda#define audio_extn_perf_lock_acquire() (0)
198533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamanda#define audio_extn_perf_lock_release() (0)
199533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamanda#else
200533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamandaint audio_extn_perf_lock_init(void);
201533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamandavoid audio_extn_perf_lock_acquire(void);
202533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamandavoid audio_extn_perf_lock_release(void);
203533bb72620933eddd232d41e171ab70ea0807e34Ravi Kumar Alamanda#endif /* KPI_OPTIMIZE_ENABLED */
204de4849cee04a23ae84da96487e344f75f93e5585vivek mehta
205de4849cee04a23ae84da96487e344f75f93e5585vivek mehta#ifndef HW_VARIANTS_ENABLED
206de4849cee04a23ae84da96487e344f75f93e5585vivek mehta#define hw_info_init(snd_card_name)                  (0)
207de4849cee04a23ae84da96487e344f75f93e5585vivek mehta#define hw_info_deinit(hw_info)                      (0)
208de4849cee04a23ae84da96487e344f75f93e5585vivek mehta#define hw_info_append_hw_type(hw_info,\
209de4849cee04a23ae84da96487e344f75f93e5585vivek mehta        snd_device, device_name)                     (0)
210de4849cee04a23ae84da96487e344f75f93e5585vivek mehta#else
211de4849cee04a23ae84da96487e344f75f93e5585vivek mehtavoid *hw_info_init(const char *snd_card_name);
212de4849cee04a23ae84da96487e344f75f93e5585vivek mehtavoid hw_info_deinit(void *hw_info);
213de4849cee04a23ae84da96487e344f75f93e5585vivek mehtavoid hw_info_append_hw_type(void *hw_info, snd_device_t snd_device,
214de4849cee04a23ae84da96487e344f75f93e5585vivek mehta                             char *device_name);
215de4849cee04a23ae84da96487e344f75f93e5585vivek mehta#endif /* HW_VARIANTS_ENABLED */
216c735fb07458a06b7f4dc702607b3cb722a78c9f7Haynes Mathew George
217c735fb07458a06b7f4dc702607b3cb722a78c9f7Haynes Mathew Georgetypedef void (* snd_mon_cb)(void * stream, struct str_parms * parms);
218c735fb07458a06b7f4dc702607b3cb722a78c9f7Haynes Mathew George#ifndef SND_MONITOR_ENABLED
219c735fb07458a06b7f4dc702607b3cb722a78c9f7Haynes Mathew George#define audio_extn_snd_mon_init()           (0)
220c735fb07458a06b7f4dc702607b3cb722a78c9f7Haynes Mathew George#define audio_extn_snd_mon_deinit()         (0)
221c735fb07458a06b7f4dc702607b3cb722a78c9f7Haynes Mathew George#define audio_extn_snd_mon_register_listener(stream, cb) (0)
222c735fb07458a06b7f4dc702607b3cb722a78c9f7Haynes Mathew George#define audio_extn_snd_mon_unregister_listener(stream) (0)
223c735fb07458a06b7f4dc702607b3cb722a78c9f7Haynes Mathew George#else
224c735fb07458a06b7f4dc702607b3cb722a78c9f7Haynes Mathew Georgeint audio_extn_snd_mon_init();
225c735fb07458a06b7f4dc702607b3cb722a78c9f7Haynes Mathew Georgeint audio_extn_snd_mon_deinit();
226c735fb07458a06b7f4dc702607b3cb722a78c9f7Haynes Mathew Georgeint audio_extn_snd_mon_register_listener(void *stream, snd_mon_cb cb);
227c735fb07458a06b7f4dc702607b3cb722a78c9f7Haynes Mathew Georgeint audio_extn_snd_mon_unregister_listener(void *stream);
228c735fb07458a06b7f4dc702607b3cb722a78c9f7Haynes Mathew George#endif
229c735fb07458a06b7f4dc702607b3cb722a78c9f7Haynes Mathew George
2300fb113194399805a0fdbf5bb3f812e98047272bdvivek mehtabool audio_extn_utils_resolve_config_file(char[]);
23166ff30c81a8c561db01217297f849614a9599533Haynes Mathew Georgeint audio_extn_utils_get_platform_info(const char* snd_card_name,
23266ff30c81a8c561db01217297f849614a9599533Haynes Mathew George                                       char* platform_info_file);
2330fb113194399805a0fdbf5bb3f812e98047272bdvivek mehtaint audio_extn_utils_get_snd_card_num();
2348e6e98fc5af6d6f79bc71eb37df470380ae82fadRavi Kumar Alamanda#endif /* AUDIO_EXTN_H */
235