Merge "hal: Avoid setting wrong sample rate for headset device"
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 9bb3ce5..164dc5a 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -6396,7 +6396,7 @@
      * Handset and speaker may have diffrent backend. Check if the device is speaker or handset,
      * and these devices are restricited to 48kHz.
      */
-    if ((platform_get_backend_index(snd_device) == DEFAULT_CODEC_BACKEND) &&
+    if (!codec_device_supports_native_playback(usecase->devices) &&
         (platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, snd_device) ||
          platform_check_backends_match(SND_DEVICE_OUT_HANDSET, snd_device))) {
         sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index a609de1..2ce1d6d 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -7370,7 +7370,9 @@
      * Handset and speaker may have diffrent backend. Check if the device is speaker or handset,
      * and these devices are restricited to 48kHz.
      */
-    if (platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, snd_device)) {
+    if (!codec_device_supports_native_playback(usecase->devices) &&
+        (platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, snd_device) ||
+         platform_check_backends_match(SND_DEVICE_OUT_HANDSET, snd_device))) {
         int bw = platform_get_snd_device_bit_width(SND_DEVICE_OUT_SPEAKER);
         if ((-ENOSYS != bw) && (bit_width > (uint32_t)bw)) {
             bit_width = (uint32_t)bw;