merge in lmp-release history after reset to e8d8c97c5d213a0f88c7dbff9c1698651c9d0a75
diff --git a/camera/QCamera2/Android.mk b/camera/QCamera2/Android.mk
index ab8f3a5..9cf5509 100644
--- a/camera/QCamera2/Android.mk
+++ b/camera/QCamera2/Android.mk
@@ -57,9 +57,12 @@
 #LOCAL_STATIC_LIBRARIES := libqcamera2_util
 LOCAL_C_INCLUDES += \
         hardware/qcom/display/$(TARGET_BOARD_PLATFORM)/libgralloc
+LOCAL_C_INCLUDES += \
+        hardware/qcom/display/$(TARGET_BOARD_PLATFORM)/libqdutils
 
 LOCAL_SHARED_LIBRARIES := libcamera_client liblog libhardware libutils libcutils libdl
 LOCAL_SHARED_LIBRARIES += libmmcamera_interface libmmjpeg_interface libui libcamera_metadata
+LOCAL_SHARED_LIBRARIES += libqdMetaData
 
 LOCAL_MODULE_RELATIVE_PATH := hw
 LOCAL_MODULE := camera.$(TARGET_BOARD_PLATFORM)
diff --git a/camera/QCamera2/HAL3/QCamera3Channel.cpp b/camera/QCamera2/HAL3/QCamera3Channel.cpp
index 89d3331..1fa6321 100644
--- a/camera/QCamera2/HAL3/QCamera3Channel.cpp
+++ b/camera/QCamera2/HAL3/QCamera3Channel.cpp
@@ -750,6 +750,7 @@
     ATRACE_CALL();
     int rc = 0;
     mIsType = isType;
+    cam_stream_type_t streamType;
 
     if ((uint32_t)mMemory.getCnt() > (mNumBufs - 1)) {
         ALOGE("%s: Trying to register more buffers than initially requested",
@@ -766,7 +767,8 @@
         }
     }
 
-    rc = mMemory.registerBuffer(buffer);
+    streamType = mStreams[0]->getMyType();
+    rc = mMemory.registerBuffer(buffer, streamType);
     if (ALREADY_EXISTS == rc) {
         return NO_ERROR;
     } else if (NO_ERROR != rc) {
@@ -1513,10 +1515,6 @@
     }
 
     m_postprocessor.stop();
-    rc = m_postprocessor.deinit();
-    if (rc != 0) {
-        ALOGE("De-init Postprocessor failed");
-    }
 
     rc |= QCamera3Channel::stop();
     return rc;
