new config for vzw Carriersetup app on Angler
am: fefd019d4a
Change-Id: I21c5368451a2046e4835e87c7f1479f5e14ed3c5
diff --git a/AnglerLayout/res/values-bn-rBD/strings.xml b/AnglerLayout/res/values-bn/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-bn-rBD/strings.xml
rename to AnglerLayout/res/values-bn/strings.xml
diff --git a/AnglerLayout/res/values-et-rEE/strings.xml b/AnglerLayout/res/values-et/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-et-rEE/strings.xml
rename to AnglerLayout/res/values-et/strings.xml
diff --git a/AnglerLayout/res/values-eu-rES/strings.xml b/AnglerLayout/res/values-eu/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-eu-rES/strings.xml
rename to AnglerLayout/res/values-eu/strings.xml
diff --git a/AnglerLayout/res/values-gl-rES/strings.xml b/AnglerLayout/res/values-gl/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-gl-rES/strings.xml
rename to AnglerLayout/res/values-gl/strings.xml
diff --git a/AnglerLayout/res/values-gu-rIN/strings.xml b/AnglerLayout/res/values-gu/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-gu-rIN/strings.xml
rename to AnglerLayout/res/values-gu/strings.xml
diff --git a/AnglerLayout/res/values-hy-rAM/strings.xml b/AnglerLayout/res/values-hy/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-hy-rAM/strings.xml
rename to AnglerLayout/res/values-hy/strings.xml
diff --git a/AnglerLayout/res/values-is-rIS/strings.xml b/AnglerLayout/res/values-is/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-is-rIS/strings.xml
rename to AnglerLayout/res/values-is/strings.xml
diff --git a/AnglerLayout/res/values-ka-rGE/strings.xml b/AnglerLayout/res/values-ka/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-ka-rGE/strings.xml
rename to AnglerLayout/res/values-ka/strings.xml
diff --git a/AnglerLayout/res/values-kk-rKZ/strings.xml b/AnglerLayout/res/values-kk/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-kk-rKZ/strings.xml
rename to AnglerLayout/res/values-kk/strings.xml
diff --git a/AnglerLayout/res/values-km-rKH/strings.xml b/AnglerLayout/res/values-km/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-km-rKH/strings.xml
rename to AnglerLayout/res/values-km/strings.xml
diff --git a/AnglerLayout/res/values-kn-rIN/strings.xml b/AnglerLayout/res/values-kn/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-kn-rIN/strings.xml
rename to AnglerLayout/res/values-kn/strings.xml
diff --git a/AnglerLayout/res/values-ky-rKG/strings.xml b/AnglerLayout/res/values-ky/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-ky-rKG/strings.xml
rename to AnglerLayout/res/values-ky/strings.xml
diff --git a/AnglerLayout/res/values-lo-rLA/strings.xml b/AnglerLayout/res/values-lo/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-lo-rLA/strings.xml
rename to AnglerLayout/res/values-lo/strings.xml
diff --git a/AnglerLayout/res/values-mk-rMK/strings.xml b/AnglerLayout/res/values-mk/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-mk-rMK/strings.xml
rename to AnglerLayout/res/values-mk/strings.xml
diff --git a/AnglerLayout/res/values-ml-rIN/strings.xml b/AnglerLayout/res/values-ml/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-ml-rIN/strings.xml
rename to AnglerLayout/res/values-ml/strings.xml
diff --git a/AnglerLayout/res/values-mn-rMN/strings.xml b/AnglerLayout/res/values-mn/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-mn-rMN/strings.xml
rename to AnglerLayout/res/values-mn/strings.xml
diff --git a/AnglerLayout/res/values-mr-rIN/strings.xml b/AnglerLayout/res/values-mr/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-mr-rIN/strings.xml
rename to AnglerLayout/res/values-mr/strings.xml
diff --git a/AnglerLayout/res/values-ms-rMY/strings.xml b/AnglerLayout/res/values-ms/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-ms-rMY/strings.xml
rename to AnglerLayout/res/values-ms/strings.xml
diff --git a/AnglerLayout/res/values-my-rMM/strings.xml b/AnglerLayout/res/values-my/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-my-rMM/strings.xml
rename to AnglerLayout/res/values-my/strings.xml
diff --git a/AnglerLayout/res/values-ne-rNP/strings.xml b/AnglerLayout/res/values-ne/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-ne-rNP/strings.xml
rename to AnglerLayout/res/values-ne/strings.xml
diff --git a/AnglerLayout/res/values-pa-rIN/strings.xml b/AnglerLayout/res/values-pa/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-pa-rIN/strings.xml
rename to AnglerLayout/res/values-pa/strings.xml
diff --git a/AnglerLayout/res/values-si-rLK/strings.xml b/AnglerLayout/res/values-si/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-si-rLK/strings.xml
rename to AnglerLayout/res/values-si/strings.xml
diff --git a/AnglerLayout/res/values-sq-rAL/strings.xml b/AnglerLayout/res/values-sq/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-sq-rAL/strings.xml
rename to AnglerLayout/res/values-sq/strings.xml
diff --git a/AnglerLayout/res/values-ta-rIN/strings.xml b/AnglerLayout/res/values-ta/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-ta-rIN/strings.xml
rename to AnglerLayout/res/values-ta/strings.xml
diff --git a/AnglerLayout/res/values-te-rIN/strings.xml b/AnglerLayout/res/values-te/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-te-rIN/strings.xml
rename to AnglerLayout/res/values-te/strings.xml
diff --git a/AnglerLayout/res/values-ur-rPK/strings.xml b/AnglerLayout/res/values-ur/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-ur-rPK/strings.xml
rename to AnglerLayout/res/values-ur/strings.xml
diff --git a/AnglerLayout/res/values-uz-rUZ/strings.xml b/AnglerLayout/res/values-uz/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-uz-rUZ/strings.xml
rename to AnglerLayout/res/values-uz/strings.xml
diff --git a/BoardConfig.mk b/BoardConfig.mk
index 60b0033..b7830f9 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -85,7 +85,7 @@
BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE := ext4
BOARD_FLASH_BLOCK_SIZE := 131072
-BOARD_HAL_STATIC_LIBRARIES := libdumpstate.angler
+TARGET_AUX_OS_VARIANT_LIST := angler
TARGET_RECOVERY_FSTAB = device/huawei/angler/fstab.angler
TARGET_COPY_OUT_VENDOR := vendor
diff --git a/apns-full-conf.xml b/apns-full-conf.xml
index e04cb1e..72c1eb5 100755
--- a/apns-full-conf.xml
+++ b/apns-full-conf.xml
@@ -740,10 +740,10 @@
type="mms"
/>
- <apn carrier="Px MMS"
+ <apn carrier="Proximus MMS"
mcc="206"
mnc="01"
- apn="EVENT.PROXIMUS.BE"
+ apn="event.proximus.be"
user="mms"
password="mms"
authtype="1"
@@ -753,17 +753,17 @@
type="mms"
/>
- <apn carrier="Px Internet"
+ <apn carrier="Proximus Internet"
mcc="206"
mnc="01"
apn=""
type="ia"
/>
- <apn carrier="Px Internet"
+ <apn carrier="Proximus Internet"
mcc="206"
mnc="01"
- apn="INTERNET.PROXIMUS.BE"
+ apn="internet.proximus.be"
type="default,supl"
/>
@@ -772,7 +772,7 @@
mnc="01"
apn="telenetwap.be"
type="default,supl"
- mvno_match_data="2060188"
+ mvno_match_data="20601889"
mvno_type="imsi"
/>
@@ -784,7 +784,7 @@
mmsproxy="195.130.149.100"
mmsport="80"
type="mms"
- mvno_match_data="2060188"
+ mvno_match_data="20601889"
mvno_type="imsi"
/>
@@ -1008,7 +1008,6 @@
apn="orange"
user="orange"
password="orange"
- authtype="1"
type="default,supl"
/>
@@ -1021,11 +1020,10 @@
mmsc="http://mms.orange.fr"
mmsproxy="192.168.10.200"
mmsport="8080"
- authtype="1"
type="mms"
/>
- <apn carrier="Orange Entreprise"
+ <apn carrier="Orange Entreprises"
mcc="208"
mnc="01"
apn="orange-mib"
@@ -1033,15 +1031,14 @@
port="8000"
user="orange"
password="orange"
- authtype="2"
- type="default"
+ type="default,supl"
/>
<apn carrier="Orange Internet"
mcc="208"
mnc="01"
apn="orange.fr"
- authtype="0"
+ authtype="1"
user="orange"
password="orange"
type="dun"
@@ -1163,7 +1160,7 @@
mmsc="http://mms1"
mmsproxy="10.151.0.1"
mmsport="8080"
- type="default,mms,supl"
+ type="default,hipri,mms"
/>
<apn carrier="SFR option Modem"
@@ -9407,7 +9404,7 @@
type="mms"
protocol="IPV6"
roaming_protocol="IPV6"
- bearer_bitmask="18"
+ bearer="18"
/>
<apn carrier="T-Mobile IMS"
@@ -9426,7 +9423,7 @@
type="ims"
protocol="IPV6"
roaming_protocol="IPV6"
- bearer_bitmask="18"
+ bearer="18"
/>
<apn carrier="Project Fi - T"
@@ -24651,29 +24648,15 @@
type="mms"
/>
- <apn carrier="Mozaic Mob"
- mcc="427"
- mnc="01"
- apn="gprs.qtel"
- user="gprs"
- password="gprs"
- authtype="1"
- proxy="10.23.8.3"
- port="8080"
- type="default,supl"
- />
-
- <apn carrier="Qtel MMS"
- mcc="427"
- mnc="01"
- apn="mms.qtel"
- user="10"
- password="11"
- authtype="1"
- mmsproxy="10.23.8.3"
- mmsport="8080"
- mmsc="http://mmsr.qtelmms.qa"
- type="mms"
+ <apn carrier="Ooredoo data"
+ mcc="427"
+ mnc="01"
+ apn="data"
+ mmsproxy="10.23.8.3"
+ mmsport="8080"
+ mmsc="http://mmsr.ooredoomms.qa"
+ type="default,supl,mms"
+ authtype="1"
/>
<apn carrier="Voda internet"
@@ -24815,12 +24798,10 @@
type="mms"
/>
- <apn carrier="Irancell-GPRS"
+ <apn carrier="Irancell-Internet"
mcc="432"
mnc="35"
apn="mtnirancell"
- proxy="10.131.26.138"
- port="8080"
type="default,supl"
/>
@@ -25189,6 +25170,24 @@
authtype="2"
/>
+ <apn carrier="KDDI IA"
+ mcc="440"
+ mnc="50"
+ apn=""
+ type="ia"
+ protocol="IPV4V6"
+ roaming_protocol="IP"
+ />
+
+ <apn carrier="KDDI IMS"
+ mcc="440"
+ mnc="50"
+ apn="ims"
+ type="ims"
+ protocol="IPV6"
+ user_visible="false"
+ />
+
<apn carrier="au.au-net.ne.jp"
mcc="440"
mnc="50"
@@ -25199,6 +25198,34 @@
type="default,supl"
/>
+ <apn carrier="KDDI IA"
+ mcc="440"
+ mnc="51"
+ apn=""
+ type="ia"
+ protocol="IPV4V6"
+ roaming_protocol="IP"
+ />
+
+ <apn carrier="KDDI IMS"
+ mcc="440"
+ mnc="51"
+ apn="ims"
+ type="ims"
+ protocol="IPV6"
+ user_visible="false"
+ />
+
+ <apn carrier="au.au-net.ne.jp"
+ mcc="440"
+ mnc="51"
+ apn="au.au-net.ne.jp"
+ user="user@au.au-net.ne.jp"
+ password="au"
+ authtype="2"
+ type="default,supl"
+ />
+
<apn carrier="SKT IA"
mcc="450"
mnc="05"
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.cpp b/camera/QCamera2/HAL3/QCamera3HWI.cpp
index 1c29db1..cb5d3ff 100644
--- a/camera/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/camera/QCamera2/HAL3/QCamera3HWI.cpp
@@ -50,6 +50,7 @@
#include "QCamera3Channel.h"
#include "QCamera3PostProc.h"
#include "QCamera3VendorTags.h"
+#include "cam_cond.h"
using namespace android;
@@ -364,7 +365,8 @@
// TODO: hardcode for now until mctl add support for min_num_pp_bufs
//TBD - To see if this hardcoding is needed. Check by printing if this is filled by mctl to 3
gCamCapability[cameraId]->min_num_pp_bufs = 3;
- pthread_cond_init(&mRequestCond, NULL);
+
+ PTHREAD_COND_INIT(&mRequestCond);
mPendingLiveRequest = 0;
mCurrentRequestId = -1;
pthread_mutex_init(&mMutex, NULL);
@@ -2580,17 +2582,22 @@
i++;
continue;
} else {
- ALOGE("%s: Fatal: Missing metadata buffer for frame number %d", __func__, i->frame_number);
- if (free_and_bufdone_meta_buf) {
- mMetadataChannel->bufDone(metadata_buf);
- free(metadata_buf);
- }
+ ALOGE("%s: Missing metadata buffer for frame number %d, reporting CAMERA3_MSG_ERROR_RESULT",
+ __func__, i->frame_number);
+
+ mPendingLiveRequest--;
+
+ CameraMetadata dummyMetadata;
+ dummyMetadata.update(ANDROID_REQUEST_ID, &(i->request_id), 1);
+ result.result = dummyMetadata.release();
+
camera3_notify_msg_t notify_msg;
memset(¬ify_msg, 0, sizeof(notify_msg));
notify_msg.type = CAMERA3_MSG_ERROR;
- notify_msg.message.error.error_code = CAMERA3_MSG_ERROR_DEVICE;
+ notify_msg.message.error.error_code = CAMERA3_MSG_ERROR_RESULT;
+ notify_msg.message.error.error_stream = NULL;
+ notify_msg.message.error.frame_number = i->frame_number;
mCallbackOps->notify(mCallbackOps, ¬ify_msg);
- goto done_metadata;
}
} else {
i->partial_result_cnt++;
@@ -3821,7 +3828,7 @@
// Added a timed condition wait
struct timespec ts;
uint8_t isValidTimeout = 1;
- rc = clock_gettime(CLOCK_REALTIME, &ts);
+ rc = clock_gettime(CLOCK_MONOTONIC, &ts);
if (rc < 0) {
isValidTimeout = 0;
ALOGE("%s: Error reading the real time clock!!", __func__);
diff --git a/camera/QCamera2/stack/common/cam_cond.h b/camera/QCamera2/stack/common/cam_cond.h
new file mode 100644
index 0000000..52a6d71
--- /dev/null
+++ b/camera/QCamera2/stack/common/cam_cond.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+
+#ifndef CAM_COND_H
+#define CAM_COND_H
+
+#define PTHREAD_COND_INIT(cond) \
+ ({ \
+ int rc = 0; \
+ pthread_condattr_t cond_attr; \
+ rc = pthread_condattr_init(&cond_attr); \
+ if (rc == 0) { \
+ rc = pthread_condattr_setclock(&cond_attr, CLOCK_MONOTONIC); \
+ if (rc == 0) { \
+ rc = pthread_cond_init(cond, &cond_attr); \
+ } \
+ } \
+ rc; \
+ })
+
+#endif // CAM_COND_H
diff --git a/camera/QCamera2/stack/common/cam_semaphore.h b/camera/QCamera2/stack/common/cam_semaphore.h
index a52f907..f4260c2 100644
--- a/camera/QCamera2/stack/common/cam_semaphore.h
+++ b/camera/QCamera2/stack/common/cam_semaphore.h
@@ -30,6 +30,11 @@
#ifndef __QCAMERA_SEMAPHORE_H__
#define __QCAMERA_SEMAPHORE_H__
+// System dependencies
+#include <pthread.h>
+#include <errno.h>
+#include "cam_cond.h"
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -48,7 +53,7 @@
static inline void cam_sem_init(cam_semaphore_t *s, int n)
{
pthread_mutex_init(&(s->mutex), NULL);
- pthread_cond_init(&(s->cond), NULL);
+ PTHREAD_COND_INIT(&(s->cond));
s->val = n;
}
@@ -71,6 +76,27 @@
return rc;
}
+static inline int cam_sem_timedwait(cam_semaphore_t *s, const struct timespec *abs_timeout)
+{
+ int rc = 0;
+ pthread_mutex_lock(&(s->mutex));
+ while (s->val == 0 && rc != ETIMEDOUT)
+ rc = pthread_cond_timedwait(&(s->cond), &(s->mutex), abs_timeout);
+
+ if (s->val > 0)
+ s->val--;
+
+ pthread_mutex_unlock(&(s->mutex));
+
+ /* sem_timedwait returns -1 for failure case, and failure code is in errno
+ */
+ if (rc != 0) {
+ errno = rc;
+ rc = -1;
+ }
+ return rc;
+}
+
static inline void cam_sem_destroy(cam_semaphore_t *s)
{
pthread_mutex_destroy(&(s->mutex));
diff --git a/camera/QCamera2/stack/mm-camera-interface/Android.mk b/camera/QCamera2/stack/mm-camera-interface/Android.mk
index ff71773..cef137d 100644
--- a/camera/QCamera2/stack/mm-camera-interface/Android.mk
+++ b/camera/QCamera2/stack/mm-camera-interface/Android.mk
@@ -27,6 +27,8 @@
LOCAL_COPY_HEADERS_TO := mm-camera-interface
LOCAL_COPY_HEADERS += ../common/cam_intf.h
LOCAL_COPY_HEADERS += ../common/cam_types.h
+LOCAL_COPY_HEADERS += ../common/cam_cond.h
+LOCAL_COPY_HEADERS += ../common/cam_semaphore.h
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/inc \
diff --git a/camera/QCamera2/stack/mm-camera-interface/src/mm_camera.c b/camera/QCamera2/stack/mm-camera-interface/src/mm_camera.c
index 1cf357f..9e6f30f 100644
--- a/camera/QCamera2/stack/mm-camera-interface/src/mm_camera.c
+++ b/camera/QCamera2/stack/mm-camera-interface/src/mm_camera.c
@@ -43,6 +43,7 @@
#include "mm_camera_sock.h"
#include "mm_camera_interface.h"
#include "mm_camera.h"
+#include "cam_cond.h"
#define SET_PARM_BIT32(parm, parm_arr) \
(parm_arr[parm/32] |= (1<<(parm%32)))
@@ -340,7 +341,7 @@
pthread_mutex_init(&my_obj->cb_lock, NULL);
pthread_mutex_init(&my_obj->evt_lock, NULL);
- pthread_cond_init(&my_obj->evt_cond, NULL);
+ PTHREAD_COND_INIT(&my_obj->evt_cond);
CDBG("%s : Launch evt Thread in Cam Open",__func__);
snprintf(my_obj->evt_thread.threadName, THREAD_NAME_SIZE, "CAM_Dispatch");
@@ -1713,7 +1714,7 @@
pthread_mutex_lock(&my_obj->evt_lock);
while (!(my_obj->evt_rcvd.server_event_type & evt_mask)) {
- clock_gettime(CLOCK_REALTIME, &ts);
+ clock_gettime(CLOCK_MONOTONIC, &ts);
ts.tv_sec += WAIT_TIMEOUT;
rc = pthread_cond_timedwait(&my_obj->evt_cond, &my_obj->evt_lock, &ts);
if (rc == ETIMEDOUT) {
diff --git a/camera/QCamera2/stack/mm-camera-test/Android.mk b/camera/QCamera2/stack/mm-camera-test/Android.mk
index e775ead..74c7b3b 100644
--- a/camera/QCamera2/stack/mm-camera-test/Android.mk
+++ b/camera/QCamera2/stack/mm-camera-test/Android.mk
@@ -222,3 +222,19 @@
LOCAL_MODULE:= libmm-qcamera
include $(BUILD_SHARED_LIBRARY)
+
+# Build cam_semaphore_tests
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := src/cam_semaphore_tests.cpp
+
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../common
+
+LOCAL_CFLAGS := -Wall -Wextra -Werror
+
+LOCAL_MODULE := cam_semaphore_tests
+LOCAL_MODULE_TAGS := tests
+
+include $(BUILD_NATIVE_TEST)
+
+LOCAL_PATH := $(OLD_LOCAL_PATH)
diff --git a/camera/QCamera2/stack/mm-camera-test/src/cam_semaphore_tests.cpp b/camera/QCamera2/stack/mm-camera-test/src/cam_semaphore_tests.cpp
new file mode 100644
index 0000000..98ec45b
--- /dev/null
+++ b/camera/QCamera2/stack/mm-camera-test/src/cam_semaphore_tests.cpp
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2016 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.
+ */
+
+//#define LOG_NDEBUG 0
+#define LOG_TAG "cam_semaphore_tests"
+#include <utils/Log.h>
+
+#include <gtest/gtest.h>
+
+#include "cam_semaphore.h"
+
+#define NS_PER_S 1000000000
+
+//10 ms is about standard timer resolution for most non-RTOS.
+#define TIME_THRESHOLD_IN_NS 10000000
+
+static inline void timespec_add_ms(timespec& ts, size_t ms) {
+ ts.tv_sec += ms / 1000;
+ ts.tv_nsec += (ms % 1000) * 1000000;
+ if (ts.tv_nsec >= NS_PER_S) {
+ ts.tv_sec++;
+ ts.tv_nsec -= NS_PER_S;
+ }
+}
+
+static inline int64_t time_diff(timespec& ts_start, timespec& ts_end) {
+ if (ts_start.tv_sec == ts_end.tv_sec) {
+ return (int64_t)ts_end.tv_nsec - ts_start.tv_nsec;
+ } else {
+ return (int64_t)(ts_end.tv_sec - 1 - ts_start.tv_sec) * NS_PER_S +
+ ts_end.tv_nsec + NS_PER_S - ts_start.tv_nsec;
+ }
+}
+
+// Test cam_semaphore_timedwait
+TEST(cam_semaphore_tests, cam_semaphore_timedwait) {
+
+ cam_semaphore_t sem;
+ cam_sem_init(&sem, 0);
+
+ // Test timeout
+ timespec ts;
+ ASSERT_EQ(0, clock_gettime(CLOCK_MONOTONIC, &ts));
+ timespec_add_ms(ts, 100);
+
+ errno = 0;
+ ASSERT_EQ(-1, cam_sem_timedwait(&sem, &ts));
+ timespec ts_end;
+ clock_gettime(CLOCK_MONOTONIC, &ts_end);
+
+ ASSERT_EQ(ETIMEDOUT, errno);
+ // Check time after timeout ~= time before call + timeout
+ ASSERT_GE(time_diff(ts, ts_end), 0);
+ ASSERT_LT(time_diff(ts, ts_end), TIME_THRESHOLD_IN_NS);
+
+ // Test successful wait
+ ASSERT_EQ(0, clock_gettime(CLOCK_MONOTONIC, &ts));
+ timespec_add_ms(ts, 100);
+
+ errno = 0;
+ cam_sem_post(&sem);
+ ASSERT_EQ(0, cam_sem_timedwait(&sem, &ts));
+ ASSERT_EQ(0, errno);
+}
diff --git a/camera/QCamera2/util/QCameraFlash.cpp b/camera/QCamera2/util/QCameraFlash.cpp
index 2ca8fb4..e5d3c4c 100644
--- a/camera/QCamera2/util/QCameraFlash.cpp
+++ b/camera/QCamera2/util/QCameraFlash.cpp
@@ -156,7 +156,7 @@
ALOGE("%s: No flash available for camera id: %d",
__func__,
camera_id);
- retVal = -EINVAL;
+ retVal = -ENOSYS;
} else if (m_cameraOpen[camera_id]) {
ALOGE("%s: Camera in use for camera id: %d",
__func__,
diff --git a/device.mk b/device.mk
index 6b7d88c..e23a159 100644
--- a/device.mk
+++ b/device.mk
@@ -23,7 +23,7 @@
TARGET_USES_CHINOOK_SENSORHUB := false
ifeq ($(TARGET_PREBUILT_KERNEL),)
- LOCAL_KERNEL := device/huawei/angler-kernel/Image.gz-dtb
+ LOCAL_KERNEL := device/huawei/angler-kernel/Image.gz-dtb
else
LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL)
endif
@@ -36,8 +36,11 @@
device/huawei/angler/init.angler.usb.rc:root/init.angler.usb.rc \
device/huawei/angler/fstab.angler:root/fstab.angler \
device/huawei/angler/ueventd.angler.rc:root/ueventd.angler.rc \
+ device/huawei/angler/init.recovery.angler.rc:root/init.recovery.angler.rc \
device/huawei/angler/init.angler.power.sh:system/bin/init.angler.power.sh \
- device/huawei/angler/uinput-fpc.kl:system/usr/keylayout/uinput-fpc.kl
+ device/huawei/angler/uinput-fpc.kl:system/usr/keylayout/uinput-fpc.kl \
+ device/huawei/angler/init.qcom.devwait.sh:system/bin/init.qcom.devwait.sh \
+ device/huawei/angler/init.qcom.devstart.sh:system/bin/init.qcom.devstart.sh
ifeq ($(TARGET_USES_CHINOOK_SENSORHUB),true)
PRODUCT_COPY_FILES += \
@@ -50,6 +53,9 @@
PRODUCT_COPY_FILES += \
device/huawei/angler/init.mcfg.sh:system/bin/init.mcfg.sh
+PRODUCT_COPY_FILES += \
+ device/huawei/angler/init.radio.sh:system/bin/init.radio.sh
+
# Thermal configuration
PRODUCT_COPY_FILES += \
device/huawei/angler/thermal-engine-angler.conf:system/etc/thermal-engine.conf
@@ -89,9 +95,10 @@
PRODUCT_PACKAGES += \
AnglerLayout
-# include fingerprintd
+# Fingerprint Sensor
PRODUCT_PACKAGES += \
- fingerprintd
+ fingerprint.angler \
+ android.hardware.biometrics.fingerprint@2.1-service
# Delegation for OEM customization
PRODUCT_OEM_PROPERTIES := \
@@ -179,7 +186,12 @@
hwcomposer.msm8994 \
libgenlock \
memtrack.msm8994 \
- lights.angler
+ android.hardware.memtrack@1.0-impl
+
+# Light HAL
+PRODUCT_PACKAGES += \
+ lights.angler \
+ android.hardware.light@2.0-impl
USE_XML_AUDIO_POLICY_CONF := 1
PRODUCT_PACKAGES += \
@@ -198,12 +210,6 @@
PRODUCT_PACKAGES += \
android.hardware.soundtrigger@2.0-impl
-# TODO(b/31817599) remove when angler_treble goes away
-ifeq ($(TARGET_PRODUCT), angler_treble)
-PRODUCT_PACKAGES += \
- android.hardware.audio@2.0-service
-endif
-
# Audio effects
PRODUCT_PACKAGES += \
libqcomvisualizer \
@@ -220,6 +226,12 @@
libOmxVdecHevc \
libOmxVenc
+PRODUCT_PACKAGES += \
+ android.hardware.audio@2.0-impl \
+ android.hardware.audio.effect@2.0-impl \
+ android.hardware.broadcastradio@1.0-impl \
+ android.hardware.soundtrigger@2.0-impl
+
#CAMERA
PRODUCT_PACKAGES += \
camera.msm8994 \
@@ -244,7 +256,13 @@
PRODUCT_PACKAGES += \
sensors.angler \
activity_recognition.angler \
- context_hub.default
+ context_hub.default \
+ android.hardware.sensors@1.0-impl \
+ android.hardware.contexthub@1.0-impl \
+
+# new gatekeeper HAL
+PRODUCT_PACKAGES += \
+ android.hardware.gatekeeper@1.0-impl
ifeq ($(TARGET_USES_CHINOOK_SENSORHUB),true)
PRODUCT_PACKAGES += \
@@ -276,28 +294,69 @@
wpa_supplicant \
wpa_supplicant.conf
+# Bluetooth HAL
+PRODUCT_PACKAGES += \
+ android.hardware.bluetooth@1.0-impl
+
+ifeq ($(ENABLE_TREBLE), true)
+PRODUCT_PACKAGES += \
+ android.hardware.bluetooth@1.0-service
+endif
+
# NFC
PRODUCT_PACKAGES += \
libnfc-nci \
- nfc_nci.angler \
NfcNci \
Tag \
+ nfc_nci.angler \
android.hardware.nfc@1.0-impl \
ifeq ($(ENABLE_TREBLE), true)
PRODUCT_PACKAGES += \
- android.hardware.nfc@1.0-service
+ android.hardware.nfc@1.0-service \
+ android.hardware.vibrator@1.0-service \
+ android.hardware.thermal@1.0-service \
+ android.hardware.gatekeeper@1.0-service \
+
endif
+# Keymaster HAL
+PRODUCT_PACKAGES += \
+ android.hardware.keymaster@3.0-impl
+
+ifeq ($(ENABLE_TREBLE), true)
+PRODUCT_PACKAGES += \
+ android.hardware.keymaster@3.0-service
+endif
+
+# Vibrator
+PRODUCT_PACKAGES += \
+ android.hardware.vibrator@1.0-impl
+
# Power HAL
PRODUCT_PACKAGES += \
power.angler \
- thermal.angler
+ android.hardware.power@1.0-impl \
-# Test HAL for hwbinder performance benchamrk (only for userdebug and eng builds)
-ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+# Thermal HAL
PRODUCT_PACKAGES += \
- android.hardware.tests.libhwbinder@1.0-impl
+ thermal.angler \
+ android.hardware.thermal@1.0-impl
+
+#GNSS HAL
+PRODUCT_PACKAGES += \
+ android.hardware.gnss@1.0-impl
+
+# Library used for VTS tests (only for userdebug and eng builds)
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+# Test HAL for hwbinder performance benchamrk.
+PRODUCT_PACKAGES += \
+ android.hardware.tests.libhwbinder@1.0-impl
+
+# For VTS profiling.
+PRODUCT_PACKAGES += \
+ libvts_profiling \
+ libvts_multidevice_proto
endif
PRODUCT_COPY_FILES += \
@@ -338,7 +397,13 @@
# VR HAL
PRODUCT_PACKAGES += \
- vr.angler
+ vr.angler \
+ android.hardware.vr@1.0-impl
+
+ifeq ($(ENABLE_TREBLE), true)
+PRODUCT_PACKAGES += \
+ android.hardware.vr@1.0-service
+endif
# Enable low power video mode for 4K encode
PRODUCT_PROPERTY_OVERRIDES += \
@@ -459,7 +524,7 @@
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
ifeq (,$(filter aosp_angler, $(TARGET_PRODUCT)))
PRODUCT_PACKAGES += \
- QXDMLoggerV2
+ NexusLogger
endif # aosp_angler
PRODUCT_COPY_FILES += \
@@ -477,10 +542,18 @@
PRODUCT_PROPERTY_OVERRIDES += \
persist.radio.redir_party_num=0
+# Use Sdcardfs
+PRODUCT_PROPERTY_OVERRIDES += \
+ ro.sys.sdcardfs=1
+
# OEM Unlock reporting
-ADDITIONAL_DEFAULT_PROPERTIES += \
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
ro.oem_unlock_supported=1
+# ro.product.first_api_level indicates the first api level the device has commercially launched on.
+PRODUCT_PROPERTY_OVERRIDES += \
+ ro.product.first_api_level=23
+
# In userdebug, add minidebug info the the boot image and the system server to support
# diagnosing native crashes.
ifneq (,$(filter userdebug, $(TARGET_BUILD_VARIANT)))
@@ -492,6 +565,17 @@
$(call add-product-dex-preopt-module-config,wifi-service,--generate-mini-debug-info)
endif
+# Get rid of dex preoptimization to save space within system.img at the one
+# time cost of dexing on first boot. This list can be found by running:
+# grep odex $ANDROID_PRODUCT_OUT/installed-files.txt
+# Sorted by *.odex size
+ANGLER_DONT_DEXPREOPT_MODULES := \
+ BetterBug \
+ GoogleHindiIME \
+ CloudPrint2
+
+$(call add-product-dex-preopt-module-config,$(ANGLER_DONT_DEXPREOPT_MODULES),disable)
+
# setup dalvik vm configs.
$(call inherit-product, frameworks/native/build/phone-xhdpi-2048-dalvik-heap.mk)
@@ -510,12 +594,6 @@
PRODUCT_VENDOR_VERITY_PARTITION := /dev/block/platform/soc.0/f9824900.sdhci/by-name/vendor
$(call inherit-product, build/target/product/verity.mk)
-# b/28992626
-# For app investigation, make ASAN-lite only sanitize 32-bit.
-ifeq (true,$(SANITIZE_LITE))
- SANITIZE_ARCH := 32
-endif
-
# b/29995499
$(call add-product-sanitizer-module-config,cameraserver,never)
$(call add-product-sanitizer-module-config,mm-qcamera-daemon,never)
diff --git a/dumpstate/Android.mk b/dumpstate/Android.mk
index 3800e19..0ab008b 100644
--- a/dumpstate/Android.mk
+++ b/dumpstate/Android.mk
@@ -1,4 +1,4 @@
-# Copyright (C) 2015 The Android Open Source Project
+# Copyright (C) 2016 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.
@@ -12,15 +12,28 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-LOCAL_PATH:= $(call my-dir)
+LOCAL_PATH := $(call my-dir)
+
include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.dumpstate@1.0-service.angler
+LOCAL_INIT_RC := android.hardware.dumpstate@1.0-service.angler.rc
+LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_SRC_FILES := \
+ DumpstateDevice.cpp \
+ service.cpp
-LOCAL_C_INCLUDES := frameworks/native/cmds/dumpstate
-
-LOCAL_SRC_FILES := dumpstate.cpp
-
-LOCAL_MODULE := libdumpstate.angler
+LOCAL_SHARED_LIBRARIES := \
+ android.hardware.dumpstate@1.0 \
+ libbase \
+ libcutils \
+ libdumpstateutil \
+ libhidlbase \
+ libhidltransport \
+ libhwbinder \
+ liblog \
+ libutils
LOCAL_MODULE_TAGS := optional
+LOCAL_PROPRIETARY_MODULE := true
-include $(BUILD_STATIC_LIBRARY)
+include $(BUILD_EXECUTABLE)
diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp
new file mode 100644
index 0000000..62e14be
--- /dev/null
+++ b/dumpstate/DumpstateDevice.cpp
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+
+#define LOG_TAG "dumpstate"
+
+#include "DumpstateDevice.h"
+
+#include <log/log.h>
+
+#include "DumpstateUtil.h"
+
+using android::os::dumpstate::CommandOptions;
+using android::os::dumpstate::DumpFileToFd;
+using android::os::dumpstate::RunCommandToFd;
+
+namespace android {
+namespace hardware {
+namespace dumpstate {
+namespace V1_0 {
+namespace implementation {
+
+// Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow.
+Return<void> DumpstateDevice::dumpstateBoard(const hidl_handle& handle) {
+ if (handle->numFds < 1) {
+ ALOGE("no FDs\n");
+ return Void();
+ }
+
+ int fd = handle->data[0];
+ if (fd < 0) {
+ ALOGE("invalid FD: %d\n", handle->data[0]);
+ return Void();
+ }
+
+ DumpFileToFd(fd, "INTERRUPTS", "/proc/interrupts");
+ DumpFileToFd(fd, "RPM Stats", "/d/rpm_stats");
+ DumpFileToFd(fd, "Power Management Stats", "/d/rpm_master_stats");
+ RunCommandToFd(fd, "SUBSYSTEM TOMBSTONES", {"ls", "-l", "/data/tombstones/ramdump"}, CommandOptions::AS_ROOT);
+ DumpFileToFd(fd, "BAM DMUX Log", "/d/ipc_logging/bam_dmux/log");
+ DumpFileToFd(fd, "SMD Log", "/d/ipc_logging/smd/log");
+ DumpFileToFd(fd, "SMD PKT Log", "/d/ipc_logging/smd_pkt/log");
+ DumpFileToFd(fd, "IPC Router Log", "/d/ipc_logging/ipc_router/log");
+ DumpFileToFd(fd, "Enabled Clocks", "/d/clk/enabled_clocks");
+ DumpFileToFd(fd, "wlan", "/sys/module/bcmdhd/parameters/info_string");
+ RunCommandToFd(fd, "ION HEAPS", {"/system/bin/sh", "-c", "for d in $(ls -d /d/ion/*); do for f in $(ls $d); do echo --- $d/$f; cat $d/$f; done; done"}, CommandOptions::AS_ROOT);
+ RunCommandToFd(fd, "Temperatures", {"/system/bin/sh", "-c", "for f in die_temp emmc_therm msm_therm pa_therm1 quiet_therm ; do echo -n \"$f : \" ; cat /sys/class/hwmon/hwmon1/device/$f ; done ; for f in `ls /sys/class/thermal` ; do type=`cat /sys/class/thermal/$f/type` ; temp=`cat /sys/class/thermal/$f/temp` ; echo \"$type: $temp\" ; done"}, CommandOptions::AS_ROOT);
+ DumpFileToFd(fd, "dmesg-ramoops-0", "/sys/fs/pstore/dmesg-ramoops-0");
+ DumpFileToFd(fd, "dmesg-ramoops-1", "/sys/fs/pstore/dmesg-ramoops-1");
+ DumpFileToFd(fd, "LITTLE cluster time-in-state", "/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state");
+ RunCommandToFd(fd, "LITTLE cluster cpuidle", {"/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu0/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"}, CommandOptions::AS_ROOT);
+ DumpFileToFd(fd, "big cluster time-in-state", "/sys/devices/system/cpu/cpu4/cpufreq/stats/time_in_state");
+ RunCommandToFd(fd,"big cluster cpuidle", {"/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu4/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"}, CommandOptions::AS_ROOT);
+ DumpFileToFd(fd, "Battery:", "/sys/class/power_supply/bms/uevent");
+ RunCommandToFd(fd, "Battery:", {"/system/bin/sh", "-c", "for f in 1 2 3 4 5 6 7 8; do echo $f > /sys/class/power_supply/bms/cycle_count_id; echo \"$f: `cat /sys/class/power_supply/bms/cycle_count`\"; done"}, CommandOptions::AS_ROOT);
+
+ return Void();
+}
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace dumpstate
+} // namespace hardware
+} // namespace android
diff --git a/dumpstate/DumpstateDevice.h b/dumpstate/DumpstateDevice.h
new file mode 100644
index 0000000..f8585f5
--- /dev/null
+++ b/dumpstate/DumpstateDevice.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+#ifndef ANDROID_HARDWARE_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H
+#define ANDROID_HARDWARE_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H
+
+#include <android/hardware/dumpstate/1.0/IDumpstateDevice.h>
+#include <hidl/MQDescriptor.h>
+#include <hidl/Status.h>
+
+namespace android {
+namespace hardware {
+namespace dumpstate {
+namespace V1_0 {
+namespace implementation {
+
+using ::android::hardware::dumpstate::V1_0::IDumpstateDevice;
+using ::android::hardware::hidl_array;
+using ::android::hardware::hidl_handle;
+using ::android::hardware::hidl_string;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::Return;
+using ::android::hardware::Void;
+using ::android::sp;
+
+struct DumpstateDevice : public IDumpstateDevice {
+ // Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow.
+ Return<void> dumpstateBoard(const hidl_handle& h) override;
+
+};
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace dumpstate
+} // namespace hardware
+} // namespace android
+
+#endif // ANDROID_HARDWARE_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H
diff --git a/dumpstate/NOTICE b/dumpstate/NOTICE
index 1a5b8e4..e48dd6b 100644
--- a/dumpstate/NOTICE
+++ b/dumpstate/NOTICE
@@ -1,5 +1,5 @@
- Copyright (C) 2015 The Android Open Source Project
+ Copyright (C) 2016 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.
diff --git a/dumpstate/android.hardware.dumpstate@1.0-service.angler.rc b/dumpstate/android.hardware.dumpstate@1.0-service.angler.rc
new file mode 100644
index 0000000..8fd84b2
--- /dev/null
+++ b/dumpstate/android.hardware.dumpstate@1.0-service.angler.rc
@@ -0,0 +1,4 @@
+service dumpstate-1-0 /vendor/bin/hw/android.hardware.dumpstate@1.0-service.angler
+ class hal
+ user system
+ group system
diff --git a/dumpstate/dumpstate.cpp b/dumpstate/dumpstate.cpp
deleted file mode 100644
index a0a498d..0000000
--- a/dumpstate/dumpstate.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2015 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.
- */
-
-#include <dumpstate.h>
-
-void dumpstate_board()
-{
- dump_file("INTERRUPTS", "/proc/interrupts");
- dump_file("RPM Stats", "/d/rpm_stats");
- dump_file("Power Management Stats", "/d/rpm_master_stats");
- run_command("SUBSYSTEM TOMBSTONES", 5, SU_PATH, "root", "ls", "-l", "/data/tombstones/ramdump", NULL);
- dump_file("BAM DMUX Log", "/d/ipc_logging/bam_dmux/log");
- dump_file("SMD Log", "/d/ipc_logging/smd/log");
- dump_file("SMD PKT Log", "/d/ipc_logging/smd_pkt/log");
- dump_file("IPC Router Log", "/d/ipc_logging/ipc_router/log");
- dump_file("Enabled Clocks", "/d/clk/enabled_clocks");
- dump_file("wlan", "/sys/module/bcmdhd/parameters/info_string");
- run_command("ION HEAPS", 5, SU_PATH, "root", "/system/bin/sh", "-c", "for d in $(ls -d /d/ion/*); do for f in $(ls $d); do echo --- $d/$f; cat $d/$f; done; done", NULL);
- run_command("Temperatures", 5, SU_PATH, "root", "/system/bin/sh", "-c", "for f in die_temp emmc_therm msm_therm pa_therm1 quiet_therm ; do echo -n \"$f : \" ; cat /sys/class/hwmon/hwmon1/device/$f ; done ; for f in `ls /sys/class/thermal` ; do type=`cat /sys/class/thermal/$f/type` ; temp=`cat /sys/class/thermal/$f/temp` ; echo \"$type: $temp\" ; done", NULL);
- dump_file("dmesg-ramoops-0", "/sys/fs/pstore/dmesg-ramoops-0");
- dump_file("dmesg-ramoops-1", "/sys/fs/pstore/dmesg-ramoops-1");
- dump_file("LITTLE cluster time-in-state", "/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state");
- run_command("LITTLE cluster cpuidle", 5, SU_PATH, "root", "/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu0/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done", NULL);
- dump_file("big cluster time-in-state", "/sys/devices/system/cpu/cpu4/cpufreq/stats/time_in_state");
- run_command("big cluster cpuidle", 5, SU_PATH, "root", "/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu4/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done", NULL);
- dump_file("Battery:", "/sys/class/power_supply/bms/uevent");
- run_command("Battery:", 5, SU_PATH, "root", "/system/bin/sh", "-c", "for f in 1 2 3 4 5 6 7 8; do echo $f > /sys/class/power_supply/bms/cycle_count_id; echo \"$f: `cat /sys/class/power_supply/bms/cycle_count`\"; done", NULL);
-};
diff --git a/dumpstate/service.cpp b/dumpstate/service.cpp
new file mode 100644
index 0000000..b897aed
--- /dev/null
+++ b/dumpstate/service.cpp
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+#define LOG_TAG "android.hardware.dumpstate@1.0-service.angler"
+
+#include <hidl/HidlSupport.h>
+#include <hidl/HidlTransportSupport.h>
+
+#include "DumpstateDevice.h"
+
+using ::android::hardware::configureRpcThreadpool;
+using ::android::hardware::dumpstate::V1_0::IDumpstateDevice;
+using ::android::hardware::dumpstate::V1_0::implementation::DumpstateDevice;
+using ::android::hardware::joinRpcThreadpool;
+using ::android::sp;
+
+
+int main(int /* argc */, char* /* argv */ []) {
+ sp<IDumpstateDevice> dumpstate = new DumpstateDevice;
+ configureRpcThreadpool(1, true);
+ dumpstate->registerAsService("dumpstate");
+ joinRpcThreadpool();
+}
diff --git a/fstab.angler b/fstab.angler
index de0e0b1..1b4bf5e 100644
--- a/fstab.angler
+++ b/fstab.angler
@@ -5,9 +5,9 @@
/dev/block/platform/soc.0/f9824900.sdhci/by-name/system /system ext4 ro,barrier=1,inode_readahead_blks=8 wait,verify=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadata
/dev/block/platform/soc.0/f9824900.sdhci/by-name/vendor /vendor ext4 ro,barrier=1,inode_readahead_blks=8 wait,verify=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadata
-/dev/block/platform/soc.0/f9824900.sdhci/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,discard,errors=panic,inode_readahead_blks=8 wait,check,forcefdeorfbe=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadata
+/dev/block/platform/soc.0/f9824900.sdhci/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,errors=panic,inode_readahead_blks=8 wait,check,forcefdeorfbe=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadata
/dev/block/platform/soc.0/f9824900.sdhci/by-name/cache /cache ext4 noatime,nosuid,nodev,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,errors=panic wait,check
-/dev/block/platform/soc.0/f9824900.sdhci/by-name/persist /persist ext4 nosuid,nodev,barrier=1,data=ordered,nodelalloc,nomblk_io_submit,errors=panic wait,notrim
+/dev/block/platform/soc.0/f9824900.sdhci/by-name/persist /persist ext4 noatime,nosuid,nodev,barrier=1,data=ordered,nodelalloc,nomblk_io_submit,errors=panic wait,notrim
/dev/block/platform/soc.0/f9824900.sdhci/by-name/modem /firmware vfat ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait
/dev/block/platform/soc.0/f9824900.sdhci/by-name/boot /boot emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/recovery /recovery emmc defaults defaults
diff --git a/fstab.aosp_angler b/fstab.aosp_angler
index ab57d3a..70a03ae 100644
--- a/fstab.aosp_angler
+++ b/fstab.aosp_angler
@@ -5,9 +5,9 @@
/dev/block/platform/soc.0/f9824900.sdhci/by-name/system /system ext4 ro,barrier=1,inode_readahead_blks=8 wait,verify=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadata
/dev/block/platform/soc.0/f9824900.sdhci/by-name/vendor /vendor ext4 ro,barrier=1,inode_readahead_blks=8 wait
-/dev/block/platform/soc.0/f9824900.sdhci/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,discard,errors=panic,inode_readahead_blks=8 wait,check,forcefdeorfbe=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadata
+/dev/block/platform/soc.0/f9824900.sdhci/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,errors=panic,inode_readahead_blks=8 wait,check,forcefdeorfbe=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadata
/dev/block/platform/soc.0/f9824900.sdhci/by-name/cache /cache ext4 noatime,nosuid,nodev,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,errors=panic wait,check
-/dev/block/platform/soc.0/f9824900.sdhci/by-name/persist /persist ext4 nosuid,nodev,barrier=1,data=ordered,nodelalloc,nomblk_io_submit,errors=panic wait,notrim
+/dev/block/platform/soc.0/f9824900.sdhci/by-name/persist /persist ext4 noatime,nosuid,nodev,barrier=1,data=ordered,nodelalloc,nomblk_io_submit,errors=panic wait,notrim
/dev/block/platform/soc.0/f9824900.sdhci/by-name/modem /firmware vfat ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait
/dev/block/platform/soc.0/f9824900.sdhci/by-name/boot /boot emmc defaults defaults
/dev/block/platform/soc.0/f9824900.sdhci/by-name/recovery /recovery emmc defaults defaults
diff --git a/gps.conf b/gps.conf
index fb22f47..56e393b 100644
--- a/gps.conf
+++ b/gps.conf
@@ -1,15 +1,14 @@
-#Uncommenting these urls would only enable
-#the power up auto injection and force injection(test case).
-#XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra3grc.bin
-#XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra3grc.bin
-#XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra3grc.bin
+#URLs from which to download XTRA data
+XTRA_SERVER_1=https://xtrapath1.izatcloud.net/xtra3grc.bin
+XTRA_SERVER_2=https://xtrapath2.izatcloud.net/xtra3grc.bin
+XTRA_SERVER_3=https://xtrapath3.izatcloud.net/xtra3grc.bin
#Version check for XTRA
#DISABLE = 0
#AUTO = 1
#XTRA2 = 2
#XTRA3 = 3
-XTRA_VERSION_CHECK=0
+XTRA_VERSION_CHECK=1
# Error Estimate
# _SET = 1
diff --git a/init.angler.qseecomd.sh b/init.angler.qseecomd.sh
index f126a77..25a477d 100644
--- a/init.angler.qseecomd.sh
+++ b/init.angler.qseecomd.sh
@@ -1,5 +1,6 @@
#!/system/bin/sh
+registered="`getprop sys.listeners.registered`"
while [ "$registered" != "true" ]
do
sleep 0.1
diff --git a/init.angler.rc b/init.angler.rc
index c46e48a..00f7de7 100755
--- a/init.angler.rc
+++ b/init.angler.rc
@@ -60,6 +60,9 @@
# Update dm-verity state and set partition.*.verified properties
verity_update_state
+ # Busy loop to wait for devices booted by devstart_sh just in case device not ready
+ exec - root root system -- /system/bin/init.qcom.devwait.sh
+
on boot
# execute script to set initial CPU settings
# don't run as a service to avoid race conditions
@@ -140,9 +143,6 @@
chown root system /sys/class/kgsl/kgsl-3d0/dispatch/inflight_low_latency
chmod 0660 /sys/class/kgsl/kgsl-3d0/dispatch/inflight_low_latency
- write /sys/block/mmcblk0/queue/rq_affinity 0
- write /sys/block/mmcblk0/queue/scheduler noop
-
# Wifi firmware reload path
chown wifi wifi /sys/module/bcmdhd/parameters/firmware_path
@@ -156,10 +156,21 @@
symlink /dev/block/platform/soc.0/f9824900.sdhci /dev/block/bootdevice
start qseecomd
+ # Busy loop to wait for qseecomd started
exec - root root system -- /system/bin/init.angler.qseecomd.sh
+ # Start devices by sysfs trigger
+ start devstart_sh
on post-fs-data
- write /sys/kernel/boot_adsp/boot 1
+ # boot time fs tune
+ write /sys/block/mmcblk0/queue/iostats 0
+ write /sys/block/mmcblk0/queue/scheduler cfq
+ write /sys/block/mmcblk0/queue/iosched/slice_idle 0
+ write /sys/block/mmcblk0/queue/read_ahead_kb 2048
+ write /sys/block/mmcblk0/queue/nr_requests 256
+ write /sys/block/dm-0/queue/read_ahead_kb 2048
+ write /sys/block/dm-1/queue/read_ahead_kb 2048
+ write /sys/block/dm-2/queue/read_ahead_kb 2048
# Ecc_Handler qcril.db
mkdir /data/misc/radio 0770 system radio
@@ -223,6 +234,14 @@
chmod 0440 /persist/data/st_offset
chmod 0440 /persist/data/st_xtalk
+ # File flags for prebuilt ril db file
+ write /data/misc/radio/prebuilt_db_support 1
+ chown radio radio /data/misc/radio/prebuilt_db_support
+ chmod 0400 /data/misc/radio/prebuilt_db_support
+ write /data/misc/radio/db_check_done 0
+ chown radio radio /data/misc/radio/db_check_done
+ chmod 0660 /data/misc/radio/db_check_done
+
chown system system /sys/class/kgsl/kgsl-3d0/devfreq/max_freq
chmod 0660 /sys/class/kgsl/kgsl-3d0/devfreq/max_freq
chown system system /sys/class/kgsl/kgsl-3d0/devfreq/min_freq
@@ -257,6 +276,15 @@
on property:sys.boot_completed=1
#allow CPUs to go in deeper idle state than C0
write /sys/module/lpm_levels/parameters/sleep_disabled 0
+ #end boot time fs tune
+ write /sys/block/mmcblk0/queue/scheduler noop
+ write /sys/block/mmcblk0/queue/rq_affinity 0
+ write /sys/block/mmcblk0/queue/read_ahead_kb 128
+ write /sys/block/mmcblk0/queue/nr_requests 128
+ write /sys/block/dm-0/queue/read_ahead_kb 128
+ write /sys/block/dm-1/queue/read_ahead_kb 128
+ write /sys/block/dm-2/queue/read_ahead_kb 128
+ write /sys/block/mmcblk0/queue/iostats 1
# Search the laser device under /dev/input, then create symlink
service InputEventFind /vendor/bin/InputEventFind
@@ -283,10 +311,10 @@
on property:persist.sys.ssr.enable_ramdumps=0
write /sys/module/subsystem_restart/parameters/enable_ramdumps 0
-service charger /sbin/healthd -c
+service charger /charger
class charger
group log
- seclabel u:r:healthd:s0
+ seclabel u:r:charger:s0
writepid /dev/cpuset/system-background/tasks
service per_mgr /vendor/bin/pm-service
@@ -378,12 +406,6 @@
group camera system inet input graphics
writepid /dev/cpuset/camera-daemon/tasks
-service fingerprintd /system/bin/fingerprintd
- class late_start
- user system
- group input
- writepid /dev/cpuset/system-background/tasks
-
service wpa_supplicant /system/bin/wpa_supplicant \
-iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
-I/system/etc/wifi/p2p_supplicant_overlay.conf \
@@ -451,6 +473,12 @@
group radio system
oneshot
+service radio-sh /system/bin/init.radio.sh
+ class late_start
+ user radio
+ group root radio
+ oneshot
+
service oem_qmi_server /vendor/bin/oem_qmi_server
class main
user root
@@ -486,3 +514,9 @@
on property:ro.boot.mode=hw-factory
start diag_test_server
+service devstart_sh /system/bin/init.qcom.devstart.sh
+ class main
+ user root
+ group root system
+ disabled
+ oneshot
diff --git a/init.angler.usb.rc b/init.angler.usb.rc
index f2edba9..b4193af 100644
--- a/init.angler.usb.rc
+++ b/init.angler.usb.rc
@@ -23,10 +23,15 @@
write /sys/class/android_usb/android0/iProduct ${ro.product.model}
on post-fs
- mkdir /dev/usb-ffs 0770 shell shell
+ mkdir /dev/usb-ffs 0775 shell shell
mkdir /dev/usb-ffs/adb 0770 shell shell
mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
- write /sys/class/android_usb/android0/f_ffs/aliases adb
+ mkdir /dev/usb-ffs/mtp 0770 mtp mtp
+ mount functionfs mtp /dev/usb-ffs/mtp rmode=0770,fmode=0660,uid=1024,gid=1024
+ write /sys/class/android_usb/android0/f_ffs/aliases adb,mtp
+ setprop sys.usb.ffs.max_write 262144
+ setprop sys.usb.ffs.max_read 262144
+ setprop sys.usb.mtp.device_type 3
on charger
setprop persist.sys.usb.config charging
@@ -90,7 +95,7 @@
write /sys/class/android_usb/android0/bDeviceClass 0
write /sys/class/android_usb/android0/bDeviceSubClass 0
write /sys/class/android_usb/android0/bDeviceProtocol 0
- write /sys/class/android_usb/android0/functions ptp
+ write /sys/class/android_usb/android0/functions mtp
write /sys/class/android_usb/android0/enable 1
setprop sys.usb.state ${sys.usb.config}
@@ -101,7 +106,7 @@
write /sys/class/android_usb/android0/bDeviceClass 0
write /sys/class/android_usb/android0/bDeviceSubClass 0
write /sys/class/android_usb/android0/bDeviceProtocol 0
- write /sys/class/android_usb/android0/functions ptp,adb
+ write /sys/class/android_usb/android0/functions mtp,adb
write /sys/class/android_usb/android0/enable 1
start adbd
setprop sys.usb.state ${sys.usb.config}
diff --git a/init.qcom.devstart.sh b/init.qcom.devstart.sh
new file mode 100755
index 0000000..8e8cff5
--- /dev/null
+++ b/init.qcom.devstart.sh
@@ -0,0 +1,4 @@
+#!/system/bin/sh
+
+echo 1 > /sys/kernel/boot_adsp/boot
+setprop sys.qcom.devup 1
diff --git a/init.qcom.devwait.sh b/init.qcom.devwait.sh
new file mode 100755
index 0000000..aeee1d4
--- /dev/null
+++ b/init.qcom.devwait.sh
@@ -0,0 +1,8 @@
+#!/system/bin/sh
+
+up="`getprop sys.qcom.devup`"
+while [ "$up" != "1" ]
+do
+ sleep 0.1
+ up="`getprop sys.qcom.devup`"
+done
diff --git a/init.radio.sh b/init.radio.sh
new file mode 100755
index 0000000..8d687a1
--- /dev/null
+++ b/init.radio.sh
@@ -0,0 +1,10 @@
+#!/system/bin/sh
+
+#
+# Copy qcril.db if needed for RIL
+#
+if [ -f /vendor/qcril.db -a ! -f /data/misc/radio/qcril.db ]; then
+ cp /vendor/qcril.db /data/misc/radio/qcril.db
+ chown -h radio.radio /data/misc/radio/qcril.db
+fi
+echo 1 > /data/misc/radio/db_check_done
diff --git a/init.recovery.angler.rc b/init.recovery.angler.rc
new file mode 100644
index 0000000..74ba632
--- /dev/null
+++ b/init.recovery.angler.rc
@@ -0,0 +1,7 @@
+on boot
+ write /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 960000
+ write /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq 960000
+ write /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq 960000
+ write /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq 960000
+ write /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq 960000
+ write /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq 960000
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-bn-rBD/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-bn/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-bn-rBD/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-bn/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-et-rEE/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-et/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-et-rEE/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-et/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-eu-rES/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-eu/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-eu-rES/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-eu/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-gl-rES/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-gl/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-gl-rES/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-gl/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-gu-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-gu/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-gu-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-gu/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-hy-rAM/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-hy/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-hy-rAM/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-hy/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-is-rIS/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-is/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-is-rIS/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-is/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ka-rGE/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ka/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ka-rGE/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ka/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-kk-rKZ/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-kk/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-kk-rKZ/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-kk/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-km-rKH/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-km/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-km-rKH/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-km/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-kn-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-kn/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-kn-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-kn/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ky-rKG/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ky/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ky-rKG/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ky/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-lo-rLA/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-lo/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-lo-rLA/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-lo/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mk-rMK/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mk/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mk-rMK/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mk/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ml-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ml/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ml-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ml/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mn-rMN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mn/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mn-rMN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mn/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mr-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mr/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mr-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mr/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ms-rMY/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ms/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ms-rMY/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ms/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-my-rMM/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-my/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-my-rMM/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-my/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ne-rNP/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ne/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ne-rNP/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ne/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-pa-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-pa/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-pa-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-pa/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-si-rLK/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-si/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-si-rLK/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-si/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-sq-rAL/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-sq/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-sq-rAL/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-sq/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ta-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ta/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ta-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ta/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-te-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-te/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-te-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-te/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ur-rPK/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ur/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ur-rPK/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ur/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-uz-rUZ/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-uz/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-uz-rUZ/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-uz/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-bn-rBD/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-bn/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-bn-rBD/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-bn/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-et-rEE/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-et/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-et-rEE/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-et/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-eu-rES/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-eu/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-eu-rES/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-eu/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-gl-rES/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-gl/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-gl-rES/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-gl/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-gu-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-gu/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-gu-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-gu/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-hy-rAM/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-hy/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-hy-rAM/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-hy/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-is-rIS/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-is/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-is-rIS/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-is/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ka-rGE/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ka/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ka-rGE/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ka/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-kk-rKZ/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-kk/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-kk-rKZ/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-kk/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-km-rKH/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-km/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-km-rKH/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-km/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-kn-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-kn/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-kn-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-kn/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ky-rKG/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ky/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ky-rKG/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ky/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-lo-rLA/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-lo/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-lo-rLA/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-lo/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mk-rMK/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mk/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mk-rMK/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mk/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ml-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ml/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ml-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ml/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mn-rMN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mn/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mn-rMN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mn/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mr-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mr/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mr-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mr/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ms-rMY/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ms/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ms-rMY/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ms/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-my-rMM/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-my/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-my-rMM/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-my/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ne-rNP/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ne/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ne-rNP/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ne/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-pa-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-pa/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-pa-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-pa/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-si-rLK/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-si/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-si-rLK/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-si/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-sq-rAL/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-sq/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-sq-rAL/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-sq/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ta-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ta/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ta-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ta/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-te-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-te/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-te-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-te/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ur-rPK/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ur/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ur-rPK/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ur/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-uz-rUZ/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-uz/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-uz-rUZ/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-uz/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
index 1a3c4cb..e78666f 100755
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -277,6 +277,9 @@
and the screen off animation has been performed. -->
<bool name="config_dozeAfterScreenOff">true</bool>
+ <!-- Doze: should the TYPE_PICK_UP_GESTURE sensor be used as a pulse signal. -->
+ <bool name="config_dozePulsePickup">true</bool>
+
<!-- Specifies whether to decouple the interactive state of the device from the display on/off state. -->
<bool name="config_powerDecoupleInteractiveModeFromDisplay">true</bool>
@@ -388,9 +391,16 @@
<!-- Default list of files pinned by the Pinner Service -->
<string-array translatable="false" name="config_defaultPinnerServiceFiles">
<item>"/system/framework/arm64/boot-framework.oat"</item>
+ <item>"/system/framework/arm64/boot-framework.vdex"</item>
<item>"/system/framework/oat/arm64/services.odex"</item>
+ <item>"/system/framework/oat/arm64/services.vdex"</item>
<item>"/system/framework/arm64/boot.oat"</item>
+ <item>"/system/framework/arm64/boot.vdex"</item>
<item>"/system/framework/arm64/boot-core-libart.oat"</item>
+ <item>"/system/framework/arm64/boot-core-libart.vdex"</item>
</string-array>
+ <!-- Enable system navigation keys. -->
+ <bool name="config_supportSystemNavigationKeys">true</bool>
+
</resources>
diff --git a/overlay/frameworks/base/packages/SystemUI/res/values/config.xml b/overlay/frameworks/base/packages/SystemUI/res/values/config.xml
index 9c8433a..cf300bd 100644
--- a/overlay/frameworks/base/packages/SystemUI/res/values/config.xml
+++ b/overlay/frameworks/base/packages/SystemUI/res/values/config.xml
@@ -34,9 +34,6 @@
<!-- Doze: does this device support STATE_DOZE and STATE_DOZE_SUSPEND? -->
<bool name="doze_display_state_supported">true</bool>
- <!-- Doze: should the pickup sensor be used as a pulse signal? -->
- <bool name="doze_pulse_on_pick_up">true</bool>
-
<!-- Doze: can we assume the pickup sensor includes a proximity check? -->
<bool name="doze_pickup_performs_proximity_check">true</bool>
</resources>
diff --git a/power/power.c b/power/power.c
index cc1aba2..357ee2a 100644
--- a/power/power.c
+++ b/power/power.c
@@ -101,10 +101,6 @@
int display_boost;
static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
-static struct hw_module_methods_t power_module_methods = {
- .open = NULL,
-};
-
static void power_init(struct power_module *module)
{
ALOGI("QCOM power HAL initing.");
@@ -750,6 +746,44 @@
return 0;
}
+static int power_open(const hw_module_t* module, const char* name,
+ hw_device_t** device)
+{
+ ALOGD("%s: enter; name=%s", __FUNCTION__, name);
+ int retval = 0; /* 0 is ok; -1 is error */
+
+ if (strcmp(name, POWER_HARDWARE_MODULE_ID) == 0) {
+ power_module_t *dev = (power_module_t *)calloc(1,
+ sizeof(power_module_t));
+
+ if (dev) {
+ /* Common hw_device_t fields */
+ dev->common.tag = HARDWARE_DEVICE_TAG;
+ dev->common.module_api_version = POWER_MODULE_API_VERSION_0_5;
+ dev->common.hal_api_version = HARDWARE_HAL_API_VERSION;
+
+ dev->init = power_init;
+ dev->powerHint = power_hint;
+ dev->setInteractive = set_interactive;
+ dev->get_number_of_platform_modes = get_number_of_platform_modes;
+ dev->get_platform_low_power_stats = get_platform_low_power_stats;
+ dev->get_voter_list = get_voter_list;
+
+ *device = (hw_device_t*)dev;
+ } else
+ retval = -ENOMEM;
+ } else {
+ retval = -EINVAL;
+ }
+
+ ALOGD("%s: exit %d", __FUNCTION__, retval);
+ return retval;
+}
+
+static struct hw_module_methods_t power_module_methods = {
+ .open = power_open,
+};
+
struct power_module HAL_MODULE_INFO_SYM = {
.common = {
.tag = HARDWARE_MODULE_TAG,
diff --git a/self-extractors/huawei/staging/BoardConfigPartial.mk b/self-extractors/huawei/staging/BoardConfigPartial.mk
index cbb9830..4e60d69 100644
--- a/self-extractors/huawei/staging/BoardConfigPartial.mk
+++ b/self-extractors/huawei/staging/BoardConfigPartial.mk
@@ -11,3 +11,5 @@
# 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.
+
+BOARD_PREBUILT_VENDORIMAGE := vendor/huawei/angler/proprietary/vendor.img
diff --git a/self-extractors/huawei/staging/device-partial.mk b/self-extractors/huawei/staging/device-partial.mk
index 817ef48..2987710 100644
--- a/self-extractors/huawei/staging/device-partial.mk
+++ b/self-extractors/huawei/staging/device-partial.mk
@@ -11,8 +11,3 @@
# 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.
-
-# Vendor blob(s) necessary for Angler hardware
-PRODUCT_COPY_FILES := \
- vendor/huawei/angler/proprietary/vendor.img:vendor.img:huawei \
-
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
index e563795..2edc942 100644
--- a/sepolicy/file_contexts
+++ b/sepolicy/file_contexts
@@ -79,6 +79,7 @@
/persist/sensors(/.*)? u:object_r:persist_sensors_file:s0
/sys/bus/msm_subsys(/.*)? u:object_r:sysfs_msm_subsys:s0
+/sys/kernel/boot_adsp/boot u:object_r:sysfs_msm_subsys:s0
/sys/devices/bt_bcm4358\.[0-9]+/rfkill/rfkill0/state u:object_r:sysfs_bluetooth_writable:s0
/sys/devices/soc\.0/\w+\.qcom,\w+/subsys[0-9]/restart_level u:object_r:sysfs_msm_subsys_toggle:s0
/sys/devices/soc\.0/fd900000\.qcom,mdss_mdp/qcom,mdss_fb_primary\.[0-9]+/leds(/.*)? u:object_r:sysfs_led:s0
@@ -120,13 +121,17 @@
# System files
/vendor/bin/ATFWD-daemon u:object_r:atfwd_exec:s0
/vendor/bin/cnd u:object_r:cnd_exec:s0
+/vendor/bin/hw/android\.hardware\.dumpstate@1\.0-service.angler u:object_r:hal_dumpstate_default_exec:s0
/vendor/bin/imscmservice u:object_r:ims_exec:s0
/vendor/bin/imsdatadaemon u:object_r:ims_exec:s0
/vendor/bin/imsqmidaemon u:object_r:ims_exec:s0
/vendor/bin/ims_rtp_daemon u:object_r:ims_exec:s0
/system/bin/init\.angler\.power\.sh u:object_r:init-power-sh_exec:s0
/system/bin/init\.angler\.qseecomd\.sh u:object_r:init-angler-qseecomd-sh_exec:s0
+/system/bin/init\.qcom\.devstart\.sh u:object_r:init-qcom-devstart-sh_exec:s0
+/system/bin/init\.qcom\.devwait\.sh u:object_r:init-qcom-devwait-sh_exec:s0
/system/bin/init\.mcfg\.sh u:object_r:init-mcfg-sh_exec:s0
+/system/bin/init\.radio\.sh u:object_r:init-radio-sh_exec:s0
/vendor/bin/irsc_util u:object_r:irsc_util_exec:s0
/vendor/bin/loc_launcher u:object_r:location_exec:s0
/system/bin/location-mq u:object_r:location_exec:s0
@@ -174,3 +179,5 @@
# Sysfs files used by nanoapp_cmd
/sys/devices/virtual/nanohub/nanohub(/.*)? u:object_r:sysfs_nanoapp_cmd:s0
+# NFC hal
+/system/bin/hw/nfc_hal_pn54x u:object_r:nfc_hal_pn54x_exec:s0
diff --git a/sepolicy/fingerprintd.te b/sepolicy/fingerprintd.te
index e770c8f..f5160aa 100644
--- a/sepolicy/fingerprintd.te
+++ b/sepolicy/fingerprintd.te
@@ -7,3 +7,6 @@
allow fingerprintd sysfs_fingerprintd:file rw_file_perms;
allow fingerprintd sysfs_fingerprintd:dir search;
allow fingerprintd sysfs_fingerprintd:dir r_dir_perms;
+# open/write/ioctl /dev/uinput
+allow fingerprintd uhid_device:chr_file rw_file_perms;
+allow fingerprintd fingerprintd_data_file:sock_file create_file_perms;
diff --git a/sepolicy/hal_dumpstate_impl.te b/sepolicy/hal_dumpstate_impl.te
new file mode 100644
index 0000000..ee2e3ab
--- /dev/null
+++ b/sepolicy/hal_dumpstate_impl.te
@@ -0,0 +1,10 @@
+type hal_dumpstate_impl, domain;
+hal_impl_domain(hal_dumpstate_impl, hal_dumpstate)
+
+type hal_dumpstate_impl_exec, exec_type, file_type;
+init_daemon_domain(hal_dumpstate_impl)
+
+# Access to files for dumping
+allow hal_dumpstate_impl proc_interrupts:file { open read };
+allow hal_dumpstate_impl pstorefs:dir search;
+allow hal_dumpstate_impl sysfs:file { open read };
diff --git a/sepolicy/hal_fingerprint.te b/sepolicy/hal_fingerprint.te
new file mode 100644
index 0000000..fe6409e
--- /dev/null
+++ b/sepolicy/hal_fingerprint.te
@@ -0,0 +1,18 @@
+# Access to /dev/tee
+allow hal_fingerprint tee_device:chr_file rw_file_perms;
+
+# Read /dev/input
+allow hal_fingerprint input_device:dir r_dir_perms;
+allow hal_fingerprint input_device:chr_file r_file_perms;
+
+# for SW20.6 navigation
+allow hal_fingerprint uhid_device:chr_file rw_file_perms;
+allow hal_fingerprint fingerprintd_data_file:sock_file create_file_perms;
+
+# write /sys/bus/spi/devices/spi12.0/spi_prepare
+allow hal_fingerprint sysfs_fingerprintd:file rw_file_perms;
+allow hal_fingerprint sysfs_fingerprintd:dir search;
+allow hal_fingerprint sysfs_fingerprintd:dir r_dir_perms;
+
+# read sysfs (required for fpc driver to read SOC files)
+allow hal_fingerprint sysfs:dir { read open };
diff --git a/sepolicy/hal_gnss.te b/sepolicy/hal_gnss.te
new file mode 100644
index 0000000..afb8f19
--- /dev/null
+++ b/sepolicy/hal_gnss.te
@@ -0,0 +1,10 @@
+#access to /sys/devices/soc0/hw_platform and /sys/devices/soc0/soc_id
+allow hal_gnss sysfs:file { read open getattr };
+
+allow hal_gnss self:socket { create read write ioctl } ;
+allowxperm hal_gnss self:socket ioctl { IPC_ROUTER_IOCTL_BIND_CONTROL_PORT
+ IPC_ROUTER_IOCTL_LOOKUP_SERVER } ;
+allow hal_gnss self:netlink_socket { create bind read };
+
+allow hal_gnss sysfs_msm_subsys:dir { search read open };
+allow hal_gnss sysfs_msm_subsys:lnk_file read;
diff --git a/sepolicy/init-devstart-sh.te b/sepolicy/init-devstart-sh.te
new file mode 100644
index 0000000..24004d2
--- /dev/null
+++ b/sepolicy/init-devstart-sh.te
@@ -0,0 +1,15 @@
+type init-qcom-devstart-sh, domain;
+type init-qcom-devstart-sh_exec, exec_type, file_type;
+
+init_daemon_domain(init-qcom-devstart-sh)
+
+allow init-qcom-devstart-sh shell_exec:file rx_file_perms;
+
+# execute toybox/toolbox
+allow init-qcom-devstart-sh toolbox_exec:file rx_file_perms;
+
+# Set the sys.qcom.devup property
+set_prop(init-qcom-devstart-sh, system_prop)
+
+# Set boot_adsp and boot_slpi to 1
+allow init-qcom-devstart-sh sysfs_msm_subsys:file w_file_perms;
diff --git a/sepolicy/init-devwait-sh.te b/sepolicy/init-devwait-sh.te
new file mode 100644
index 0000000..1529536
--- /dev/null
+++ b/sepolicy/init-devwait-sh.te
@@ -0,0 +1,9 @@
+type init-qcom-devwait-sh, domain;
+type init-qcom-devwait-sh_exec, exec_type, file_type;
+
+init_daemon_domain(init-qcom-devwait-sh)
+
+allow init-qcom-devwait-sh shell_exec:file rx_file_perms;
+
+# execute toybox/toolbox
+allow init-qcom-devwait-sh toolbox_exec:file rx_file_perms;
diff --git a/sepolicy/init-radio-sh.te b/sepolicy/init-radio-sh.te
new file mode 100644
index 0000000..daa70c4
--- /dev/null
+++ b/sepolicy/init-radio-sh.te
@@ -0,0 +1,12 @@
+# /system/bin/init.radio.sh
+type init-radio-sh, domain;
+type init-radio-sh_exec, exec_type, file_type;
+
+init_daemon_domain(init-radio-sh)
+
+allow init-radio-sh shell_exec:file rx_file_perms;
+
+allow init-radio-sh toolbox_exec:file rx_file_perms;
+
+allow init-radio-sh radio_data_file:dir rw_dir_perms;
+allow init-radio-sh radio_data_file:file create_file_perms;
diff --git a/sepolicy/nfc.te b/sepolicy/nfc.te
new file mode 100644
index 0000000..90488a1
--- /dev/null
+++ b/sepolicy/nfc.te
@@ -0,0 +1,2 @@
+# allow NFC process to call into the NFC HAL
+binder_call(nfc, nfc_hal_pn54x)
diff --git a/sepolicy/nfc_hal_pn54x.te b/sepolicy/nfc_hal_pn54x.te
new file mode 100644
index 0000000..2830a71
--- /dev/null
+++ b/sepolicy/nfc_hal_pn54x.te
@@ -0,0 +1,30 @@
+# nfc subsystem
+type nfc_hal_pn54x, domain;
+type nfc_hal_pn54x_exec, exec_type, file_type;
+
+# may be started by init
+init_daemon_domain(nfc_hal_pn54x)
+
+allow nfc_hal_pn54x nfc_hal_pn54x_exec:file rx_file_perms;
+
+# hwbinder access
+hwbinder_use(nfc_hal_pn54x)
+
+# call into NFC process (callbacks)
+binder_call(nfc_hal_pn54x, nfc)
+
+# Set NFC properties
+set_prop(nfc_hal_pn54x, nfc_prop)
+
+# NFC device access.
+allow nfc_hal_pn54x nfc_device:chr_file rw_file_perms;
+
+# Data file accesses.
+allow nfc_hal_pn54x nfc_data_file:dir create_dir_perms;
+allow nfc_hal_pn54x nfc_data_file:notdevfile_class_set create_file_perms;
+
+allow nfc_hal_pn54x sysfs_nfc_power_writable:file rw_file_perms;
+allow nfc_hal_pn54x sysfs:file write;
+
+# TODO: added to match above sysfs rule. Remove me?
+allow nfc_hal_pn54x sysfs_usb:file write;