Merge "hal: Adds support for alerts bus"
diff --git a/configs/common_au/audio_policy_configuration.xml b/configs/common_au/audio_policy_configuration.xml
index 90e7f99..3ca2ba1 100644
--- a/configs/common_au/audio_policy_configuration.xml
+++ b/configs/common_au/audio_policy_configuration.xml
@@ -57,6 +57,7 @@
                 <item>Sys Notification Bus</item>
                 <item>Nav Guidance Bus</item>
                 <item>Phone Bus</item>
+                <item>Alerts Bus</item>
                 <item>Front Passenger Bus</item>
                 <item>Rear Seat Bus</item>
                 <item>Built-In Mic</item>
@@ -105,6 +106,10 @@
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
                 </mixPort>
+                <mixPort name="alerts" role="source">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </mixPort>
                 <mixPort name="front_passenger" role="source">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
@@ -227,6 +232,15 @@
                                 minValueMB="-6000" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
                     </gains>
                 </devicePort>
+                <devicePort tagName="Alerts Bus" role="sink" type="AUDIO_DEVICE_OUT_BUS"
+                        address="BUS05_ALERTS">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                    <gains>
+                        <gain name="" mode="AUDIO_GAIN_MODE_JOINT"
+                                minValueMB="-6000" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
+                    </gains>
+                </devicePort>
                 <devicePort tagName="Front Passenger Bus" role="sink" type="AUDIO_DEVICE_OUT_BUS"
                         address="BUS08_FRONT_PASSENGER">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
@@ -321,6 +335,8 @@
                        sources="nav_guidance"/>
                 <route type="mix" sink="Phone Bus"
                        sources="phone"/>
+                <route type="mix" sink="Alerts Bus"
+                       sources="alerts"/>
                 <route type="mix" sink="Front Passenger Bus"
                        sources="front_passenger"/>
                 <route type="mix" sink="Rear Seat Bus"
diff --git a/configs/common_au/car_audio_configuration.xml b/configs/common_au/car_audio_configuration.xml
index edf3600..d2af7e7 100644
--- a/configs/common_au/car_audio_configuration.xml
+++ b/configs/common_au/car_audio_configuration.xml
@@ -42,10 +42,6 @@
                         <context context="alarm"/>
                         <context context="notification"/>
                         <context context="system_sound"/>
-                        <context context="emergency"/>
-                        <context context="safety"/>
-                        <context context="vehicle_status"/>
-                        <context context="announcement"/>
                     </device>
                 </group>
                 <group>
@@ -60,6 +56,14 @@
                         <context context="call_ring"/>
                     </device>
                 </group>
+                <group>
+                    <device address="BUS05_ALERTS">
+                        <context context="emergency"/>
+                        <context context="safety"/>
+                        <context context="vehicle_status"/>
+                        <context context="announcement"/>
+                    </device>
+                </group>
             </volumeGroups>
             <inputDevices>
                 <inputDevice address="BUS04_INPUT"/>
diff --git a/configs/msmnile_au/audio_io_policy.conf b/configs/msmnile_au/audio_io_policy.conf
index fa01cf0..1959c14 100644
--- a/configs/msmnile_au/audio_io_policy.conf
+++ b/configs/msmnile_au/audio_io_policy.conf
@@ -102,6 +102,13 @@
     bit_width 16
     app_type 69936
   }
