diff options
author | UK KIM <w0806.kim@samsung.com> | 2011-07-13 02:04:04 -0700 |
---|---|---|
committer | Simon Wilson <simonwilson@google.com> | 2011-08-22 09:28:00 -0700 |
commit | aa84fe63216cf36db1a1e136dc660ba6d9cf142a (patch) | |
tree | 4938bb768e01ee7b14e006dacc262602a95b9c25 /audio | |
parent | 1734c9330294c18934e304cb9841ff5469b029e2 (diff) | |
download | device_samsung_tuna-aa84fe63216cf36db1a1e136dc660ba6d9cf142a.tar.gz device_samsung_tuna-aa84fe63216cf36db1a1e136dc660ba6d9cf142a.tar.bz2 device_samsung_tuna-aa84fe63216cf36db1a1e136dc660ba6d9cf142a.zip |
audio: change time and method to change clock and audio path
1. clock sync: after AP (mcbsp2) is enabled
2. audio path: according to AP's output device
Change-Id: I5e0214bea31a722ce43fe92fb1d54bffb291cae9
Diffstat (limited to 'audio')
-rw-r--r-- | audio/audio_hw.c | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/audio/audio_hw.c b/audio/audio_hw.c index 22d1420..7ba91b0 100644 --- a/audio/audio_hw.c +++ b/audio/audio_hw.c @@ -423,9 +423,6 @@ static int start_call(struct tuna_audio_device *adev) } } - ril_set_call_clock_sync(&adev->ril, SOUND_CLOCK_START); - ril_set_call_audio_path(&adev->ril, SOUND_AUDIO_PATH_HANDSET); - pcm_start(adev->pcm_modem_dl); pcm_start(adev->pcm_modem_ul); @@ -451,12 +448,44 @@ static void end_call(struct tuna_audio_device *adev) adev->pcm_modem_ul = NULL; } +static void set_incall_device(struct tuna_audio_device *adev) +{ + int device_type; + + switch(adev->devices & AUDIO_DEVICE_OUT_ALL) { + case AUDIO_DEVICE_OUT_EARPIECE: + device_type = SOUND_AUDIO_PATH_HANDSET; + break; + case AUDIO_DEVICE_OUT_SPEAKER: + device_type = SOUND_AUDIO_PATH_SPEAKER; + break; + case AUDIO_DEVICE_OUT_WIRED_HEADSET: + device_type = SOUND_AUDIO_PATH_HEADSET; + break; + case AUDIO_DEVICE_OUT_WIRED_HEADPHONE: + device_type = SOUND_AUDIO_PATH_HEADPHONE; + break; + case AUDIO_DEVICE_OUT_BLUETOOTH_SCO: + case AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET: + case AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT: + device_type = SOUND_AUDIO_PATH_BLUETOOTH; + break; + default: + device_type = SOUND_AUDIO_PATH_HANDSET; + break; + } + + /* if output device isn't supported, open modem side to handset by default */ + ril_set_call_audio_path(&adev->ril, device_type); +} + static void select_mode(struct tuna_audio_device *adev) { if (adev->mode == AUDIO_MODE_IN_CALL) { if (!adev->in_call) { select_output_device(adev); start_call(adev); + ril_set_call_clock_sync(&adev->ril, SOUND_CLOCK_START); adev_set_voice_volume(&adev->hw_device, adev->voice_volume); adev->in_call = 1; } @@ -571,6 +600,8 @@ static void select_output_device(struct tuna_audio_device *adev) mixer_ctl_set_enum_by_string(adev->mixer_ctls.right_capture, speaker_on ? MIXER_SUB_MIC : "Off"); } + + set_incall_device(adev); } if (adev->in_call) start_call(adev); |