hal: Adds support for alerts bus

- Adds snd device, acdb id, and
  usecase for new alerts output bus
- Sets alerts output bus to use
  pcm device 59 (MM31)
- Alerts bus will only be used
  by automotive

Change-Id: I8932dfb646d301eec2d830a560f98a194e1e59fb
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index 85502ad..df37672 100755
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -1345,6 +1345,9 @@
 #ifndef AUDIO_OUTPUT_FLAG_PHONE
 #define AUDIO_OUTPUT_FLAG_PHONE 0x800000
 #endif
+#ifndef AUDIO_OUTPUT_FLAG_ALERTS
+#define AUDIO_OUTPUT_FLAG_ALERTS 0x4000000
+#endif
 #ifndef AUDIO_OUTPUT_FLAG_FRONT_PASSENGER
 #define AUDIO_OUTPUT_FLAG_FRONT_PASSENGER 0x1000000
 #endif
diff --git a/hal/audio_extn/auto_hal.c b/hal/audio_extn/auto_hal.c
index 977147c..1954af2 100755
--- a/hal/audio_extn/auto_hal.c
+++ b/hal/audio_extn/auto_hal.c
@@ -406,6 +406,13 @@
             out->flags |= AUDIO_OUTPUT_FLAG_PHONE;
         out->volume_l = out->volume_r = MAX_VOLUME_GAIN;
         break;
+    case CAR_AUDIO_STREAM_ALERTS:
+        out->usecase = USECASE_AUDIO_PLAYBACK_ALERTS;
+        out->config = pcm_config_system;
+        if (out->flags == AUDIO_OUTPUT_FLAG_NONE)
+            out->flags |= AUDIO_OUTPUT_FLAG_ALERTS;
+        out->volume_l = out->volume_r = MAX_VOLUME_GAIN;
+        break;
     case CAR_AUDIO_STREAM_FRONT_PASSENGER:
         out->usecase = USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER;
         out->config = pcm_config_system;
@@ -464,6 +471,9 @@
     case CAR_AUDIO_STREAM_PHONE:
         snd_device = SND_DEVICE_OUT_BUS_PHN;
         break;
+    case CAR_AUDIO_STREAM_ALERTS:
+        snd_device = SND_DEVICE_OUT_BUS_ALR;
+        break;
     case CAR_AUDIO_STREAM_FRONT_PASSENGER:
         snd_device = SND_DEVICE_OUT_BUS_PAX;
         break;
@@ -899,6 +909,9 @@
                     case CAR_AUDIO_STREAM_PHONE:
                         snd_device = SND_DEVICE_OUT_BUS_PHN;
                         break;
+                    case CAR_AUDIO_STREAM_ALERTS:
+                        snd_device = SND_DEVICE_OUT_BUS_ALR;
+                        break;
                     case CAR_AUDIO_STREAM_FRONT_PASSENGER:
                         snd_device = SND_DEVICE_OUT_BUS_PAX;
                         break;
@@ -921,6 +934,9 @@
         case USECASE_AUDIO_PLAYBACK_PHONE:
             snd_device = SND_DEVICE_OUT_BUS_PHN;
             break;
+        case USECASE_AUDIO_PLAYBACK_ALERTS:
+            snd_device = SND_DEVICE_OUT_BUS_ALR;
+            break;
         case USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER:
             snd_device = SND_DEVICE_OUT_BUS_PAX;
             break;
diff --git a/hal/audio_extn/auto_hal.h b/hal/audio_extn/auto_hal.h
index c1b3250..e71d44a 100644
--- a/hal/audio_extn/auto_hal.h
+++ b/hal/audio_extn/auto_hal.h
@@ -64,6 +64,7 @@
     USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION,
     USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE,
     USECASE_AUDIO_PLAYBACK_PHONE,
