hal: Add changes for dolby DS2
-Add device to back end mapping for APQ8084 and MSM8994.
-Set initialization info like sound card number, dmid
to ds2 dap hal.
-Add mixer control DS2 OnOff to enable or disable DS2
-A property "audio.dolby.ds2.enabled" is added to trigger
the mixer control.
-Reuse ds1 functions for checking dolby format and getting
sound codec id.
CRs-Fixed: 661095 661018
Conflicts:
hal/audio_hw.c
hal/msm8916/platform.c
Change-Id: Iff5fdc49249eb035c2ccde18e190ccc6c3ff632a
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 5344e71..6d88442 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -519,6 +519,67 @@
{TO_NAME_INDEX(USECASE_AUDIO_HFP_SCO)},
};
+#define NO_COLS 2
+#ifdef PLATFORM_APQ8084
+static int msm_device_to_be_id [][NO_COLS] = {
+ {AUDIO_DEVICE_OUT_EARPIECE , 2},
+ {AUDIO_DEVICE_OUT_SPEAKER , 2},
+ {AUDIO_DEVICE_OUT_WIRED_HEADSET , 2},
+ {AUDIO_DEVICE_OUT_WIRED_HEADPHONE , 2},
+ {AUDIO_DEVICE_OUT_BLUETOOTH_SCO , 11},
+ {AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET , 11},
+ {AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT , 11},
+ {AUDIO_DEVICE_OUT_BLUETOOTH_A2DP , -1},
+ {AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES , -1},
+ {AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER , -1},
+ {AUDIO_DEVICE_OUT_AUX_DIGITAL , 4},
+ {AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET , 9},
+ {AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET , 9},
+ {AUDIO_DEVICE_OUT_USB_ACCESSORY , -1},
+ {AUDIO_DEVICE_OUT_USB_DEVICE , -1},
+ {AUDIO_DEVICE_OUT_REMOTE_SUBMIX , 9},
+ {AUDIO_DEVICE_OUT_PROXY , 9},
+ {AUDIO_DEVICE_OUT_FM , 7},
+ {AUDIO_DEVICE_OUT_FM_TX , 8},
+ {AUDIO_DEVICE_OUT_ALL , -1},
+ {AUDIO_DEVICE_NONE , -1},
+ {AUDIO_DEVICE_OUT_DEFAULT , -1},
+};
+#elif PLATFORM_MSM8994
+static int msm_device_to_be_id [][NO_COLS] = {
+ {AUDIO_DEVICE_OUT_EARPIECE , 2},
+ {AUDIO_DEVICE_OUT_SPEAKER , 2},
+ {AUDIO_DEVICE_OUT_WIRED_HEADSET , 2},
+ {AUDIO_DEVICE_OUT_WIRED_HEADPHONE , 2},
+ {AUDIO_DEVICE_OUT_BLUETOOTH_SCO , 38},
+ {AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET , 38},
+ {AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT , 38},
+ {AUDIO_DEVICE_OUT_BLUETOOTH_A2DP , -1},
+ {AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES , -1},
+ {AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER , -1},
+ {AUDIO_DEVICE_OUT_AUX_DIGITAL , 4},
+ {AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET , 9},
+ {AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET , 9},
+ {AUDIO_DEVICE_OUT_USB_ACCESSORY , -1},
+ {AUDIO_DEVICE_OUT_USB_DEVICE , -1},
+ {AUDIO_DEVICE_OUT_REMOTE_SUBMIX , 9},
+ {AUDIO_DEVICE_OUT_PROXY , 9},
+/* Add the correct be ids */
+ {AUDIO_DEVICE_OUT_FM , 7},
+ {AUDIO_DEVICE_OUT_FM_TX , 8},
+ {AUDIO_DEVICE_OUT_ALL , -1},
+ {AUDIO_DEVICE_NONE , -1},
+ {AUDIO_DEVICE_OUT_DEFAULT , -1},
+};
+#else
+static int msm_device_to_be_id [][NO_COLS] = {
+ {AUDIO_DEVICE_NONE, -1},
+};
+#endif
+static int msm_be_id_array_len =
+ sizeof(msm_device_to_be_id) / sizeof(msm_device_to_be_id[0]);
+
+
#define DEEP_BUFFER_PLATFORM_DELAY (29*1000LL)
#define LOW_LATENCY_PLATFORM_DELAY (13*1000LL)
@@ -1056,6 +1117,9 @@
/* update sound cards appropriately */
audio_extn_usb_set_proxy_sound_card(adev->snd_card);
+ /* init dap hal */
+ audio_extn_dap_hal_init(adev->snd_card);
+
/* Read one time ssr property */
audio_extn_ssr_update_enabled();
audio_extn_spkr_prot_init(adev);
@@ -1090,6 +1154,7 @@
free(platform);
/* deinit usb */
audio_extn_usb_deinit();
+ audio_extn_dap_hal_deinit();
}
const char *platform_get_snd_device_name(snd_device_t snd_device)
@@ -2739,3 +2804,9 @@
done:
return ret;
}
+
+void platform_get_device_to_be_id_map(int **device_to_be_id, int *length)
+{
+ *device_to_be_id = msm_device_to_be_id;
+ *length = msm_be_id_array_len;
+}