@@ -1526,6 +1524,11 @@
 {
    stop();
 
+   int32_t rc = m_postprocessor.deinit();
+   if (rc != 0) {
+       ALOGE("De-init Postprocessor failed");
+   }
+
    if (0 < mOfflineMetaMemory.getCnt()) {
        mOfflineMetaMemory.deallocate();
    }
@@ -1698,7 +1701,7 @@
 
         int input_index = mOfflineMemory.getMatchBufIndex((void*)pInputBuffer->buffer);
         if(input_index < 0) {
-            rc = mOfflineMemory.registerBuffer(pInputBuffer->buffer);
+            rc = mOfflineMemory.registerBuffer(pInputBuffer->buffer, mStreamType);
             if (NO_ERROR != rc) {
                 ALOGE("%s: On-the-fly input buffer registration failed %d",
                         __func__, rc);
@@ -1862,7 +1865,7 @@
             return rc;
         }
     }
-    rc = mMemory.registerBuffer(buffer);
+    rc = mMemory.registerBuffer(buffer, mStreamType);
     if (ALREADY_EXISTS == rc) {
         return NO_ERROR;
     } else if (NO_ERROR != rc) {
diff --git a/camera/QCamera2/HAL3/QCamera3Mem.cpp b/camera/QCamera2/HAL3/QCamera3Mem.cpp
index 05b47a0..fb7de07 100644
--- a/camera/QCamera2/HAL3/QCamera3Mem.cpp
+++ b/camera/QCamera2/HAL3/QCamera3Mem.cpp
@@ -35,6 +35,7 @@
 #include <utils/Log.h>
 #include <utils/Errors.h>
 #include <gralloc_priv.h>
+#include <qdMetaData.h>
 #include "QCamera3Mem.h"
 #include "QCamera3HWI.h"
 
@@ -596,16 +597,19 @@
  *
  * PARAMETERS :
  *   @buffers : buffer_handle_t pointer
+ *   @type :    cam_stream_type_t
  *
  * RETURN     : int32_t type of status
  *              NO_ERROR  -- success
  *              none-zero failure code
  *==========================================================================*/
-int QCamera3GrallocMemory::registerBuffer(buffer_handle_t *buffer)
+int QCamera3GrallocMemory::registerBuffer(buffer_handle_t *buffer,
+        cam_stream_type_t type)
 {
     status_t ret = NO_ERROR;
     struct ion_fd_data ion_info_fd;
     void *vaddr = NULL;
+    int32_t colorSpace = ITU_R_601;
     CDBG(" %s : E ", __FUNCTION__);
 
     memset(&ion_info_fd, 0, sizeof(ion_info_fd));
@@ -624,6 +628,21 @@
     mBufferHandle[mBufferCount] = buffer;
     mPrivateHandle[mBufferCount] =
         (struct private_handle_t *)(*mBufferHandle[mBufferCount]);
+
+    switch (type) {
+    case CAM_STREAM_TYPE_PREVIEW:
+    case CAM_STREAM_TYPE_POSTVIEW:
+    case CAM_STREAM_TYPE_SNAPSHOT:
+    case CAM_STREAM_TYPE_VIDEO:
+        colorSpace = ITU_R_601;
+        break;
+    default:
+        colorSpace = ITU_R_601;
+        break;
+    }
+    ALOGE("%s: setting colorSpace to %d for stream type %d", __func__, colorSpace, type);
+    setMetaData(mPrivateHandle[mBufferCount], UPDATE_COLOR_SPACE, &colorSpace);
+
     mMemInfo[mBufferCount].main_ion_fd = open("/dev/ion", O_RDONLY);
     if (mMemInfo[mBufferCount].main_ion_fd < 0) {
         ALOGE("%s: failed: could not open ion device", __func__);
diff --git a/camera/QCamera2/HAL3/QCamera3Mem.h b/camera/QCamera2/HAL3/QCamera3Mem.h
index c79efe8..a4034f2 100644
--- a/camera/QCamera2/HAL3/QCamera3Mem.h
+++ b/camera/QCamera2/HAL3/QCamera3Mem.h
@@ -107,7 +107,7 @@
     QCamera3GrallocMemory();
     virtual ~QCamera3GrallocMemory();
 
-    int registerBuffer(buffer_handle_t *buffer);
+    int registerBuffer(buffer_handle_t *buffer, cam_stream_type_t type);
     void unregisterBuffers();
     virtual int cacheOps(int index, unsigned int cmd);
     virtual int getRegFlags(uint8_t *regFlags) const;
diff --git a/camera/QCamera2/HAL3/QCamera3PostProc.cpp b/camera/QCamera2/HAL3/QCamera3PostProc.cpp
index 7f14aa7..a56375f 100644
--- a/camera/QCamera2/HAL3/QCamera3PostProc.cpp
+++ b/camera/QCamera2/HAL3/QCamera3PostProc.cpp
@@ -231,6 +231,12 @@
 {
     m_dataProcTh.sendCmd(CAMERA_CMD_TYPE_STOP_DATA_PROC, TRUE, TRUE);
 
+    if (m_pReprocChannel != NULL) {
+        m_pReprocChannel->stop();
+        delete m_pReprocChannel;
+        m_pReprocChannel = NULL;
+    }
+
     return NO_ERROR;
 }
 
diff --git a/device.mk b/device.mk
index 6d797e2..1f30ca6 100644
--- a/device.mk
+++ b/device.mk
@@ -98,6 +98,10 @@
 PRODUCT_COPY_FILES += \
     device/moto/shamu/bcmdhd.cal:system/etc/wifi/bcmdhd.cal
 
+# For SPN display
+PRODUCT_COPY_FILES += \
+    device/moto/shamu/spn-conf.xml:system/etc/spn-conf.xml
+
 PRODUCT_TAGS += dalvik.gc.type-precise
 
 # This device is 560dpi.  However the platform doesn't
@@ -269,19 +273,11 @@
     NfcNci \
     Tag
 
-# NFCEE access control
-ifeq ($(TARGET_BUILD_VARIANT),user)
-    NFCEE_ACCESS_PATH := device/moto/shamu/nfc/nfcee_access.xml
-else
-    NFCEE_ACCESS_PATH := device/moto/shamu/nfc/nfcee_access_debug.xml
-endif
-
 PRODUCT_COPY_FILES += \
     frameworks/native/data/etc/android.hardware.nfc.xml:system/etc/permissions/android.hardware.nfc.xml \
     frameworks/native/data/etc/android.hardware.nfc.hce.xml:system/etc/permissions/android.hardware.nfc.hce.xml \
     device/moto/shamu/nfc/libnfc-brcm.conf:system/etc/libnfc-brcm.conf \
-    device/moto/shamu/nfc/libnfc-brcm-20795a10.conf:system/etc/libnfc-brcm-20795a10.conf \
-    $(NFCEE_ACCESS_PATH):system/etc/nfcee_access.xml
+    device/moto/shamu/nfc/libnfc-brcm-20795a10.conf:system/etc/libnfc-brcm-20795a10.conf
 
 PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
     persist.sys.usb.config=mtp
diff --git a/factory-images/generate-factory-images-package.sh b/factory-images/generate-factory-images-package.sh
new file mode 100755
index 0000000..955286a
--- /dev/null
+++ b/factory-images/generate-factory-images-package.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# Copyright 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+source ../../../common/clear-factory-images-variables.sh
+BUILD=1433121
+DEVICE=shamu
+PRODUCT=shamu
+VERSION=lrw73l
+SRCPREFIX=signed-
+BOOTLOADER=moto-apq8084-70.39
+RADIO=d4.0-9625-02.48
+source ../../../common/generate-factory-images-common.sh
diff --git a/init.shamu.rc b/init.shamu.rc
index 4771cc8..b94041d 100644
--- a/init.shamu.rc
+++ b/init.shamu.rc
@@ -97,6 +97,9 @@
     mkdir /data/ss-ram-dumps 0750 radio log
     mkdir /data/ss-ram-dumps/bp-dumps 0750 radio log
 
+    # rild files
+    mkdir /data/misc/audio_cutback 0770 radio audio
+
 on early-boot
     # set RLIMIT_MEMLOCK to 64MB
     setrlimit 8 67108864 67108864
diff --git a/nfc/nfcee_access.xml b/nfc/nfcee_access.xml
deleted file mode 100644
index 10dd793..0000000
--- a/nfc/nfcee_access.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- The built in list of signatures and package names that are allowed
-    access to the NFCEE (Secure Element).
-
-    Format:
-    <signer android:signature="SIGNATURE">
-        <package android:name="PACKAGE_NAME" />
-        ...
-    </signer>
-    ...
-
-    Rules:
-        SIGNATURE is a hex encoded X.509 certificate
-            See Debug section to generate hex encoded certificates.
-        PACKAGE_NAME is a Android package name
-        Zero or more signer tags are allowed.
-        Each signer tag must have one android:signature.
-        Zero or more package tags are allowed per signer.
-        Each package tag must have one android:name.
-        If a signer has zero package tags, then ANY application with the
-            specified certificate is granted NFCEE access.
-        If a signer has one or more package tags, then an application signed
-            with the specified certificate must have a package name that is an
-            exact match of one of the specified package names to be granted
-            NFCEE access.
-        Duplicate signer tags are not allowed.
-        Duplicate package tags for a single signer are not allowed.
-
-    Example:
-        In this example, any application from the first signer is granted
-        access, but only applications with the specified package names
-        are granted access for the second signer.
-    <signer android:signature="308201c53082012ea00302010202044ebb27cc300d06092a864886f70d01010505003026310f300d060355040a1306476f6f676c65311330110603550403130a4e69636b2050656c6c793020170d3131313131303031323432385a180f32313131313031373031323432385a3026310f300d060355040a1306476f6f676c65311330110603550403130a4e69636b2050656c6c7930819f300d06092a864886f70d010101050003818d00308189028181008d43e546b3f5572707a095ced120d8f06781fa162bcf0ffa0ed0ecb48eb90ed009f65a5a1afd69fb4d38cf24e931b69b061741b8c7ca9f785ba59509e883f5a308f5e2da3c496bb362a2229da8f95f08a92f7f94c829c56e78a34e5147d138d0be0671cb5b7caceaffae6199ba544496a7645e7df3c9f02c5ac156eb0501584f0203010001300d06092a864886f70d0101050500038181003511bcb73651a7927db71ad76e4f6dc5ba121c941ae0fd4dfe519aae8775520b204a5e3cdad2c61ad41aff2c510dbe3376a7578d8aba00f35633e1ae72c91ec83d80eac6f5f081fb8361c6c30c47b0a17932d859d7e991e02cba410a82b35234b2b1bc859e50fe308bf9b64b71a8046777300c07ead159287c187b8865e23f23" />
-    <signer android:signature="3082044c30820334a003020102020900de7695041d7650c0300d06092a864886f70d01010505003077310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f6964311330110603550403130a476f6f676c65204e4643301e170d3131303332343031303332345a170d3338303830393031303332345a3077310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f6964311330110603550403130a476f6f676c65204e464330820120300d06092a864886f70d01010105000382010d00308201080282010100e6ff3defe92aa10d71eb0fa6408bc036b7e243eeed68a6a4763dc7a52a31757cdac61fe510bb73c716e4000104265b347fcecef4c42bf1e1379dd0a876f028227fbbc1f9bdd5d713b2f6a935a379d2cba9c96f92d2d0787c11f1eb19548008a6a072b34b91836cfa0ae1276780e9007530166986a11c9cef46cef7c704806dde9431fb60284d120ab0e7de1d633f07687d468c51139afffdc6bc9a207ca904b8be1da0aa7b4e97756f43606488be5cae3c68e8bb7942cdf51607c930a2fcda655b75d0759cba89ad06e739bd0ba29b1f404296c2c0a85a847f5ab0d067c6c3ec9c49212042ac63a7e53b546c65b46080b4e3e680e23e1f77cfe7f6de744b1a65020103a381dc3081d9301d0603551d0e04160414a2e89064b05d08865c34db930a9d840050117aec3081a90603551d230481a130819e8014a2e89064b05d08865c34db930a9d840050117aeca17ba4793077310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f6964311330110603550403130a476f6f676c65204e4643820900de7695041d7650c0300c0603551d13040530030101ff300d06092a864886f70d010105050003820101003771870ce87c3c52ea84899230c6e962d94b4d5f1293c25d88261541fd90b5555d1285cef3b8312c3f5df691a8aae04cb981b305e427fd1d2d9e1987e1d29078f13c8452990f1821980263d8d4bd36519348d8d8ba26d8b99fbf09f5fd3ebb0ea3c2f0c9376f1e1fca76f3a6a405429d081b752a7a90b756e9ab44da41abc8e1e8f88ac2758da743fb73e650719a57840ccb6b7add21b99fc681e456e1872c223d5c074adf55f6abda268c2d8b64ea0a8845eecd968f92b493127e75c753c3ff30cbc678b51c9f52961472f17da20a0dc6274aa2463434c1a9b614df697d8ff5ca8101e7a25c7db3fb055d65569c04b01d389cabba57b3a1703ec2e74a88d334">
-    </signer>
-
-    Debug:
-        Including the tag <debug /> will print to logcat the
-        hex encoded signature of applications that are denied NFCEE
-	access, for easy cut-and-paste into this file.
-     -->
-<!-- SoftCard AT&T -->
-<signer android:signature="3082037a30820262a00302010202044f86ea3a300d06092a864886f70d0101050500307f310b30090603550406130255533110300e06035504081307556e6b6e6f776e3110300e06035504071307556e6b6e6f776e311c301a060355040a0c13415426542053657276696365732c20496e632e311c301a060355040b0c13415426542053657276696365732c20496e632e3110300e06035504031307556e6b6e6f776e301e170d3132303431323134343431305a170d3339303832393134343431305a307f310b30090603550406130255533110300e06035504081307556e6b6e6f776e3110300e06035504071307556e6b6e6f776e311c301a060355040a0c13415426542053657276696365732c20496e632e311c301a060355040b0c13415426542053657276696365732c20496e632e3110300e06035504031307556e6b6e6f776e30820122300d06092a864886f70d01010105000382010f003082010a0282010100a8292e38262bf7371b34ec160fda04231356343fc38b1e06f6293e1a2230d65dba637ca6901f72fd600bfb8f27ad8b851e5f341331bc53c22118884d98b755f3aebcaa541c34f3f98d9660eef006a18425bb5bc762317d27b27c13caafe5c75663aba207c4bdc909352bfcda289503b175976e7a0dcbb2cb59d6d579fcc0c36e15483442b2c2d595aedc806b629347a8c3eb30be0841b5f12a50d8dd03fb25ebe21074d660eeaf0629fcc7479ae382301d29c5d372e295a1e0426c92da910b65d35fa5b94c37032edfdb497db0ca4a5cea7a6ec5c8aa356e8e775b489d33fe9abe775716e705d92b9555fbb8c359be30e668da3469a6475e61c3ea3c4c7bbe850203010001300d06092a864886f70d010105050003820101000dc0e6494b8aaf20daf0fca2186dfc9d54862096b848e507edeb38466f2f00568f2913688e0aaf87504e115aaee363d5186ecc9eb8f219fc7dbb41d8abff0ecdf5edcb0b4c7a09fc0991bcd52cbcd937563135526d778d1592660af1c09af1ea49ba9e1aa695150f97746eec9a43de2b63844a668476780a22d6757b20ebfa835e15bf060f5645e8d1a1a0e9a1908e3cb080edd798c7f717b0f4e14549801e1d9728300face227fb8c656eeed0b4121625daa28b057ae3d17d5afc15bd419284931ed8c3bd57f5dbbcc8cf5ad2295347e469b3d42c88d876b6da4bc18f1c961142a17bad3585b7d61ca8594ad5177ea26d01265ce257486a551512f4da02116c" />
-<!-- SoftCard VZW -->
-<signer android:signature="308203C2308202AAA00302010202044F6B9529300D06092A864886F70D01010505003081A2310B3009060355040613025553310B3009060355040813024E4A311630140603550407130D4261736B696E6720526964676531243022060355040A131B566572697A6F6E20436F6D6D756E69636174696F6E7320496E632E31193017060355040B1310566572697A6F6E20576972656C657373312D302B06035504031324566572697A6F6E20576972656C657373205369676E696E67204365727469666963617465301E170D3132303332323231313030315A170D3339303830383231313030315A3081A2310B3009060355040613025553310B3009060355040813024E4A311630140603550407130D4261736B696E6720526964676531243022060355040A131B566572697A6F6E20436F6D6D756E69636174696F6E7320496E632E31193017060355040B1310566572697A6F6E20576972656C657373312D302B06035504031324566572697A6F6E20576972656C657373205369676E696E6720436572746966696361746530820122300D06092A864886F70D01010105000382010F003082010A02820101009452BDCE78F36373D547CA2F6FE0939C239E423311F96A9A2CA253A7B21CBE6F82AF19A97E4B183270395D222423B3A3B9C1809D213E048EF4C63C3C8033C8AC7EB7943E95EF209D819EDEAA9AA41A4F8838054CEA83A19AFD49BE794DA3AFAAA4216320754D6161E691C64E2396DCA7DF0AFB030FFAAEBA96F1575385CB2EF967A09652D14CA2B6A9ECD58A8DFDDB16792A00E5427C7435CAC1714A3C4014B1ACEE14D6E2B220888DF392ACA253D731884E9D5D40214D36033206F07B8F48BD94FFB649F8CD84417AF9A7E4A344FBB3BEA0DA18DD55E2BBFE3A953A3D484CBB02E650FEE8CD2A74C6CCF506F382592BD64F03A10BC64BDAB4577C47E55C96850203010001300D06092A864886F70D01010505000382010100902BBEE97568A427EE75054C731BDADB5D045EB6557B771C06A4BE4D2253650D9E7CE04CBBF10516B23B6E7E03154CB181B421FC91527A9BDBBD7CF4025F4F808888A8A06C1C34C7637F423B56017FD7C002FD651C7C9BD1B73BCEBB31A0DD0870CDFD117BA119BC32324835E7A4E43FD2267B2FB6A326F7E978B7A856FB0E07C663750BC4ED0A11FB48A05AC0B01CA9B14E65496D5F3866617E6C4A63428ED68F56E87A8544CEE4FC1BBD07ED91D888089B2950397AA332883E3DB5C51D41EA31C76CE03B62AB61ABF17CF5E5145A85CE2DDE698D0E8038346DEE9BC59DCBED7CDF41D3CAD10A61B3357A380FC403F2FD1DCD955B2D5DD9D9DFABEFF8284103" />
-</resources>
-
diff --git a/nfc/nfcee_access_debug.xml b/nfc/nfcee_access_debug.xml
deleted file mode 100644
index 90977ca..0000000
--- a/nfc/nfcee_access_debug.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- The built in list of signatures and package names that are allowed
-    access to the NFCEE (Secure Element).
-
-    Format:
-    <signer android:signature="SIGNATURE">
-        <package android:name="PACKAGE_NAME" />
-        ...
-    </signer>
-    ...
-
-    Rules:
-        SIGNATURE is a hex encoded X.509 certificate
-            See Debug section to generate hex encoded certificates.
-        PACKAGE_NAME is a Android package name
-        Zero or more signer tags are allowed.
-        Each signer tag must have one android:signature.
-        Zero or more package tags are allowed per signer.
-        Each package tag must have one android:name.
-        If a signer has zero package tags, then ANY application with the
-            specified certificate is granted NFCEE access.
-        If a signer has one or more package tags, then an application signed
-            with the specified certificate must have a package name that is an
-            exact match of one of the specified package names to be granted
-            NFCEE access.
-        Duplicate signer tags are not allowed.
-        Duplicate package tags for a single signer are not allowed.
-
-    Example:
-        In this example, any application from the first signer is granted
-        access, but only applications with the specified package names
-        are granted access for the second signer.
-    <signer android:signature="308201c53082012ea00302010202044ebb27cc300d06092a864886f70d01010505003026310f300d060355040a1306476f6f676c65311330110603550403130a4e69636b2050656c6c793020170d3131313131303031323432385a180f32313131313031373031323432385a3026310f300d060355040a1306476f6f676c65311330110603550403130a4e69636b2050656c6c7930819f300d06092a864886f70d010101050003818d00308189028181008d43e546b3f5572707a095ced120d8f06781fa162bcf0ffa0ed0ecb48eb90ed009f65a5a1afd69fb4d38cf24e931b69b061741b8c7ca9f785ba59509e883f5a308f5e2da3c496bb362a2229da8f95f08a92f7f94c829c56e78a34e5147d138d0be0671cb5b7caceaffae6199ba544496a7645e7df3c9f02c5ac156eb0501584f0203010001300d06092a864886f70d0101050500038181003511bcb73651a7927db71ad76e4f6dc5ba121c941ae0fd4dfe519aae8775520b204a5e3cdad2c61ad41aff2c510dbe3376a7578d8aba00f35633e1ae72c91ec83d80eac6f5f081fb8361c6c30c47b0a17932d859d7e991e02cba410a82b35234b2b1bc859e50fe308bf9b64b71a8046777300c07ead159287c187b8865e23f23" />
-    <signer android:signature="3082044c30820334a003020102020900de7695041d7650c0300d06092a864886f70d01010505003077310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f6964311330110603550403130a476f6f676c65204e4643301e170d3131303332343031303332345a170d3338303830393031303332345a3077310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f6964311330110603550403130a476f6f676c65204e464330820120300d06092a864886f70d01010105000382010d00308201080282010100e6ff3defe92aa10d71eb0fa6408bc036b7e243eeed68a6a4763dc7a52a31757cdac61fe510bb73c716e4000104265b347fcecef4c42bf1e1379dd0a876f028227fbbc1f9bdd5d713b2f6a935a379d2cba9c96f92d2d0787c11f1eb19548008a6a072b34b91836cfa0ae1276780e9007530166986a11c9cef46cef7c704806dde9431fb60284d120ab0e7de1d633f07687d468c51139afffdc6bc9a207ca904b8be1da0aa7b4e97756f43606488be5cae3c68e8bb7942cdf51607c930a2fcda655b75d0759cba89ad06e739bd0ba29b1f404296c2c0a85a847f5ab0d067c6c3ec9c49212042ac63a7e53b546c65b46080b4e3e680e23e1f77cfe7f6de744b1a65020103a381dc3081d9301d0603551d0e04160414a2e89064b05d08865c34db930a9d840050117aec3081a90603551d230481a130819e8014a2e89064b05d08865c34db930a9d840050117aeca17ba4793077310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f6964311330110603550403130a476f6f676c65204e4643820900de7695041d7650c0300c0603551d13040530030101ff300d06092a864886f70d010105050003820101003771870ce87c3c52ea84899230c6e962d94b4d5f1293c25d88261541fd90b5555d1285cef3b8312c3f5df691a8aae04cb981b305e427fd1d2d9e1987e1d29078f13c8452990f1821980263d8d4bd36519348d8d8ba26d8b99fbf09f5fd3ebb0ea3c2f0c9376f1e1fca76f3a6a405429d081b752a7a90b756e9ab44da41abc8e1e8f88ac2758da743fb73e650719a57840ccb6b7add21b99fc681e456e1872c223d5c074adf55f6abda268c2d8b64ea0a8845eecd968f92b493127e75c753c3ff30cbc678b51c9f52961472f17da20a0dc6274aa2463434c1a9b614df697d8ff5ca8101e7a25c7db3fb055d65569c04b01d389cabba57b3a1703ec2e74a88d334">
-    </signer>
-
-    Debug:
-        Including the tag <debug /> will print to logcat the
-        hex encoded signature of applications that are denied NFCEE
-	access, for easy cut-and-paste into this file.
-     -->
-    <!-- Softcard Wallet debug signature -->
-    <signer android:signature="3082034830820230a00302010202044f62832f300d06092a864886f70d01010505003066310b3009060355040613025553310b3009060355040813024e593111300f060355040713084e657720596f726b310d300b060355040a130449736973310d300b060355040b13044973697331193017060355040313104a564c2056656e7475726573204c4c43301e170d3132303331363030303235355a170d3339303830323030303235355a3066310b3009060355040613025553310b3009060355040813024e593111300f060355040713084e657720596f726b310d300b060355040a130449736973310d300b060355040b13044973697331193017060355040313104a564c2056656e7475726573204c4c4330820122300d06092a864886f70d01010105000382010f003082010a02820101009aaf7f1047a6821ab0b4ffb7d58f8a0a66f09689dc59926e966b24896759b96304825ea149ebf30e6249877fedac185eec7aa7a44dc718ab578584888c673f46bc351b48dcd54f47bd27a0836032899b0510e0ce69863184bcd033b0654f09e801a24f06fadd7330f3665e12fbbf1c2b616ca14ac169d206607f229a7ad6d3579d330373be0de0d7148eabb80beed83602494247c0b7b735812a5ece89c1ce7f2229f757e29ebfae72350d2db27974cd5341ba5872a92f471a0768972e35246d0269d41d345cd8bda2df14009212d9640f3a33116460dce389c5a113b84e4a6b7f8b597cb601e53dace8777e380ffe4d9f0abfa14993a1f653c9a6bb5a245fd10203010001300d06092a864886f70d010105050003820101009089e52bb237b78c92dd95b4d07004751b3d68e12e83ab0baca39ea593b9b9f8f6395491f6616fe4d2e4c7a7e53c898a17f3ab2c9fac3b1c0886ee8e769ba96488aafd646a7aa425fb283cd6d9d600a083d18868d4d93de7ec73b258f61fc66d2a3f4b4c7b53df62fd3374a5e658bd8266ee24480923ea584f2e7adde360b459e4ad01bcb9f5582f95dab3964e546baf5b33f63acfbb64494902ebae5cc0930abb7dabf0e4727fcc755a6baa6e68be3b864ab1e6438fed6dd280f081ef1e3b3545a257b456b68787d8080653c31ed7f96f6b5a67186dc5a35e620b9bbb9d47a1871d58bf38e192906399c53cb2fab61c1392deae6209d6fb476897a471a23ab4" />
-</resources>
-
diff --git a/sepolicy/file.te b/sepolicy/file.te
index 006a2cc..894fe47 100644
--- a/sepolicy/file.te
+++ b/sepolicy/file.te
@@ -16,6 +16,7 @@
 type quipc_data_file, data_file_type, file_type;
 type dropbox_data_file, file_type, data_file_type;
 type adspd_data_file, file_type, data_file_type;
+type audio_cutback_data_file, file_type, data_file_type;
 
 type sysfs_rmnet, fs_type, sysfs_type;
 type sysfs_smdcntl_open_timeout, fs_type, sysfs_type;
@@ -34,3 +35,4 @@
 type sysfs_cpu_online, fs_type, sysfs_type;
 type sysfs_cpuboost, fs_type, sysfs_type;
 type sysfs_capsense_update, fs_type, sysfs_type;
+type sysfs_sar_wifi, fs_type, sysfs_type;
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
index 58ce432..a7d8355 100644
--- a/sepolicy/file_contexts
+++ b/sepolicy/file_contexts
@@ -7,6 +7,7 @@
 /data/misc/location/quipc(/.*)? u:object_r:quipc_data_file:s0
 /data/ss-ram-dumps(/.*)?       u:object_r:ram_dump_logs:s0
 /data/adspd(/.*)?              u:object_r:adspd_data_file:s0
+/data/misc/audio_cutback(/.*)? u:object_r:audio_cutback_data_file:s0
 
 # TODO move out of /data/system
 /data/system/dropbox-add(/.*)? u:object_r:dropbox_data_file:s0
@@ -144,4 +145,5 @@
 /sys/bus/platform/drivers/xhci_msm_hsic(/.*)?            u:object_r:sysfs_xhci_msm_hsic:s0
 /sys/devices/msm_hsic_host/host_ready                    u:object_r:sysfs_msm_hsic_host:s0
 
-/sys/devices/cycapsense_prog\.1/cycapsense_fw             u:object_r:sysfs_capsense_update:s0
+/sys/devices/cycapsense_prog.1/cycapsense_fw             u:object_r:sysfs_capsense_update:s0
+/sys/devices/mmi_sar_ctrl.[0-9]*/sar_wifi                u:object_r:sysfs_sar_wifi:s0
diff --git a/sepolicy/mediaserver.te b/sepolicy/mediaserver.te
index 018fc85..cd0a5e7 100644
--- a/sepolicy/mediaserver.te
+++ b/sepolicy/mediaserver.te
@@ -11,8 +11,9 @@
 binder_call(mediaserver, rild)
 
 unix_socket_send(mediaserver, camera, camera)
-
 unix_socket_connect(mediaserver, adspd, adspd)
+allow mediaserver audio_cutback_data_file:dir search;
+allow mediaserver audio_cutback_data_file:sock_file write;
 
 # TODO b/17015082
 allow mediaserver shell_data_file:dir search;
diff --git a/sepolicy/rild.te b/sepolicy/rild.te
index 00c2a56..ebf438e 100644
--- a/sepolicy/rild.te
+++ b/sepolicy/rild.te
@@ -10,4 +10,10 @@
 allow rild persist_modem_file:file create_file_perms;
 
 allow rild time:unix_stream_socket connectto;
-allow rild sysfs_capsense_update:file w_file_perms;
+allow rild sysfs_capsense_update:file { getattr w_file_perms};
+allow rild sysfs_sar_wifi:file { getattr w_file_perms};
+
+allow rild audio_cutback_data_file:dir rw_dir_perms;
+allow rild audio_cutback_data_file:sock_file create_file_perms;
+# why?
+allow rild audio_cutback_data_file:dir setattr;
diff --git a/spn-conf.xml b/spn-conf.xml
new file mode 100644
index 0000000..2201279
--- /dev/null
+++ b/spn-conf.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<spnOverrides>
+    <spnOverride numeric="310120" spn="Sprint"/>
+    <spnOverride numeric="40402" spn="airtel"/>
+    <spnOverride numeric="40403" spn="airtel"/>
+    <spnOverride numeric="40410" spn="airtel"/>
+    <spnOverride numeric="40416" spn="airtel"/>
+    <spnOverride numeric="40431" spn="airtel"/>
+    <spnOverride numeric="40440" spn="airtel"/>
+    <spnOverride numeric="40445" spn="airtel"/>
+    <spnOverride numeric="40449" spn="airtel"/>
+    <spnOverride numeric="40490" spn="airtel"/>
+    <spnOverride numeric="40492" spn="airtel"/>
+    <spnOverride numeric="40493" spn="airtel"/>
+    <spnOverride numeric="40494" spn="airtel"/>
+    <spnOverride numeric="40495" spn="airtel"/>
+    <spnOverride numeric="40496" spn="airtel"/>
+    <spnOverride numeric="40497" spn="airtel"/>
+    <spnOverride numeric="40498" spn="airtel"/>
+    <spnOverride numeric="40551" spn="airtel"/>
+    <spnOverride numeric="40552" spn="airtel"/>
+    <spnOverride numeric="40553" spn="airtel"/>
+    <spnOverride numeric="40554" spn="airtel"/>
+    <spnOverride numeric="40555" spn="airtel"/>
+    <spnOverride numeric="40556" spn="airtel"/>
+    <spnOverride numeric="42502" spn="Cellcom"/>
+    <spnOverride numeric="42503" spn="Pelephone"/>
+    <spnOverride numeric="42507" spn="HOT mobile"/>
+    <spnOverride numeric="42508" spn="Golan Telecom"/>
+    <spnOverride numeric="42510" spn="Orange-IL"/>
+    <spnOverride numeric="42514" spn="YouPhone"/>
+    <spnOverride numeric="42515" spn="Home Cellular"/>
+    <spnOverride numeric="42516" spn="Rami Levy"/>
+</spnOverrides>