+    USECASE_AUDIO_PLAYBACK_ALERTS,
     USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER,
     USECASE_AUDIO_PLAYBACK_REAR_SEAT,
     USECASE_AUDIO_RECORD_BUS,
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 756faf5..b34171b 100755
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -150,6 +150,7 @@
     STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_SYS_NOTIFICATION),
     STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_NAV_GUIDANCE),
     STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_PHONE),
+    STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_ALERTS),
     STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_FRONT_PASSENGER),
     STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_REAR_SEAT),
     STRING_TO_ENUM(AUDIO_INPUT_FLAG_NONE),
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 9664b7e..36cbc85 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -426,6 +426,7 @@
     [USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION] = "sys-notification-playback",
     [USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE] = "nav-guidance-playback",
     [USECASE_AUDIO_PLAYBACK_PHONE] = "phone-playback",
+    [USECASE_AUDIO_PLAYBACK_ALERTS] = "alerts-playback",
     [USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER] = "front-passenger-playback",
     [USECASE_AUDIO_PLAYBACK_REAR_SEAT] = "rear-seat-playback",
     [USECASE_AUDIO_FM_TUNER_EXT] = "fm-tuner-ext",
diff --git a/hal/audio_hw.h b/hal/audio_hw.h
index c424ec1..bf37b79 100755
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -262,6 +262,7 @@
     USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION,
     USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE,
     USECASE_AUDIO_PLAYBACK_PHONE,
+    USECASE_AUDIO_PLAYBACK_ALERTS,
     USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER,
     USECASE_AUDIO_PLAYBACK_REAR_SEAT,
     USECASE_AUDIO_RECORD_BUS,
@@ -363,6 +364,7 @@
     CAR_AUDIO_STREAM_NAV_GUIDANCE       = 0x4,
     CAR_AUDIO_STREAM_PHONE              = 0x8,
     CAR_AUDIO_STREAM_IN_PRIMARY         = 0x10,
+    CAR_AUDIO_STREAM_ALERTS             = 0x20,
     CAR_AUDIO_STREAM_FRONT_PASSENGER    = 0x100,
     CAR_AUDIO_STREAM_IN_FRONT_PASSENGER = 0x200,
     CAR_AUDIO_STREAM_REAR_SEAT          = 0x10000,
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
old mode 100755
new mode 100644
index 6115614..d2a6756
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -529,6 +529,8 @@
                                              NAV_GUIDANCE_PCM_DEVICE},
     [USECASE_AUDIO_PLAYBACK_PHONE] = {PHONE_PCM_DEVICE,
                                       PHONE_PCM_DEVICE},
+    [USECASE_AUDIO_PLAYBACK_ALERTS] = {ALERTS_PCM_DEVICE,
+                                      ALERTS_PCM_DEVICE},
     [USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER] = {FRONT_PASSENGER_PCM_DEVICE,
                                                 FRONT_PASSENGER_PCM_DEVICE},
     [USECASE_AUDIO_PLAYBACK_REAR_SEAT] = {REAR_SEAT_PCM_DEVICE,
@@ -648,6 +650,7 @@
     [SND_DEVICE_OUT_BUS_SYS] = "bus-speaker",
     [SND_DEVICE_OUT_BUS_NAV] = "bus-speaker",
     [SND_DEVICE_OUT_BUS_PHN] = "bus-speaker",
+    [SND_DEVICE_OUT_BUS_ALR] = "bus-speaker",
     [SND_DEVICE_OUT_BUS_PAX] = "bus-speaker",
     [SND_DEVICE_OUT_BUS_RSE] = "bus-speaker",
     [SND_DEVICE_OUT_CALL_PROXY] = "call-proxy",
@@ -952,6 +955,7 @@
     [SND_DEVICE_OUT_BUS_SYS] = 60,
     [SND_DEVICE_OUT_BUS_NAV] = 14,
     [SND_DEVICE_OUT_BUS_PHN] = 94,
+    [SND_DEVICE_OUT_BUS_ALR] = 60,
     [SND_DEVICE_OUT_BUS_PAX] = 60,
     [SND_DEVICE_OUT_BUS_RSE] = 60,
     [SND_DEVICE_OUT_CALL_PROXY] = 32,
@@ -1209,6 +1213,7 @@
     {TO_NAME_INDEX(SND_DEVICE_OUT_BUS_SYS)},
     {TO_NAME_INDEX(SND_DEVICE_OUT_BUS_NAV)},
     {TO_NAME_INDEX(SND_DEVICE_OUT_BUS_PHN)},
+    {TO_NAME_INDEX(SND_DEVICE_OUT_BUS_ALR)},
     {TO_NAME_INDEX(SND_DEVICE_OUT_BUS_PAX)},
     {TO_NAME_INDEX(SND_DEVICE_OUT_BUS_RSE)},
     {TO_NAME_INDEX(SND_DEVICE_OUT_CALL_PROXY)},
@@ -1436,6 +1441,7 @@
     {TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION)},
     {TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE)},
     {TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_PHONE)},