+  alerts {
+    flags AUDIO_OUTPUT_FLAG_ALERTS
+    formats AUDIO_FORMAT_PCM_16_BIT
+    sampling_rates 48000
+    bit_width 16
+    app_type 69937
+  }
   front_passenger {
     flags AUDIO_OUTPUT_FLAG_FRONT_PASSENGER
     formats AUDIO_FORMAT_PCM_16_BIT
diff --git a/configs/msmnile_au/audio_platform_info.xml b/configs/msmnile_au/audio_platform_info.xml
index cdb5248..9f53553 100755
--- a/configs/msmnile_au/audio_platform_info.xml
+++ b/configs/msmnile_au/audio_platform_info.xml
@@ -34,6 +34,7 @@
         <device name="SND_DEVICE_OUT_BUS_SYS" acdb_id="60"/>
         <device name="SND_DEVICE_OUT_BUS_NAV" acdb_id="14"/>
         <device name="SND_DEVICE_OUT_BUS_PHN" acdb_id="94"/>
+        <device name="SND_DEVICE_OUT_BUS_ALR" acdb_id="60"/>
         <device name="SND_DEVICE_OUT_BUS_PAX" acdb_id="60"/>
         <device name="SND_DEVICE_OUT_BUS_RSE" acdb_id="60"/>
         <device name="SND_DEVICE_OUT_BT_SCO" acdb_id="21"/>
@@ -107,6 +108,7 @@
         <usecase name="USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION" type="out" id="9"/>
         <usecase name="USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE" type="out" id="1"/>
         <usecase name="USECASE_AUDIO_PLAYBACK_PHONE" type="out" id="12"/>
+        <usecase name="USECASE_AUDIO_PLAYBACK_ALERTS" type="out" id="59"/>
         <usecase name="USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER" type="out" id="55"/>
         <usecase name="USECASE_AUDIO_PLAYBACK_REAR_SEAT" type="out" id="54"/>
         <usecase name="USECASE_VOICEMMODE1_CALL" type="in" id="2"/>
@@ -190,6 +192,7 @@
         <device name="SND_DEVICE_OUT_BUS_SYS" interface="TERT_TDM_RX_0"/>
         <device name="SND_DEVICE_OUT_BUS_NAV" interface="TERT_TDM_RX_1"/>
         <device name="SND_DEVICE_OUT_BUS_PHN" interface="TERT_TDM_RX_2"/>
+        <device name="SND_DEVICE_OUT_BUS_ALR" interface="TERT_TDM_RX_0"/>
         <device name="SND_DEVICE_OUT_BUS_PAX" interface="QUAT_TDM_RX_0"/>
         <device name="SND_DEVICE_OUT_BUS_RSE" interface="QUIN_TDM_RX_0"/>
         <device name="SND_DEVICE_OUT_ICC" interface="TERT_TDM_RX_0"/>
@@ -215,6 +218,7 @@
         <device name="SND_DEVICE_OUT_BUS_SYS" backend="sys-bus-out" interface="TERT_TDM_RX_0"/>
         <device name="SND_DEVICE_OUT_BUS_NAV" backend="nav-bus-out" interface="TERT_TDM_RX_1"/>
         <device name="SND_DEVICE_OUT_BUS_PHN" backend="phone-bus-out" interface="TERT_TDM_RX_2"/>
+        <device name="SND_DEVICE_OUT_BUS_ALR" backend="alerts-bus-out" interface="TERT_TDM_RX_0"/>
         <device name="SND_DEVICE_OUT_BUS_PAX" backend="pax-bus-out" interface="QUAT_TDM_RX_0"/>
         <device name="SND_DEVICE_OUT_BUS_RSE" backend="rse-bus-out" interface="QUIN_TDM_RX_0"/>
     </backend_names>
diff --git a/configs/msmnile_au/audio_policy_configuration.xml b/configs/msmnile_au/audio_policy_configuration.xml
index a8a0f95..c7bf080 100755
--- a/configs/msmnile_au/audio_policy_configuration.xml
+++ b/configs/msmnile_au/audio_policy_configuration.xml
@@ -57,6 +57,7 @@
                 <item>Sys Notification Bus</item>
                 <item>Nav Guidance Bus</item>
                 <item>Phone Bus</item>
+                <item>Alerts Bus</item>
                 <item>Front Passenger Bus</item>
                 <item>Rear Seat Bus</item>
                 <item>Built-In Mic</item>
@@ -106,6 +107,10 @@
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
                 </mixPort>
+                <mixPort name="alerts" role="source">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </mixPort>
                 <mixPort name="front_passenger" role="source">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
@@ -303,6 +308,15 @@
                                 minValueMB="-6000" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
                     </gains>
                 </devicePort>
+                <devicePort tagName="Alerts Bus" role="sink" type="AUDIO_DEVICE_OUT_BUS"
+                        address="BUS05_ALERTS">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                    <gains>
+                        <gain name="" mode="AUDIO_GAIN_MODE_JOINT"
+                                minValueMB="-6000" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
+                    </gains>
+                </devicePort>
                 <devicePort tagName="Front Passenger Bus" role="sink" type="AUDIO_DEVICE_OUT_BUS"
                         address="BUS08_FRONT_PASSENGER">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
@@ -456,6 +470,8 @@
                        sources="nav_guidance,mmap_no_irq_out"/>
                 <route type="mix" sink="Phone Bus"
                        sources="phone,mmap_no_irq_out"/>
+                <route type="mix" sink="Alerts Bus"
+                       sources="alerts"/>
                 <route type="mix" sink="Front Passenger Bus"
                        sources="front_passenger,mmap_no_irq_out"/>
                 <route type="mix" sink="Rear Seat Bus"
diff --git a/configs/msmnile_au/mixer_paths_adp.xml b/configs/msmnile_au/mixer_paths_adp.xml
index f6266ec..b283151 100644
--- a/configs/msmnile_au/mixer_paths_adp.xml
+++ b/configs/msmnile_au/mixer_paths_adp.xml
@@ -295,6 +295,11 @@
         <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia10" value="1" />
     </path>
 
+    <path name="alerts-playback alerts-bus-out">
+        <ctl name="TERT_TDM_RX_0 Channels" value="Six" />
+        <ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia31" value="1" />
+    </path>
+
     <path name="front-passenger-playback pax-bus-out">
         <ctl name="QUAT_TDM_RX_0 Channels" value="Eight" />
         <ctl name="QUAT_TDM_RX_0 Audio Mixer MultiMedia23" value="1" />
diff --git a/configs/msmnile_au/mixer_paths_custom.xml b/configs/msmnile_au/mixer_paths_custom.xml
index 0f6f6bb..c5ad307 100644
--- a/configs/msmnile_au/mixer_paths_custom.xml
+++ b/configs/msmnile_au/mixer_paths_custom.xml
@@ -1315,6 +1315,11 @@
         <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia10" value="1" />
     </path>
 
+    <path name="alerts-playback">
+        <ctl name="TERT_TDM_RX_0 Channels" value="Six" />
+        <ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia31" value="1" />
+    </path>
+
     <path name="front-passenger-playback">
         <ctl name="QUAT_TDM_RX_0 Channels" value="Eight" />
         <ctl name="QUAT_TDM_RX_0 Audio Mixer MultiMedia23" value="1" />
diff --git a/configs/msmsteppe_au/audio_io_policy.conf b/configs/msmsteppe_au/audio_io_policy.conf
index 412c248..f7aa755 100644
--- a/configs/msmsteppe_au/audio_io_policy.conf
+++ b/configs/msmsteppe_au/audio_io_policy.conf
@@ -102,6 +102,13 @@
     bit_width 16
     app_type 69936
   }
