| /***************************************************************************** |
| Copyright 2010 - 2011 Broadcom Corporation. All rights reserved. |
| |
| Unless you and Broadcom execute a separate written software license agreement |
| governing use of this software, this software is licensed to you under the |
| terms of the GNU General Public License version 2, available at |
| http://www.gnu.org/copyleft/gpl.html (the "GPL"). |
| |
| Notwithstanding the above, under no circumstances may you combine this software |
| in any way with any other Broadcom software provided under a license other than |
| the GPL, without Broadcom's express prior written consent. |
| *****************************************************************************/ |
| /** |
| * @file audio_caph.h |
| * @brief API declaration of hardware abstraction layer for Audio driver. |
| * This code is OS independent and Device independent for audio device control. |
| *****************************************************************************/ |
| |
| #ifndef _AUDIO_CAPH_H__ |
| #define _AUDIO_CAPH_H__ |
| |
| #define MAX_PLAYBACK_DEV 3 |
| |
| struct _TIDChanOfPlaybackDev { |
| AUDIO_DRIVER_TYPE_t drv_type; |
| AUDIO_SOURCE_Enum_t source; |
| AUDIO_SINK_Enum_t sink; |
| }; |
| #define TIDChanOfPlaybackDev struct _TIDChanOfPlaybackDev |
| |
| struct _TIDChanOfCaptureDev { |
| AUDIO_DRIVER_TYPE_t drv_type; |
| AUDIO_SOURCE_Enum_t source; |
| AUDIO_SINK_Enum_t sink; |
| }; |
| #define TIDChanOfCaptureDev struct _TIDChanOfCaptureDev |
| |
| struct _TIDChanOfVoiceCallDev { |
| AUDIO_SOURCE_Enum_t mic; |
| AUDIO_SINK_Enum_t speaker; |
| |
| }; |
| #define TIDChanOfVoiceCallDev struct _TIDChanOfVoiceCallDev |
| |
| |
| struct _TIDChanOfDev { |
| TIDChanOfPlaybackDev p[MAX_PLAYBACK_DEV]; |
| TIDChanOfCaptureDev c; |
| TIDChanOfVoiceCallDev v; |
| }; |
| #define TIDChanOfDev struct _TIDChanOfDev |
| |
| /** |
| * ! The higher layer calls this Audio hardware abstraction layer to perform |
| * ! the following actions. This is expandable if audio controller need to |
| * ! handle more requests. |
| */ |
| |
| enum __BRCM_AUDIO_ACTION_en_t { |
| ACTION_AUD_OpenPlay, |
| ACTION_AUD_ClosePlay, |
| ACTION_AUD_StartPlay, |
| ACTION_AUD_StopPlay, |
| ACTION_AUD_PausePlay, |
| ACTION_AUD_ResumePlay, |
| ACTION_AUD_StartRecord, |
| ACTION_AUD_StopRecord, |
| ACTION_AUD_OpenRecord, |
| ACTION_AUD_CloseRecord, |
| ACTION_AUD_SetPrePareParameters,/* 10 */ |
| ACTION_AUD_AddChannel, |
| ACTION_AUD_RemoveChannel, |
| ACTION_AUD_EnableTelephony, |
| ACTION_AUD_DisableTelephony, |
| ACTION_AUD_EnableECNSTelephony, |
| ACTION_AUD_DisableECNSTelephony, |
| ACTION_AUD_SetTelephonyMicSpkr, |
| ACTION_AUD_MutePlayback, |
| ACTION_AUD_MuteRecord, |
| ACTION_AUD_MuteTelephony,/* 20 */ |
| ACTION_AUD_EnableByPassVibra, |
| ACTION_AUD_DisableByPassVibra, |
| ACTION_AUD_SetPlaybackVolume, |
| ACTION_AUD_SetRecordGain, |
| ACTION_AUD_SetTelephonySpkrVolume, |
| ACTION_AUD_SwitchSpkr, |
| ACTION_AUD_SetHWLoopback, |
| ACTION_AUD_SetAudioMode, |
| ACTION_AUD_SetAudioApp, /*set audio app on*/ |
| ACTION_AUD_RemoveAudioApp, /*Remove audio app*/ |
| ACTION_AUD_EnableFMPlay, |
| ACTION_AUD_DisableFMPlay, |
| ACTION_AUD_SetARM2SPInst, |
| ACTION_AUD_RateChange,/* 34 */ |
| ACTION_AUD_AMPEnable, |
| ACTION_AUD_DisableByPassVibra_CB, |
| ACTION_AUD_BufferReady, |
| ACTION_AUD_SetCallMode, |
| ACTION_AUD_ConnectDL, |
| ACTION_AUD_UpdateUserVolSetting, |
| ACTION_AUD_HandleCPReset, |
| ACTION_AUD_OpenVoIP, |
| ACTION_AUD_CloseVoIP, |
| ACTION_AUD_SET_VOIP_UL_CB, |
| ACTION_AUD_SET_VOIP_DL_CB, |
| ACTION_AUD_StartVoIP, |
| ACTION_AUD_StopVoIP, |
| ACTION_AUD_BTTest, |
| ACTION_AUD_CfgIHF, |
| ACTION_AUD_CfgSSP, |
| ACTION_AUD_HwCtl, |
| ACTION_AUD_AtCtl, |
| ACTION_AUD_CommitAudioProfile, |
| ACTION_AUD_TOTAL |
| }; |
| #define BRCM_AUDIO_ACTION_en_t enum __BRCM_AUDIO_ACTION_en_t |
| |
| struct __BRCM_AUDIO_Param_Start_t { |
| void *drv_handle; |
| TIDChanOfDev *pdev_prop; |
| UInt32 channels; /* num_of_channel */ |
| UInt32 rate; |
| UInt32 bitsPerSample; |
| Int32 vol[2]; |
| Int32 mixMode; |
| Int32 callMode; |
| int stream; |
| void *data; |
| }; |
| #define BRCM_AUDIO_Param_Start_t struct __BRCM_AUDIO_Param_Start_t |
| |
| struct __BRCM_AUDIO_Param_Stop_t { |
| void *drv_handle; |
| TIDChanOfDev *pdev_prop; |
| Int32 callMode; |
| int stream; |
| AUDIO_SOURCE_Enum_t source; |
| AUDIO_SINK_Enum_t sink; |
| }; |
| #define BRCM_AUDIO_Param_Stop_t struct __BRCM_AUDIO_Param_Stop_t |
| |
| struct __BRCM_AUDIO_Param_Pause_t { |
| void *drv_handle; |
| TIDChanOfDev *pdev_prop; |
| int stream; |
| }; |
| #define BRCM_AUDIO_Param_Pause_t struct __BRCM_AUDIO_Param_Pause_t |
| |
| struct __BRCM_AUDIO_Param_Resume_t { |
| void *drv_handle; |
| TIDChanOfDev *pdev_prop; |
| UInt32 channels; |
| UInt32 rate; |
| UInt32 bits_per_sample; |
| int stream; |
| }; |
| #define BRCM_AUDIO_Param_Resume_t struct __BRCM_AUDIO_Param_Resume_t |
| |
| struct __BRCM_AUDIO_Param_Open_t { |
| void *drv_handle; |
| TIDChanOfDev *pdev_prop; |
| int stream; |
| AUDIO_DRIVER_TYPE_t drv_type; |
| }; |
| #define BRCM_AUDIO_Param_Open_t struct __BRCM_AUDIO_Param_Open_t |
| |
| struct __BRCM_AUDIO_Param_Close_t { |
| void *drv_handle; |
| TIDChanOfDev *pdev_prop; |
| int stream; |
| |
| }; |
| #define BRCM_AUDIO_Param_Close_t struct __BRCM_AUDIO_Param_Close_t |
| |
| struct __BRCM_AUDIO_Param_Prepare_t { |
| int period_count; |
| unsigned long period_bytes; |
| AUDIO_DRIVER_HANDLE_t drv_handle; |
| AUDIO_DRIVER_BUFFER_t buf_param; |
| AUDIO_DRIVER_CONFIG_t drv_config; |
| AUDIO_DRIVER_CallBackParams_t cbParams; |
| int stream; |
| }; |
| #define BRCM_AUDIO_Param_Prepare_t struct __BRCM_AUDIO_Param_Prepare_t |
| |
| struct __BRCM_AUDIO_Param_BufferReady_t { |
| AUDIO_DRIVER_HANDLE_t drv_handle; |
| TIDChanOfDev *pdev_prop; |
| int stream; |
| }; |
| #define BRCM_AUDIO_Param_BufferReady_t struct __BRCM_AUDIO_Param_BufferReady_t |
| |
| struct __BRCM_AUDIO_Param_Volume_t { |
| Int32 source; |
| Int32 sink; |
| Int32 volume1; |
| Int32 volume2; |
| int stream; |
| AudioApp_t app; |
| AUDIO_GAIN_FORMAT_t gain_format; |
| }; |
| #define BRCM_AUDIO_Param_Volume_t struct __BRCM_AUDIO_Param_Volume_t |
| |
| |
| struct __BRCM_AUDIO_Param_Mute_t { |
| Int32 source; |
| Int32 sink; |
| Int32 mute1; |
| Int32 mute2; |
| int stream; |
| |
| }; |
| #define BRCM_AUDIO_Param_Mute_t struct __BRCM_AUDIO_Param_Mute_t |
| |
| struct __BRCM_AUDIO_Param_Spkr_t { |
| Int32 src; |
| Int32 sink; |
| int stream; |
| }; |
| #define BRCM_AUDIO_Param_Spkr_t struct __BRCM_AUDIO_Param_Spkr_t |
| |
| struct __BRCM_AUDIO_Param_Call_t { |
| AUDIO_SINK_Enum_t cur_spkr; |
| AUDIO_SINK_Enum_t new_spkr; |
| AUDIO_SOURCE_Enum_t cur_mic; |
| AUDIO_SOURCE_Enum_t new_mic; |
| }; |
| #define BRCM_AUDIO_Param_Call_t struct __BRCM_AUDIO_Param_Call_t |
| |
| |
| struct __BRCM_AUDIO_Param_Loopback_t { |
| Int32 parm; |
| Int32 mic; |
| Int32 spkr; |
| Int32 mode; |
| }; |
| #define BRCM_AUDIO_Param_Loopback_t struct __BRCM_AUDIO_Param_Loopback_t |
| struct __BRCM_AUDIO_Param_Vibra_t { |
| Int32 strength; |
| Int32 direction; |
| Int32 duration; |
| }; |
| #define BRCM_AUDIO_Param_Vibra_t struct __BRCM_AUDIO_Param_Vibra_t |
| |
| struct __BRCM_AUDIO_Param_FM_t { |
| Int32 source; |
| Int32 sink; |
| Int32 volume1; |
| Int32 volume2; |
| UInt32 fm_mix; |
| int stream; |
| }; |
| #define BRCM_AUDIO_Param_FM_t struct __BRCM_AUDIO_Param_FM_t |
| |
| |
| struct __BRCM_AUDIO_Param_RateChange_t { |
| UInt8 codecID; |
| |
| }; |
| #define BRCM_AUDIO_Param_RateChange_t struct __BRCM_AUDIO_Param_RateChange_t |
| |
| struct __BRCM_AUDIO_Param_SetApp_t { |
| int aud_app; |
| int aud_mode; |
| |
| }; |
| #define BRCM_AUDIO_Param_SetApp_t struct __BRCM_AUDIO_Param_SetApp_t |
| |
| struct __BRCM_AUDIO_Param_SetMode_t { |
| int aud_mode; |
| |
| }; |
| #define BRCM_AUDIO_Param_SetMode_t struct __BRCM_AUDIO_Param_SetMode_t |
| |
| struct __BRCM_AUDIO_Param_CallMode_t { |
| UInt32 callMode; |
| |
| }; |
| #define BRCM_AUDIO_Param_CallMode_t struct __BRCM_AUDIO_Param_CallMode_t |
| |
| struct __BRCM_AUDIO_Param_ECNS_t { |
| Int32 ec_ns; |
| }; |
| #define BRCM_AUDIO_Param_ECNS_t struct __BRCM_AUDIO_Param_ECNS_t |
| |
| struct __BRCM_AUDIO_Param_AMPCTL_t { |
| Int32 amp_status; |
| }; |
| #define BRCM_AUDIO_Param_AMPCTL_t struct __BRCM_AUDIO_Param_AMPCTL_t |
| |
| struct __BRCM_AUDIO_Param_BT_Test_t { |
| int mode; |
| }; |
| #define BRCM_AUDIO_Param_BT_Test_t struct __BRCM_AUDIO_Param_BT_Test_t |
| |
| struct __BRCM_AUDIO_Param_Cfg_IHF_t { |
| Boolean stIHF; |
| }; |
| #define BRCM_AUDIO_Param_Cfg_IHF_t struct __BRCM_AUDIO_Param_Cfg_IHF_t |
| |
| struct __BRCM_AUDIO_Param_Cfg_SSP_t { |
| int mode; |
| int bus; |
| int en_lpbk; |
| }; |
| #define BRCM_AUDIO_Param_Cfg_SSP_t struct __BRCM_AUDIO_Param_Cfg_SSP_t |
| |
| struct __BRCM_AUDIO_Param_HwCtl_t { |
| int access_type; |
| int arg1; |
| int arg2; |
| int arg3; |
| int arg4; |
| }; |
| #define BRCM_AUDIO_Param_HwCtl_t struct __BRCM_AUDIO_Param_HwCtl_t |
| |
| struct __BRCM_AUDIO_Param_AtCtl_t { |
| Int32 cmdIndex; |
| void *pChip; |
| Int32 ParamCount; |
| Int32 isGet; |
| Int32 Params[7]; |
| }; |
| #define BRCM_AUDIO_Param_AtCtl_t struct __BRCM_AUDIO_Param_AtCtl_t |
| |
| union __BRCM_AUDIO_Control_Params_un_t { |
| BRCM_AUDIO_Param_Start_t param_start; |
| BRCM_AUDIO_Param_Stop_t param_stop; |
| BRCM_AUDIO_Param_Pause_t param_pause; |
| BRCM_AUDIO_Param_Resume_t param_resume; |
| BRCM_AUDIO_Param_Open_t parm_open; |
| BRCM_AUDIO_Param_Close_t parm_close; |
| BRCM_AUDIO_Param_Volume_t parm_vol; |
| BRCM_AUDIO_Param_Mute_t parm_mute; |
| BRCM_AUDIO_Param_Spkr_t parm_spkr; |
| BRCM_AUDIO_Param_Call_t parm_call; |
| BRCM_AUDIO_Param_RateChange_t parm_ratechange; |
| BRCM_AUDIO_Param_Loopback_t parm_loop; |
| BRCM_AUDIO_Param_Vibra_t parm_vibra; |
| BRCM_AUDIO_Param_FM_t parm_FM; |
| BRCM_AUDIO_Param_Prepare_t parm_prepare; |
| BRCM_AUDIO_Param_SetApp_t parm_setapp; |
| BRCM_AUDIO_Param_SetMode_t parm_setmode; |
| BRCM_AUDIO_Param_SetApp_t parm_rmapp; |
| BRCM_AUDIO_Param_CallMode_t parm_callmode; |
| BRCM_AUDIO_Param_ECNS_t parm_ecns; |
| BRCM_AUDIO_Param_AMPCTL_t parm_ampctl; |
| BRCM_AUDIO_Param_BT_Test_t parm_bt_test; |
| BRCM_AUDIO_Param_Cfg_IHF_t parm_cfg_ihf; |
| BRCM_AUDIO_Param_Cfg_SSP_t parm_cfg_ssp; |
| BRCM_AUDIO_Param_HwCtl_t parm_hwCtl; |
| BRCM_AUDIO_Param_AtCtl_t parm_atctl; |
| |
| }; |
| #define BRCM_AUDIO_Control_Params_un_t union __BRCM_AUDIO_Control_Params_un_t |
| |
| struct __BRCM_AUDIO_Param_cpReset_t { |
| Boolean cp_reset_start; |
| |
| }; |
| #define BRCM_AUDIO_Param_cpReset_t struct __BRCM_AUDIO_Param_cpReset_t |
| |
| void caph_audio_init(void); |
| |
| int LaunchAudioCtrlThread(void); |
| |
| int TerminateAudioHalThread(void); |
| |
| Result_t AUDIO_Ctrl_Trigger(BRCM_AUDIO_ACTION_en_t action_code, |
| void *arg_param, void *callback, int block); |
| |
| #ifdef CONFIG_AUDIO_S2 |
| void S2_vibtonz_en(bool on_off); |
| void S2_vibtonz_pwm(int nForce); |
| #endif |
| |
| #endif /* _CAPH_AUDIO_H__ */ |