From 9bfab68689792254a59bc2294b3cf08aa54cd4ee Mon Sep 17 00:00:00 2001 From: Patrick Tjin Date: Fri, 6 May 2016 08:57:56 -0700 Subject: [PATCH 01/99] marlin: change the display density Change the display density to 560dpi for marlin and 420dpi for sailfish. Also move the override closer to where we define the AAPT_CONFIGs so it's easier to see. Bug: 28521917 Change-Id: Ic7f754479cd75c86a19593aedcb4f9c2317e36cc --- device-marlin.mk | 4 ++++ device-sailfish.mk | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/device-marlin.mk b/device-marlin.mk index 80a32f0f..4e1d6f1b 100755 --- a/device-marlin.mk +++ b/device-marlin.mk @@ -24,6 +24,10 @@ PRODUCT_AAPT_PREBUILT_DPI := xxxhdpi xxhdpi xhdpi hdpi -include device/google/marlin/device-common.mk +# display +PRODUCT_PROPERTY_OVERRIDES += \ + ro.sf.lcd_density=560 + PRODUCT_COPY_FILES += \ device/google/marlin/init.common.rc:root/init.marlin.rc \ device/google/marlin/init.common.usb.rc:root/init.marlin.usb.rc \ diff --git a/device-sailfish.mk b/device-sailfish.mk index 6f37da4b..ccf09966 100755 --- a/device-sailfish.mk +++ b/device-sailfish.mk @@ -24,6 +24,10 @@ PRODUCT_AAPT_PREBUILT_DPI := xxhdpi xhdpi hdpi -include device/google/marlin/device-common.mk +# display +PRODUCT_PROPERTY_OVERRIDES += \ + ro.sf.lcd_density=420 + PRODUCT_COPY_FILES += \ device/google/marlin/init.common.rc:root/init.sailfish.rc \ device/google/marlin/init.common.usb.rc:root/init.sailfish.usb.rc \ From ae8a6bc5193439b233595a0c5815f81b5e02f1f0 Mon Sep 17 00:00:00 2001 From: jason_sung Date: Wed, 11 May 2016 20:24:30 +0800 Subject: [PATCH 02/99] Update marlin/sailfish power_profile.xml Bug: 28457329 Change-Id: I4916a4a47955867f3a002809978fe4581e81d59a Signed-off-by: jason_sung --- .../base/core/res/res/xml/power_profile.xml | 187 +++++++++++------- .../base/core/res/res/xml/power_profile.xml | 187 +++++++++++------- 2 files changed, 228 insertions(+), 146 deletions(-) mode change 100755 => 100644 marlin/overlay/frameworks/base/core/res/res/xml/power_profile.xml mode change 100755 => 100644 sailfish/overlay/frameworks/base/core/res/res/xml/power_profile.xml diff --git a/marlin/overlay/frameworks/base/core/res/res/xml/power_profile.xml b/marlin/overlay/frameworks/base/core/res/res/xml/power_profile.xml old mode 100755 new mode 100644 index 00710bcc..bd93db9e --- a/marlin/overlay/frameworks/base/core/res/res/xml/power_profile.xml +++ b/marlin/overlay/frameworks/base/core/res/res/xml/power_profile.xml @@ -19,101 +19,142 @@ 0 - 79.5 - 205.0 - 25.2 - 1.7 - 2.7 - 82.0 - 60.6 - 26.5 - 242.0 - 35.33 - 183.1 + 35.37 + 197.86 + 89.69 + 8.46 + 2 + 160 + 110 + 29 + 63 + 300 - 77.0 + 82.2 - 1.41 - 1.41 + 2.2 + 1.6 - 384000 - 460800 - 600000 - 672000 - 768000 - 864000 - 960000 - 1248000 - 1344000 - 1478400 - 1555200 + 307200 + 384000 + 460800 + 537600 + 614400 + 691200 + 768000 + 844800 + 902600 + 979200 + 1056000 + 1132800 + 1209600 + 1286400 + 1363200 + 1440000 + 1516800 + 1593600 + 2188800 - 384000 - 480000 - 633600 - 768000 - 864000 - 960000 - 1248000 - 1344000 - 1440000 - 1536000 - 1632000 - 1728000 - 1824000 - 1958400 + 307200 + 384000 + 460800 + 537600 + 614400 + 691200 + 748800 + 825600 + 902400 + 979200 + 1056000 + 1132800 + 1209600 + 1286400 + 1363200 + 1440000 + 1516800 + 1593600 + 1670400 + 1747200 + 1824000 + 1900800 + 1977600 + 2054400 + 2150400 + 2246400 + 2342400 - 5.58 - 4.92 + 6.07 + 10 - 24.14 - 27.2 - 32.3 - 36.94 - 41.57 - 49.87 - 57.84 - 79.8 - 88.81 - 102.4 - 110.9 + 17.94 + 21.26 + 23.85 + 26.6 + 31.54 + 33.57 + 37.83 + 42.42 + 46.11 + 50.93 + 57.38 + 63.69 + 70.3 + 78.37 + 86.02 + 95.89 + 107.1 + 117.08 + 259.63 - 86.83 - 103.24 - 129.38 - 155.42 - 177.99 - 195.55 - 265.09 - 292.77 - 322.13 - 348.19 - 370.18 - 405.51 - 437.84 - 481.07 + 19 + 22.3 + 24.51 + 27.5 + 30.5 + 35 + 37.5 + 42.89 + 48.82 + 56.78 + 60.6 + 67.98 + 77.22 + 82.71 + 89.8 + 99.7 + 110.45 + 124.21 + 135.5 + 149.88 + 165.3 + 184.46 + 199.7 + 210.8 + 234.96 + 263.13 + 302.37 - 4 - 4 + 2 + 2 3450 - .0003 - .003 - .03 - .3 - 3 + 0.0002 + 0.002 + 0.02 + 0.2 + 2 diff --git a/sailfish/overlay/frameworks/base/core/res/res/xml/power_profile.xml b/sailfish/overlay/frameworks/base/core/res/res/xml/power_profile.xml old mode 100755 new mode 100644 index 754c0725..7fc71881 --- a/sailfish/overlay/frameworks/base/core/res/res/xml/power_profile.xml +++ b/sailfish/overlay/frameworks/base/core/res/res/xml/power_profile.xml @@ -19,101 +19,142 @@ 0 - 79.5 - 205.0 - 25.2 - 1.7 - 2.7 - 82.0 - 60.6 - 26.5 - 242.0 - 35.33 - 183.1 + 29.37 + 168.73 + 89.69 + 8.46 + 2 + 160 + 110 + 29 + 63 + 300 - 77.0 + 82.2 - 1.41 - 1.41 + 2.2 + 1.6 - 384000 - 460800 - 600000 - 672000 - 768000 - 864000 - 960000 - 1248000 - 1344000 - 1478400 - 1555200 + 307200 + 384000 + 460800 + 537600 + 614400 + 691200 + 768000 + 844800 + 902600 + 979200 + 1056000 + 1132800 + 1209600 + 1286400 + 1363200 + 1440000 + 1516800 + 1593600 + 2188800 - 384000 - 480000 - 633600 - 768000 - 864000 - 960000 - 1248000 - 1344000 - 1440000 - 1536000 - 1632000 - 1728000 - 1824000 - 1958400 + 307200 + 384000 + 460800 + 537600 + 614400 + 691200 + 748800 + 825600 + 902400 + 979200 + 1056000 + 1132800 + 1209600 + 1286400 + 1363200 + 1440000 + 1516800 + 1593600 + 1670400 + 1747200 + 1824000 + 1900800 + 1977600 + 2054400 + 2150400 + 2246400 + 2342400 - 5.58 - 4.92 + 6.07 + 10 - 24.14 - 27.2 - 32.3 - 36.94 - 41.57 - 49.87 - 57.84 - 79.8 - 88.81 - 102.4 - 110.9 + 17.94 + 21.26 + 23.85 + 26.6 + 31.54 + 33.57 + 37.83 + 42.42 + 46.11 + 50.93 + 57.38 + 63.69 + 70.3 + 78.37 + 86.02 + 95.89 + 107.1 + 117.08 + 259.63 - 86.83 - 103.24 - 129.38 - 155.42 - 177.99 - 195.55 - 265.09 - 292.77 - 322.13 - 348.19 - 370.18 - 405.51 - 437.84 - 481.07 + 19 + 22.3 + 24.51 + 27.5 + 30.5 + 35 + 37.5 + 42.89 + 48.82 + 56.78 + 60.6 + 67.98 + 77.22 + 82.71 + 89.8 + 99.7 + 110.45 + 124.21 + 135.5 + 149.88 + 165.3 + 184.46 + 199.7 + 210.8 + 234.96 + 263.13 + 302.37 - 4 - 4 + 2 + 2 2770 - .0003 - .003 - .03 - .3 - 3 + 0.0002 + 0.002 + 0.02 + 0.2 + 2 From fd82c409806ea701778abdef2166bea182d5bacc Mon Sep 17 00:00:00 2001 From: Patrick Tjin Date: Fri, 13 May 2016 15:23:44 -0700 Subject: [PATCH 03/99] marlin: Create cache directory since we don't have a partition Since marlin/sailfish lack a cache partition, we create a directory /data/cache. We also need to export DOWNLOAD_CACHE so that the system is aware of the new location. Bug: 28747374 Change-Id: Ifed102ff22e36adfdd1bedccb2cec8c4fa510d4d --- init.common.rc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/init.common.rc b/init.common.rc index 311f7f0e..6c8af01f 100644 --- a/init.common.rc +++ b/init.common.rc @@ -21,6 +21,8 @@ on init symlink /sdcard /mnt/sdcard symlink /sdcard /storage/sdcard0 + export DOWNLOAD_CACHE /data/cache + on fs wait /dev/block/platform/soc/${ro.boot.bootdevice} symlink /dev/block/platform/soc/${ro.boot.bootdevice} /dev/block/bootdevice @@ -198,6 +200,12 @@ on post-fs-data chown radio radio /data/misc/radio/db_check_done chmod 0660 /data/misc/radio/db_check_done + # Create the cache directory since we don't have dedicated cache partition + mkdir /data/cache 0770 system cache + mkdir /data/cache/recovery 0770 system cache + mkdir /data/cache/backup_stage 0700 system system + mkdir /data/cache/backup 0700 system system + on property:init.svc.bootanim=running write /sys/class/leds/wled/brightness 4095 From 49983e530891d69fe2de8c55dcbada7a97d21184 Mon Sep 17 00:00:00 2001 From: Vineeta Srivastava Date: Fri, 13 May 2016 17:54:50 -0700 Subject: [PATCH 04/99] marlin/sailfish: add sepolicy for verizon obdm tool Bug: 28765079 Change-Id: I62df586b571b29a8f43216919c5c908980ce5e73 --- marlin/BoardConfig.mk | 1 + sailfish/BoardConfig.mk | 1 + sepolicy/mac_permissions.xml | 6 ++++++ sepolicy/verizon/seapp_context | 2 ++ 4 files changed, 10 insertions(+) create mode 100644 sepolicy/mac_permissions.xml create mode 100644 sepolicy/verizon/seapp_context diff --git a/marlin/BoardConfig.mk b/marlin/BoardConfig.mk index 33a778c7..d085ff18 100644 --- a/marlin/BoardConfig.mk +++ b/marlin/BoardConfig.mk @@ -102,6 +102,7 @@ BOARD_ROOT_EXTRA_FOLDERS := bt_firmware firmware firmware/radio persist BOARD_ROOT_EXTRA_SYMLINKS := /system/vendor/lib/dsp:/dsp BOARD_SEPOLICY_DIRS += device/google/marlin/sepolicy +BOARD_SEPOLICY_DIRS += device/google/marlin/sepolicy/verizon BOARD_SECCOMP_POLICY += device/google/marlin/seccomp BOARD_EGL_CFG := device/google/marlin/egl.cfg diff --git a/sailfish/BoardConfig.mk b/sailfish/BoardConfig.mk index 7f1137b4..4082321b 100644 --- a/sailfish/BoardConfig.mk +++ b/sailfish/BoardConfig.mk @@ -99,6 +99,7 @@ BOARD_ROOT_EXTRA_FOLDERS := bt_firmware firmware firmware/radio persist BOARD_ROOT_EXTRA_SYMLINKS := /system/vendor/lib/dsp:/dsp BOARD_SEPOLICY_DIRS += device/google/marlin/sepolicy +BOARD_SEPOLICY_DIRS += device/google/marlin/sepolicy/verizon BOARD_SECCOMP_POLICY += device/google/marlin/seccomp BOARD_EGL_CFG := device/google/marlin/egl.cfg diff --git a/sepolicy/mac_permissions.xml b/sepolicy/mac_permissions.xml new file mode 100644 index 00000000..4b875a72 --- /dev/null +++ b/sepolicy/mac_permissions.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/sepolicy/verizon/seapp_context b/sepolicy/verizon/seapp_context new file mode 100644 index 00000000..592d1ada --- /dev/null +++ b/sepolicy/verizon/seapp_context @@ -0,0 +1,2 @@ +#Add for OBDM tool +user=_app seinfo=obdm domain=radio type=radio_data_file From 59e45e3e620b9e2208e780854abdea25d32a2db5 Mon Sep 17 00:00:00 2001 From: Woody Lin Date: Fri, 20 May 2016 17:09:19 +0800 Subject: [PATCH 05/99] gpt-util: Faking secondary GPT Since the secondary GPT is not available on marlin & sailfish; faking secondary GPT via always fill secondary GPT buffer `hdr_bak' by loading primary GPT from storage, and never commit data on `hdr_bak' and `pentry_arr_bak' to secondary GPT of storage. Bug: 28856639 Change-Id: Iafb90944911ca894e6bb4b673f9e7115a1314bf4 --- common/recovery/oem-recovery/gpt-utils.cpp | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/common/recovery/oem-recovery/gpt-utils.cpp b/common/recovery/oem-recovery/gpt-utils.cpp index 705a8d9e..d2f90d89 100644 --- a/common/recovery/oem-recovery/gpt-utils.cpp +++ b/common/recovery/oem-recovery/gpt-utils.cpp @@ -1358,7 +1358,7 @@ int gpt_disk_get_disk_info(const char *dev, struct gpt_disk *dsk) } gpt_header_size = GET_4_BYTES(disk->hdr + HEADER_SIZE_OFFSET); disk->hdr_crc = sparse_crc32(0, disk->hdr, gpt_header_size); - disk->hdr_bak = gpt_get_header(dev, SECONDARY_GPT); + disk->hdr_bak = gpt_get_header(dev, PRIMARY_GPT); if (!disk->hdr_bak) { ALOGE("%s: Failed to get backup header", __func__); goto error; @@ -1497,18 +1497,6 @@ int gpt_disk_commit(struct gpt_disk *disk) __func__); goto error; } - //Write back the secondary header - if(gpt_set_header(disk->hdr_bak, fd, SECONDARY_GPT) != 0) { - ALOGE("%s: Failed to update secondary GPT header", - __func__); - goto error; - } - //Write back the secondary partition array - if (gpt_set_pentry_arr(disk->hdr_bak, fd, disk->pentry_arr_bak)) { - ALOGE("%s: Failed to write secondary GPT partition arr", - __func__); - goto error; - } close(fd); return 0; error: From 10124a3d9e9dd5d6b5c7bb430bde4e167b59a0e4 Mon Sep 17 00:00:00 2001 From: Naveen Ramaraj Date: Fri, 20 May 2016 11:41:51 -0700 Subject: [PATCH 06/99] sepolicy: Add policies for AT-fwd daemon Bug: 28717990 Change-Id: I5effb9e7d2acdb8af0a58162f7c9208fa5ecd7ed --- sepolicy/atfwd.te | 4 ++++ sepolicy/file_contexts | 1 + 2 files changed, 5 insertions(+) create mode 100644 sepolicy/atfwd.te diff --git a/sepolicy/atfwd.te b/sepolicy/atfwd.te new file mode 100644 index 00000000..45b479f2 --- /dev/null +++ b/sepolicy/atfwd.te @@ -0,0 +1,4 @@ +type atfwd, domain; +type atfwd_exec, exec_type, file_type; +# Started by init +init_daemon_domain(atfwd) diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts index 4939d69f..3f282b46 100755 --- a/sepolicy/file_contexts +++ b/sepolicy/file_contexts @@ -97,6 +97,7 @@ /system/bin/ims_rtp_daemon u:object_r:ims_exec:s0 /system/bin/imscmservice u:object_r:imscm_exec:s0 /system/bin/adsprpcd u:object_r:adsprpcd_exec:s0 +/system/bin/ATFWD-daemon u:object_r:atfwd_exec:s0 /system/bin/cnss-daemon u:object_r:cnss-daemon_exec:s0 /system/bin/cnss_diag u:object_r:cnss_diag_exec:s0 /system/vendor/bin/nanohub_slpi u:object_r:nanohub_slpi_exec:s0 From c9472c5e6eb4b981302d6b6096f9ba26f10e2314 Mon Sep 17 00:00:00 2001 From: Eino-Ville Talvala Date: Tue, 24 May 2016 12:12:43 -0700 Subject: [PATCH 07/99] Disable NFC while camera is active Bug: 28848544 Change-Id: I1912c741c4c4ea98b2b0cde1f9ddd0187076a2c7 --- device-common.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/device-common.mk b/device-common.mk index 1435e9b0..e5bc788d 100644 --- a/device-common.mk +++ b/device-common.mk @@ -295,6 +295,10 @@ PRODUCT_PACKAGES += \ NfcNci \ Tag +# NFC/camera interaction workaround - DO NOT COPY TO NEW DEVICES +PRODUCT_PROPERTY_OVERRIDES += \ + ro.camera.notify_nfc=1 + PRODUCT_COPY_FILES += \ device/google/marlin/nfc/libnfc-brcm.conf:system/etc/libnfc-brcm.conf \ device/google/marlin/nfc/libpn551_fw.so:system/vendor/firmware/libpn551_fw.so From 108a50ca44f78e786a9683f5008f5e9d73d04783 Mon Sep 17 00:00:00 2001 From: Patrick Tjin Date: Mon, 16 May 2016 12:58:51 -0700 Subject: [PATCH 08/99] DO NOT MERGE - squashfs patches for s/m Bug: 28920352 Change-Id: I1f83567d9cfd52e8e2a1cd2cfa6debab04dd11a6 --- fstab.common | 1 + marlin/BoardConfig.mk | 6 +++--- sailfish/BoardConfig.mk | 3 +++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/fstab.common b/fstab.common index 20b4ab65..56db9833 100644 --- a/fstab.common +++ b/fstab.common @@ -7,6 +7,7 @@ # /dev/block/bootdevice/by-name/system / ext4 ro,barrier=1,discard wait,slotselect +/dev/block/bootdevice/by-name/system / squashfs ro wait,slotselect #/dev/block/bootdevice/by-name/userdata /data ext4 nosuid,nodev,barrier=1,noauto_da_alloc,discard wait,check #/dev/block/platform/soc/624000.ufshc/by-name/system /system squashfs ro /dev/block/bootdevice/by-name/userdata /data ext4 nosuid,nodev,barrier=1,noauto_da_alloc,discard wait,check,formattable,fileencryption=ice diff --git a/marlin/BoardConfig.mk b/marlin/BoardConfig.mk index f338025c..2e958bfb 100644 --- a/marlin/BoardConfig.mk +++ b/marlin/BoardConfig.mk @@ -78,9 +78,9 @@ OVERRIDE_RS_DRIVER:= libRSDriver_adreno.so TARGET_USERIMAGES_USE_EXT4 := true BOARD_BOOTIMAGE_PARTITION_SIZE := 0x04000000 BOARD_SYSTEMIMAGE_PARTITION_SIZE := 3221225472 -#BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE := squashfs -#BOARD_SYSTEMIMAGE_JOURNAL_SIZE := 0 -#BOARD_SYSTEMIMAGE_SQUASHFS_COMPRESSOR := lz4 +BOARD_SYSTEMIMAGE_JOURNAL_SIZE := 0 +BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE := squashfs +BOARD_SYSTEMIMAGE_SQUASHFS_BLOCK_SIZE := 1048576 BOARD_USERDATAIMAGE_PARTITION_SIZE := 10737418240 BOARD_PERSISTIMAGE_PARTITION_SIZE := 33554432 BOARD_PERSISTIMAGE_FILE_SYSTEM_TYPE := ext4 diff --git a/sailfish/BoardConfig.mk b/sailfish/BoardConfig.mk index 0715ac3d..438f6faa 100644 --- a/sailfish/BoardConfig.mk +++ b/sailfish/BoardConfig.mk @@ -78,6 +78,9 @@ OVERRIDE_RS_DRIVER:= libRSDriver_adreno.so TARGET_USERIMAGES_USE_EXT4 := true BOARD_BOOTIMAGE_PARTITION_SIZE := 0x04000000 BOARD_SYSTEMIMAGE_PARTITION_SIZE := 3221225472 +BOARD_SYSTEMIMAGE_JOURNAL_SIZE := 0 +BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE := squashfs +BOARD_SYSTEMIMAGE_SQUASHFS_BLOCK_SIZE := 1048576 BOARD_USERDATAIMAGE_PARTITION_SIZE := 10737418240 BOARD_PERSISTIMAGE_PARTITION_SIZE := 33554432 BOARD_PERSISTIMAGE_FILE_SYSTEM_TYPE := ext4 From 08b89c09911a70417eceed3f1bcbf03f82706e2c Mon Sep 17 00:00:00 2001 From: Meng Wang Date: Tue, 24 May 2016 10:18:29 -0700 Subject: [PATCH 09/99] marlin/sailfish: added ims apn for Telstra AU MCCMNC: 50501 Bug: 28613145 Change-Id: Ic8c0cec400838ef86d506dda0a39ff76f0c39cb5 --- apns-full-conf.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apns-full-conf.xml b/apns-full-conf.xml index 81c86048..0b66f618 100755 --- a/apns-full-conf.xml +++ b/apns-full-conf.xml @@ -26355,6 +26355,15 @@ type="default,supl,mms" /> + + Date: Tue, 31 May 2016 21:54:41 +0000 Subject: [PATCH 10/99] Revert "fstab: Change root device for /" Bug: 29043680 Bug: 28845874 This reverts commit 166f762e5aaeb02efda1ed6cd5e061ed0b2c82ff. Change-Id: Id65f820980f2085f0218e4a96e58c6872038468d --- fstab.common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fstab.common b/fstab.common index aa54ccec..20b4ab65 100644 --- a/fstab.common +++ b/fstab.common @@ -6,7 +6,7 @@ # Currently we dont have e2fsck compiled. So fs check would failed. # -/dev/dm-0 / ext4 ro,barrier=1,discard wait +/dev/block/bootdevice/by-name/system / ext4 ro,barrier=1,discard wait,slotselect #/dev/block/bootdevice/by-name/userdata /data ext4 nosuid,nodev,barrier=1,noauto_da_alloc,discard wait,check #/dev/block/platform/soc/624000.ufshc/by-name/system /system squashfs ro /dev/block/bootdevice/by-name/userdata /data ext4 nosuid,nodev,barrier=1,noauto_da_alloc,discard wait,check,formattable,fileencryption=ice From 4e5e9e0e680dac9fdbd87dfeeff5e09480bf8ca3 Mon Sep 17 00:00:00 2001 From: Meng Wang Date: Thu, 2 Jun 2016 11:54:18 -0700 Subject: [PATCH 11/99] Revert "marlin/sailfish: add ATT IMS APN" This reverts commit 429158cbee57f700d9ff7693d0b52bea84c0b03b. Bug: 28994605 Change-Id: I59efddac8bd3eeaf8e1a5c5145d78b2424d30572 --- apns-full-conf.xml | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/apns-full-conf.xml b/apns-full-conf.xml index b273f69a..5ea97cfd 100644 --- a/apns-full-conf.xml +++ b/apns-full-conf.xml @@ -8782,15 +8782,6 @@ mtu="1410" /> - - - - - - Date: Fri, 3 Jun 2016 04:30:43 +0800 Subject: [PATCH 12/99] marlin/sailfish: set ro.oem_unlock_supported=1 Bug: 28953510 Change-Id: I5c7c665ddd2d786be064d29229f7b72dc42f0ee3 Signed-off-by: kurt_huang --- device-common.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/device-common.mk b/device-common.mk index 043d31c4..33296cd1 100644 --- a/device-common.mk +++ b/device-common.mk @@ -311,6 +311,10 @@ PRODUCT_PACKAGES_DEBUG += \ PRODUCT_PROPERTY_OVERRIDES += \ ro.frp.pst=/dev/block/platform/soc/624000.ufshc/by-name/frp +# OEM Unlock reporting +ADDITIONAL_DEFAULT_PROPERTIES += \ + ro.oem_unlock_supported=1 + # Setup dm-verity configs PRODUCT_SYSTEM_VERITY_PARTITION := /dev/block/bootdevice/by-name/system PRODUCT_VENDOR_VERITY_PARTITION := /dev/block/bootdevice/by-name/vendor From 198cd80210525dc96558e2b765cfef204ee3e0ae Mon Sep 17 00:00:00 2001 From: evan_wong Date: Fri, 3 Jun 2016 10:26:16 +0800 Subject: [PATCH 13/99] A/B_Boot: Modem supports to mount A/B partitions Bug: 29108510 Change-Id: Ic137bca20bf4c2e391d67dd6bcb54c551388bad5 Signed-off-by: evan_wong --- fstab.common | 1 + init.common.rc | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) mode change 100644 => 100755 fstab.common mode change 100644 => 100755 init.common.rc diff --git a/fstab.common b/fstab.common old mode 100644 new mode 100755 index 77d2adb6..099cbdf6 --- a/fstab.common +++ b/fstab.common @@ -8,6 +8,7 @@ # /dev/block/bootdevice/by-name/system / ext4 ro,barrier=1,discard wait,slotselect /dev/block/bootdevice/by-name/vendor /vendor ext4 ro,barrier=1,discard wait,slotselect +/dev/block/bootdevice/by-name/modem /firmware/radio vfat ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait,slotselect #/dev/block/bootdevice/by-name/userdata /data ext4 nosuid,nodev,barrier=1,noauto_da_alloc,discard wait,check #/dev/block/platform/soc/624000.ufshc/by-name/system /system squashfs ro /dev/block/bootdevice/by-name/userdata /data ext4 nosuid,nodev,barrier=1,noauto_da_alloc,discard wait,check,formattable,fileencryption=ice diff --git a/init.common.rc b/init.common.rc old mode 100644 new mode 100755 index fe74d740..896910a2 --- a/init.common.rc +++ b/init.common.rc @@ -42,9 +42,6 @@ on fs restorecon_recursive /persist mkdir /persist/data 0700 system system - wait /dev/block/bootdevice/by-name/modem_a - mount vfat /dev/block/bootdevice/by-name/modem_a /firmware/radio ro shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 - on post-fs symlink /dev/block/platform/soc.0/f9824900.sdhci /dev/block/bootdevice From 22da950a2db75bcbb43d9a76b655513d5e5f2308 Mon Sep 17 00:00:00 2001 From: Jeff Vander Stoep Date: Mon, 6 Jun 2016 14:40:43 -0700 Subject: [PATCH 14/99] Fix bluetooth Address the following denials: bluetooth avc: denied { set } for property=wc_transport.ref_count pid=8340 uid=1002 gid=1002 scontext=u:r:bluetooth:s0 tcontext=u:object_r:default_prop:s0 tclass=property_service avc: denied { write } for pid=8358 comm="stack_manager" name="extldo" dev="sysfs" ino=42185 scontext=u:r:bluetooth:s0 tcontext=u:object_r:sysfs:s0 tclass=file wcnss_filter avc: denied { set } for property=wc_transport.hci_filter_status pid=8441 uid=1002 gid=1002 scontext=u:r:wcnss_filter:s0 tcontext=u:object_r:default_prop:s0 tclass=property_service avc: denied { ioctl } for pid=8441 comm="wcnss_filter" path="/dev/ttyHS0" dev="tmpfs" ino=15454 ioctlcmd=540b scontext=u:r:wcnss_filter:s0 tcontext=u:object_r:hci_attach_dev:s0 tclass=chr_file avc: denied { ioctl } for pid=8444 comm="wcnss_filter" path="/dev/ttyHS0" dev="tmpfs" ino=15454 ioctlcmd=5441 scontext=u:r:wcnss_filter:s0 tcontext=u:object_r:hci_attach_dev:s0 tclass=chr_file avc: denied { ioctl } for pid=8448 comm=504F5349582074696D65722031 path="/dev/ttyHS0" dev="tmpfs" ino=15454 ioctlcmd=5442 scontext=u:r:wcnss_filter:s0 tcontext=u:object_r:hci_attach_dev:s0 tclass=chr_file avc: denied { open } for pid=8441 comm="wcnss_filter" path="/dev/ttyHS0" dev="tmpfs" ino=15454 scontext=u:r:wcnss_filter:s0 tcontext=u:object_r:hci_attach_dev:s0 tclass=chr_file avc: denied { read write } for pid=8441 comm="wcnss_filter" name="ttyHS0" dev="tmpfs" ino=15454 scontext=u:r:wcnss_filter:s0 tcontext=u:object_r:hci_attach_dev:s0 tclass=chr_file avc: denied { connectto } for pid=8441 comm="wcnss_filter" path="/dev/socket/property_service" scontext=u:r:wcnss_filter:s0 tcontext=u:r:init:s0 tclass=unix_stream_socket avc: denied { write } for pid=8441 comm="wcnss_filter" name="property_service" dev="tmpfs" ino=14158 scontext=u:r:wcnss_filter:s0 tcontext=u:object_r:property_socket:s0 tclass=sock_file Bug: 29149785 Change-Id: Ib95b2239b9cbb7c094ba1230d391c0f01e5071ce --- sepolicy/bluetooth.te | 2 ++ sepolicy/file_contexts | 1 + sepolicy/property.te | 1 + sepolicy/property_contexts | 1 + sepolicy/wcnss_filter.te | 4 +++- 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/sepolicy/bluetooth.te b/sepolicy/bluetooth.te index b25b3e54..cd36b9d3 100644 --- a/sepolicy/bluetooth.te +++ b/sepolicy/bluetooth.te @@ -1 +1,3 @@ allow bluetooth wcnss_filter:unix_stream_socket connectto; + +set_prop(bluetooth, wc_prop) diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts index 9913fe92..067e985a 100755 --- a/sepolicy/file_contexts +++ b/sepolicy/file_contexts @@ -113,6 +113,7 @@ # /sys /sys/devices/virtual/nanohub/nanohub(/.*)? u:object_r:sysfs_nanoapp_cmd:s0 /sys/devices/virtual/thermal(/.*)? u:object_r:sysfs_thermal:s0 +/sys/devices/bt_qca[0-9]+/extldo u:object_r:sysfs_bluetooth_writable:s0 /sys/devices/bt_qca[0-9]+/rfkill/rfkill0/state u:object_r:sysfs_bluetooth_writable:s0 /sys/module/msm_core(/.*)? u:object_r:sysfs_msm_core:s0 /sys/devices/soc/70000\.qcom,msm-core(/.*)? u:object_r:sysfs_msm_core:s0 diff --git a/sepolicy/property.te b/sepolicy/property.te index f6f9355b..173cbc37 100644 --- a/sepolicy/property.te +++ b/sepolicy/property.te @@ -1,2 +1,3 @@ type camera_prop, property_type; type sensors_prop, property_type; +type wc_prop, property_type; diff --git a/sepolicy/property_contexts b/sepolicy/property_contexts index f2a3f015..e441e530 100644 --- a/sepolicy/property_contexts +++ b/sepolicy/property_contexts @@ -1,3 +1,4 @@ persist.camera. u:object_r:camera_prop:s0 htc.camera. u:object_r:camera_prop:s0 sensors. u:object_r:sensors_prop:s0 +wc_transport. u:object_r:wc_prop:s0 diff --git a/sepolicy/wcnss_filter.te b/sepolicy/wcnss_filter.te index b1a0abc1..ec21fd94 100644 --- a/sepolicy/wcnss_filter.te +++ b/sepolicy/wcnss_filter.te @@ -5,7 +5,9 @@ type wcnss_filter_exec, exec_type, file_type; init_daemon_domain(wcnss_filter) # talk to /dev/ttyHS0 -allow wcnss_filter console_device:chr_file rw_file_perms; +allow wcnss_filter hci_attach_dev:chr_file rw_file_perms; + +set_prop(wcnss_filter, wc_prop) # write to proc/sysrq-trigger allow wcnss_filter proc_sysrq:file w_file_perms; From c64cba589280624516e6cc21865c56938cc1c4fe Mon Sep 17 00:00:00 2001 From: Jeff Vander Stoep Date: Tue, 7 Jun 2016 07:39:25 -0700 Subject: [PATCH 15/99] Grant ueventd and kernel access to /firmware For firmware loading support. Addresses: avc: denied { search } for pid=4293 comm="ueventd" name="firmware" dev="sda33" ino=25 scontext=u:r:ueventd:s0 tcontext=u:object_r:firmware_file:s0 tclass=dir permissive=0 avc: denied { search } for pid=3959 comm="kworker/u8:22" name="firmware" dev="sda33" ino=25 scontext=u:r:kernel:s0 Bug: 29072816 Bug: 29160970 Change-Id: I974228a112c2ee2077bfcc09d282e2637f140dd2 --- sepolicy/kernel.te | 2 ++ sepolicy/ueventd.te | 3 +++ 2 files changed, 5 insertions(+) create mode 100644 sepolicy/kernel.te diff --git a/sepolicy/kernel.te b/sepolicy/kernel.te new file mode 100644 index 00000000..c01eb949 --- /dev/null +++ b/sepolicy/kernel.te @@ -0,0 +1,2 @@ +# for firmware loading support +r_dir_file(kernel, firmware_file) diff --git a/sepolicy/ueventd.te b/sepolicy/ueventd.te index f8322a00..eb4dde8f 100644 --- a/sepolicy/ueventd.te +++ b/sepolicy/ueventd.te @@ -9,3 +9,6 @@ allow ueventd sysfs_rmtfs:file w_file_perms; allow ueventd sysfs_soc:file w_file_perms; allow ueventd sysfs_thermal:file w_file_perms; allow ueventd sysfs_video:file w_file_perms; + +# /system/core/init/device.cpp catches uevents from /firmware +r_dir_file(ueventd, firmware_file) From fc5b2359b15648fa745e5137387d30f757c42aa0 Mon Sep 17 00:00:00 2001 From: Jeff Vander Stoep Date: Tue, 7 Jun 2016 10:20:13 -0700 Subject: [PATCH 16/99] Fix wifi hostspot Grant dnsmasq and hostapd access to privileged socket ioctls. Bug: 29152837 Change-Id: I1aeb43dd0e8bc262d1c4491bc3d1bb9caa9d1498 --- sepolicy/cnd.te | 4 ++++ sepolicy/dnsmasq.te | 1 + sepolicy/hostapd.te | 2 ++ sepolicy/property_contexts | 1 + 4 files changed, 8 insertions(+) create mode 100644 sepolicy/dnsmasq.te create mode 100644 sepolicy/hostapd.te diff --git a/sepolicy/cnd.te b/sepolicy/cnd.te index 72da8fbe..1b72de45 100755 --- a/sepolicy/cnd.te +++ b/sepolicy/cnd.te @@ -33,3 +33,7 @@ r_dir_file(cnd, sysfs_soc) userdebug_or_eng(` allow cnd diag_device:chr_file rw_file_perms; ') + +# use for mobile hostspot +allow cnd shell_exec:file rx_file_perms; +allow cnd system_file:file rx_file_perms; diff --git a/sepolicy/dnsmasq.te b/sepolicy/dnsmasq.te new file mode 100644 index 00000000..f6020749 --- /dev/null +++ b/sepolicy/dnsmasq.te @@ -0,0 +1 @@ +allowxperm dnsmasq self:udp_socket ioctl priv_sock_ioctls; diff --git a/sepolicy/hostapd.te b/sepolicy/hostapd.te new file mode 100644 index 00000000..46f3492b --- /dev/null +++ b/sepolicy/hostapd.te @@ -0,0 +1,2 @@ +allowxperm hostapd self:udp_socket ioctl priv_sock_ioctls; +r_dir_file(hostapd, sysfs_type) diff --git a/sepolicy/property_contexts b/sepolicy/property_contexts index e441e530..43214482 100644 --- a/sepolicy/property_contexts +++ b/sepolicy/property_contexts @@ -2,3 +2,4 @@ persist.camera. u:object_r:camera_prop:s0 htc.camera. u:object_r:camera_prop:s0 sensors. u:object_r:sensors_prop:s0 wc_transport. u:object_r:wc_prop:s0 +net.r_rmnet u:object_r:net_radio_prop:s0 From d6f8b115a80f7f6cff9d0794e0dfc3498ed57492 Mon Sep 17 00:00:00 2001 From: Vineeta Srivastava Date: Tue, 7 Jun 2016 11:51:25 -0700 Subject: [PATCH 17/99] sailfish/marlin: Add spn-conf.xml Bug: 28956239 Change-Id: I3797507cdee9c63a5940b0a2949c6da0e25016cb --- device-common.mk | 4 +++- spn-conf.xml | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 spn-conf.xml diff --git a/device-common.mk b/device-common.mk index 0ba66f02..7655630d 100644 --- a/device-common.mk +++ b/device-common.mk @@ -137,8 +137,10 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.vr.high_performance.xml:system/etc/permissions/android.hardware.vr.high_performance.xml +# For SPN display +PRODUCT_COPY_FILES += \ + device/google/marlin/spn-conf.xml:system/etc/spn-conf.xml -# # Common sensor packages TARGET_USES_NANOHUB_SENSORHAL := true NANOHUB_SENSORHAL_LID_STATE_ENABLED := true diff --git a/spn-conf.xml b/spn-conf.xml new file mode 100644 index 00000000..e858dc3b --- /dev/null +++ b/spn-conf.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From a3df9438dbe324be09cde665ce9086df742a6816 Mon Sep 17 00:00:00 2001 From: Howard Yen Date: Tue, 7 Jun 2016 15:54:24 +0800 Subject: [PATCH 18/99] add sepolicy for diag over socket Bug: 29170806 Change-Id: I71a791d57a1227b5e637eab26c756467456dd7ba Signed-off-by: Howard Yen --- sepolicy/kernel.te | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sepolicy/kernel.te b/sepolicy/kernel.te index c01eb949..7ae9b8ca 100644 --- a/sepolicy/kernel.te +++ b/sepolicy/kernel.te @@ -1,2 +1,6 @@ -# for firmware loading support r_dir_file(kernel, firmware_file) + +# for diag over socket +userdebug_or_eng(` + allow kernel self:socket create; +') From e642957d5c30fc6403e410b76baa5a6f38ca7796 Mon Sep 17 00:00:00 2001 From: Jeff Vander Stoep Date: Wed, 8 Jun 2016 12:44:18 -0700 Subject: [PATCH 19/99] Flip kernel domain into permissive mode dac_override denials are preventing the device from going into suspend. DO NOT grant kernel the dac_override permission. Temporarily flip kernel domain into permissive mode until the proper fix can be made i.e. fixing the unix permissions on the file being accessed by the kernel. Bug: 29160970 Bug: 29170806 Change-Id: I48f8e256addd9a22f4f08b42178d13729276b1b4 --- sepolicy/kernel.te | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sepolicy/kernel.te b/sepolicy/kernel.te index 7ae9b8ca..c797cc78 100644 --- a/sepolicy/kernel.te +++ b/sepolicy/kernel.te @@ -1,3 +1,8 @@ +# b/29160970 b/29170806 +userdebug_or_eng(` + permissive kernel; +') + r_dir_file(kernel, firmware_file) # for diag over socket From 92f166b4fb1bb2e4119a538706d5ec552c6faeb1 Mon Sep 17 00:00:00 2001 From: Jeff Vander Stoep Date: Thu, 9 Jun 2016 12:26:41 -0700 Subject: [PATCH 20/99] Grant platform_app access to diag for qxdm logger Restrict to debug builds. avc: denied { write } for name="diag_logs" dev="sda35" ino=196609 scontext=u:r:platform_app:s0:c512,c768 tcontext=u:object_r:system_data_file:s0 tclass=dir permissive=0 avc: denied { getattr } for pid=6817 comm="ls" path="/dev/diag" dev="tmpfs" ino=16434 scontext=u:r:platform_app:s0:c512,c768 tcontext=u:object_r:diag_device:s0 tclass=chr_file permissive=0 Bug: 29150810 Change-Id: I79f73f8ff51fdda9590726c7dca1d4dd642efb43 --- sepolicy/file.te | 1 + sepolicy/file_contexts | 1 + sepolicy/platform_app.te | 6 ++++++ 3 files changed, 8 insertions(+) create mode 100644 sepolicy/platform_app.te diff --git a/sepolicy/file.te b/sepolicy/file.te index cd410b72..060950c3 100755 --- a/sepolicy/file.te +++ b/sepolicy/file.te @@ -4,6 +4,7 @@ type sysfs_nanoapp_cmd, sysfs_type, fs_type; type firmware_file, fs_type, contextmount_type; # /data +type diag_logs, file_type, data_file_type, mlstrustedobject; type location_data_file, file_type, data_file_type; type perfd_data_file, file_type, data_file_type; type ramdump_data_file, file_type, data_file_type; diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts index 067e985a..bf979025 100755 --- a/sepolicy/file_contexts +++ b/sepolicy/file_contexts @@ -146,6 +146,7 @@ /sys/kernel/debug/rmt_storage(/.*)? u:object_r:debugfs_rmt_storage:s0 # /data +/data/diag_logs(/.*)? u:object_r:diag_logs:s0 /data/nfc(/.*)? u:object_r:nfc_data_file:s0 /data/time(/.*)? u:object_r:time_data_file:s0 /data/ramdump(/.*)? u:object_r:ramdump_data_file:s0 diff --git a/sepolicy/platform_app.te b/sepolicy/platform_app.te new file mode 100644 index 00000000..16f21266 --- /dev/null +++ b/sepolicy/platform_app.te @@ -0,0 +1,6 @@ +userdebug_or_eng(` + # qxdmlogger rundiag perms + allow platform_app diag_logs:dir rw_dir_perms; + allow platform_app diag_logs:file create_file_perms; + allow platform_app diag_device:chr_file rw_file_perms; +') From 9aec556fce95dac530c8c1f236f4a3aa9288cdc9 Mon Sep 17 00:00:00 2001 From: "Yueyao (Nathan) Zhu" Date: Thu, 9 Jun 2016 14:01:05 -0700 Subject: [PATCH 21/99] marlin: sepolicy: add mlstrustedobject to type diag_device to grant permission to diag_mdlog used by QXDMLogger Bug: 29150810 Change-Id: I32a00ef25ed3014b9210d9ace31615712165c3f6 --- sepolicy/device.te | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sepolicy/device.te b/sepolicy/device.te index 3af77528..8b6da72c 100644 --- a/sepolicy/device.te +++ b/sepolicy/device.te @@ -1,6 +1,6 @@ type at_device, dev_type; type audio_cal_device, dev_type; -type diag_device, dev_type; +type diag_device, dev_type, mlstrustedobject; type ramdump_device, dev_type; type sdsprpc_device, dev_type; type sg_device, dev_type; From a33922a8ab97290d213857f4fee63f1af8726d12 Mon Sep 17 00:00:00 2001 From: Meng Wang Date: Thu, 9 Jun 2016 17:23:44 -0700 Subject: [PATCH 22/99] apns-full-conf: fix fido ims apn Type of ims apn should be 'ims' Change-Id: I3818da4558d682ddee1dd0ee5cf19cc93ad3824b --- apns-full-conf.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apns-full-conf.xml b/apns-full-conf.xml index 625d2e28..c00dae8e 100644 --- a/apns-full-conf.xml +++ b/apns-full-conf.xml @@ -6965,7 +6965,7 @@ mcc="302" mnc="370" apn="IMS" - type="default,mms,agps,supl,fota,hipri" + type="ims" mvno_match_data="DD" mvno_type="gid" protocol="IPV4V6" From bc9926b091b24901d099b8fd836c74639b40a2ed Mon Sep 17 00:00:00 2001 From: Vijay Ganti Date: Wed, 8 Jun 2016 15:42:41 -0700 Subject: [PATCH 23/99] Allow perfd process to write power mgmt attribs Address denials to access lpm_parameters:sleep_disabled among others under the lpm_levels entries. Bug: 29170791 Change-Id: Ifc743d07f18da36bd340d8c29754e4616240389f --- sepolicy/file.te | 1 + sepolicy/file_contexts | 1 + sepolicy/perfd.te | 1 + 3 files changed, 3 insertions(+) diff --git a/sepolicy/file.te b/sepolicy/file.te index 060950c3..1f12d5f2 100755 --- a/sepolicy/file.te +++ b/sepolicy/file.te @@ -24,6 +24,7 @@ type sysfs_rmtfs, sysfs_type, fs_type; type sysfs_soc, sysfs_type, fs_type, mlstrustedobject; type sysfs_video, sysfs_type, fs_type; type sysfs_wifi, sysfs_type, fs_type, mlstrustedobject; +type sysfs_power_management, sysfs_type, fs_type; # debugfs type debugfs_msm_core, debugfs_type, fs_type; diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts index bf979025..f9e34335 100755 --- a/sepolicy/file_contexts +++ b/sepolicy/file_contexts @@ -140,6 +140,7 @@ /sys/devices/soc/600000\.qcom,pcie/pci0000:00/0000:00:00\.0/0000:01:00\.0/net/wlan0(/.*)? u:object_r:sysfs_wifi:s0 /sys/devices/soc/0\.qcom,rmtfs_sharedmem(/.*)? u:object_r:sysfs_rmtfs:s0 /sys/devices/soc/84000000\.qcom,rmtfs_rtel_sharedmem(/.*)? u:object_r:sysfs_rmtfs:s0 +/sys/module/lpm_levels/parameters(/.*)? u:object_r:sysfs_power_management:s0 # debugfs /sys/kernel/debug/msm_core(/.*)? u:object_r:debugfs_msm_core:s0 diff --git a/sepolicy/perfd.te b/sepolicy/perfd.te index 5b91be62..e3288bc1 100644 --- a/sepolicy/perfd.te +++ b/sepolicy/perfd.te @@ -19,6 +19,7 @@ r_dir_file(perfd, sysfs_type) allow perfd sysfs_perf:file write; allow perfd sysfs_msm_subsys:file write; allow perfd sysfs_devices_system_cpu:file write; +allow perfd sysfs_power_management:file write; allow perfd proc_kernel_sched:file w_file_perms; From 511ed316c214bef5279955938aa7b3d10443a430 Mon Sep 17 00:00:00 2001 From: Jeff Vander Stoep Date: Mon, 13 Jun 2016 14:52:52 -0700 Subject: [PATCH 24/99] perfd: Add system GID Required to write to files in /sys/devices/system/cpu Bug: 29330588 Bug: 29275733 Change-Id: I54a0917420b42c619c119a7ea63ad6a634da0af7 --- init.common.rc | 1 + 1 file changed, 1 insertion(+) diff --git a/init.common.rc b/init.common.rc index d9a62f1d..9e66dd33 100755 --- a/init.common.rc +++ b/init.common.rc @@ -667,6 +667,7 @@ service qseeproxydaemon /vendor/bin/qseeproxydaemon service perfd /vendor/bin/perfd class main user root + group root system # bugreport is triggered by holding down volume down, volume up and power service bugreport /system/bin/dumpstate -d -p -B -z \ From 0ce2f6e93f21508808b4fa2231cd8a0e5f8a4ebb Mon Sep 17 00:00:00 2001 From: kurt_huang Date: Thu, 16 Jun 2016 02:21:46 +0800 Subject: [PATCH 25/99] marlin: change owner and group of init-radio-sh Bug: 29349901 Bug: 29379902 Change-Id: Ic4fa819e0d492703947359c7ffa0f3a7579e3a94 Signed-off-by: kurt_huang --- init.common.rc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init.common.rc b/init.common.rc index 9e66dd33..7ad8e196 100755 --- a/init.common.rc +++ b/init.common.rc @@ -623,8 +623,8 @@ service loc_launcher /system/bin/loc_launcher service init-radio-sh /system/bin/init.radio.sh class late_start - user root - group system radio + user radio + group root radio oneshot service atfwd /system/bin/ATFWD-daemon From 74fc1b1aa3baf391c88ae40568215a96fb0d53fb Mon Sep 17 00:00:00 2001 From: Vineeta Srivastava Date: Thu, 16 Jun 2016 21:29:48 +0000 Subject: [PATCH 26/99] Revert "marlin: Update to AU 199 drop" This reverts commit 84b40705895f6166e90b109430f0dbd53aac604a. Change-Id: I50e5abb0cb52a5fa760701dcc0d8e12db0e222b8 --- common/power/power-8996.c | 51 --------------------------------------- common/power/power.c | 33 +++++++++++++++++++++++++ common/power/utils.h | 2 -- 3 files changed, 33 insertions(+), 53 deletions(-) diff --git a/common/power/power-8996.c b/common/power/power-8996.c index c64508ef..d5d1cc79 100644 --- a/common/power/power-8996.c +++ b/common/power/power-8996.c @@ -212,54 +212,6 @@ static int process_video_encode_hint(void *metadata) return HINT_NONE; } -static int process_activity_launch_hint(void *data) -{ - char governor[80]; - static int launch_handle = -1; - static int launch_mode; - /*Default duration of 2 seconds launch boost*/ - int duration = 0; - if (get_scaling_governor(governor, sizeof(governor)) == -1) { - ALOGE("Can't obtain scaling governor."); - - return HINT_NONE; - } - - ALOGD("LAUNCH HINT: %s", data ? "ON" : "OFF"); - if (data && launch_mode == 0) { - int eas_launch_resources[] = {0x40804000, 0xFFF, 0x40804100, 0xFFF, - 0x40800000, 0xFFF, 0x40800100, 0xFFF, - 0x41800000, 140, 0x40400000, 0x1, - 0x42C0C000, 0x1}; - int hmp_launch_resources[] = {0x40C00000, 0x1, 0x40804000, 0xFFF, - 0x40804100, 0xFFF, 0x40800000, 0xFFF, - 0x40800100, 0xFFF, 0x41800000, 140, - 0x40400000, 0x1, 0x42C0C000, 0x1}; - int* launch_resources; - size_t launch_resources_size; - if ((is_sched_energy_aware() == 0) && - (strncmp(governor, SCHED_GOVERNOR, strlen(SCHED_GOVERNOR)) == 0)) { - launch_resources = eas_launch_resources; - launch_resources_size = sizeof(eas_launch_resources) / sizeof(eas_launch_resources[0]); - } else if (strncmp(governor, INTERACTIVE_GOVERNOR, - strlen(INTERACTIVE_GOVERNOR)) == 0) { /*HMP boost*/ - launch_resources = hmp_launch_resources; - launch_resources_size = sizeof(hmp_launch_resources) / sizeof(hmp_launch_resources[0]); - } - launch_handle = interaction_with_handle( - launch_handle, duration, launch_resources_size, launch_resources); - if (launch_handle > 0) { - launch_mode = 1; - ALOGI("Activity launch hint handled"); - } - return HINT_HANDLED; - } else if (data == NULL && launch_mode == 1) { - release_request(launch_handle); - launch_mode = 0; - return HINT_HANDLED; - } - return HINT_NONE; -} int power_hint_override(struct power_module *module, power_hint_t hint, void *data) { int ret_val = HINT_NONE; @@ -272,9 +224,6 @@ int power_hint_override(struct power_module *module, power_hint_t hint, void *da case POWER_HINT_VIDEO_ENCODE: ret_val = process_video_encode_hint(data); break; - case POWER_HINT_LAUNCH: - ret_val = process_activity_launch_hint(data); - break; default: break; } diff --git a/common/power/power.c b/common/power/power.c index 1ca87f32..77630b81 100644 --- a/common/power/power.c +++ b/common/power/power.c @@ -95,6 +95,10 @@ static int slack_node_rw_failed = 0; static int display_hint_sent; int display_boost; +//launch boost global variables +static int s_launch_mode; +static int s_handle_launch; + static struct hw_module_methods_t power_module_methods = { .open = NULL, }; @@ -234,6 +238,7 @@ int __attribute__ ((weak)) power_hint_override(struct power_module *module, powe /* Declare function before use */ void interaction(int duration, int num_args, int opt_list[]); +int interaction_with_handle(int lock_handle, int duration, int num_args, int opt_list[]); void release_request(int lock_handle); static void power_hint(struct power_module *module, power_hint_t hint, @@ -248,6 +253,34 @@ static void power_hint(struct power_module *module, power_hint_t hint, switch(hint) { case POWER_HINT_VSYNC: break; + case POWER_HINT_LAUNCH: + { + char governor[80]; + + if (get_scaling_governor(governor, sizeof(governor)) == -1) { + ALOGE("Can't obtain scaling governor."); + return; + } + ALOGD("LAUNCH HINT: %s", data ? "ON" : "OFF"); + if (data && s_launch_mode == 0) { + int duration = 0; + if ((is_sched_energy_aware() != -1) && + (strncmp(governor, SCHED_GOVERNOR, strlen(SCHED_GOVERNOR)) == + 0)) { + // Setting schedtune boost to 50 and increasing DDR min_freq to + // 500MHz and increasing scaling_min_freq of CPUs to 900MHz. + int resources[] = {0x42C0C000, 0x32, 0x41800000, 0x33, + 0x40800000, 900, 0x40800100, 900}; + s_handle_launch = interaction_with_handle(s_handle_launch, duration, + sizeof(resources) / sizeof(resources[0]), resources); + s_launch_mode = 1; + } + } else if (s_launch_mode == 1){ + release_request(s_handle_launch); + s_launch_mode = 0; + } + } + break; case POWER_HINT_INTERACTION: { char governor[80]; diff --git a/common/power/utils.h b/common/power/utils.h index 7895ed7b..a4ec466b 100644 --- a/common/power/utils.h +++ b/common/power/utils.h @@ -43,5 +43,3 @@ void unvote_ondemand_sdf_low(); void perform_hint_action(int hint_id, int resource_values[], int num_resources); void undo_hint_action(int hint_id); -void release_request(int lock_handle); -int interaction_with_handle(int lock_handle, int duration, int num_args, int opt_list[]); From 01cc664c47cb5cf762a7a3e5b3069b8f448c0591 Mon Sep 17 00:00:00 2001 From: Jeff Vander Stoep Date: Thu, 16 Jun 2016 14:07:01 -0700 Subject: [PATCH 27/99] netmgrd: allow writing to /sys/devices/virtual/net avc: denied { write } for comm="netmgrd" name="rps_cpus" dev="sysfs" ino=46563 scontext=u:r:netmgrd:s0 tcontext=u:object_r:sysfs_net:s0 tclass=file Bug: 29410748 Change-Id: I323a252ae128d46cb49a268f46e16c1ee4ab04b6 --- sepolicy/netmgrd.te | 1 + 1 file changed, 1 insertion(+) diff --git a/sepolicy/netmgrd.te b/sepolicy/netmgrd.te index 22978914..dc9a9cca 100644 --- a/sepolicy/netmgrd.te +++ b/sepolicy/netmgrd.te @@ -44,6 +44,7 @@ set_prop(netmgrd, net_radio_prop) # read files in /sys r_dir_file(netmgrd, sysfs_type) +allow netmgrd sysfs_net:file write; userdebug_or_eng(` allow netmgrd diag_device:chr_file rw_file_perms; From 0f78348c246a0ca36b059052f81e7c4bd889eaf4 Mon Sep 17 00:00:00 2001 From: Jeff Vander Stoep Date: Thu, 16 Jun 2016 14:49:53 -0700 Subject: [PATCH 28/99] init_power: allow write to sysfs_power_management avc: denied { search } for comm="init.power.sh" name="parameters" dev="sysfs" ino=24602 scontext=u:r:init_power:s0 tcontext=u:object_r:sysfs_power_management:s0 tclass=dir In init.power.sh: write /sys/module/lpm_levels/parameters/sleep_disabled N Bug: 29410748 Change-Id: Ia538d71a8cd31470ecf8d88e786728bec2532f1c --- sepolicy/init_power.te | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sepolicy/init_power.te b/sepolicy/init_power.te index d72adcb3..c7e8e842 100644 --- a/sepolicy/init_power.te +++ b/sepolicy/init_power.te @@ -9,14 +9,14 @@ allow init_power toolbox_exec:file rx_file_perms; # files are created in /sys as this script executes. Grant # access to all of /sys to make this robust. +r_dir_file(init_power, sysfs_type) allow init_power sysfs:file { rw_file_perms relabelfrom }; allow init_power sysfs:dir { relabelfrom r_dir_perms }; allow init_power sysfs_devices_system_cpu:dir relabelto; allow init_power sysfs_devices_system_cpu:file { relabelto w_file_perms }; -allow init_power sysfs_msm_subsys:dir search; allow init_power sysfs_msm_subsys:file w_file_perms; -allow init_power sysfs_thermal:dir search; allow init_power sysfs_thermal:file w_file_perms; +allow init_power sysfs_power_management:file write; # write to files proc/sys/kernel/sched_* allow init_power proc_kernel_sched:file w_file_perms; From 41adba54e09c80fba01d70911a9b7f88b4b31432 Mon Sep 17 00:00:00 2001 From: Jeff Vander Stoep Date: Thu, 16 Jun 2016 21:06:41 -0700 Subject: [PATCH 29/99] NMD77: new selinux permissions Address new denials: atfwd avc: denied { set } for property=radio.atfwd.start pid=4223 uid=1000 gid=1000 scontext=u:r:atfwd:s0 tcontext=u:object_r:default_prop:s0 tclass=property_service avc: denied { connectto } for pid=4223 comm="ATFWD-daemon" path="/dev/socket/property_service" scontext=u:r:atfwd:s0 tcontext=u:r:init:s0 tclass=unix_stream_socket avc: denied { write } for pid=565 comm="ATFWD-daemon" name="property_service" dev="tmpfs" ino=14813 scontext=u:r:atfwd:s0 tcontext=u:object_r:property_socket:s0 tclass=sock_file perfd avc: denied { write } for pid=574 comm="perfd" name="low_power_ceil_mbps" dev="sysfs" ino=47700 scontext=u:r:perfd:s0 tcontext=u:object_r:sysfs:s0 tclass=file untrusted_app avc: denied { getattr } for pid=3987 comm="id.GoogleCamera" path="/dev/__properties__/u:object_r:camera_prop:s0" dev="tmpfs" ino=14773 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:camera_prop:s0 tclass=file avc: denied { open } for pid=3987 comm="id.GoogleCamera" path="/dev/__properties__/u:object_r:camera_prop:s0" dev="tmpfs" ino=14773 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:camera_prop:s0 tclass=file avc: denied { read } for pid=3987 comm="id.GoogleCamera" name="u:object_r:camera_prop:s0" dev="tmpfs" ino=14773 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:camera_prop:s0 tclass=file bug: 29410748 Change-Id: Ic4b4b3b334a2314259732b235bdf310d758c09c4 --- sepolicy/atfwd.te | 2 ++ sepolicy/cnd.te | 4 +--- sepolicy/domain.te | 2 ++ sepolicy/perfd.te | 8 +++++++- sepolicy/property_contexts | 1 + sepolicy/rild.te | 5 +---- 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/sepolicy/atfwd.te b/sepolicy/atfwd.te index 9ff97fd6..a4f4055e 100644 --- a/sepolicy/atfwd.te +++ b/sepolicy/atfwd.te @@ -11,3 +11,5 @@ allow atfwd self:socket create_socket_perms; allowxperm atfwd self:socket ioctl msm_sock_ipc_ioctls; r_dir_file(atfwd, sysfs_type) + +set_prop(atfwd, radio_prop) diff --git a/sepolicy/cnd.te b/sepolicy/cnd.te index 86155b8e..f6d2f33b 100755 --- a/sepolicy/cnd.te +++ b/sepolicy/cnd.te @@ -27,9 +27,7 @@ allow cnd self:netlink_tcpdiag_socket create_socket_perms; allow cnd self:socket create_socket_perms; allowxperm cnd self:socket ioctl msm_sock_ipc_ioctls; -allow cnd sysfs:dir r_dir_perms; -r_dir_file(cnd, sysfs_msm_subsys) -r_dir_file(cnd, sysfs_soc) +r_dir_file(cnd, sysfs_type) userdebug_or_eng(` allow cnd diag_device:chr_file rw_file_perms; diff --git a/sepolicy/domain.te b/sepolicy/domain.te index 871963fc..dbdb86e8 100644 --- a/sepolicy/domain.te +++ b/sepolicy/domain.te @@ -1,3 +1,5 @@ +get_prop(domain, camera_prop) + dontaudit domain self:capability sys_module; # limit the socket ioctl commands granted to all domain processes. diff --git a/sepolicy/perfd.te b/sepolicy/perfd.te index e3288bc1..a78d1a10 100644 --- a/sepolicy/perfd.te +++ b/sepolicy/perfd.te @@ -15,7 +15,13 @@ allow perfd proc_kernel_sched:file r_file_perms; # read access /sys r_dir_file(perfd, sysfs_type) -# write to select files in /sys +# normally write is not granted to the default "sysfs" label. +# In this case, perfd needs access to files in /sys that are +# commonly created and destroyed. When the kernel creates them, +# they are created with the default label "sysfs". For robustness, +# allow perfd to write to "sysfs" to ensure it can optimally +# tune the power/cpu settings. +allow perfd sysfs:file write; allow perfd sysfs_perf:file write; allow perfd sysfs_msm_subsys:file write; allow perfd sysfs_devices_system_cpu:file write; diff --git a/sepolicy/property_contexts b/sepolicy/property_contexts index 43214482..7eb117f2 100644 --- a/sepolicy/property_contexts +++ b/sepolicy/property_contexts @@ -3,3 +3,4 @@ htc.camera. u:object_r:camera_prop:s0 sensors. u:object_r:sensors_prop:s0 wc_transport. u:object_r:wc_prop:s0 net.r_rmnet u:object_r:net_radio_prop:s0 +radio. u:object_r:radio_prop:s0 diff --git a/sepolicy/rild.te b/sepolicy/rild.te index 46c8c082..cebcfe08 100644 --- a/sepolicy/rild.te +++ b/sepolicy/rild.te @@ -10,11 +10,8 @@ binder_call(rild, per_mgr) allow rild netmgrd_socket:dir search; unix_socket_connect(rild, netmgrd, netmgrd) -allow rild per_mgr:binder { call transfer }; -allow rild servicemanager:binder call; -r_dir_file(rild, sysfs_msm_subsys) -r_dir_file(rild, sysfs_soc) +r_dir_file(rild, sysfs_type) allow rild time:unix_stream_socket connectto; From b2ec0fd81ff2d67187871ef3a7e3ed793e434993 Mon Sep 17 00:00:00 2001 From: Todd Kjos Date: Fri, 17 Jun 2016 09:23:34 -0700 Subject: [PATCH 30/99] Adjust video encode hint to bias toward better performance The hint can be used to adjust power/performance when the video encode hint is active. Apparently it was too biased towards saving power. Change-Id: I5afec750a66fa9be87ddde31cdc79d0f0fa45a7d --- common/power/power-8996.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/common/power/power-8996.c b/common/power/power-8996.c index d5d1cc79..536df6b3 100644 --- a/common/power/power-8996.c +++ b/common/power/power-8996.c @@ -102,8 +102,12 @@ static int process_cam_preview_hint(void *metadata) return HINT_HANDLED; } else if ((strncmp(governor, SCHED_GOVERNOR, strlen(SCHED_GOVERNOR)) == 0) && (strlen(governor) == strlen(SCHED_GOVERNOR))) { - int resource_values[] = {0x41810000, 0x9C4, 0x41814000, 0x32, - 0x42C10000, 0x64, 0x42C14000, 0x64}; + /* + * lower bus BW to save power + * 0x41810000: low power ceil mpbs = 2500 + * 0x41814000: low power io percent = 50 + */ + int resource_values[] = {0x41810000, 0x9C4, 0x41814000, 0x32}; perform_hint_action( cam_preview_metadata.hint_id, resource_values, @@ -184,15 +188,14 @@ static int process_video_encode_hint(void *metadata) (strlen(governor) == strlen(SCHED_GOVERNOR))) { /* 1. bus DCVS set to V2 config: - * -low power ceil mpbs - 2500 - * -low power io percent - 50 + * 0x41810000: low power ceil mpbs - 2500 + * 0x41814000: low power io percent - 50 * 2. hysteresis optimization - * -bus dcvs hysteresis tuning - * -sample_ms of 10 ms + * 0x4180C000: bus dcvs hysteresis tuning + * 0x41820000: sample_ms of 10 ms */ int resource_values[] = {0x41810000, 0x9C4, 0x41814000, 0x32, - 0x4180C000, 0x0, 0x41820000, 0xA, - 0x42C10000, 0x64, 0x42C14000, 0x64}; + 0x4180C000, 0x0, 0x41820000, 0xA}; perform_hint_action(video_encode_metadata.hint_id, resource_values, sizeof(resource_values)/sizeof(resource_values[0])); From 5213da92cad5e30d5a63e52b8c397f5d7b48718e Mon Sep 17 00:00:00 2001 From: Jeff Vander Stoep Date: Wed, 22 Jun 2016 09:35:22 -0700 Subject: [PATCH 31/99] update_engine: flip back into permissive mode Bug: 29569601 Change-Id: I0e918f0e8125908a2846f40a54c5cb11e6cebb4d --- sepolicy/update_engine.te | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sepolicy/update_engine.te b/sepolicy/update_engine.te index 37078bad..1d0a1fdc 100644 --- a/sepolicy/update_engine.te +++ b/sepolicy/update_engine.te @@ -1,3 +1,7 @@ +userdebug_or_eng(` + permissive update_engine; +') + # Allow update_engine read/write on the device-specific partitions it should # update. allow update_engine { From 7da5f853d11f4d4d5a0d21583c1a503d643c7860 Mon Sep 17 00:00:00 2001 From: Srinath Sridharan Date: Wed, 22 Jun 2016 09:24:33 -0700 Subject: [PATCH 32/99] EAS: Capping the max freq of silver core to 1.6GHz BUG: 28627698 Change-Id: I525a1a1c83338d6cbade83d6bdee056875d7c300 --- init.power.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/init.power.sh b/init.power.sh index e2393a1b..680892e2 100755 --- a/init.power.sh +++ b/init.power.sh @@ -36,6 +36,9 @@ write /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis 79000 write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 300000 write /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif 0 +# EAS: Capping the max frequency of silver core to 1.6GHz +write /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 1593600 + write /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor interactive write /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_sched_load 1 write /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_migration_notif 1 From 894540efc21a2c37f916f59081a9fd2d5ece1296 Mon Sep 17 00:00:00 2001 From: Srinath Sridharan Date: Wed, 22 Jun 2016 09:24:33 -0700 Subject: [PATCH 33/99] EAS: Capping the max freq of silver core to 1.6GHz BUG: 28627698 Change-Id: I525a1a1c83338d6cbade83d6bdee056875d7c300 From cab06b007c0e2bc7c1f4fd2b4ce120014ea5b9f8 Mon Sep 17 00:00:00 2001 From: jasmine cha Date: Thu, 16 Jun 2016 14:31:14 +0800 Subject: [PATCH 34/99] marlin: audio: update device tuning table(0616) 1. Modify Audio voice call Headset volume to fix minimum volume too loud bug. 2. Modify volume-dependent IIR setting for SPK playback Bug: 29271252 Change-Id: Id4b73e8693abe8020e6e827665d8a28aebc0e24b Signed-off-by: jasmine cha --- audio_platform_info.xml | 7 +++++++ audio_policy_volumes_drc.xml | 6 +++--- mixer_paths.xml | 4 ++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/audio_platform_info.xml b/audio_platform_info.xml index bb4aa0f3..3d2f9b41 100644 --- a/audio_platform_info.xml +++ b/audio_platform_info.xml @@ -63,5 +63,12 @@ + + + + + + + diff --git a/audio_policy_volumes_drc.xml b/audio_policy_volumes_drc.xml index 20e17dbb..9d498cb9 100644 --- a/audio_policy_volumes_drc.xml +++ b/audio_policy_volumes_drc.xml @@ -24,9 +24,9 @@ volume index from 0 to 100. - 0,-2499 - 38,-1530 - 56,-1040 + 0,-4000 + 33,-2700 + 66,-1300 100,0 diff --git a/mixer_paths.xml b/mixer_paths.xml index 754bdc77..c4209c0f 100644 --- a/mixer_paths.xml +++ b/mixer_paths.xml @@ -1220,14 +1220,14 @@ - + - + From 3b20c5dd8f25f7096e2a825e2e59255a66b24f89 Mon Sep 17 00:00:00 2001 From: Vineeta Srivastava Date: Fri, 24 Jun 2016 11:12:47 -0700 Subject: [PATCH 35/99] Update apn settings for Verizon updating mmsc url Bug: 29307584 Change-Id: I50deb3840234d9a32482c9d0cc9207fbe398cd7d --- apns-full-conf.xml | 48 +++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/apns-full-conf.xml b/apns-full-conf.xml index 61c2917a..b4332c58 100644 --- a/apns-full-conf.xml +++ b/apns-full-conf.xml @@ -127,7 +127,7 @@ mcc="001" mnc="01" apn="VZWINTERNET" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" type="default,dun" carrier_enabled="false" protocol="IPV4V6" @@ -141,7 +141,7 @@ mcc="001" mnc="01" apn="VZWINTERNET" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" type="default,dun" authtype="0" protocol="IPV4V6" @@ -216,7 +216,7 @@ mcc="001" mnc="010" apn="VZWINTERNET" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" type="default,dun" carrier_enabled="false" protocol="IPV4V6" @@ -229,7 +229,7 @@ mcc="001" mnc="010" apn="VZWINTERNET" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" type="default,dun" authtype="0" protocol="IPV4V6" @@ -496,7 +496,7 @@ apn="VZWAPP" type="cbs,mms" authtype="0" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" mvno_type="gid" @@ -513,7 +513,7 @@ apn="VZWAPP" type="cbs,mms" authtype="0" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer_bitmask="13|18" @@ -5127,7 +5127,7 @@ mcc="246" mnc="081" apn="VZWINTERNET" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" type="default,dun" carrier_enabled="false" protocol="IPV4V6" @@ -5140,7 +5140,7 @@ mcc="246" mnc="081" apn="VZWINTERNET" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" type="default,dun" protocol="IPV4V6" roaming_protocol="IPV4V6" @@ -5155,7 +5155,7 @@ mcc="246" mnc="081" apn="VZWINTERNET" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" type="default,dun" protocol="IPV4V6" roaming_protocol="IPV4V6" @@ -5274,7 +5274,7 @@ mcc="246" mnc="81" apn="VZWINTERNET" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" type="default,dun" carrier_enabled="false" protocol="IPV4V6" @@ -5287,7 +5287,7 @@ mcc="246" mnc="81" apn="VZWINTERNET" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" type="default,dun" protocol="IPV4V6" roaming_protocol="IPV4V6" @@ -5302,7 +5302,7 @@ mcc="246" mnc="81" apn="VZWINTERNET" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" type="default,dun" protocol="IPV4V6" roaming_protocol="IPV4V6" @@ -7325,7 +7325,7 @@ @@ -8141,7 +8141,7 @@ apn="internet" authtype="3" type="default,mms,supl,fota,ims,cbs,dun" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" bearer_bitmask="4|5|6|7|8|12" profile_id="1" @@ -8198,7 +8198,7 @@ mnc="004" apn="VZWAPP" type="cbs,mms" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer_bitmask="13|14|18" @@ -8212,7 +8212,7 @@ mcc="310" mnc="028" apn="VZWINTERNET" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" type="default,dun" protocol="IPV4V6" roaming_protocol="IPV4V6" @@ -8240,7 +8240,7 @@ mcc="310" mnc="028" apn="VZWAPP" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" type="cbs,mms" protocol="IPV4V6" roaming_protocol="IPV4V6" @@ -13390,7 +13390,7 @@ mcc="311" mnc="390" apn="VZWINTERNET" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" type="default,dun" authtype="0" protocol="IPV4V6" @@ -13406,7 +13406,7 @@ mcc="311" mnc="390" apn="VZWINTERNET" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" type="default,dun" authtype="0" protocol="IPV4V6" @@ -13482,7 +13482,7 @@ mcc="311" mnc="390" apn="VZWAPP" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" type="cbs,mms" authtype="0" protocol="IPV4V6" @@ -13498,7 +13498,7 @@ mcc="311" mnc="390" apn="VZWAPP" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" type="cbs,mms" authtype="0" protocol="IPV4V6" @@ -13991,7 +13991,7 @@ apn="internet" authtype="3" type="default,mms,supl,fota,ims,cbs,dun" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" bearer_bitmask="4|5|6|7|8|12" user_visible="false" @@ -14054,7 +14054,7 @@ apn="VZWAPP" type="cbs,mms" authtype="0" - mmsc="http://mms.vzwreseller.com/servlets/mms" + mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer_bitmask="1|2|3|9|10|11|13|14|15|18" From 16e1c078e2511306fff3b5fde71e123bb3df78f0 Mon Sep 17 00:00:00 2001 From: Naseer Ahmed Date: Fri, 24 Jun 2016 16:03:31 -0400 Subject: [PATCH 36/99] marlin: Disable split rotator sessions Bug: 29410538 Change-Id: Iba83ab2227c17463c21a1342869811acbfd4e559 --- device-common.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/device-common.mk b/device-common.mk index 427ec9e8..f1d042f1 100644 --- a/device-common.mk +++ b/device-common.mk @@ -335,6 +335,9 @@ PRODUCT_PACKAGES_DEBUG += \ PRODUCT_PROPERTY_OVERRIDES += \ ro.frp.pst=/dev/block/platform/soc/624000.ufshc/by-name/frp +PRODUCT_PROPERTY_OVERRIDES += \ + sdm.debug.disable_rotator_split=1 + # OEM Unlock reporting ADDITIONAL_DEFAULT_PROPERTIES += \ ro.oem_unlock_supported=1 From 4b19d760aec6e33239c6f183a0ea7da31e110e9c Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Mon, 27 Jun 2016 12:14:31 -0700 Subject: [PATCH 37/99] marlin: remove BCL hotplug disable/enable from init BCL hotplug is disabled in DTS already This patch should resolve risk of racing condition of store hotplug mask Bug: 29547080 Change-Id: I4ccbda943095d6d8bb02c140d7cedebd85ae9710 --- init.power.sh | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/init.power.sh b/init.power.sh index 680892e2..6201daec 100755 --- a/init.power.sh +++ b/init.power.sh @@ -13,14 +13,8 @@ function copy() { ################################################################################ -# disable thermal bcl hotplug to switch governor +# disable thermal hotplug to switch governor write /sys/module/msm_thermal/core_control/enabled 0 -write /sys/devices/soc/soc:qcom,bcl/mode disable -bcl_hotplug_mask=`cat /sys/devices/soc/soc:qcom,bcl/hotplug_mask` -write /sys/devices/soc/soc:qcom,bcl/hotplug_mask 0 -bcl_soc_hotplug_mask=`cat /sys/devices/soc/soc:qcom,bcl/hotplug_soc_mask` -write /sys/devices/soc/soc:qcom,bcl/hotplug_soc_mask 0 -write /sys/devices/soc/soc:qcom,bcl/mode enable write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor interactive write /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load 1 @@ -59,12 +53,8 @@ write /sys/devices/system/cpu/cpu2/cpufreq/interactive/ignore_hispeed_on_notif 0 write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "sched" write /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor "sched" -# re-enable thermal and BCL hotplug +# re-enable thermal hotplug write /sys/module/msm_thermal/core_control/enabled 1 -write /sys/devices/soc/soc:qcom,bcl/mode disable -write /sys/devices/soc/soc:qcom,bcl/hotplug_mask $bcl_hotplug_mask -write /sys/devices/soc/soc:qcom,bcl/hotplug_soc_mask $bcl_soc_hotplug_mask -write /sys/devices/soc/soc:qcom,bcl/mode enable # input boost configuration write /sys/module/cpu_boost/parameters/input_boost_freq "0:1324800 2:1324800" From ace744c1e14a9add4c854bfca44fdde19de7b9cf Mon Sep 17 00:00:00 2001 From: Vineeta Srivastava Date: Mon, 27 Jun 2016 16:40:08 -0700 Subject: [PATCH 38/99] Add Verizon Wireless to SPN conf. Bug: 29743478 Change-Id: Ie7668911e1bc63c23a1755c113ed64f1666d6152 --- spn-conf.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spn-conf.xml b/spn-conf.xml index e858dc3b..b4b9c8f2 100644 --- a/spn-conf.xml +++ b/spn-conf.xml @@ -2,6 +2,7 @@ + @@ -26,6 +27,7 @@ + From dc9f78b6b314735f7ae9eca625f6cef89b0f35fd Mon Sep 17 00:00:00 2001 From: kurt_huang Date: Wed, 29 Jun 2016 02:33:11 +0800 Subject: [PATCH 39/99] Marlin/Sailfish: enable modem subsystem silent restart Bug: 29527429 Bug: 29750774 Change-Id: I11cab9ba43e5220206971ca69ef78edf2a1f0a87 --- device-common.mk | 4 ++++ init.common.rc | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/device-common.mk b/device-common.mk index 0d8887d0..048d628b 100644 --- a/device-common.mk +++ b/device-common.mk @@ -276,6 +276,10 @@ PRODUCT_COPY_FILES += \ device/google/marlin/init.common.diag.rc.user:root/init.common.diag.rc endif +# Subsystem silent restart +PRODUCT_PROPERTY_OVERRIDES += \ + persist.sys.ssr.restart_level=modem + PRODUCT_COPY_FILES += \ device/google/marlin/thermal-engine-marlin.conf:system/etc/thermal-engine.conf diff --git a/init.common.rc b/init.common.rc index 734ab3ad..534d731b 100755 --- a/init.common.rc +++ b/init.common.rc @@ -505,8 +505,10 @@ service energy-awareness /system/bin/energy-awareness oneshot service ssr_setup /system/bin/ssr_setup + class main + user root + group root system oneshot - disabled service ss_ramdump /system/bin/subsystem_ramdump class main @@ -517,7 +519,6 @@ service ss_ramdump /system/bin/subsystem_ramdump on property:persist.sys.ssr.enable_ramdumps=1 write /sys/module/subsystem_restart/parameters/enable_ramdumps 1 mkdir /data/ramdump 760 root root - start ssr_setup start ss_ramdump on property:persist.sys.ssr.enable_ramdumps=0 From e6d136dbb5a289c68c2ef3371a06733b5f706c8f Mon Sep 17 00:00:00 2001 From: kurt_huang Date: Thu, 30 Jun 2016 06:32:44 +0800 Subject: [PATCH 40/99] Marlin/Sailfish: enable SSR for venus, AR6320, and slpi Bug: 29877780 Change-Id: Ibefadc4fe47bdd9a84cfd046cabe72608466f595 --- device-common.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device-common.mk b/device-common.mk index 048d628b..8ef57517 100644 --- a/device-common.mk +++ b/device-common.mk @@ -278,7 +278,7 @@ endif # Subsystem silent restart PRODUCT_PROPERTY_OVERRIDES += \ - persist.sys.ssr.restart_level=modem + persist.sys.ssr.restart_level=venus,AR6320,slpi,modem PRODUCT_COPY_FILES += \ device/google/marlin/thermal-engine-marlin.conf:system/etc/thermal-engine.conf From ddd8b6708b1d8381f54dba341ca264d09e0b5b5f Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Wed, 29 Jun 2016 23:51:09 +0000 Subject: [PATCH 41/99] Revert "marlin: remove core control from msm-thermal" This reverts commit 265a654ec1ceb65e8209dcabb117f1dc3215988e. Change-Id: I906f015d8bffa48b2a63f7a0754636dd7577352c --- init.power.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/init.power.sh b/init.power.sh index 0fad94b6..6201daec 100755 --- a/init.power.sh +++ b/init.power.sh @@ -13,6 +13,9 @@ function copy() { ################################################################################ +# disable thermal hotplug to switch governor +write /sys/module/msm_thermal/core_control/enabled 0 + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor interactive write /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load 1 write /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif 1 @@ -50,6 +53,9 @@ write /sys/devices/system/cpu/cpu2/cpufreq/interactive/ignore_hispeed_on_notif 0 write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "sched" write /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor "sched" +# re-enable thermal hotplug +write /sys/module/msm_thermal/core_control/enabled 1 + # input boost configuration write /sys/module/cpu_boost/parameters/input_boost_freq "0:1324800 2:1324800" write /sys/module/cpu_boost/parameters/input_boost_ms 40 From 2f8aced38ef0417f7c15e61b257d80bd11ee2737 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Thu, 30 Jun 2016 11:27:20 -0700 Subject: [PATCH 42/99] marlin: bring up cores before make governor change Bug: 29899885 Change-Id: Ia0cf3a54dcfeab3b199ca3830912bf9070b61f1c --- init.power.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/init.power.sh b/init.power.sh index 6201daec..8da2f7e6 100755 --- a/init.power.sh +++ b/init.power.sh @@ -16,6 +16,10 @@ function copy() { # disable thermal hotplug to switch governor write /sys/module/msm_thermal/core_control/enabled 0 +# bring back main cores CPU 0,2 +write /sys/devices/system/cpu/cpu0/online 1 +write /sys/devices/system/cpu/cpu2/online 1 + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor interactive write /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load 1 write /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif 1 From 3c44d0315f9278e4288f56781fab19f9c03b7f36 Mon Sep 17 00:00:00 2001 From: Philip Cuadra Date: Thu, 7 Jul 2016 11:15:06 -0700 Subject: [PATCH 43/99] Enable Camera App pinning on Marlin / Sailfish This change enables Camera app pinning on Marlin / Sailfish Bug 28251566 Change-Id: Icc357441af65e8ece897311bdaf8acc063d3f6ab --- overlay/frameworks/base/core/res/res/values/config.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml index 8193d2ed..a0b308c2 100755 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -419,6 +419,9 @@ "/system/framework/arm64/boot-core-libart.oat" + + true + true From a3549589a38eda1a64128ad1ce575bb70af39321 Mon Sep 17 00:00:00 2001 From: Howard Yen Date: Wed, 29 Jun 2016 20:45:09 +0800 Subject: [PATCH 44/99] usb: remove radio debug function Bug: 29154113 Bug: 29837642 Change-Id: Ie5c32c89084ff515e22fc71a9e8279b915fcd385 Signed-off-by: Howard Yen --- init.common.diag.rc.user | 3 --- init.common.diag.rc.userdebug | 1 - 2 files changed, 4 deletions(-) diff --git a/init.common.diag.rc.user b/init.common.diag.rc.user index efdd8f0c..65f6a3bf 100755 --- a/init.common.diag.rc.user +++ b/init.common.diag.rc.user @@ -2,6 +2,3 @@ on property:ro.boot.mode=normal rm /dev/diag - -on boot - setprop persist.sys.usb.config diag,serial_cdev,serial_tty,rmnet_ipa,mass_storage diff --git a/init.common.diag.rc.userdebug b/init.common.diag.rc.userdebug index 831a9a23..0aa4eb76 100644 --- a/init.common.diag.rc.userdebug +++ b/init.common.diag.rc.userdebug @@ -17,7 +17,6 @@ on post-fs-data on boot chmod 666 /dev/diag - setprop persist.sys.usb.config diag,serial_cdev,serial_tty,rmnet_ipa,mass_storage,adb on property:sys.usb.config=rndis,diag write /sys/class/android_usb/android0/enable 0 From e760dd124b6f067cccb1467c0229eaf5edd74a31 Mon Sep 17 00:00:00 2001 From: ocean_chen Date: Wed, 6 Jul 2016 14:12:59 +0800 Subject: [PATCH 45/99] marlin/sailfish : shrink system partition size Bug: 29983290 Change-Id: Ib17579ab866ace35e6be40f14b7a8fe94a70ade6 Signed-off-by: ocean_chen --- marlin/BoardConfig.mk | 2 +- sailfish/BoardConfig.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/marlin/BoardConfig.mk b/marlin/BoardConfig.mk index fda69258..eb127682 100644 --- a/marlin/BoardConfig.mk +++ b/marlin/BoardConfig.mk @@ -78,7 +78,7 @@ OVERRIDE_RS_DRIVER:= libRSDriver_adreno.so TARGET_USERIMAGES_USE_EXT4 := true BOARD_BOOTIMAGE_PARTITION_SIZE := 0x04000000 -BOARD_SYSTEMIMAGE_PARTITION_SIZE := 3221225472 +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2147483648 #BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE := squashfs #BOARD_SYSTEMIMAGE_JOURNAL_SIZE := 0 #BOARD_SYSTEMIMAGE_SQUASHFS_COMPRESSOR := lz4 diff --git a/sailfish/BoardConfig.mk b/sailfish/BoardConfig.mk index 6eef7a65..61e73ea9 100644 --- a/sailfish/BoardConfig.mk +++ b/sailfish/BoardConfig.mk @@ -78,7 +78,7 @@ OVERRIDE_RS_DRIVER:= libRSDriver_adreno.so TARGET_USERIMAGES_USE_EXT4 := true BOARD_BOOTIMAGE_PARTITION_SIZE := 0x04000000 -BOARD_SYSTEMIMAGE_PARTITION_SIZE := 3221225472 +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2147483648 BOARD_USERDATAIMAGE_PARTITION_SIZE := 10737418240 BOARD_PERSISTIMAGE_PARTITION_SIZE := 33554432 BOARD_PERSISTIMAGE_FILE_SYSTEM_TYPE := ext4 From 48adc4296b57948ead677826dd9817bea29a0c39 Mon Sep 17 00:00:00 2001 From: Dan Stoza Date: Fri, 8 Jul 2016 12:49:38 -0700 Subject: [PATCH 46/99] Relax DispSync offsets to -8/-12 Relaxes the DispSync offsets so that SurfaceFlinger wakes up at -8.6 ms and apps wake up at -12.6 such that SF doesn't get into a bad state when device clocks drop. Bug: 29413700 Change-Id: I8419fd100977e1fa20f1117caeb462f496011003 --- marlin/BoardConfig.mk | 4 ++-- sailfish/BoardConfig.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/marlin/BoardConfig.mk b/marlin/BoardConfig.mk index eb127682..072b860c 100644 --- a/marlin/BoardConfig.mk +++ b/marlin/BoardConfig.mk @@ -40,8 +40,8 @@ TARGET_USES_OVERLAY := true TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS := true MAX_VIRTUAL_DISPLAY_DIMENSION := 4096 TARGET_USES_HWC2 := true -VSYNC_EVENT_PHASE_OFFSET_NS := 8600000 -SF_VSYNC_EVENT_PHASE_OFFSET_NS := 12600000 +VSYNC_EVENT_PHASE_OFFSET_NS := 4000000 +SF_VSYNC_EVENT_PHASE_OFFSET_NS := 8000000 BOARD_USES_GENERIC_AUDIO := true diff --git a/sailfish/BoardConfig.mk b/sailfish/BoardConfig.mk index 61e73ea9..4d9ff183 100644 --- a/sailfish/BoardConfig.mk +++ b/sailfish/BoardConfig.mk @@ -40,8 +40,8 @@ TARGET_USES_OVERLAY := true TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS := true MAX_VIRTUAL_DISPLAY_DIMENSION := 4096 TARGET_USES_HWC2 := true -VSYNC_EVENT_PHASE_OFFSET_NS := 8600000 -SF_VSYNC_EVENT_PHASE_OFFSET_NS := 12600000 +VSYNC_EVENT_PHASE_OFFSET_NS := 4000000 +SF_VSYNC_EVENT_PHASE_OFFSET_NS := 8000000 BOARD_USES_GENERIC_AUDIO := true From b541882c6b1a1f478a23de9c87492c7685a92711 Mon Sep 17 00:00:00 2001 From: Meng Wang Date: Fri, 8 Jul 2016 13:34:30 -0700 Subject: [PATCH 47/99] overlay: set UA string/profile for VZW VZW mcc-mnc: 310-004, 311-480 Bug: 29443752 Change-Id: Idc0d6c2a0013f9a42c0685b8eb5f4d346922b1e1 --- .../res/res/values-mcc310-mnc004/config.xml | 5 ++++ .../res/res/values-mcc311-mnc480/config.xml | 5 ++++ .../res/res/values-mcc310-mnc004/config.xml | 29 +++++++++++++++++++ .../res/res/values-mcc311-mnc480/config.xml | 29 +++++++++++++++++++ 4 files changed, 68 insertions(+) create mode 100644 sailfish/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml create mode 100644 sailfish/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml index f4a2e3cc..8f03ebeb 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml @@ -65,4 +65,9 @@ com.google.android.carrierentitlement.SILENT_ENTITLEMENT_CHECK com.google.android.carrierentitlement.SILENT_ENTITLEMENT_CHECK_RESULT + + g2pw2100 + + http://uaprof.vtext.com/htc/g2pw2100/g2pw2100.xml + diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml index 4a099997..e597840c 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml @@ -69,4 +69,9 @@ com.google.android.carrierentitlement.SILENT_ENTITLEMENT_CHECK_RESULT + + g2pw2100 + + http://uaprof.vtext.com/htc/g2pw2100/g2pw2100.xml + diff --git a/sailfish/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml b/sailfish/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml new file mode 100644 index 00000000..62eed99b --- /dev/null +++ b/sailfish/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml @@ -0,0 +1,29 @@ + + + + + + + + g2pw4100 + + http://uaprof.vtext.com/htc/g2pw4100/g2pw4100.xml + + diff --git a/sailfish/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml b/sailfish/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml new file mode 100644 index 00000000..62eed99b --- /dev/null +++ b/sailfish/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml @@ -0,0 +1,29 @@ + + + + + + + + g2pw4100 + + http://uaprof.vtext.com/htc/g2pw4100/g2pw4100.xml + + From 529936cec2c19becb028d8238f903437e5557d75 Mon Sep 17 00:00:00 2001 From: Tim Murray Date: Mon, 11 Jul 2016 11:39:38 -0700 Subject: [PATCH 48/99] Add support for foreground and top-app stune groups. bug 29512132 Change-Id: I6f6323f7266ecfff3c6dc820acab6953502464dd --- init.common.rc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/init.common.rc b/init.common.rc index c84a6386..6edc5fae 100755 --- a/init.common.rc +++ b/init.common.rc @@ -228,8 +228,9 @@ on boot write /dev/cpuset/foreground/boost/cpus 0-2 write /dev/cpuset/background/cpus 0 write /dev/cpuset/system-background/cpus 0-2 - # set default schedTune value for foreground (only affects EAS) - write /dev/stune/foreground/schedtune.boost 10 + # set default schedTune value for foreground/top-app (only affects EAS) + write /dev/stune/foreground/schedtune.boost 1 + write /dev/stune/top-app/schedtune.boost 10 # add a cpuset for the camera daemon # we want all cores for camera From 53c5ad0ae169bf8eb406b8115a682d99460ec263 Mon Sep 17 00:00:00 2001 From: Kalle Raita Date: Mon, 11 Jul 2016 13:36:36 -0700 Subject: [PATCH 49/99] Add Vulkan support for Marlin and Sailfish Add Vulkan feature level 0 and spec version 1.0.3 Android feature descriptors into the build. Bug: 29459458 Change-Id: I6b2bd8f106ecfb45fc2b0e5d9977f87c51912299 --- device-common.mk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/device-common.mk b/device-common.mk index 2c0603f7..cdecf7f3 100644 --- a/device-common.mk +++ b/device-common.mk @@ -90,7 +90,9 @@ PRODUCT_COPY_FILES += \ frameworks/av/services/audiopolicy/config/a2dp_audio_policy_configuration.xml:system/etc/a2dp_audio_policy_configuration.xml \ frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:system/etc/r_submix_audio_policy_configuration.xml \ frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:system/etc/usb_audio_policy_configuration.xml \ - frameworks/av/services/audiopolicy/config/default_volume_tables.xml:system/etc/default_volume_tables.xml + frameworks/av/services/audiopolicy/config/default_volume_tables.xml:system/etc/default_volume_tables.xml \ + frameworks/native/data/etc/android.hardware.vulkan.level-0.xml:system/etc/permissions/android.hardware.vulkan.level.xml \ + frameworks/native/data/etc/android.hardware.vulkan.version-1_0_3.xml:system/etc/permissions/android.hardware.vulkan.version.xml # Audio effects PRODUCT_PACKAGES += \ From 802ee931e419a7369db9915e85ee5a5ad18e6b40 Mon Sep 17 00:00:00 2001 From: ocean_chen Date: Wed, 6 Jul 2016 14:12:59 +0800 Subject: [PATCH 50/99] marlin/sailfish : shrink system partition size Bug: 29983290 Change-Id: Ib17579ab866ace35e6be40f14b7a8fe94a70ade6 Signed-off-by: ocean_chen --- marlin/BoardConfig.mk | 2 +- sailfish/BoardConfig.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/marlin/BoardConfig.mk b/marlin/BoardConfig.mk index a847d9e5..42298194 100644 --- a/marlin/BoardConfig.mk +++ b/marlin/BoardConfig.mk @@ -76,7 +76,7 @@ OVERRIDE_RS_DRIVER:= libRSDriver_adreno.so TARGET_USERIMAGES_USE_EXT4 := true BOARD_BOOTIMAGE_PARTITION_SIZE := 0x04000000 -BOARD_SYSTEMIMAGE_PARTITION_SIZE := 3221225472 +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2147483648 #BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE := squashfs #BOARD_SYSTEMIMAGE_JOURNAL_SIZE := 0 #BOARD_SYSTEMIMAGE_SQUASHFS_COMPRESSOR := lz4 diff --git a/sailfish/BoardConfig.mk b/sailfish/BoardConfig.mk index 15c59d84..754679c9 100644 --- a/sailfish/BoardConfig.mk +++ b/sailfish/BoardConfig.mk @@ -76,7 +76,7 @@ OVERRIDE_RS_DRIVER:= libRSDriver_adreno.so TARGET_USERIMAGES_USE_EXT4 := true BOARD_BOOTIMAGE_PARTITION_SIZE := 0x04000000 -BOARD_SYSTEMIMAGE_PARTITION_SIZE := 3221225472 +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2147483648 BOARD_USERDATAIMAGE_PARTITION_SIZE := 10737418240 BOARD_PERSISTIMAGE_PARTITION_SIZE := 33554432 BOARD_PERSISTIMAGE_FILE_SYSTEM_TYPE := ext4 From 9e12ad53a947d084254f861bd3f916b2c2d290fd Mon Sep 17 00:00:00 2001 From: Jeff Vander Stoep Date: Wed, 13 Jul 2016 09:13:17 -0700 Subject: [PATCH 51/99] label htc_cerberus partition avc: denied { read } for name="sda1" dev="tmpfs" ino=15328 scontext=u:r:update_engine:s0 tcontext=u:object_r:block_device:s0 tclass=blk_file permissive=0 Bug: 30112119 Change-Id: I56333838e387154bb8405ca599ec13688bc1317b --- sepolicy/file_contexts | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts index 898532a8..a2d2247c 100755 --- a/sepolicy/file_contexts +++ b/sepolicy/file_contexts @@ -33,24 +33,25 @@ /dev/pn551 u:object_r:nfc_device:s0 # A/B partitions. -/dev/block/platform/soc/624000\.ufshc/by-name/aboot_[ab] u:object_r:custom_ab_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/apdp_[ab] u:object_r:custom_ab_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/boot_[ab] u:object_r:boot_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/cmnlib32_[ab] u:object_r:custom_ab_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/cmnlib64_[ab] u:object_r:custom_ab_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/devcfg_[ab] u:object_r:custom_ab_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/hosd_[ab] u:object_r:custom_ab_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/hyp_[ab] u:object_r:custom_ab_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/keymaster_[ab] u:object_r:custom_ab_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/keystore_[ab] u:object_r:custom_ab_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/modem_[ab] u:object_r:modem_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/msadp_[ab] u:object_r:custom_ab_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/pmic_[ab] u:object_r:custom_ab_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/rpm_[ab] u:object_r:custom_ab_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/system_[ab] u:object_r:system_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/tz_[ab] u:object_r:custom_ab_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/vendor_[ab] u:object_r:system_block_device:s0 -/dev/block/platform/soc/624000\.ufshc/by-name/xbl_[ab] u:object_r:xbl_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/aboot_[ab] u:object_r:custom_ab_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/apdp_[ab] u:object_r:custom_ab_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/boot_[ab] u:object_r:boot_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/cmnlib32_[ab] u:object_r:custom_ab_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/cmnlib64_[ab] u:object_r:custom_ab_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/devcfg_[ab] u:object_r:custom_ab_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/hosd_[ab] u:object_r:custom_ab_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/htc_cerberus_[ab] u:object_r:custom_ab_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/hyp_[ab] u:object_r:custom_ab_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/keymaster_[ab] u:object_r:custom_ab_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/keystore_[ab] u:object_r:custom_ab_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/modem_[ab] u:object_r:modem_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/msadp_[ab] u:object_r:custom_ab_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/pmic_[ab] u:object_r:custom_ab_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/rpm_[ab] u:object_r:custom_ab_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/system_[ab] u:object_r:system_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/tz_[ab] u:object_r:custom_ab_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/vendor_[ab] u:object_r:system_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/xbl_[ab] u:object_r:xbl_block_device:s0 # Block device holding the GPT, where the A/B attributes are stored. /dev/block/platform/soc/624000\.ufshc/sda u:object_r:gpt_block_device:s0 From 9217cdbedfca6d1865f2c0b58214027a44323c1e Mon Sep 17 00:00:00 2001 From: Eino-Ville Talvala Date: Wed, 13 Jul 2016 14:42:43 -0700 Subject: [PATCH 52/99] Security: Allow drmserver access to google_camera_app domain Drmserver access is needed for routine sound playback. Bug: 30109313 Change-Id: I1d5eb17aa151014640bdb48e584baff769df1241 --- sepolicy/google_camera_app.te | 1 + sepolicy/google_camera_app_debug.te | 1 + 2 files changed, 2 insertions(+) diff --git a/sepolicy/google_camera_app.te b/sepolicy/google_camera_app.te index 19a18244..66364a0a 100644 --- a/sepolicy/google_camera_app.te +++ b/sepolicy/google_camera_app.te @@ -6,6 +6,7 @@ app_domain(google_camera_app) allow google_camera_app app_api_service:service_manager find; allow google_camera_app audioserver_service:service_manager find; allow google_camera_app cameraserver_service:service_manager find; +allow google_camera_app drmserver_service:service_manager find; allow google_camera_app mediacodec_service:service_manager find; allow google_camera_app mediaextractor_service:service_manager find; allow google_camera_app mediaserver_service:service_manager find; diff --git a/sepolicy/google_camera_app_debug.te b/sepolicy/google_camera_app_debug.te index 7d604d73..6493beac 100644 --- a/sepolicy/google_camera_app_debug.te +++ b/sepolicy/google_camera_app_debug.te @@ -15,6 +15,7 @@ app_domain(google_camera_app_debug) allow google_camera_app_debug app_api_service:service_manager find; allow google_camera_app_debug audioserver_service:service_manager find; allow google_camera_app_debug cameraserver_service:service_manager find; +allow google_camera_app_debug drmserver_service:service_manager find; allow google_camera_app_debug mediacodec_service:service_manager find; allow google_camera_app_debug mediaextractor_service:service_manager find; allow google_camera_app_debug mediaserver_service:service_manager find; From 8efb9f010a3a63a267028585358814dccddac255 Mon Sep 17 00:00:00 2001 From: Ed Tam Date: Thu, 14 Jul 2016 01:37:17 +0000 Subject: [PATCH 53/99] Revert "marlin/sailfish : shrink system partition size" Bug: 30124137 This reverts commit c3141cf26de084bb7ff9accd8d6d9a76045449cb. Change-Id: Ic8814c541a428b8e7b9d2492a2fd5ff9b92fc982 --- marlin/BoardConfig.mk | 2 +- sailfish/BoardConfig.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/marlin/BoardConfig.mk b/marlin/BoardConfig.mk index 42298194..a847d9e5 100644 --- a/marlin/BoardConfig.mk +++ b/marlin/BoardConfig.mk @@ -76,7 +76,7 @@ OVERRIDE_RS_DRIVER:= libRSDriver_adreno.so TARGET_USERIMAGES_USE_EXT4 := true BOARD_BOOTIMAGE_PARTITION_SIZE := 0x04000000 -BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2147483648 +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 3221225472 #BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE := squashfs #BOARD_SYSTEMIMAGE_JOURNAL_SIZE := 0 #BOARD_SYSTEMIMAGE_SQUASHFS_COMPRESSOR := lz4 diff --git a/sailfish/BoardConfig.mk b/sailfish/BoardConfig.mk index 754679c9..15c59d84 100644 --- a/sailfish/BoardConfig.mk +++ b/sailfish/BoardConfig.mk @@ -76,7 +76,7 @@ OVERRIDE_RS_DRIVER:= libRSDriver_adreno.so TARGET_USERIMAGES_USE_EXT4 := true BOARD_BOOTIMAGE_PARTITION_SIZE := 0x04000000 -BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2147483648 +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 3221225472 BOARD_USERDATAIMAGE_PARTITION_SIZE := 10737418240 BOARD_PERSISTIMAGE_PARTITION_SIZE := 33554432 BOARD_PERSISTIMAGE_FILE_SYSTEM_TYPE := ext4 From 574f5cffdeaf866b33ef0924e8dc47a2396caeb8 Mon Sep 17 00:00:00 2001 From: matt_huang Date: Wed, 15 Jun 2016 19:54:56 +0800 Subject: [PATCH 54/99] marlin: liblight: Set different brightness to indicator LED for different CG color Bug: 29207666 Change-Id: Idd3cd968c3bf49fe8b64c72f57dbd6253f3b675c Signed-off-by: matt_huang --- liblight/Android.mk | 2 +- liblight/lights.c | 23 ++++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/liblight/Android.mk b/liblight/Android.mk index c579112a..bab9e308 100644 --- a/liblight/Android.mk +++ b/liblight/Android.mk @@ -19,7 +19,7 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES := lights.c LOCAL_MODULE_RELATIVE_PATH := hw -LOCAL_SHARED_LIBRARIES := liblog +LOCAL_SHARED_LIBRARIES := libc libcutils liblog LOCAL_CFLAGS := $(common_flags) -DLOG_TAG=\"qdlights\" LOCAL_CLANG := true LOCAL_MODULE := lights.$(TARGET_DEVICE) diff --git a/liblight/lights.c b/liblight/lights.c index 0440d573..4c115a6c 100644 --- a/liblight/lights.c +++ b/liblight/lights.c @@ -19,6 +19,7 @@ // #define LOG_NDEBUG 0 #include +#include #include #include @@ -41,6 +42,7 @@ * Change this to 1 to support battery notifications via BatteryService */ #define LIGHTS_SUPPORT_BATTERY 1 +#define CG_COLOR_ID_PROPERTY "ro.boot.hardware.color" static pthread_once_t g_init = PTHREAD_ONCE_INIT; static pthread_mutex_t g_lock = PTHREAD_MUTEX_INITIALIZER; @@ -48,6 +50,7 @@ static struct light_state_t g_notification; static struct light_state_t g_battery; static int g_last_backlight_mode = BRIGHTNESS_MODE_USER; static int g_attention = 0; +static int rgb_brightness_ratio = 255; char const*const RED_LED_FILE = "/sys/class/leds/red/brightness"; @@ -100,8 +103,22 @@ char const*const BLUE_RGB_START_FILE void init_globals(void) { + char color_id_prop[PROPERTY_VALUE_MAX] = {""}; + // init the mutex pthread_mutex_init(&g_lock, NULL); + + // check CG color + property_get(CG_COLOR_ID_PROPERTY, color_id_prop, "DEF00"); + if (strcmp(color_id_prop, "GRA00") == 0) { + rgb_brightness_ratio = 25; + } else if (strcmp(color_id_prop, "SLV00") == 0) { + rgb_brightness_ratio = 15; + } else if (strcmp(color_id_prop, "BLU00") == 0) { + rgb_brightness_ratio = 15; + } else { + rgb_brightness_ratio = 20; + } } static int @@ -229,9 +246,9 @@ set_speaker_light_locked(struct light_device_t* dev, state->flashMode, colorRGB, onMS, offMS); #endif - red = (colorRGB >> 16) & 0xFF; - green = (colorRGB >> 8) & 0xFF; - blue = colorRGB & 0xFF; + red = ((colorRGB >> 16) & 0xFF) * rgb_brightness_ratio / 255; + green = ((colorRGB >> 8) & 0xFF) * rgb_brightness_ratio / 255; + blue = (colorRGB & 0xFF) * rgb_brightness_ratio / 255; write_double_int(RED_ON_OFF_MS_FILE, onMS, offMS); write_int(RED_LED_FILE, red); From fc132616e69037aa5663aa5ed5ee6c1cf649595c Mon Sep 17 00:00:00 2001 From: Jeff Vander Stoep Date: Thu, 14 Jul 2016 07:39:32 -0700 Subject: [PATCH 55/99] gpu_device: whitelist IOCTL_KGSL_SHAREDMEM_FREE avc: denied { ioctl } for path="/dev/kgsl-3d0" dev="tmpfs" ino=15740 ioctlcmd=921 scontext=u:r:mediacodec:s0 tcontext=u:object_r:gpu_device:s0 tclass=chr_file Bug: 29518403 Change-Id: I83a3628a7a9640786a123b77f1261fbba578fd0d --- sepolicy/ioctl_macros | 1 + 1 file changed, 1 insertion(+) diff --git a/sepolicy/ioctl_macros b/sepolicy/ioctl_macros index 42dcbb8a..26892d69 100644 --- a/sepolicy/ioctl_macros +++ b/sepolicy/ioctl_macros @@ -4,6 +4,7 @@ IOCTL_KGSL_DEVICE_WAITTIMESTAMP_CTXTID IOCTL_KGSL_DRAWCTXT_CREATE IOCTL_KGSL_DRAWCTXT_DESTROY IOCTL_KGSL_MAP_USER_MEM +IOCTL_KGSL_SHAREDMEM_FREE IOCTL_KGSL_SETPROPERTY IOCTL_KGSL_TIMESTAMP_EVENT IOCTL_KGSL_PERFCOUNTER_GET From 55db1ea560c13ff0297e8c7b8cf12f214f370d90 Mon Sep 17 00:00:00 2001 From: Youhan Wang Date: Thu, 14 Jul 2016 10:48:53 -0700 Subject: [PATCH 56/99] Set up Canada carriers with no IMS feature. Canada carrier:Wind, Sasktel, Videotron, MTS and Eastlink. Bug:29244956 Change-Id: I903253329b38499c190e0288ce35ed29dcef44fc --- apns-full-conf.xml | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/apns-full-conf.xml b/apns-full-conf.xml index 7fa1baff..b79bb676 100644 --- a/apns-full-conf.xml +++ b/apns-full-conf.xml @@ -7071,7 +7071,7 @@ mvno_type="gid" /> - - - - - - - @@ -7247,7 +7252,7 @@ type="default,mms,supl" mmsc="http://mmsc2.mts.net/" mmsproxy="wapgw1.mts.net" - mmsport="9201" + mmsport="9401" protocol="IPV4V6" roaming_protocol="IPV4V6" /> @@ -7316,6 +7321,8 @@ mmsc="http://mms.sasktel.com/" mmsproxy="mig.sasktel.com" mmsport="80" + protocol="IP" + roaming_protocol="IP" /> Date: Thu, 14 Jul 2016 15:57:41 +0800 Subject: [PATCH 57/99] label bootlocker partition Bug: 30005286 Change-Id: Id14db0bc13b78c0a0bf442cf35882b475c3f0fd8 --- sepolicy/file_contexts | 1 + 1 file changed, 1 insertion(+) diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts index a2d2247c..e7e38ef7 100755 --- a/sepolicy/file_contexts +++ b/sepolicy/file_contexts @@ -36,6 +36,7 @@ /dev/block/platform/soc/624000\.ufshc/by-name/aboot_[ab] u:object_r:custom_ab_block_device:s0 /dev/block/platform/soc/624000\.ufshc/by-name/apdp_[ab] u:object_r:custom_ab_block_device:s0 /dev/block/platform/soc/624000\.ufshc/by-name/boot_[ab] u:object_r:boot_block_device:s0 +/dev/block/platform/soc/624000\.ufshc/by-name/bootlocker_[ab] u:object_r:custom_ab_block_device:s0 /dev/block/platform/soc/624000\.ufshc/by-name/cmnlib32_[ab] u:object_r:custom_ab_block_device:s0 /dev/block/platform/soc/624000\.ufshc/by-name/cmnlib64_[ab] u:object_r:custom_ab_block_device:s0 /dev/block/platform/soc/624000\.ufshc/by-name/devcfg_[ab] u:object_r:custom_ab_block_device:s0 From 95eab7407bfd14a4deb1acef2d4594b0b6fdf8df Mon Sep 17 00:00:00 2001 From: Nick Desaulniers Date: Thu, 14 Jul 2016 13:34:51 -0700 Subject: [PATCH 58/99] Revert "marlin: reenable battery notification LED" This reverts commit 58f8765157208fc1065a0f4fe7bea03991c42ab4. Bug: 30048869 Change-Id: Ibabc62b8eeefc838c0cfe853a1af64147be11d66 --- liblight/lights.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/liblight/lights.c b/liblight/lights.c index 4c115a6c..800e7017 100644 --- a/liblight/lights.c +++ b/liblight/lights.c @@ -15,9 +15,6 @@ * limitations under the License. */ - -// #define LOG_NDEBUG 0 - #include #include @@ -36,12 +33,10 @@ #include -/******************************************************************************/ - /* * Change this to 1 to support battery notifications via BatteryService */ -#define LIGHTS_SUPPORT_BATTERY 1 +#define LIGHTS_SUPPORT_BATTERY 0 #define CG_COLOR_ID_PROPERTY "ro.boot.hardware.color" static pthread_once_t g_init = PTHREAD_ONCE_INIT; From f8287f329c44c3fa7bd38df68b88633075481f17 Mon Sep 17 00:00:00 2001 From: Thierry Strudel Date: Wed, 13 Jul 2016 18:36:16 -0700 Subject: [PATCH 59/99] device-common: ro.audio.offload_wakelock=false 8996 SoC suspend/resume is not too power hungry so we'll favor the ability to blame wakelocks to the expense of extra 5 to 10 mA caused by the suspend/resume vs holding a wakelock Bug: 29112243 Change-Id: I129bb06be0205308cee4209dc672a78cb7612a4c Signed-off-by: Thierry Strudel --- device-common.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/device-common.mk b/device-common.mk index 73a61c6d..acc77307 100644 --- a/device-common.mk +++ b/device-common.mk @@ -69,6 +69,10 @@ PRODUCT_PROPERTY_OVERRIDES += \ ro.hwui.text_large_cache_width=2048 \ ro.hwui.text_large_cache_height=1024 +# Don't hold AudioOffload wakelock +PRODUCT_PROPERTY_OVERRIDES += \ + ro.audio.offload_wakelock=false + # For android_filesystem_config.h PRODUCT_PACKAGES += fs_config_files \ fs_config_dirs From 4ee40448e2e0428d67ef448af9e5d6a73ee57352 Mon Sep 17 00:00:00 2001 From: Marvin Tsai Date: Wed, 6 Apr 2016 18:00:32 +0800 Subject: [PATCH 60/99] sepolicy: let Surfaceflinger access directory under data Need this change for color tuning. Bug: 29640792 Change-Id: I894fb6347920736f8abd6cc7d4e59218e7dc223f Signed-off-by: Marvin Tsai --- init.common.rc | 1 + sepolicy/file.te | 2 ++ sepolicy/file_contexts | 9 +++++++-- sepolicy/surfaceflinger.te | 11 +++++++++++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/init.common.rc b/init.common.rc index d4c7bfa5..b9334fd2 100755 --- a/init.common.rc +++ b/init.common.rc @@ -108,6 +108,7 @@ on post-fs-data # Create directory used by display clients mkdir /data/misc/display 0770 system graphics + mkdir /persist/display 0770 system graphics # Mounting of persist is moved to 'on emmc-fs' and 'on fs' sections # We chown/chmod /persist again so because mount is run as root + defaults diff --git a/sepolicy/file.te b/sepolicy/file.te index 95786243..b57ff4a5 100755 --- a/sepolicy/file.te +++ b/sepolicy/file.te @@ -9,6 +9,7 @@ type location_data_file, file_type, data_file_type; type perfd_data_file, file_type, data_file_type; type ramdump_data_file, file_type, data_file_type; type time_data_file, file_type, data_file_type; +type display_data_file, file_type, data_file_type; # /sys type sysfs_camera, sysfs_type, fs_type; @@ -43,3 +44,4 @@ type thermal_socket, file_type; type bt_firmware_file, file_type; type persist_file, file_type; type persist_data_file, file_type; +type persist_display_file, file_type; diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts index e7e38ef7..37952aa2 100755 --- a/sepolicy/file_contexts +++ b/sepolicy/file_contexts @@ -159,6 +159,8 @@ /data/time(/.*)? u:object_r:time_data_file:s0 /data/ramdump(/.*)? u:object_r:ramdump_data_file:s0 /data/misc/location(/.*)? u:object_r:location_data_file:s0 +/data/misc/display(/.*)? u:object_r:display_data_file:s0 + /data/misc/perfd(/.*)? u:object_r:perfd_data_file:s0 /data/system/perfd(/.*)? u:object_r:perfd_data_file:s0 /data/misc/radio(/.*)? u:object_r:radio_data_file:s0 @@ -166,8 +168,6 @@ # / /bt_firmware(/.*)? u:object_r:bt_firmware_file:s0 -/persist(/.*)? u:object_r:persist_file:s0 -/persist/data(/.*)? u:object_r:persist_data_file:s0 /tombstones u:object_r:rootfs:s0 /dsp u:object_r:rootfs:s0 @@ -175,3 +175,8 @@ # default "device" label /dev/snd/seq u:object_r:device:s0 /dev/snd/timer u:object_r:device:s0 + +# /persist +/persist(/.*)? u:object_r:persist_file:s0 +/persist/data(/.*)? u:object_r:persist_data_file:s0 +/persist/display(/.*)? u:object_r:persist_display_file:s0 diff --git a/sepolicy/surfaceflinger.te b/sepolicy/surfaceflinger.te index c7496948..32fd1592 100644 --- a/sepolicy/surfaceflinger.te +++ b/sepolicy/surfaceflinger.te @@ -1,3 +1,14 @@ userdebug_or_eng(` allow surfaceflinger diag_device:chr_file rw_file_perms; ') + +# misc +allow surfaceflinger display_data_file:dir create_dir_perms; +allow surfaceflinger display_data_file:file create_file_perms; + +# persist +allow surfaceflinger persist_file:dir search; + +# persist/display +allow surfaceflinger persist_display_file:dir r_dir_perms; +allow surfaceflinger persist_display_file:file create_file_perms; From 0deebef5e19b37e6eea5abb50bb3f812c1e2198b Mon Sep 17 00:00:00 2001 From: Tim Murray Date: Tue, 12 Jul 2016 13:30:16 -0700 Subject: [PATCH 61/99] Enable FIFO UI scheduling by default. bug 24503801 Change-Id: I3ae54e8af22fa3f26a58d39c24c2ee70f0732646 --- device-common.mk | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/device-common.mk b/device-common.mk index acc77307..b5c91512 100644 --- a/device-common.mk +++ b/device-common.mk @@ -40,8 +40,8 @@ PRODUCT_COPY_FILES += \ # copy customized media_profiles and media_codecs xmls for msm8996 PRODUCT_COPY_FILES += device/google/marlin/media_profiles.xml:system/etc/media_profiles.xml \ - device/google/marlin/media_codecs.xml:system/etc/media_codecs.xml \ - device/google/marlin/media_codecs_performance.xml:system/etc/media_codecs_performance.xml + device/google/marlin/media_codecs.xml:system/etc/media_codecs.xml \ + device/google/marlin/media_codecs_performance.xml:system/etc/media_codecs_performance.xml # Override heap growth limit due to high display density on device PRODUCT_PROPERTY_OVERRIDES += \ @@ -73,9 +73,13 @@ PRODUCT_PROPERTY_OVERRIDES += \ PRODUCT_PROPERTY_OVERRIDES += \ ro.audio.offload_wakelock=false +# enable FIFO UI scheduling by default +PRODUCT_PROPERTY_OVERRIDES += \ + sys.use_fifo_ui=1 + # For android_filesystem_config.h PRODUCT_PACKAGES += fs_config_files \ - fs_config_dirs + fs_config_dirs # Audio configuration USE_XML_AUDIO_POLICY_CONF := 1 From 0e49de8cc65870ad799c5a55143d14a2b1ec1600 Mon Sep 17 00:00:00 2001 From: Tim Murray Date: Fri, 15 Jul 2016 11:20:20 -0700 Subject: [PATCH 62/99] Ignore mdss irq from irqbalance. We're now binding the mdss irq explicitly to cpu 0, so we shouldn't try to balance it. bug 30115868 Change-Id: I51a4d990ae389c170bd92e77194299063b9e3f9f --- msm_irqbalance.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/msm_irqbalance.conf b/msm_irqbalance.conf index 294e4895..ee13a000 100644 --- a/msm_irqbalance.conf +++ b/msm_irqbalance.conf @@ -1,2 +1,2 @@ PRIO=1,1,0,0 -IGNORED_IRQ=27,62,171 +IGNORED_IRQ=6,27,62,171 From 4775a020bb6c73b44bca4028c3d82f8860c43276 Mon Sep 17 00:00:00 2001 From: Youhan Wang Date: Fri, 15 Jul 2016 14:37:42 -0700 Subject: [PATCH 63/99] Add overlay for Sprint. Fix Carrier Setting crash. Bug:29972914 Change-Id: Ide89d29222311ab91039ac0ea7d5a3e1f68aa926 --- .../res/values-mcc310-mnc120/config.xml | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 overlay/packages/services/Telephony/res/values-mcc310-mnc120/config.xml diff --git a/overlay/packages/services/Telephony/res/values-mcc310-mnc120/config.xml b/overlay/packages/services/Telephony/res/values-mcc310-mnc120/config.xml new file mode 100644 index 00000000..5fb5733c --- /dev/null +++ b/overlay/packages/services/Telephony/res/values-mcc310-mnc120/config.xml @@ -0,0 +1,41 @@ + + + + + + + true + + false + + true + + true + + true + + true + + false + + com.android.sdm.plugins.sprintdm + com.android.sdm.plugins.sprintdm.SprintCarrierSettingsActivity + From d5635d3517a2a40162806a6e77e7b458e9cacc1b Mon Sep 17 00:00:00 2001 From: Jeff Vander Stoep Date: Fri, 15 Jul 2016 15:09:22 -0700 Subject: [PATCH 64/99] Address denials for VT calling radio avc: denied { ioctl } for pid=18610 comm="Thread-25" path="/dev/avtimer" dev="tmpfs" ino=16471 ioctlcmd=6400 scontext=u:r:radio:s0 tcontext=u:object_r:device:s0 tclass=chr_file avc: denied { open } for pid=18069 comm="m.android.phone" path="/dev/avtimer" dev="tmpfs" ino=16471 scontext=u:r:radio:s0 tcontext=u:object_r:device:s0 tclass=chr_file avc: denied { read } for pid=18069 comm="m.android.phone" name="avtimer" dev="tmpfs" ino=16471 scontext=u:r:radio:s0 tcontext=u:object_r:device:s0 tclass=chr_file avc: denied { ioctl } for pid=14827 comm="Thread-105" path="socket:[151354]" dev="sockfs" ino=151354 ioctlcmd=8927 scontext=u:r:radio:s0 tcontext=u:r:radio:s0 tclass=udp_socket ims avc: denied { read } for comm="ims_rtp_daemon" name="ion" dev="tmpfs" ino=16105 scontext=u:r:ims:s0 tcontext=u:object_r:ion_device:s0 tclass=chr_file avc: denied { use } for pid=18612 comm="ims_rtp_daemon" path="anon_inode:dmabuf" dev="anon_inodefs" ino=12244 scontext=u:r:ims:s0 tcontext=u:r:radio:s0 tclass=fd avc: denied { execute } for pid=18677 comm="ims_rtp_daemon" name="sh" dev="dm-0" ino=561 scontext=u:r:ims:s0 tcontext=u:object_r:shell_exec:s0 tclass=file avc: denied { execute_no_trans } for pid=18677 comm="ims_rtp_daemon" path="/system/bin/sh" dev="dm-0" ino=561 scontext=u:r:ims:s0 tcontext=u:object_r:shell_exec:s0 tclass=file avc: denied { getattr } for pid=18677 comm="sh" path="/system/bin/sh" dev="dm-0" ino=561 scontext=u:r:ims:s0 tcontext=u:object_r:shell_exec:s0 tclass=file avc: denied { open } for comm="ims_rtp_daemon" path="/system/bin/sh" dev="dm-0" ino=561 scontext=u:r:ims:s0 tcontext=u:object_r:shell_exec:s0 tclass=file avc: denied { read } for comm="sh" path="/system/bin/sh" dev="dm-0" ino=561 scontext=u:r:ims:s0 tcontext=u:object_r:shell_exec:s0 tclass=file avc: denied { read open } for pid=18677 comm="ims_rtp_daemon" path="/system/bin/sh" dev="dm-0" ino=561 scontext=u:r:ims:s0 tcontext=u:object_r:shell_exec:s0 tclass=file avc: denied { execute_no_trans } for pid=18677 comm="sh" path="/system/bin/ip" dev="dm-0" ino=393 scontext=u:r:ims:s0 tcontext=u:object_r:system_file:s0 tclass=file Bug: 30164055 Change-Id: Ib6a623ef47f365d855b98f78100e6099888aaaa3 --- sepolicy/device.te | 1 + sepolicy/file_contexts | 1 + sepolicy/ims.te | 6 ++++++ sepolicy/radio.te | 5 +++++ 4 files changed, 13 insertions(+) diff --git a/sepolicy/device.te b/sepolicy/device.te index c9e90e33..6b3661c7 100644 --- a/sepolicy/device.te +++ b/sepolicy/device.te @@ -1,5 +1,6 @@ type at_device, dev_type; type audio_cal_device, dev_type; +type avtimer_device, dev_type; type diag_device, dev_type, mlstrustedobject; type ramdump_device, dev_type; type sdsprpc_device, dev_type; diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts index 37952aa2..cb079efc 100755 --- a/sepolicy/file_contexts +++ b/sepolicy/file_contexts @@ -1,4 +1,5 @@ /dev/at_.* u:object_r:at_device:s0 +/dev/avtimer u:object_r:avtimer_device:s0 /dev/adsprpc-smd u:object_r:adsprpcd_device:s0 /dev/diag u:object_r:diag_device:s0 /dev/jpeg[0-9]+ u:object_r:camera_device:s0 diff --git a/sepolicy/ims.te b/sepolicy/ims.te index 4e6627b8..ab8e11e8 100755 --- a/sepolicy/ims.te +++ b/sepolicy/ims.te @@ -33,4 +33,10 @@ userdebug_or_eng(` # Runs /system/bin/sh for executing ndc commands via popen allow ims shell_exec:file rx_file_perms; +allow ims system_file:file rx_file_perms; +# use /dev/ion memory +allow ims ion_device:chr_file r_file_perms; + +# use fds passed from radio app +allow ims radio:fd use; diff --git a/sepolicy/radio.te b/sepolicy/radio.te index 1efd53ed..767e0a71 100644 --- a/sepolicy/radio.te +++ b/sepolicy/radio.te @@ -12,3 +12,8 @@ unix_socket_connect(radio, ims, ims) userdebug_or_eng(` allow radio diag_device:chr_file rw_file_perms; ') + +# access to /dev/avtimer +allow radio avtimer_device:chr_file rw_file_perms; + +allowxperm radio self:udp_socket ioctl priv_sock_ioctls; From 4375e682e1cf723ea7c97ecec7699cdba816fdcb Mon Sep 17 00:00:00 2001 From: Vineeta Srivastava Date: Tue, 19 Jul 2016 11:18:08 -0700 Subject: [PATCH 65/99] Separate out MMS ua profile for sailfish and marlin Verizon hosted profile is set for Verizon specific mcc/mnc. Default UA profle is set to google hosted profile. Bug: 30211117 Change-Id: Idf0f0118cd765d4fbe29e5443571d973df0a7c5f --- .../res/res/values-mcc310-mnc004/config.xml | 28 ++++++++++++++++++ .../res/res/values-mcc311-mnc480/config.xml | 29 +++++++++++++++++++ .../base/core/res/res/values/config.xml | 29 +++++++++++++++++++ .../res/res/values-mcc310-mnc004/config.xml | 5 ---- .../res/res/values-mcc311-mnc480/config.xml | 5 ---- .../base/core/res/res/values/config.xml | 12 -------- .../base/core/res/res/values/config.xml | 29 +++++++++++++++++++ 7 files changed, 115 insertions(+), 22 deletions(-) create mode 100644 marlin/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml create mode 100644 marlin/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml create mode 100644 marlin/overlay/frameworks/base/core/res/res/values/config.xml create mode 100644 sailfish/overlay/frameworks/base/core/res/res/values/config.xml diff --git a/marlin/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml b/marlin/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml new file mode 100644 index 00000000..05c76833 --- /dev/null +++ b/marlin/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml @@ -0,0 +1,28 @@ + + + + + + + g2pw2100 + + http://uaprof.vtext.com/htc/g2pw2100/g2pw2100.xml + + diff --git a/marlin/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml b/marlin/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml new file mode 100644 index 00000000..a87fec68 --- /dev/null +++ b/marlin/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml @@ -0,0 +1,29 @@ + + + + + + + + g2pw2100 + + http://uaprof.vtext.com/htc/g2pw2100/g2pw2100.xml + + diff --git a/marlin/overlay/frameworks/base/core/res/res/values/config.xml b/marlin/overlay/frameworks/base/core/res/res/values/config.xml new file mode 100644 index 00000000..d0611939 --- /dev/null +++ b/marlin/overlay/frameworks/base/core/res/res/values/config.xml @@ -0,0 +1,29 @@ + + + + + + + + g2pw2100 + + http://www.gstatic.com/android/sms/G_2PW2100.xml + + diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml index 8f03ebeb..f4a2e3cc 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml @@ -65,9 +65,4 @@ com.google.android.carrierentitlement.SILENT_ENTITLEMENT_CHECK com.google.android.carrierentitlement.SILENT_ENTITLEMENT_CHECK_RESULT - - g2pw2100 - - http://uaprof.vtext.com/htc/g2pw2100/g2pw2100.xml - diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml index e597840c..4a099997 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml @@ -69,9 +69,4 @@ com.google.android.carrierentitlement.SILENT_ENTITLEMENT_CHECK_RESULT - - g2pw2100 - - http://uaprof.vtext.com/htc/g2pw2100/g2pw2100.xml - diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml index 2edb8aa4..43389eee 100755 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -287,12 +287,6 @@ true - - Nexus6P - - - - com.android.systemui/com.android.systemui.doze.DozeService @@ -409,12 +403,6 @@ "bp-tools:rndis,adb:rndis,serial,adb" - - - - - - "/system/framework/arm64/boot-framework.oat" diff --git a/sailfish/overlay/frameworks/base/core/res/res/values/config.xml b/sailfish/overlay/frameworks/base/core/res/res/values/config.xml new file mode 100644 index 00000000..9e1c7956 --- /dev/null +++ b/sailfish/overlay/frameworks/base/core/res/res/values/config.xml @@ -0,0 +1,29 @@ + + + + + + + + g2pw4100 + + http://www.gstatic.com/android/sms/G_2PW4100.xml + + From 28dde76ac2835c8b154416e7c57e553c5b689f66 Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Mon, 18 Jul 2016 14:33:34 -0700 Subject: [PATCH 66/99] Change the LPP_PROFILE to 3 in gps.conf.verizon 3 is default value for verizion config.xml Bug: 24860255 Change-Id: Iace9dee266386a40ebb47ca94f9ccb6e3e6ecd2f Signed-off-by: Ecco Park --- gps.conf.verizon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gps.conf.verizon b/gps.conf.verizon index 16c545d6..4aad068f 100644 --- a/gps.conf.verizon +++ b/gps.conf.verizon @@ -98,7 +98,7 @@ CAPABILITIES=0x37 # 1: Enable LPP_User_Plane on LTE # 2: Enable LPP_Control_Plane # 3: Enable both LPP_User_Plane and LPP_Control_Plane -LPP_PROFILE = 2 +LPP_PROFILE = 3 ################################ # EXTRA SETTINGS From f226720f2e41f186a3aa2c219ae7344c5f2d9b7e Mon Sep 17 00:00:00 2001 From: Srinivas Girigowda Date: Wed, 13 Jul 2016 19:06:42 -0700 Subject: [PATCH 67/99] marlin/sailfish: Enable Active mode offload support If active mode offload(gActiveModeOffload=1) is enabled then all applicable data offload/filtering is enabled immediately in FW once config is available in WLAN driver and FW caches this configuration accross suspend/resume. CRs-Fixed: 880416 Change-Id: Ib0207cee6a1812a81354f638e6bf55441d52c6e1 Signed-off-by: Srinivas Girigowda --- WCNSS_qcom_cfg.ini | 3 +++ 1 file changed, 3 insertions(+) diff --git a/WCNSS_qcom_cfg.ini b/WCNSS_qcom_cfg.ini index 92504bbe..42248ae3 100644 --- a/WCNSS_qcom_cfg.ini +++ b/WCNSS_qcom_cfg.ini @@ -685,6 +685,9 @@ gSapForce11NFor11AC=1 gIgnorePeerHTopMode=1 gIgnorePeerErpInfo=1 +# Enable Active mode offload +gActiveModeOffload=1 + END # Note: Configuration parser would not read anything past the END marker From 010fd2f860f213df92f7a198a95989211dd4bb4c Mon Sep 17 00:00:00 2001 From: Subhani Shaik Date: Wed, 20 Jul 2016 04:10:52 -0700 Subject: [PATCH 68/99] set tdls_external_control to configure external control mode. BUG: 30205217 --- wpa_supplicant_overlay.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/wpa_supplicant_overlay.conf b/wpa_supplicant_overlay.conf index 58c2639e..e1f530db 100644 --- a/wpa_supplicant_overlay.conf +++ b/wpa_supplicant_overlay.conf @@ -1,2 +1,3 @@ disable_scan_offload=1 p2p_disabled=1 +tdls_external_control=1 From b3e190d25372394f89dd7f05459890747ad37fde Mon Sep 17 00:00:00 2001 From: Zhijun He Date: Wed, 20 Jul 2016 17:07:30 -0700 Subject: [PATCH 69/99] media_profile: tune bitrate to reduce the artifacts Increase from 16 to 22Mbps for 1080p@30fps video recording for main camera. Bug: 24552807 Change-Id: Iccd0f22aca6f40d8d87700f310cfc84d5ae47241 --- media_profiles.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/media_profiles.xml b/media_profiles.xml index b3e44a96..d4b8ae0b 100644 --- a/media_profiles.xml +++ b/media_profiles.xml @@ -166,7 +166,7 @@ + + + + + @@ -1021,6 +1026,11 @@ + + + + + @@ -1147,16 +1157,16 @@ - - - - + + + + @@ -1205,6 +1215,11 @@ + + + + + @@ -1276,22 +1291,22 @@ - + - - + + - + - + - - + + @@ -1319,6 +1334,11 @@ + + + + + From 7ec3521dc81716c6ee6251be1b303579cfa43670 Mon Sep 17 00:00:00 2001 From: rago Date: Thu, 21 Jul 2016 15:37:18 -0700 Subject: [PATCH 73/99] Tuning for UNPROCESSED multi microphone Bug: 28762533 Change-Id: I5a599612a7d788318e7c0d6341e140f5400dd73b --- mixer_paths.xml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/mixer_paths.xml b/mixer_paths.xml index 57f4d9f4..ebf811f9 100644 --- a/mixer_paths.xml +++ b/mixer_paths.xml @@ -1016,6 +1016,10 @@ + + + + @@ -1026,9 +1030,12 @@ - + + + + @@ -1163,8 +1170,10 @@ + + @@ -1215,9 +1224,11 @@ - + + + @@ -1411,10 +1422,10 @@ - + - + From c67478af46f7c56dcd6a418dd2bbd74c7a9fffde Mon Sep 17 00:00:00 2001 From: Youhan Wang Date: Fri, 22 Jul 2016 13:45:22 -0700 Subject: [PATCH 74/99] Fix Bell Mobility APN. Protocol to IPV4V6, Roaming Protocol IP, add hipri, dun, ia type. Bug:30295363 Bug:30294591 Change-Id: I6068367b2f78d4a3991b2439e1e83c084b0da453 --- apns-full-conf.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apns-full-conf.xml b/apns-full-conf.xml index b8e83305..d041b304 100644 --- a/apns-full-conf.xml +++ b/apns-full-conf.xml @@ -7218,8 +7218,10 @@ mcc="302" mnc="610" apn="pda.bell.ca" - type="default,mms,supl" + type="default,mms,supl,dun,hipri,ia" mmsc="http://mms.bell.ca/mms/wapenc" + protocol="IPV4V6" + roaming_protocol="IP" /> Date: Mon, 25 Jul 2016 22:26:15 -0700 Subject: [PATCH 75/99] marlin: Add regulatory info assets Bug: 30206165 Change-Id: I5ffe9bbf50f8d241f0331afd5c8f20d519eb8e13 --- .../regulatory_info_2pw210000.png | Bin 0 -> 116460 bytes .../regulatory_info_2pw220000.png | Bin 0 -> 87253 bytes .../regulatory_info_2pw410000.png | Bin 0 -> 81913 bytes .../regulatory_info_2pw420000.png | Bin 0 -> 60497 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 overlay/packages/apps/Settings/res/drawable-nodpi/regulatory_info_2pw210000.png create mode 100644 overlay/packages/apps/Settings/res/drawable-nodpi/regulatory_info_2pw220000.png create mode 100644 overlay/packages/apps/Settings/res/drawable-nodpi/regulatory_info_2pw410000.png create mode 100644 overlay/packages/apps/Settings/res/drawable-nodpi/regulatory_info_2pw420000.png diff --git a/overlay/packages/apps/Settings/res/drawable-nodpi/regulatory_info_2pw210000.png b/overlay/packages/apps/Settings/res/drawable-nodpi/regulatory_info_2pw210000.png new file mode 100644 index 0000000000000000000000000000000000000000..03026d28e06b82671d6a1abaf36f046d9e566d84 GIT binary patch literal 116460 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 literal 0 HcmV?d00001 diff --git a/overlay/packages/apps/Settings/res/drawable-nodpi/regulatory_info_2pw410000.png b/overlay/packages/apps/Settings/res/drawable-nodpi/regulatory_info_2pw410000.png new file mode 100644 index 0000000000000000000000000000000000000000..f64b3ff262fc7300e811cf40b6e561fd4b6e6cec GIT binary patch literal 81913 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 literal 0 HcmV?d00001 diff --git a/overlay/packages/apps/Settings/res/drawable-nodpi/regulatory_info_2pw420000.png b/overlay/packages/apps/Settings/res/drawable-nodpi/regulatory_info_2pw420000.png new file mode 100644 index 0000000000000000000000000000000000000000..cad44df93a9f0f35db461bd9faed817e96242995 GIT binary patch literal 60497 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 literal 0 HcmV?d00001 From a3e9a2b3c58c24ce178b7bcbb153784829860838 Mon Sep 17 00:00:00 2001 From: Calvin On Date: Wed, 27 Jul 2016 21:06:20 +0000 Subject: [PATCH 76/99] Revert "Add Wearable node.db to Marlin/Sailfish dumpstate." This reverts commit c8fbc3dfd3ca2567c379475e52b6272a7ffad081. Bug: 28640932 Change-Id: I4bdbc756965b70104dcc98d3c24697fcec5f929c --- dumpstate/dumpstate.cpp | 46 ----------------------------------------- 1 file changed, 46 deletions(-) diff --git a/dumpstate/dumpstate.cpp b/dumpstate/dumpstate.cpp index 759cc0c0..7717058a 100755 --- a/dumpstate/dumpstate.cpp +++ b/dumpstate/dumpstate.cpp @@ -13,55 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include -#include -#include #include -#include -#define LOG_TAG "dumpstate" #include #include -/** - * Dump Wearable node database if present. - * - * TODO This function is a temporary solution for Android Wear and should be - * removed once dumpsys has proper support for adding files to the zip, or - * moved to a common library. - */ -void dump_wear_nodedb() { - // we rely on su to workaround selinux permissions in the app data directory - // so this will only work on userdebug builds - if (is_user_build()) { - return; - } - - std::string tmp_nodedb_path = bugreport_dir + "/wear-nodedb.db"; - std::string wear_nodedb_path = "/data/data/com.google.android.gms/databases/node.db"; - - if (run_command("COPY WEAR NODE DB", 600, SU_PATH, "root", - "cp", wear_nodedb_path.c_str(), tmp_nodedb_path.c_str(), NULL)) { - MYLOGE("Wear node.db copy failed\n"); - return; - } - if (run_command("CHOWN WEAR NODE DB", 600, SU_PATH, "root", - "chown", "shell:shell", tmp_nodedb_path.c_str(), NULL)) { - MYLOGE("Wear node.db chown failed\n"); - return; - } - if (add_zip_entry(ZIP_ROOT_DIR + wear_nodedb_path, tmp_nodedb_path)) { - MYLOGD("Wear node.db added to zip file\n"); - } else { - MYLOGE("Unable to add zip for Wear node.db\n"); - } - // unconditionally remove the db since it's just a copy - if (remove(tmp_nodedb_path.c_str())) { - MYLOGE("Error removing Wear node.db file %s: %s\n", - tmp_nodedb_path.c_str(), strerror(errno)); - } -} - void dumpstate_board() { char prop_str[PROPERTY_VALUE_MAX]; @@ -100,6 +56,4 @@ void dumpstate_board() if (!access("/system/bin/qsee_logger", F_OK)) { run_command("FP LOGS", 10, "qsee_logger", "-d", NULL); } - - dump_wear_nodedb(); }; From 17e51fd5f60aacc896dccde897f0a2e7e37eebac Mon Sep 17 00:00:00 2001 From: Tim Murray Date: Tue, 26 Jul 2016 16:08:45 -0700 Subject: [PATCH 77/99] Revert "Enable FIFO UI scheduling by default." This reverts commit cb9f16427253b91a6587fa878b831f49232645ad. bug 30441279 Change-Id: Ic07e632d370bd0780f4fa9a893744b5b1d0b8b78 --- device-common.mk | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/device-common.mk b/device-common.mk index 8219f974..96aac9e4 100644 --- a/device-common.mk +++ b/device-common.mk @@ -40,8 +40,8 @@ PRODUCT_COPY_FILES += \ # copy customized media_profiles and media_codecs xmls for msm8996 PRODUCT_COPY_FILES += device/google/marlin/media_profiles.xml:system/etc/media_profiles.xml \ - device/google/marlin/media_codecs.xml:system/etc/media_codecs.xml \ - device/google/marlin/media_codecs_performance.xml:system/etc/media_codecs_performance.xml + device/google/marlin/media_codecs.xml:system/etc/media_codecs.xml \ + device/google/marlin/media_codecs_performance.xml:system/etc/media_codecs_performance.xml # Override heap growth limit due to high display density on device PRODUCT_PROPERTY_OVERRIDES += \ @@ -73,13 +73,9 @@ PRODUCT_PROPERTY_OVERRIDES += \ PRODUCT_PROPERTY_OVERRIDES += \ ro.audio.offload_wakelock=false -# enable FIFO UI scheduling by default -PRODUCT_PROPERTY_OVERRIDES += \ - sys.use_fifo_ui=1 - # For android_filesystem_config.h PRODUCT_PACKAGES += fs_config_files \ - fs_config_dirs + fs_config_dirs # Audio configuration USE_XML_AUDIO_POLICY_CONF := 1 From 0992f2816524a938898c76c23c7415e8c11ae1ce Mon Sep 17 00:00:00 2001 From: Tim Murray Date: Wed, 27 Jul 2016 15:06:34 -0700 Subject: [PATCH 78/99] Increase touch boost min freq to 1.1GHz. bug 30441279 Change-Id: I1fb39d6dacff928d6586324826fc8d4d11e245d1 --- power/power.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/power/power.c b/power/power.c index 74b7fd36..66817af0 100644 --- a/power/power.c +++ b/power/power.c @@ -327,10 +327,10 @@ static void power_hint(struct power_module *module, power_hint_t hint, pthread_mutex_unlock(&s_interaction_lock); // Scheduler is EAS. - if (strncmp(governor, SCHED_GOVERNOR, strlen(SCHED_GOVERNOR)) == 0) { + if (true || strncmp(governor, SCHED_GOVERNOR, strlen(SCHED_GOVERNOR)) == 0) { // Setting the value of foreground schedtune boost to 40 and - // scaling_min_freq to 900MHz. - int resources[] = {0x42C0C000, 0x32, 0x41800000, 0x33, 0x40800000, 900, 0x40800100, 900}; + // scaling_min_freq to 1100MHz. + int resources[] = {0x42C0C000, 0x32, 0x41800000, 0x33, 0x40800000, 1100, 0x40800100, 1100}; interaction(duration, sizeof(resources)/sizeof(resources[0]), resources); } else { // Scheduler is HMP. int resources[] = {0x41800000, 0x33, 0x40800000, 1000, 0x40800100, 1000, 0x40C00000, 0x1}; From 066ba39629486841ef64c7670e3863ee059362ca Mon Sep 17 00:00:00 2001 From: Youhan Wang Date: Wed, 27 Jul 2016 11:28:17 -0700 Subject: [PATCH 79/99] Fix Telstra Long press code. Bug:29891069 Change-Id: I4de29b897a1367231c4b55e9b4cbe950aa3166f9 --- .../frameworks/base/core/res/res/values-mcc505-mnc01/config.xml | 1 - .../frameworks/base/core/res/res/values-mcc505-mnc11/config.xml | 1 - .../frameworks/base/core/res/res/values-mcc505-mnc71/config.xml | 1 - .../frameworks/base/core/res/res/values-mcc505-mnc72/config.xml | 1 - 4 files changed, 4 deletions(-) diff --git a/overlay/frameworks/base/core/res/res/values-mcc505-mnc01/config.xml b/overlay/frameworks/base/core/res/res/values-mcc505-mnc01/config.xml index 00e1de2e..f0c34522 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc505-mnc01/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc505-mnc01/config.xml @@ -22,6 +22,5 @@ +61101 - #101# diff --git a/overlay/frameworks/base/core/res/res/values-mcc505-mnc11/config.xml b/overlay/frameworks/base/core/res/res/values-mcc505-mnc11/config.xml index 00e1de2e..f0c34522 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc505-mnc11/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc505-mnc11/config.xml @@ -22,6 +22,5 @@ +61101 - #101# diff --git a/overlay/frameworks/base/core/res/res/values-mcc505-mnc71/config.xml b/overlay/frameworks/base/core/res/res/values-mcc505-mnc71/config.xml index 00e1de2e..f0c34522 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc505-mnc71/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc505-mnc71/config.xml @@ -22,6 +22,5 @@ +61101 - #101# diff --git a/overlay/frameworks/base/core/res/res/values-mcc505-mnc72/config.xml b/overlay/frameworks/base/core/res/res/values-mcc505-mnc72/config.xml index 00e1de2e..f0c34522 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc505-mnc72/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc505-mnc72/config.xml @@ -22,6 +22,5 @@ +61101 - #101# From 0f2a024b556ec2df030362429d5aa7a9a384f4f0 Mon Sep 17 00:00:00 2001 From: Dan Stoza Date: Thu, 28 Jul 2016 09:42:49 -0700 Subject: [PATCH 80/99] Relax DispSync offsets by 2 ms Adds 2 ms between SurfaceFlinger wakeup and hardware vsync while maintaining the 4 ms gap between Choreographer and SurfaceFlinger Bug: 30090307 Change-Id: Ibd22f8b0a4361078a01141df83da5c86fefcf5be --- marlin/BoardConfig.mk | 4 ++-- sailfish/BoardConfig.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/marlin/BoardConfig.mk b/marlin/BoardConfig.mk index b26582cd..c0ca0d85 100644 --- a/marlin/BoardConfig.mk +++ b/marlin/BoardConfig.mk @@ -40,8 +40,8 @@ TARGET_USES_OVERLAY := true TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS := true MAX_VIRTUAL_DISPLAY_DIMENSION := 4096 TARGET_USES_HWC2 := true -VSYNC_EVENT_PHASE_OFFSET_NS := 4000000 -SF_VSYNC_EVENT_PHASE_OFFSET_NS := 8000000 +VSYNC_EVENT_PHASE_OFFSET_NS := 2000000 +SF_VSYNC_EVENT_PHASE_OFFSET_NS := 6000000 DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x0000005F diff --git a/sailfish/BoardConfig.mk b/sailfish/BoardConfig.mk index 426ce5ce..e6204ce4 100644 --- a/sailfish/BoardConfig.mk +++ b/sailfish/BoardConfig.mk @@ -40,8 +40,8 @@ TARGET_USES_OVERLAY := true TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS := true MAX_VIRTUAL_DISPLAY_DIMENSION := 4096 TARGET_USES_HWC2 := true -VSYNC_EVENT_PHASE_OFFSET_NS := 4000000 -SF_VSYNC_EVENT_PHASE_OFFSET_NS := 8000000 +VSYNC_EVENT_PHASE_OFFSET_NS := 2000000 +SF_VSYNC_EVENT_PHASE_OFFSET_NS := 6000000 DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x00000058 From ccbb7cf376ffac922ab3f1321b563219486c59f2 Mon Sep 17 00:00:00 2001 From: Tim Murray Date: Thu, 28 Jul 2016 09:11:42 -0700 Subject: [PATCH 81/99] Reorder power HAL hints. Boost CPU frequencies before schedtune and membus to improve first-frame latency. bug 30342762 Change-Id: I02de8fdbe509d74db7c2716cad572c51cc20e43a --- init.common.rc | 1 + power/power.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/init.common.rc b/init.common.rc index 1e49da9b..690e3956 100755 --- a/init.common.rc +++ b/init.common.rc @@ -677,6 +677,7 @@ service perfd /vendor/bin/perfd class main user root group root system + writepid /dev/cpuset/system-background/tasks # bugreport is triggered by holding down volume down, volume up and power service bugreport /system/bin/dumpstate -d -p -B -z \ diff --git a/power/power.c b/power/power.c index 66817af0..a4472257 100644 --- a/power/power.c +++ b/power/power.c @@ -328,9 +328,9 @@ static void power_hint(struct power_module *module, power_hint_t hint, // Scheduler is EAS. if (true || strncmp(governor, SCHED_GOVERNOR, strlen(SCHED_GOVERNOR)) == 0) { - // Setting the value of foreground schedtune boost to 40 and + // Setting the value of foreground schedtune boost to 50 and // scaling_min_freq to 1100MHz. - int resources[] = {0x42C0C000, 0x32, 0x41800000, 0x33, 0x40800000, 1100, 0x40800100, 1100}; + int resources[] = {0x40800000, 1100, 0x40800100, 1100, 0x42C0C000, 0x32, 0x41800000, 0x33}; interaction(duration, sizeof(resources)/sizeof(resources[0]), resources); } else { // Scheduler is HMP. int resources[] = {0x41800000, 0x33, 0x40800000, 1000, 0x40800100, 1000, 0x40C00000, 0x1}; From 9d24ad6f74f7a826952a9fd2739a8d5e5082cff3 Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Thu, 28 Jul 2016 11:29:31 -0700 Subject: [PATCH 82/99] Remove the hacky code for copying gps.conf.verizon 1) This code causes regression of case where user use non-vzw sim on vzw image. 2) regression of ag/1219615 3) we already properly handles the case of LPP_PROFILE=3 for vzw on framework change(ag/1231223). So, we can remove this hacky code. Bug: 30001947 Change-Id: I48f2d63c95d28b5b515e95113c6fe94e30de4706 Signed-off-by: Ecco Park --- device-common.mk | 6 --- gps.conf.verizon | 117 ----------------------------------------------- 2 files changed, 123 deletions(-) delete mode 100644 gps.conf.verizon diff --git a/device-common.mk b/device-common.mk index 96aac9e4..9c1cccd1 100644 --- a/device-common.mk +++ b/device-common.mk @@ -393,14 +393,8 @@ TARGET_RECOVERY_WIPE := \ device/google/marlin/recovery.wipe.common # GPS configuration file -ifneq (,$(filter marlinw sailfishw, $(PRODUCT_NAME))) PRODUCT_COPY_FILES += \ device/google/marlin/gps.conf:system/etc/gps.conf -else -#verizon gps configuration file -PRODUCT_COPY_FILES += \ - device/google/marlin/gps.conf.verizon:system/etc/gps.conf -endif # A/B OTA dexopt package PRODUCT_PACKAGES += otapreopt_script diff --git a/gps.conf.verizon b/gps.conf.verizon deleted file mode 100644 index 4aad068f..00000000 --- a/gps.conf.verizon +++ /dev/null @@ -1,117 +0,0 @@ -#Uncommenting these urls would only enable -#the power up auto injection and force injection(test case). -#XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin -#XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin -#XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin - -#Version check for XTRA -#DISABLE = 0 -#AUTO = 1 -#XTRA2 = 2 -#XTRA3 = 3 -XTRA_VERSION_CHECK=0 - -# Error Estimate -# _SET = 1 -# _CLEAR = 0 -ERR_ESTIMATE=0 - -#Test -#NTP_SERVER=time.gpsonextra.net -#Asia -# NTP_SERVER=asia.pool.ntp.org -#Europe -# NTP_SERVER=europe.pool.ntp.org -#North America -# NTP_SERVER=north-america.pool.ntp.org - -# DEBUG LEVELS: 0 - none, 1 - Error, 2 - Warning, 3 - Info -# 4 - Debug, 5 - Verbose -# If DEBUG_LEVEL is commented, Android's logging levels will be used -DEBUG_LEVEL = 3 - -# Intermediate position report, 1=enable, 0=disable -INTERMEDIATE_POS=0 - -# Below bit mask configures how GPS functionalities -# should be locked when user turns off GPS on Settings -# Set bit 0x1 if MO GPS functionalities are to be locked -# Set bit 0x2 if NI GPS functionalities are to be locked -# default - non is locked for backward compatibility -#GPS_LOCK = 0 - -# supl version 1.0 -#SUPL_VER=0x10000 - -# Emergency SUPL, 1=enable, 0=disable -#SUPL_ES=1 - -#Choose PDN for Emergency SUPL -#1 - Use emergency PDN -#0 - Use regular SUPL PDN for Emergency SUPL -USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL=1 - -#SUPL_MODE is a bit mask set in config.xml per carrier by default. -#If it is uncommented here, this value will over write the value from -#config.xml. -#MSA=0X2 -#MSB=0X1 -#SUPL_MODE= - -# GPS Capabilities bit mask -# SCHEDULING = 0x01 -# MSB = 0x02 -# MSA = 0x04 -# ON_DEMAND_TIME = 0x10 -# GEOFENCE = 0x20 -# default = ON_DEMAND_TIME | MSA | MSB | SCHEDULING | GEOFENCE -CAPABILITIES=0x37 - -# Accuracy threshold for intermediate positions -# less accurate positions are ignored, 0 for passing all positions -# ACCURACY_THRES=5000 - -################################ -##### AGPS server settings ##### -################################ - -# FOR SUPL SUPPORT, set the following -# SUPL_HOST=supl.host.com or IP -# SUPL_PORT=1234 - -# FOR C2K PDE SUPPORT, set the following -# C2K_HOST=c2k.pde.com or IP -# C2K_PORT=1234 - -# Bitmask of slots that are available -# for write/install to, where 1s indicate writable, -# and the default value is 0 where no slots -# are writable. For example, AGPS_CERT_WRITABLE_MASK -# of b1000001010 makes 3 slots available -# and the remaining 7 slots unwritable. -#AGPS_CERT_WRITABLE_MASK=0 - -#################################### -# LTE Positioning Profile Settings -#################################### -# 0: Enable RRLP on LTE(Default) -# 1: Enable LPP_User_Plane on LTE -# 2: Enable LPP_Control_Plane -# 3: Enable both LPP_User_Plane and LPP_Control_Plane -LPP_PROFILE = 3 - -################################ -# EXTRA SETTINGS -################################ -# NMEA provider (1=Modem Processor, 0=Application Processor) -NMEA_PROVIDER=0 -# Mark if it is a SGLTE target (1=SGLTE, 0=nonSGLTE) -SGLTE_TARGET=0 - -################################################## -# Select Positioning Protocol on A-GLONASS system -################################################## -# 0x1: RRC CPlane -# 0x2: RRLP UPlane -# 0x4: LLP Uplane -#A_GLONASS_POS_PROTOCOL_SELECT = 0 From ab70f4b1e6ea0cb8899f429010c3e14daa851a2a Mon Sep 17 00:00:00 2001 From: "tim.tm_lin" Date: Thu, 28 Jul 2016 14:27:29 +0800 Subject: [PATCH 83/99] ril:enable WPS feature bug:28936351 Change-Id: I3f8e33a57556b3c351a209d18be3698fa536f2dd Signed-off-by: tim.tm_lin --- device-common.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/device-common.mk b/device-common.mk index 9c1cccd1..8d5ecd0e 100644 --- a/device-common.mk +++ b/device-common.mk @@ -243,6 +243,7 @@ endif PRODUCT_PROPERTY_OVERRIDES += \ persist.cne.feature=1 \ + persist.radio.is_wps_enabled=true \ persist.radio.RATE_ADAPT_ENABLE=1 \ persist.radio.ROTATION_ENABLE=1 \ persist.radio.sw_mbn_update=1 \ From 37f63c15affd1a7d8d642209c1508afc7ef1213e Mon Sep 17 00:00:00 2001 From: Youhan Wang Date: Thu, 28 Jul 2016 14:03:21 -0700 Subject: [PATCH 84/99] Fix Roaming Apn protocol for VZW. Bug:30421877 Change-Id: I73441cfebddaf360aa34318a5d7bf1b2811ca677 --- apns-full-conf.xml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/apns-full-conf.xml b/apns-full-conf.xml index ca590dd8..c705e8b5 100644 --- a/apns-full-conf.xml +++ b/apns-full-conf.xml @@ -431,7 +431,7 @@ type="fota" authtype="0" protocol="IPV4V6" - roaming_protocol="IPV4V6" + roaming_protocol="IP" bearer_bitmask="13|18" mvno_type="gid" mvno_match_data="BAE0000000000000" @@ -448,7 +448,7 @@ type="fota" authtype="0" protocol="IPV4V6" - roaming_protocol="IPV4V6" + roaming_protocol="IP" mvno_type="gid" mvno_match_data="BAE0000000000000" profile_id="3" @@ -464,7 +464,7 @@ type="ims,ia" authtype="0" protocol="IPV4V6" - roaming_protocol="IPV4V6" + roaming_protocol="IPV6" mvno_type="gid" mvno_match_data="BAE0000000000000" profile_id="2" @@ -480,7 +480,7 @@ type="ims,ia" authtype="0" protocol="IPV4V6" - roaming_protocol="IPV4V6" + roaming_protocol="IPV6" bearer_bitmask="13|18" mvno_type="gid" mvno_match_data="BAE0000000000000" @@ -498,7 +498,7 @@ authtype="0" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" - roaming_protocol="IPV4V6" + roaming_protocol="IP" mvno_type="gid" mvno_match_data="BAE0000000000000" profile_id="4" @@ -515,7 +515,7 @@ authtype="0" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" - roaming_protocol="IPV4V6" + roaming_protocol="IP" bearer_bitmask="13|18" mvno_type="gid" mvno_match_data="BAE0000000000000" @@ -8135,7 +8135,7 @@ apn="VZWADMIN" type="fota" protocol="IPV4V6" - roaming_protocol="IPV4V6" + roaming_protocol="IP" bearer_bitmask="13|14|18" profile_id="3" modem_cognitive="true" @@ -8150,7 +8150,7 @@ apn="VZWIMS" type="ims" protocol="IPV4V6" - roaming_protocol="IPV4V6" + roaming_protocol="IPV6" bearer_bitmask="13|14|18" profile_id="2" modem_cognitive="true" @@ -8166,7 +8166,7 @@ type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" - roaming_protocol="IPV4V6" + roaming_protocol="IP" bearer_bitmask="13|14|18" profile_id="4" modem_cognitive="true" @@ -13987,7 +13987,7 @@ type="fota" authtype="0" protocol="IPV4V6" - roaming_protocol="IPV4V6" + roaming_protocol="IP" bearer_bitmask="1|2|3|9|10|11|13|14|15|18" profile_id="3" modem_cognitive="true" @@ -14004,7 +14004,7 @@ type="ims,ia" authtype="0" protocol="IPV4V6" - roaming_protocol="IPV4V6" + roaming_protocol="IPV6" bearer_bitmask="1|2|3|9|10|11|13|14|15|18" profile_id="2" modem_cognitive="true" @@ -14022,7 +14022,7 @@ authtype="0" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" - roaming_protocol="IPV4V6" + roaming_protocol="IP" bearer_bitmask="1|2|3|9|10|11|13|14|15|18" profile_id="4" modem_cognitive="true" From fa601edc9a3be3af2ff07934bb9b39a562365cc1 Mon Sep 17 00:00:00 2001 From: Youhan Wang Date: Fri, 29 Jul 2016 10:58:59 -0700 Subject: [PATCH 85/99] Fix Rogers, Fido. Bug:30417284 Change-Id: I70fc82bdf677cf93262b2e07a5f5c61f328ac7ac --- apns-full-conf.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apns-full-conf.xml b/apns-full-conf.xml index c705e8b5..8e8be342 100644 --- a/apns-full-conf.xml +++ b/apns-full-conf.xml @@ -7103,6 +7103,7 @@ mnc="370" apn="ltedata.apn" type="dun" + protocol="IPV4V6" /> From 9b133564f8888e62ef4dea94c25d4dcaa92b5117 Mon Sep 17 00:00:00 2001 From: Patrick Tjin Date: Mon, 1 Aug 2016 12:19:53 -0700 Subject: [PATCH 86/99] marlin: Convert the ro.boot.mid to ro.boot.hardware.sku ro.boot.mid is set as G-PWxxxx, the ro.boot.hardware.sku must not contain special characters. Add script to convert from G-PWxxxx to GPWxxxx. avc: denied { getattr } for pid=542 comm="init.mid.sh" path="/system/bin/sh" dev="dm-0" ino=567 scontext=u:r:init_mid:s0 tcontext=u:object_r:shell_exec:s0 tclass=file permissive=0 avc: denied { write } for pid=547 comm="setprop" name="property_service" dev="tmpfs" ino=15421 scontext=u:r:init_mid:s0 tcontext=u:object_r:property_socket:s0 tclass=sock_file permissive=0 avc: denied { read } for pid=3747 comm="ndroid.settings" name="u:object_r:hw_sku_prop:s0" dev="tmpfs" ino=15027 scontext=u:r:system_app:s0 tcontext=u:object_r:hw_sku_prop:s0 tclass=file permissive=0 Bug: 30548753 Change-Id: Ia4597908d7c25c643d445ab945a3155dc544092b --- device-common.mk | 3 ++- init.common.rc | 4 +--- init.mid.sh | 9 +++++++++ sepolicy/file_contexts | 1 + sepolicy/init_mid.te | 10 ++++++++++ sepolicy/property.te | 2 ++ sepolicy/property_contexts | 2 ++ sepolicy/system_app.te | 1 + 8 files changed, 28 insertions(+), 4 deletions(-) create mode 100755 init.mid.sh create mode 100644 sepolicy/init_mid.te diff --git a/device-common.mk b/device-common.mk index 6474777d..c4b94b7e 100644 --- a/device-common.mk +++ b/device-common.mk @@ -215,7 +215,8 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \ device/google/marlin/init.qcom.qseecomd.sh:system/bin/init.qcom.qseecomd.sh \ device/google/marlin/init.radio.sh:system/bin/init.radio.sh \ - device/google/marlin/init.power.sh:system/bin/init.power.sh + device/google/marlin/init.power.sh:system/bin/init.power.sh \ + device/google/marlin/init.mid.sh:system/bin/init.mid.sh # Reduce client buffer size for fast audio output tracks PRODUCT_PROPERTY_OVERRIDES += \ diff --git a/init.common.rc b/init.common.rc index 6a83c6ef..3afd9aa7 100755 --- a/init.common.rc +++ b/init.common.rc @@ -212,6 +212,7 @@ on early-boot on boot exec - root root system -- /system/bin/init.power.sh + exec - root root system -- /system/bin/init.mid.sh # update cpusets now that processors are up write /dev/cpuset/top-app/cpus 0-3 @@ -389,9 +390,6 @@ on boot setprop ro.qualcomm.bluetooth.map true setprop ro.bluetooth.hfp.ver 1.6 - # set hardware sku - setprop ro.boot.hardware.sku ${ro.boot.mid} - on property:wc_transport.start_hci=true start start_hci_filter diff --git a/init.mid.sh b/init.mid.sh new file mode 100755 index 00000000..b14c5a43 --- /dev/null +++ b/init.mid.sh @@ -0,0 +1,9 @@ +#!/system/bin/sh + +# Convert ro.boot.mid to ro.boot.hardware.sku format + +SKU=`getprop ro.boot.mid | sed 's/-//g'` +if [ -z "$SKU" ]; then + SKU=unknown +fi +setprop ro.boot.hardware.sku $SKU diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts index 9b7d06f3..01de8508 100755 --- a/sepolicy/file_contexts +++ b/sepolicy/file_contexts @@ -109,6 +109,7 @@ /system/bin/ssr_setup u:object_r:ssr_setup_exec:s0 /system/bin/ramdump u:object_r:htc_ramdump_exec:s0 +/system/bin/init\.mid\.sh u:object_r:init_mid_exec:s0 /system/bin/init\.power\.sh u:object_r:init_power_exec:s0 /system/bin/init\.radio\.sh u:object_r:init_radio_exec:s0 diff --git a/sepolicy/init_mid.te b/sepolicy/init_mid.te new file mode 100644 index 00000000..72394691 --- /dev/null +++ b/sepolicy/init_mid.te @@ -0,0 +1,10 @@ +type init_mid, domain; +type init_mid_exec, exec_type, file_type; + +init_daemon_domain(init_mid) + +allow init_mid toolbox_exec:file rx_file_perms; +allow init_mid shell_exec:file rx_file_perms; + +set_prop(init_mid, hw_sku_prop); +get_prop(init_mid, mid_prop); diff --git a/sepolicy/property.te b/sepolicy/property.te index 173cbc37..07eb6133 100644 --- a/sepolicy/property.te +++ b/sepolicy/property.te @@ -1,3 +1,5 @@ type camera_prop, property_type; type sensors_prop, property_type; type wc_prop, property_type; +type hw_sku_prop, property_type; +type mid_prop, property_type; diff --git a/sepolicy/property_contexts b/sepolicy/property_contexts index 7eb117f2..cda6a483 100644 --- a/sepolicy/property_contexts +++ b/sepolicy/property_contexts @@ -4,3 +4,5 @@ sensors. u:object_r:sensors_prop:s0 wc_transport. u:object_r:wc_prop:s0 net.r_rmnet u:object_r:net_radio_prop:s0 radio. u:object_r:radio_prop:s0 +ro.boot.hardware.sku u:object_r:hw_sku_prop:s0 +ro.boot.mid u:object_r:mid_prop:s0 diff --git a/sepolicy/system_app.te b/sepolicy/system_app.te index 83990649..1d6181ea 100644 --- a/sepolicy/system_app.te +++ b/sepolicy/system_app.te @@ -2,3 +2,4 @@ unix_socket_connect(system_app, cnd, cnd) allow system_app atfwd_service:service_manager add; allow system_app cne_service:service_manager add; allow system_app time:unix_stream_socket connectto; +get_prop(system_app, hw_sku_prop); From eb969e66ca8307f24a807b6d7b94665a006916d1 Mon Sep 17 00:00:00 2001 From: Patrick Tjin Date: Mon, 1 Aug 2016 12:19:53 -0700 Subject: [PATCH 87/99] marlin: Convert the ro.boot.mid to ro.boot.hardware.sku ro.boot.mid is set as G-PWxxxx, the ro.boot.hardware.sku must not contain special characters. Add script to convert from G-PWxxxx to GPWxxxx. avc: denied { getattr } for pid=542 comm="init.mid.sh" path="/system/bin/sh" dev="dm-0" ino=567 scontext=u:r:init_mid:s0 tcontext=u:object_r:shell_exec:s0 tclass=file permissive=0 avc: denied { write } for pid=547 comm="setprop" name="property_service" dev="tmpfs" ino=15421 scontext=u:r:init_mid:s0 tcontext=u:object_r:property_socket:s0 tclass=sock_file permissive=0 avc: denied { read } for pid=3747 comm="ndroid.settings" name="u:object_r:hw_sku_prop:s0" dev="tmpfs" ino=15027 scontext=u:r:system_app:s0 tcontext=u:object_r:hw_sku_prop:s0 tclass=file permissive=0 Bug: 30548753 Change-Id: Ia4597908d7c25c643d445ab945a3155dc544092b --- device-common.mk | 3 ++- init.common.rc | 4 +--- init.mid.sh | 9 +++++++++ sepolicy/file_contexts | 1 + sepolicy/init_mid.te | 10 ++++++++++ sepolicy/property.te | 2 ++ sepolicy/property_contexts | 2 ++ sepolicy/system_app.te | 1 + 8 files changed, 28 insertions(+), 4 deletions(-) create mode 100755 init.mid.sh create mode 100644 sepolicy/init_mid.te diff --git a/device-common.mk b/device-common.mk index 8d5ecd0e..e21f2a90 100644 --- a/device-common.mk +++ b/device-common.mk @@ -211,7 +211,8 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \ device/google/marlin/init.qcom.qseecomd.sh:system/bin/init.qcom.qseecomd.sh \ device/google/marlin/init.radio.sh:system/bin/init.radio.sh \ - device/google/marlin/init.power.sh:system/bin/init.power.sh + device/google/marlin/init.power.sh:system/bin/init.power.sh \ + device/google/marlin/init.mid.sh:system/bin/init.mid.sh # Reduce client buffer size for fast audio output tracks PRODUCT_PROPERTY_OVERRIDES += \ diff --git a/init.common.rc b/init.common.rc index 690e3956..ef0b9fe7 100755 --- a/init.common.rc +++ b/init.common.rc @@ -211,6 +211,7 @@ on early-boot on boot exec - root root system -- /system/bin/init.power.sh + exec - root root system -- /system/bin/init.mid.sh # update cpusets now that processors are up write /dev/cpuset/top-app/cpus 0-3 @@ -388,9 +389,6 @@ on boot setprop ro.qualcomm.bluetooth.map true setprop ro.bluetooth.hfp.ver 1.6 - # set hardware sku - setprop ro.boot.hardware.sku ${ro.boot.mid} - on property:wc_transport.start_hci=true start start_hci_filter diff --git a/init.mid.sh b/init.mid.sh new file mode 100755 index 00000000..b14c5a43 --- /dev/null +++ b/init.mid.sh @@ -0,0 +1,9 @@ +#!/system/bin/sh + +# Convert ro.boot.mid to ro.boot.hardware.sku format + +SKU=`getprop ro.boot.mid | sed 's/-//g'` +if [ -z "$SKU" ]; then + SKU=unknown +fi +setprop ro.boot.hardware.sku $SKU diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts index d7470ca3..dc2c2854 100755 --- a/sepolicy/file_contexts +++ b/sepolicy/file_contexts @@ -109,6 +109,7 @@ /system/bin/ssr_setup u:object_r:ssr_setup_exec:s0 /system/bin/ramdump u:object_r:htc_ramdump_exec:s0 +/system/bin/init\.mid\.sh u:object_r:init_mid_exec:s0 /system/bin/init\.power\.sh u:object_r:init_power_exec:s0 /system/bin/init\.radio\.sh u:object_r:init_radio_exec:s0 diff --git a/sepolicy/init_mid.te b/sepolicy/init_mid.te new file mode 100644 index 00000000..72394691 --- /dev/null +++ b/sepolicy/init_mid.te @@ -0,0 +1,10 @@ +type init_mid, domain; +type init_mid_exec, exec_type, file_type; + +init_daemon_domain(init_mid) + +allow init_mid toolbox_exec:file rx_file_perms; +allow init_mid shell_exec:file rx_file_perms; + +set_prop(init_mid, hw_sku_prop); +get_prop(init_mid, mid_prop); diff --git a/sepolicy/property.te b/sepolicy/property.te index 173cbc37..07eb6133 100644 --- a/sepolicy/property.te +++ b/sepolicy/property.te @@ -1,3 +1,5 @@ type camera_prop, property_type; type sensors_prop, property_type; type wc_prop, property_type; +type hw_sku_prop, property_type; +type mid_prop, property_type; diff --git a/sepolicy/property_contexts b/sepolicy/property_contexts index 7eb117f2..cda6a483 100644 --- a/sepolicy/property_contexts +++ b/sepolicy/property_contexts @@ -4,3 +4,5 @@ sensors. u:object_r:sensors_prop:s0 wc_transport. u:object_r:wc_prop:s0 net.r_rmnet u:object_r:net_radio_prop:s0 radio. u:object_r:radio_prop:s0 +ro.boot.hardware.sku u:object_r:hw_sku_prop:s0 +ro.boot.mid u:object_r:mid_prop:s0 diff --git a/sepolicy/system_app.te b/sepolicy/system_app.te index 83990649..1d6181ea 100644 --- a/sepolicy/system_app.te +++ b/sepolicy/system_app.te @@ -2,3 +2,4 @@ unix_socket_connect(system_app, cnd, cnd) allow system_app atfwd_service:service_manager add; allow system_app cne_service:service_manager add; allow system_app time:unix_stream_socket connectto; +get_prop(system_app, hw_sku_prop); From afb71620c557c053dc01036425926473c20d87f9 Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Wed, 3 Aug 2016 19:53:08 +0000 Subject: [PATCH 88/99] Revert "device-common: ro.audio.offload_wakelock=false" This reverts commit d9403f4adc54600073d4b8154c3bda247059a6c2. Bug: 30496941 Bug: 30562349 Change-Id: I912d31e8c1273c0f01039ff17c8e837ab574d92c --- device-common.mk | 4 ---- 1 file changed, 4 deletions(-) diff --git a/device-common.mk b/device-common.mk index c4b94b7e..52a805af 100644 --- a/device-common.mk +++ b/device-common.mk @@ -69,10 +69,6 @@ PRODUCT_PROPERTY_OVERRIDES += \ ro.hwui.text_large_cache_width=2048 \ ro.hwui.text_large_cache_height=1024 -# Don't hold AudioOffload wakelock -PRODUCT_PROPERTY_OVERRIDES += \ - ro.audio.offload_wakelock=false - # For android_filesystem_config.h PRODUCT_PACKAGES += fs_config_files \ fs_config_dirs From 7267aa8a9423bea5341f064d48701a935089a3e5 Mon Sep 17 00:00:00 2001 From: Siqi Lin Date: Wed, 10 Aug 2016 10:33:39 -0700 Subject: [PATCH 89/99] REVERT ME: Add no_console_suspend to kernel parameters Enable logging of kernel messages to console-ramoops while the device is suspended. This is a debugging patch for b/30650927. STOPSHIP - revert this patch before launch. Change-Id: Iceb3ee294d322cd133ebd16d314f0580e0f5f45a --- marlin/BoardConfig.mk | 2 +- sailfish/BoardConfig.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/marlin/BoardConfig.mk b/marlin/BoardConfig.mk index 16a2f566..4f2d7e83 100644 --- a/marlin/BoardConfig.mk +++ b/marlin/BoardConfig.mk @@ -97,7 +97,7 @@ ifneq ($(TARGET_USES_AOSP),true) TARGET_USES_QCOM_BSP := true endif -BOARD_KERNEL_CMDLINE := console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=marlin user_debug=31 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 cma=32M@0-0xffffffff +BOARD_KERNEL_CMDLINE := console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=marlin user_debug=31 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 cma=32M@0-0xffffffff no_console_suspend BOARD_ROOT_EXTRA_FOLDERS := bt_firmware firmware firmware/radio persist BOARD_ROOT_EXTRA_SYMLINKS := /vendor/lib/dsp:/dsp diff --git a/sailfish/BoardConfig.mk b/sailfish/BoardConfig.mk index e6204ce4..c63197c5 100644 --- a/sailfish/BoardConfig.mk +++ b/sailfish/BoardConfig.mk @@ -93,7 +93,7 @@ ifneq ($(TARGET_USES_AOSP),true) TARGET_USES_QCOM_BSP := true endif -BOARD_KERNEL_CMDLINE := console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=sailfish user_debug=31 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 cma=32M@0-0xffffffff +BOARD_KERNEL_CMDLINE := console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=sailfish user_debug=31 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 cma=32M@0-0xffffffff no_console_suspend BOARD_ROOT_EXTRA_FOLDERS := bt_firmware firmware firmware/radio persist BOARD_ROOT_EXTRA_SYMLINKS := /vendor/lib/dsp:/dsp From a8f86d5093c6a2aeffd672827a0128dfad985463 Mon Sep 17 00:00:00 2001 From: jasmine cha Date: Fri, 12 Aug 2016 20:12:48 +0800 Subject: [PATCH 90/99] marlin: audio: Update volume curve.(0812) 1.[audio_policy_volumes] VOIP HH volume curve changes Bug:30614793 Change-Id: I5b436cc15c4486d08b5474c3c9b31d6f3c54ce5d Signed-off-by: jasmine cha --- audio_policy_volumes_drc.xml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/audio_policy_volumes_drc.xml b/audio_policy_volumes_drc.xml index b0685556..79448952 100644 --- a/audio_policy_volumes_drc.xml +++ b/audio_policy_volumes_drc.xml @@ -30,15 +30,16 @@ volume index from 0 to 100. 100,0 - 0,-2800 - 38,-1900 - 56,-950 - 100,0 + 0,-2400 + 33,-1700 + 66,-1200 + 85,-900 + 100,-400 0,-2499 - 38,-1530 - 56,-1040 + 33,-1650 + 66,-800 100,0 Date: Fri, 12 Aug 2016 21:36:28 +0800 Subject: [PATCH 91/99] marlin: audio: Update volume curve and mxier table(0812#2) 1. [audio_policy_volumes_drc] Fine tune the Music playback, ring ,alarm notification and system sound. 2. [mixer_paths.xml] Enable the backend 24bit for speaker playback path 3. [audio_platform_info.xml] Fine tune mapping index volume to acdb gain Bug:29933450 Change-Id: Ib856197202e4f4f19ae45a103a81df320af25d82 Signed-off-by: jasmine cha --- audio_platform_info.xml | 18 +++++++++--- audio_policy_volumes_drc.xml | 53 ++++++++++++++++++++++++------------ mixer_paths.xml | 3 ++ 3 files changed, 53 insertions(+), 21 deletions(-) diff --git a/audio_platform_info.xml b/audio_platform_info.xml index adb762b6..2cfff34f 100644 --- a/audio_platform_info.xml +++ b/audio_platform_info.xml @@ -64,10 +64,20 @@ - - - - + + + + + + + + + + + + + + diff --git a/audio_policy_volumes_drc.xml b/audio_policy_volumes_drc.xml index 79448952..84fb350d 100644 --- a/audio_policy_volumes_drc.xml +++ b/audio_policy_volumes_drc.xml @@ -51,10 +51,10 @@ volume index from 0 to 100. 100,-1800 - 1,-3400 - 33,-2400 - 66,-1500 - 100,-600 + 1,-1600 + 33,-1200 + 66,-600 + 100,-100 @@ -63,10 +63,14 @@ volume index from 0 to 100. - 1,-4000 - 42,-2710 - 85,-1620 - 100,0 + 1,-4500 + 14,-4000 + 28,-3000 + 42,-2690 + 57,-2400 + 71,-1960 + 85,-1550 + 100,-1000 @@ -76,7 +80,14 @@ volume index from 0 to 100. ref="DEFAULT_MEDIA_VOLUME_CURVE"/> 1,-5700 - 51,-2600 + 6,-4260 + 26,-3990 + 33,-3400 + 40,-2783 + 53,-2516 + 73,-1699 + 80,-1430 + 86,-1190 93,-850 100,0 @@ -87,10 +98,14 @@ volume index from 0 to 100. - 1,-4000 - 42,-2710 - 85,-1620 - 100,0 + 1,-4500 + 14,-4000 + 28,-3000 + 42,-2690 + 57,-2400 + 71,-1960 + 85,-1550 + 100,-1000 @@ -99,10 +114,14 @@ volume index from 0 to 100. - 1,-4000 - 42,-2710 - 85,-1620 - 100,0 + 1,-4500 + 14,-4000 + 28,-3000 + 42,-2690 + 57,-2400 + 71,-1960 + 85,-1550 + 100,-1000 diff --git a/mixer_paths.xml b/mixer_paths.xml index ebf811f9..86810a5f 100644 --- a/mixer_paths.xml +++ b/mixer_paths.xml @@ -1,6 +1,7 @@ + @@ -1115,11 +1116,13 @@ + + From 022e87d69f760ecf96a9b70634dda75937d09d22 Mon Sep 17 00:00:00 2001 From: Ed Tam Date: Fri, 12 Aug 2016 17:32:23 -0700 Subject: [PATCH 92/99] Re-add qti service Bug: 30840019 Change-Id: Ib003a1d4a53d3ffdd991b61c11df7eb238885c51 Signed-off-by: Ed Tam --- init.common.rc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/init.common.rc b/init.common.rc index 559a91aa..84818c7c 100755 --- a/init.common.rc +++ b/init.common.rc @@ -573,6 +573,11 @@ service netmgrd /system/bin/netmgrd user root group root wifi wakelock radio inet +service qti /vendor/bin/qti + class main + user radio + group radio diag usb + service p2p_supplicant /system/bin/wpa_supplicant \ -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ -I/system/etc/wifi/p2p_supplicant_overlay.conf -N \ From 7fe6adc473d84a703b07860626fc45aac2a1a658 Mon Sep 17 00:00:00 2001 From: Dan Stoza Date: Mon, 15 Aug 2016 09:39:57 -0700 Subject: [PATCH 93/99] Disable HWC virtual displays Disables hardware composer virtual displays, since they were indirectly causing screenrecord to jank. Bug: 30022738 Change-Id: I6b209c4ba882fbbaf7cdd65ae412d53f1ada6bc9 --- device-common.mk | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/device-common.mk b/device-common.mk index 7d968ba0..de72dd66 100644 --- a/device-common.mk +++ b/device-common.mk @@ -443,3 +443,9 @@ endif ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT))) PRODUCT_PROPERTY_OVERRIDES += ro.logd.size=1M endif + +# b/30022738 +# Work around janky screenrecord performance by disabling hardware composer +# virtual displays +PRODUCT_PROPERTY_OVERRIDES += \ + debug.sf.disable_hwc_vds=1 From f186ae4e7e7e52674e8b28fadfc7d02e71b0ae14 Mon Sep 17 00:00:00 2001 From: Youhan Wang Date: Wed, 17 Aug 2016 09:53:02 -0700 Subject: [PATCH 94/99] Rogers: Change tethering apn roaming protocol to IPV4V6. Bug:30417284 Change-Id: I19b1a819b969aab6122df93000c194cda2105905 --- apns-full-conf.xml | 2 +- .../base/core/res/res/values-mcc302-mnc720/config.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apns-full-conf.xml b/apns-full-conf.xml index 3823a7cc..de05573a 100644 --- a/apns-full-conf.xml +++ b/apns-full-conf.xml @@ -7245,7 +7245,7 @@ apn="ltedata.apn" type="dun" protocol="IPV4V6" - roaming_protocol="IP" + roaming_protocol="IPV4V6" /> - [ApnSettingV3]Rogers Tethering,ltedata.apn,,,,,,,,,302,720,,DUN,IPV4V6,IP,true,,,,,,,,, + [ApnSettingV3]Rogers Tethering,ltedata.apn,,,,,,,,,302,720,,DUN,IPV4V6,IPV4V6,true,,,,,,,,, From 999a8c2709d699b80b643b5db9e4ee810f079dfa Mon Sep 17 00:00:00 2001 From: Dante Russo Date: Mon, 15 Aug 2016 17:22:54 -0700 Subject: [PATCH 95/99] Adding retry logic within loc_sync_send_req() API Adding logic to retry sending message to location engine in case a failure is encountered. CRs-Fixed: 987012 Bug: 29542599 Change-Id: Id7dd9a673af2aa0ceb7184508be776bf2bf9c664 --- .../loc_api/loc_api_v02/loc_api_sync_req.c | 63 +++++++++++-------- 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/location/loc_api/loc_api_v02/loc_api_sync_req.c b/location/loc_api/loc_api_v02/loc_api_sync_req.c index c5d0dbae..1b2b69e9 100644 --- a/location/loc_api/loc_api_v02/loc_api_sync_req.c +++ b/location/loc_api/loc_api_v02/loc_api_sync_req.c @@ -497,6 +497,7 @@ locClientStatusEnumType loc_sync_send_req locClientStatusEnumType status = eLOC_CLIENT_SUCCESS ; int select_id; int rc = 0; + int sendReqRetryRem = 5; // Number of retries remaining // Select the callback we are waiting for select_id = loc_sync_select_ind(client_handle, ind_id, req_id, @@ -504,38 +505,48 @@ locClientStatusEnumType loc_sync_send_req if (select_id >= 0) { - status = locClientSendReq (client_handle, req_id, req_payload); - LOC_LOGV("%s:%d]: select_id = %d,locClientSendReq returned %d\n", - __func__, __LINE__, select_id, status); + // Loop to retry few times in case of failures + do + { + status = locClientSendReq (client_handle, req_id, req_payload); + LOC_LOGV("%s:%d]: select_id = %d,locClientSendReq returned %d\n", + __func__, __LINE__, select_id, status); + + if (status == eLOC_CLIENT_SUCCESS ) + { + // Wait for the indication callback + if (( rc = loc_sync_wait_for_ind( select_id, + timeout_msec / 1000, + ind_id) ) < 0) + { + if ( rc == -ETIMEDOUT) + status = eLOC_CLIENT_FAILURE_TIMEOUT; + else + status = eLOC_CLIENT_FAILURE_INTERNAL; + + // Callback waiting failed + LOC_LOGE("%s:%d]: loc_api_wait_for_ind failed, err %d, " + "select id %d, status %s", __func__, __LINE__, rc , + select_id, loc_get_v02_client_status_name(status)); + } + else + { + status = eLOC_CLIENT_SUCCESS; + LOC_LOGV("%s:%d]: success (select id %d)\n", + __func__, __LINE__, select_id); + } + } + + } while(( status == eLOC_CLIENT_FAILURE_ENGINE_BUSY || + status == eLOC_CLIENT_FAILURE_PHONE_OFFLINE || + status == eLOC_CLIENT_FAILURE_INTERNAL ) && + sendReqRetryRem-- > 0); if (status != eLOC_CLIENT_SUCCESS ) { loc_free_slot(select_id); } - else - { - // Wait for the indication callback - if (( rc = loc_sync_wait_for_ind( select_id, - timeout_msec / 1000, - ind_id) ) < 0) - { - if ( rc == -ETIMEDOUT) - status = eLOC_CLIENT_FAILURE_TIMEOUT; - else - status = eLOC_CLIENT_FAILURE_INTERNAL; - // Callback waiting failed - LOC_LOGE("%s:%d]: loc_api_wait_for_ind failed, err %d, " - "select id %d, status %s", __func__, __LINE__, rc , - select_id, loc_get_v02_client_status_name(status)); - } - else - { - status = eLOC_CLIENT_SUCCESS; - LOC_LOGV("%s:%d]: success (select id %d)\n", - __func__, __LINE__, select_id); - } - } } /* select id */ return status; From 3722d8e2d2ed84c48b40a8c8fa4edacf2c7026fa Mon Sep 17 00:00:00 2001 From: Svet Ganov Date: Thu, 18 Aug 2016 12:39:26 -0700 Subject: [PATCH 96/99] Grant Marlin and Sailfish default permission This CL uses the new resource based config mechanism to specify the default permission grants for Marlin and Sailfish. The default grants have already been approved. bug:30929033 bug:29546655 Change-Id: I4eefc78068dea008e7b775c403e80c855b0ca6e3 --- default-permissions.xml | 58 +++++++++++++++++++++++++++++++++++++++++ device-common.mk | 4 +++ 2 files changed, 62 insertions(+) create mode 100644 default-permissions.xml diff --git a/default-permissions.xml b/default-permissions.xml new file mode 100644 index 00000000..2db6c793 --- /dev/null +++ b/default-permissions.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/device-common.mk b/device-common.mk index 81bd888d..ab24844b 100644 --- a/device-common.mk +++ b/device-common.mk @@ -404,6 +404,10 @@ TARGET_RECOVERY_WIPE := \ PRODUCT_COPY_FILES += \ device/google/marlin/gps.conf:system/etc/gps.conf +# Default permission grant exceptions +PRODUCT_COPY_FILES += \ + device/google/marlin/default-permissions.xml:system/etc/default-permissions/default-permissions.xml + # A/B OTA dexopt package PRODUCT_PACKAGES += otapreopt_script From 4caeeb29d29b083f822fb3a783de11071b6c6629 Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Thu, 18 Aug 2016 13:11:37 -0700 Subject: [PATCH 97/99] change the SUPL_MODE to 1 for all config files except for VZW Bug: 30773815 Change-Id: I612403c542e40b7b273298a7aa4f9fc1f54672ce Signed-off-by: Ecco Park --- .../base/core/res/res/values-mcc310-mnc120/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc220/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc221/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc222/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc223/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc224/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc225/config.xml | 4 ++-- .../base/core/res/res/values-mcc311-mnc226/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc227/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc228/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc229/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc490/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc580/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc581/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc582/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc583/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc584/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc585/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc586/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc587/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc588/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc589/config.xml | 2 +- .../base/core/res/res/values-mcc311-mnc870/config.xml | 2 +- 23 files changed, 24 insertions(+), 24 deletions(-) diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc120/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc120/config.xml index eb872304..6fa03990 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc120/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc120/config.xml @@ -54,7 +54,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc220/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc220/config.xml index a0183f07..c18f1679 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc220/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc220/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc221/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc221/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc221/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc221/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc222/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc222/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc222/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc222/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc223/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc223/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc223/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc223/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc224/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc224/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc224/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc224/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc225/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc225/config.xml index 89853f9e..52943552 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc225/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc225/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 - SUPL_ES=0 + SUPL_MODE=1 + SUPL_ES=1 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc226/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc226/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc226/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc226/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc227/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc227/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc227/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc227/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc228/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc228/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc228/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc228/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc229/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc229/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc229/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc229/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc490/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc490/config.xml index a77713e8..9908d734 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc490/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc490/config.xml @@ -55,7 +55,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc580/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc580/config.xml index a0183f07..c18f1679 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc580/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc580/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc581/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc581/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc581/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc581/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc582/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc582/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc582/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc582/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc583/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc583/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc583/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc583/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc584/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc584/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc584/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc584/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc585/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc585/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc585/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc585/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc586/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc586/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc586/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc586/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc587/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc587/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc587/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc587/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc588/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc588/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc588/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc588/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc589/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc589/config.xml index 89853f9e..47413674 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc589/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc589/config.xml @@ -35,7 +35,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc870/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc870/config.xml index a77713e8..9908d734 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc870/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc870/config.xml @@ -55,7 +55,7 @@ INTERMEDIATE_POS=0 GPS_LOCK=3 LPP_PROFILE=2 - SUPL_MODE=0 + SUPL_MODE=1 SUPL_ES=0 From 4fe77da33ac493d4456918f8272b48b753002400 Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Tue, 9 Aug 2016 13:20:39 -0700 Subject: [PATCH 98/99] add supl_host for AT&T Bug: 30451186 Change-Id: Ie751c53d98d6a57d6d91929dbcce71139936cae4 Signed-off-by: Ecco Park --- .../base/core/res/res/values-mcc310-mnc410/config.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc410/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc410/config.xml index de3b030e..d9e21fb6 100644 --- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc410/config.xml +++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc410/config.xml @@ -38,7 +38,7 @@ - SUPL_HOST=NONE + SUPL_HOST=supl.google.com SUPL_PORT=7275 XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra3grc.bin XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra3grc.bin From dafbec6c61874055bcaf06a442343b5c8539a5eb Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 16 Aug 2016 14:51:12 -0700 Subject: [PATCH 99/99] marlin: remove discard in fstab Bug: 30807864 Change-Id: If212f5f7de181cab308c4206de523f1dc8b46907 --- fstab.aosp_common | 2 +- fstab.common | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fstab.aosp_common b/fstab.aosp_common index 7b3a36ad..98661b39 100755 --- a/fstab.aosp_common +++ b/fstab.aosp_common @@ -9,7 +9,7 @@ /dev/block/bootdevice/by-name/system / ext4 ro,barrier=1,discard wait,slotselect,verify /dev/block/bootdevice/by-name/vendor /vendor ext4 ro,barrier=1,discard wait,slotselect /dev/block/bootdevice/by-name/modem /firmware/radio vfat ro,shortname=lower,uid=1000,gid=0,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait,slotselect -/dev/block/bootdevice/by-name/userdata /data ext4 nosuid,nodev,barrier=1,noauto_da_alloc,discard wait,check,formattable,fileencryption=ice +/dev/block/bootdevice/by-name/userdata /data ext4 nosuid,nodev,barrier=1,noauto_da_alloc wait,check,formattable,fileencryption=ice /dev/block/zram0 none swap defaults zramsize=536870912 /dev/block/bootdevice/by-name/misc /misc emmc defaults defaults /devices/*/xhci-hcd.0.auto/usb* auto vfat defaults voldmanaged=usb:auto diff --git a/fstab.common b/fstab.common index 4f6ae36a..a1aaa098 100755 --- a/fstab.common +++ b/fstab.common @@ -9,7 +9,7 @@ /dev/block/bootdevice/by-name/system / ext4 ro,barrier=1,discard wait,slotselect,verify /dev/block/bootdevice/by-name/vendor /vendor ext4 ro,barrier=1,discard wait,slotselect,verify /dev/block/bootdevice/by-name/modem /firmware/radio vfat ro,shortname=lower,uid=1000,gid=0,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait,slotselect -/dev/block/bootdevice/by-name/userdata /data ext4 nosuid,nodev,barrier=1,noauto_da_alloc,discard wait,check,formattable,fileencryption=ice +/dev/block/bootdevice/by-name/userdata /data ext4 nosuid,nodev,barrier=1,noauto_da_alloc wait,check,formattable,fileencryption=ice /dev/block/zram0 none swap defaults zramsize=536870912 /dev/block/bootdevice/by-name/misc /misc emmc defaults defaults /devices/*/xhci-hcd.0.auto/usb* auto vfat defaults voldmanaged=usb:auto