+  alerts {
+    flags AUDIO_OUTPUT_FLAG_ALERTS
+    formats AUDIO_FORMAT_PCM_16_BIT
+    sampling_rates 48000
+    bit_width 16
+    app_type 69937
+  }
   front_passenger {
     flags AUDIO_OUTPUT_FLAG_FRONT_PASSENGER
     formats AUDIO_FORMAT_PCM_16_BIT
diff --git a/configs/msmsteppe_au/audio_platform_info.xml b/configs/msmsteppe_au/audio_platform_info.xml
index 15e865d..0960da2 100644
--- a/configs/msmsteppe_au/audio_platform_info.xml
+++ b/configs/msmsteppe_au/audio_platform_info.xml
@@ -34,6 +34,7 @@
         <device name="SND_DEVICE_OUT_BUS_SYS" acdb_id="60"/>
         <device name="SND_DEVICE_OUT_BUS_NAV" acdb_id="14"/>
         <device name="SND_DEVICE_OUT_BUS_PHN" acdb_id="94"/>
+        <device name="SND_DEVICE_OUT_BUS_ALR" acdb_id="60"/>
         <device name="SND_DEVICE_OUT_BUS_PAX" acdb_id="60"/>
         <device name="SND_DEVICE_OUT_BUS_RSE" acdb_id="60"/>
         <device name="SND_DEVICE_OUT_BT_SCO" acdb_id="21"/>
@@ -107,6 +108,7 @@
         <usecase name="USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION" type="out" id="9"/>
         <usecase name="USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE" type="out" id="1"/>
         <usecase name="USECASE_AUDIO_PLAYBACK_PHONE" type="out" id="12"/>
+        <usecase name="USECASE_AUDIO_PLAYBACK_ALERTS" type="out" id="59"/>
         <usecase name="USECASE_AUDIO_PLAYBACK_FRONT_PASSENGER" type="out" id="55"/>
         <usecase name="USECASE_AUDIO_PLAYBACK_REAR_SEAT" type="out" id="54"/>
         <usecase name="USECASE_VOICEMMODE1_CALL" type="in" id="2"/>
@@ -184,6 +186,7 @@
         <device name="SND_DEVICE_OUT_BUS_SYS" interface="TERT_TDM_RX_0"/>
         <device name="SND_DEVICE_OUT_BUS_NAV" interface="TERT_TDM_RX_1"/>
         <device name="SND_DEVICE_OUT_BUS_PHN" interface="TERT_TDM_RX_2"/>
+        <device name="SND_DEVICE_OUT_BUS_ALR" interface="TERT_TDM_RX_0"/>
         <device name="SND_DEVICE_OUT_BUS_PAX" interface="QUAT_TDM_RX_0"/>
         <device name="SND_DEVICE_OUT_BUS_RSE" interface="QUAT_TDM_RX_1"/>
         <device name="SND_DEVICE_OUT_ICC" interface="TERT_TDM_RX_0"/>
@@ -209,6 +212,7 @@
         <device name="SND_DEVICE_OUT_BUS_SYS" backend="sys-bus-out" interface="TERT_TDM_RX_0"/>
         <device name="SND_DEVICE_OUT_BUS_NAV" backend="nav-bus-out" interface="TERT_TDM_RX_1"/>
         <device name="SND_DEVICE_OUT_BUS_PHN" backend="phone-bus-out" interface="TERT_TDM_RX_2"/>
+        <device name="SND_DEVICE_OUT_BUS_ALR" backend="alerts-bus-out" interface="TERT_TDM_RX_0"/>
         <device name="SND_DEVICE_OUT_BUS_PAX" backend="pax-bus-out" interface="QUAT_TDM_RX_0"/>
         <device name="SND_DEVICE_OUT_BUS_RSE" backend="rse-bus-out" interface="QUIN_TDM_RX_0"/>
     </backend_names>
diff --git a/configs/msmsteppe_au/audio_policy_configuration.xml b/configs/msmsteppe_au/audio_policy_configuration.xml
index a8a0f95..c7bf080 100644
--- a/configs/msmsteppe_au/audio_policy_configuration.xml
+++ b/configs/msmsteppe_au/audio_policy_configuration.xml
@@ -57,6 +57,7 @@
                 <item>Sys Notification Bus</item>
                 <item>Nav Guidance Bus</item>
                 <item>Phone Bus</item>
+                <item>Alerts Bus</item>
                 <item>Front Passenger Bus</item>
                 <item>Rear Seat Bus</item>
                 <item>Built-In Mic</item>
@@ -106,6 +107,10 @@
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
                 </mixPort>
+                <mixPort name="alerts" role="source">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </mixPort>
                 <mixPort name="front_passenger" role="source">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
@@ -303,6 +308,15 @@
                                 minValueMB="-6000" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
                     </gains>
                 </devicePort>
+                <devicePort tagName="Alerts Bus" role="sink" type="AUDIO_DEVICE_OUT_BUS"
+                        address="BUS05_ALERTS">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                    <gains>
+                        <gain name="" mode="AUDIO_GAIN_MODE_JOINT"
+                                minValueMB="-6000" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
+                    </gains>
+                </devicePort>
                 <devicePort tagName="Front Passenger Bus" role="sink" type="AUDIO_DEVICE_OUT_BUS"
                         address="BUS08_FRONT_PASSENGER">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
@@ -456,6 +470,8 @@
                        sources="nav_guidance,mmap_no_irq_out"/>
                 <route type="mix" sink="Phone Bus"
                        sources="phone,mmap_no_irq_out"/>
+                <route type="mix" sink="Alerts Bus"
+                       sources="alerts"/>
                 <route type="mix" sink="Front Passenger Bus"
                        sources="front_passenger,mmap_no_irq_out"/>
                 <route type="mix" sink="Rear Seat Bus"
diff --git a/configs/msmsteppe_au/mixer_paths_adp.xml b/configs/msmsteppe_au/mixer_paths_adp.xml
index 1036498..760437b 100644
--- a/configs/msmsteppe_au/mixer_paths_adp.xml
+++ b/configs/msmsteppe_au/mixer_paths_adp.xml
@@ -282,6 +282,11 @@
         <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia10" value="1" />
     </path>
 
+    <path name="alerts-playback alerts-bus-out">
+        <ctl name="TERT_TDM_RX_0 Channels" value="Six" />
+        <ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia31" value="1" />
+    </path>
+
     <path name="front-passenger-playback pax-bus-out">
         <ctl name="QUAT_TDM_RX_0 Channels" value="Eight" />
         <ctl name="QUAT_TDM_RX_0 Audio Mixer MultiMedia23" value="1" />
diff --git a/configs/msmsteppe_au/mixer_paths_custom.xml b/configs/msmsteppe_au/mixer_paths_custom.xml
index 3360fa7..1895b28 100644
--- a/configs/msmsteppe_au/mixer_paths_custom.xml
+++ b/configs/msmsteppe_au/mixer_paths_custom.xml
@@ -1152,6 +1152,11 @@
         <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia10" value="1" />
     </path>
 
+    <path name="alerts-playback">
+        <ctl name="TERT_TDM_RX_0 Channels" value="Six" />
+        <ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia31" value="1" />
+    </path>
+
     <path name="front-passenger-playback">
         <ctl name="QUAT_TDM_RX_0 Channels" value="Eight" />
         <ctl name="QUAT_TDM_RX_0 Audio Mixer MultiMedia23" value="1" />
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index f2038d8..89ad5af 100644
--- 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 6ee6859..903bc13 100644
--- a/hal/audio_extn/auto_hal.c
+++ b/hal/audio_extn/auto_hal.c
@@ -444,6 +444,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;
@@ -502,6 +509,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;
@@ -937,6 +947,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;
@@ -959,6 +972,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 374e2ec..dfe78f2 100644
--- a/hal/audio_extn/auto_hal.h
+++ b/hal/audio_extn/auto_hal.h
@@ -115,6 +115,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 9a4a848..6c97447 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -155,6 +155,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 ef6bc40..d231a33 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -489,6 +489,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 ecffc06..a25f68d 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -302,6 +302,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,
@@ -403,6 +404,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 59c3c8f..a6d546a
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -542,6 +542,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,
@@ -661,6 +663,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",
@@ -968,6 +971,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,
@@ -1225,6 +1229,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)},
@@ -1454,6 +1459,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)},
@@ -2560,6 +2566,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");
@@ -9136,6 +9143,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 25ebc08..cdd9469
--- 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
 
@@ -731,6 +733,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