+    {TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_ALERTS)},
     {TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER)},
     {TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_REAR_SEAT)},
     {TO_NAME_INDEX(USECASE_AUDIO_RECORD_VOIP_LOW_LATENCY)},
@@ -2542,6 +2548,7 @@
     hw_interface_table[SND_DEVICE_OUT_BUS_SYS] = strdup("TERT_TDM_RX_0");
     hw_interface_table[SND_DEVICE_OUT_BUS_NAV] = strdup("TERT_TDM_RX_1");
     hw_interface_table[SND_DEVICE_OUT_BUS_PHN] = strdup("TERT_TDM_RX_2");
+    hw_interface_table[SND_DEVICE_OUT_BUS_ALR] = strdup("TERT_TDM_RX_0");
     hw_interface_table[SND_DEVICE_OUT_BUS_PAX] = strdup("QUAT_TDM_RX_0");
     hw_interface_table[SND_DEVICE_OUT_BUS_RSE] = strdup("QUIN_TDM_RX_0");
     hw_interface_table[SND_DEVICE_OUT_CALL_PROXY] = strdup("CALL_PROXY_RX");
@@ -9116,6 +9123,7 @@
         case USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION:
         case USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER:
         case USECASE_AUDIO_PLAYBACK_PHONE:
+        case USECASE_AUDIO_PLAYBACK_ALERTS:
             delay = LOW_LATENCY_PLATFORM_DELAY;
             break;
         case USECASE_AUDIO_PLAYBACK_OFFLOAD:
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
old mode 100755
new mode 100644
index 4d09144..d83f7db
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -201,6 +201,7 @@
     SND_DEVICE_OUT_BUS_SYS,
     SND_DEVICE_OUT_BUS_NAV,
     SND_DEVICE_OUT_BUS_PHN,
+    SND_DEVICE_OUT_BUS_ALR,
     SND_DEVICE_OUT_BUS_PAX,
     SND_DEVICE_OUT_BUS_RSE,
     SND_DEVICE_OUT_CALL_PROXY,
@@ -493,6 +494,7 @@
 #define MULTIMEDIA2_PCM_DEVICE 1
 #define MULTIMEDIA3_PCM_DEVICE 4
 #define MULTIMEDIA9_PCM_DEVICE 32
+#define MULTIMEDIA31_PCM_DEVICE 59
 #define FM_PLAYBACK_PCM_DEVICE 5
 #define FM_CAPTURE_PCM_DEVICE  6
 
@@ -726,6 +728,7 @@
 #define SYS_NOTIFICATION_PCM_DEVICE 9
 #define NAV_GUIDANCE_PCM_DEVICE MULTIMEDIA2_PCM_DEVICE
 #define PHONE_PCM_DEVICE 12
+#define ALERTS_PCM_DEVICE MULTIMEDIA31_PCM_DEVICE
 #define FRONT_PASSENGER_PCM_DEVICE 55
 #define REAR_SEAT_PCM_DEVICE 54