hal: Detect sound card dynamically
- HAL always assumed SOUND_CARD/MIXER_CARD
number to be zero. This could cause HAL
not to load when some other card is
detected earlier to HAL.
- Fix by removing these Macro(s) and reading
correct sound card number runtime while loading
- Corrected its use cases across HAL replacing it
with appropriate platform API
CRs-fixed: 580226
Change-Id: I4512e4a2f7f81d8415c3ba8ec393c96867e6d69a
diff --git a/hal/audio_extn/usb.c b/hal/audio_extn/usb.c
index 88af9be..88e3cad 100644
--- a/hal/audio_extn/usb.c
+++ b/hal/audio_extn/usb.c
@@ -348,7 +348,10 @@
usbmod->proxy_pcm_playback_handle = pcm_open(usbmod->proxy_card,
usbmod->proxy_device_id, PCM_IN |
PCM_MMAP | PCM_NOIRQ, &pcm_config_usbmod);
- if(!usbmod->proxy_pcm_playback_handle){
+ if(usbmod->proxy_pcm_playback_handle
+ && !pcm_is_ready(usbmod->proxy_pcm_playback_handle)){
+ pcm_close(usbmod->proxy_pcm_playback_handle);
+ usbmod->proxy_pcm_playback_handle = NULL;
proxy_open_retry_count--;
usleep(USB_PROXY_OPEN_WAIT_TIME * 1000);
ALOGE("%s: pcm_open for proxy failed retrying = %d",
@@ -463,7 +466,10 @@
usbmod->proxy_pcm_record_handle = pcm_open(usbmod->proxy_card,
usbmod->proxy_device_id, PCM_OUT |
PCM_MMAP | PCM_NOIRQ, &pcm_config_usbmod);
- if(!usbmod->proxy_pcm_record_handle){
+ if(usbmod->proxy_pcm_record_handle
+ && !pcm_is_ready(usbmod->proxy_pcm_record_handle)){
+ pcm_close(usbmod->proxy_pcm_record_handle);
+ usbmod->proxy_pcm_record_handle = NULL;
proxy_open_retry_count--;
usleep(USB_PROXY_OPEN_WAIT_TIME * 1000);
ALOGE("%s: pcm_open for proxy(recording) failed retrying = %d",