hal: Fix for FM mute issue on start of FM record

- FM audio is muted on start of record session when
  playback record concurrency enabled

- Add support for FM playback device switch on
  record concurrency enabled

Change-Id: I51795dedf0f32c41c6a84889bb7f62ee21713720
diff --git a/hal/audio_extn/fm.c b/hal/audio_extn/fm.c
index b6f8689..ed3776c 100644
--- a/hal/audio_extn/fm.c
+++ b/hal/audio_extn/fm.c
@@ -34,6 +34,7 @@
 #ifdef FM_ENABLED
 #define AUDIO_PARAMETER_KEY_HANDLE_FM "handle_fm"
 #define AUDIO_PARAMETER_KEY_FM_VOLUME "fm_volume"
+#define AUDIO_PARAMETER_KEY_REC_PLAY_CONC "rec_play_conc_on"
 
 static struct pcm_config pcm_config_fm = {
     .channels = 2,
@@ -280,6 +281,21 @@
         fm_set_volume(adev, vol);
     }
 
+#ifdef RECORD_PLAY_CONCURRENCY
+    ret = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_REC_PLAY_CONC,
+                               value, sizeof(value));
+    if ((ret >= 0)
+          && (fmmod.is_fm_running == true)) {
+
+        if (!strncmp("true", value, sizeof("true")))
+            ALOGD("Record play concurrency ON Forcing FM device reroute");
+        else
+            ALOGD("Record play concurrency OFF Forcing FM device reroute");
+
+        select_devices(adev, USECASE_AUDIO_PLAYBACK_FM);
+        fm_set_volume(adev,fmmod.fm_volume);
+    }
+#endif
 exit:
     ALOGV("%s: exit", __func__);
 }