From e5d21b9b78f5a603560a1fe335a84638294b33c4 Mon Sep 17 00:00:00 2001 From: Thomas Joseph Avila Date: Mon, 23 Jan 2017 18:33:11 -0800 Subject: [PATCH 001/182] Initial empty repository From f8239eb92e8c7be69a6654bad53a1ef137d38f76 Mon Sep 17 00:00:00 2001 From: John Dias Date: Mon, 6 Feb 2017 16:06:08 -0800 Subject: [PATCH 002/182] taimen: setup initial build targeting mtp8998 Test: built and flashed by hand Change-Id: I02a0b803c2e8d769fe07d7db78d260527f486614 Signed-off-by: John Dias --- Android.mk | 19 ++++++++ AndroidProducts.mk | 18 +++++++ BoardConfig.mk | 20 ++++++++ android_filesystem_config.h | 40 ++++++++++++++++ aosp_taimen.mk | 33 +++++++++++++ device.mk | 31 ++++++++++++ system.prop | 96 +++++++++++++++++++++++++++++++++++++ 7 files changed, 257 insertions(+) create mode 100644 Android.mk create mode 100644 AndroidProducts.mk create mode 100644 BoardConfig.mk create mode 100644 android_filesystem_config.h create mode 100644 aosp_taimen.mk create mode 100644 device.mk create mode 100644 system.prop diff --git a/Android.mk b/Android.mk new file mode 100644 index 0000000..7e4418d --- /dev/null +++ b/Android.mk @@ -0,0 +1,19 @@ +# +# Copyright 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +ifneq ($(filter taimen, $(TARGET_DEVICE)),) + include $(call first-makefiles-under, device/qcom/msmcobalt) +endif diff --git a/AndroidProducts.mk b/AndroidProducts.mk new file mode 100644 index 0000000..654dafc --- /dev/null +++ b/AndroidProducts.mk @@ -0,0 +1,18 @@ +# +# Copyright 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +PRODUCT_MAKEFILES := \ + $(LOCAL_DIR)/aosp_taimen.mk \ diff --git a/BoardConfig.mk b/BoardConfig.mk new file mode 100644 index 0000000..f8827c8 --- /dev/null +++ b/BoardConfig.mk @@ -0,0 +1,20 @@ +# +# Copyright (C) 2017 The Android Open-Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +TARGET_BOOTLOADER_BOARD_NAME := taimen +DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x00000056 + +include device/qcom/msmcobalt/CommonBoardConfig.mk diff --git a/android_filesystem_config.h b/android_filesystem_config.h new file mode 100644 index 0000000..00a272a --- /dev/null +++ b/android_filesystem_config.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* This file is used to define the properties of the filesystem +** images generated by build tools (mkbootfs and mkyaffs2image) and +** by the device side of adb. +*/ + +#include + +static const struct fs_path_config android_device_dirs[] = { + { 00771, AID_SYSTEM, AID_SYSTEM, 0, "bt_firmware"}, +}; + +/* Rules for files. +** These rules are applied based on "first match", so they +** should start with the most specific path and work their +** way up to the root. Prefixes ending in * denotes wildcard +** and will allow partial matches. +*/ +static const struct fs_path_config android_device_files[] = { + { 00755, AID_SYSTEM, AID_SYSTEM, (1ULL << CAP_NET_BIND_SERVICE), "system/vendor/bin/pm-service" }, + { 00755, AID_SYSTEM, AID_SYSTEM, (1ULL << CAP_NET_BIND_SERVICE), "system/vendor/bin/cnss-daemon"}, +#ifdef NO_ANDROID_FILESYSTEM_CONFIG_DEVICE_DIRS + { 00000, AID_ROOT, AID_ROOT, 0, "system/etc/fs_config_dirs" }, +#endif +}; diff --git a/aosp_taimen.mk b/aosp_taimen.mk new file mode 100644 index 0000000..4668370 --- /dev/null +++ b/aosp_taimen.mk @@ -0,0 +1,33 @@ +# +# Copyright 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Inherit from the common Open Source product configuration +$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk) + +PRODUCT_NAME := aosp_taimen +PRODUCT_DEVICE := taimen +PRODUCT_BRAND := Android +PRODUCT_MODEL := AOSP on taimen +PRODUCT_MANUFACTURER := Google +PRODUCT_RESTRICT_VENDOR_FILES := all + +$(call inherit-product, device/qcom/msmcobalt/utils.mk) +$(call inherit-product, device/google/taimen/device.mk) +$(call inherit-product-if-exists, vendor/qcom/msmcobalt/device-vendor.mk) + +PRODUCT_PACKAGES += \ + Launcher3 diff --git a/device.mk b/device.mk new file mode 100644 index 0000000..5b11f78 --- /dev/null +++ b/device.mk @@ -0,0 +1,31 @@ +# +# Copyright 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +PRODUCT_AAPT_CONFIG := normal +PRODUCT_AAPT_PREF_CONFIG := 560dpi +PRODUCT_AAPT_PREBUILT_DPI := xxxhdpi xxhdpi xhdpi hdpi + +PRODUCT_HARDWARE := taimen + +include device/qcom/msmcobalt/device-common.mk + +PRODUCT_PROPERTY_OVERRIDES += \ + ro.sf.lcd_density=560 \ + +# Thermal packages +PRODUCT_PACKAGES += \ + thermal.default + diff --git a/system.prop b/system.prop new file mode 100644 index 0000000..b491b17 --- /dev/null +++ b/system.prop @@ -0,0 +1,96 @@ + +persist.rild.nitz_plmn= +persist.rild.nitz_long_ons_0= +persist.rild.nitz_long_ons_1= +persist.rild.nitz_long_ons_2= +persist.rild.nitz_long_ons_3= +persist.rild.nitz_short_ons_0= +persist.rild.nitz_short_ons_1= +persist.rild.nitz_short_ons_2= +persist.rild.nitz_short_ons_3= +ril.subscription.types=NV,RUIM +DEVICE_PROVISIONED=1 +# Set network mode to (T/L/G/W/1X/EVDO, T/G/W/L) for 7+5 mode device on DSDS mode +ro.telephony.default_network=22,20 + +debug.sf.hw=1 +debug.gralloc.enable_fb_ubwc=1 + +# system props for the cne module +persist.cne.feature=1 + +# system props for the MM modules +media.stagefright.enable-player=true +media.stagefright.enable-http=true +media.stagefright.enable-aac=true +media.stagefright.enable-qcp=true +media.stagefright.enable-scan=true +mmp.enable.3g2=true +media.aac_51_output_enabled=true +mm.enable.smoothstreaming=true +#13631487 is decimal sum of supported codecs in AAL +#codecs:(PARSER_)AAC AC3 AMR_NB AMR_WB ASF AVI DTS FLV 3GP 3G2 MKV MP2PS MP2TS MP3 OGG QCP WAV FLAC AIFF APE DSD +mm.enable.qcom_parser=13631487 +persist.mm.enable.prefetch=true + +# Additional buffers shared between Camera and Video +vidc.enc.dcvs.extra-buff-count=2 + +# system props for the data netmgrd +persist.data.netmgrd.qos.enable=true +persist.data.mode=concurrent + +# system props for time-services +persist.timed.enable=true + +# System prop to turn on CdmaLTEPhone always +telephony.lteOnCdmaDevice=1 + +# Simulate sdcard on /data/media +persist.fuse_sdcard=true + +# system prop for Bluetooth SOC type +qcom.bluetooth.soc=cherokee + +# system prop for A4WP profile support +ro.bluetooth.a4wp=false + +# system prop for wipower support +ro.bluetooth.wipower=true + +# settings to enable PMD and Device Orientation Sensors +ro.qti.sensors.dev_ori=true +ro.qti.sensors.pmd=true +ro.qti.sensors.sta_detect=true +ro.qti.sensors.mot_detect=true + +#system prop for RmNet Data +persist.rmnet.data.enable=true +persist.data.wda.enable=true +persist.data.df.dl_mode=5 +persist.data.df.ul_mode=5 +persist.data.df.agg.dl_pkt=10 +persist.data.df.agg.dl_size=4096 +persist.data.df.mux_count=8 +persist.data.df.iwlan_mux=9 +persist.data.df.dev_name=rmnet_usb0 + +# +## system props for the data modules +# +#ro.use_data_netmgrd=true +persist.data.netmgrd.qos.enable=true +persist.data.mode=concurrent + +#system prop for Bluetooth SOC type +qcom.bluetooth.soc=cherokee + +#system prop for A4WP profile support +ro.bluetooth.a4wp=false + +#system prop for wipower support +ro.bluetooth.emb_wp_mode=true +ro.bluetooth.wipower=true + +# Property for loading BDA from bdaddress module in kernel +ro.bt.bdaddr_path=/sys/module/bdaddress/parameters/bdaddress From b9343df777e9f5d64e17ab8a263700bc5652e882 Mon Sep 17 00:00:00 2001 From: Thierry Strudel Date: Tue, 21 Feb 2017 22:17:08 -0800 Subject: [PATCH 003/182] android_filesystem_config.h: update to vendor partition path Change-Id: I3bd8321ba20521bd90afb749086b08009d6ee692 --- android_filesystem_config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android_filesystem_config.h b/android_filesystem_config.h index 00a272a..2033b7e 100644 --- a/android_filesystem_config.h +++ b/android_filesystem_config.h @@ -32,8 +32,8 @@ static const struct fs_path_config android_device_dirs[] = { ** and will allow partial matches. */ static const struct fs_path_config android_device_files[] = { - { 00755, AID_SYSTEM, AID_SYSTEM, (1ULL << CAP_NET_BIND_SERVICE), "system/vendor/bin/pm-service" }, - { 00755, AID_SYSTEM, AID_SYSTEM, (1ULL << CAP_NET_BIND_SERVICE), "system/vendor/bin/cnss-daemon"}, + { 00755, AID_SYSTEM, AID_SYSTEM, (1ULL << CAP_NET_BIND_SERVICE), "vendor/bin/pm-service" }, + { 00755, AID_SYSTEM, AID_SYSTEM, (1ULL << CAP_NET_BIND_SERVICE), "vendor/bin/cnss-daemon"}, #ifdef NO_ANDROID_FILESYSTEM_CONFIG_DEVICE_DIRS { 00000, AID_ROOT, AID_ROOT, 0, "system/etc/fs_config_dirs" }, #endif From e0507318a9cdae7d8a1fe622b1ffc5eb6c168f5d Mon Sep 17 00:00:00 2001 From: John Dias Date: Fri, 24 Feb 2017 13:58:40 -0800 Subject: [PATCH 004/182] taimen: use taimen-kernel, not msmcobalt-kernel Test: built, booted Change-Id: Id3ea41d27deed09fff7aadf06f9611f1568d1bbc Signed-off-by: John Dias --- device.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/device.mk b/device.mk index 5b11f78..ee4b973 100644 --- a/device.mk +++ b/device.mk @@ -19,6 +19,7 @@ PRODUCT_AAPT_PREF_CONFIG := 560dpi PRODUCT_AAPT_PREBUILT_DPI := xxxhdpi xxhdpi xhdpi hdpi PRODUCT_HARDWARE := taimen +TARGET_PREBUILT_KERNEL := device/google/taimen-kernel/Image.gz-dtb include device/qcom/msmcobalt/device-common.mk From c5bf1eb2d3ce7f521d2517c462c14e2f78d67d49 Mon Sep 17 00:00:00 2001 From: John Dias Date: Fri, 24 Feb 2017 16:36:50 -0800 Subject: [PATCH 005/182] device.mk: correct system partition size for taimen Test: built and flashed by hand Change-Id: Iecbe1a799573eb37de9a0c728f4f0b5164805647 Signed-off-by: John Dias --- device.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/device.mk b/device.mk index ee4b973..60d4113 100644 --- a/device.mk +++ b/device.mk @@ -22,6 +22,7 @@ PRODUCT_HARDWARE := taimen TARGET_PREBUILT_KERNEL := device/google/taimen-kernel/Image.gz-dtb include device/qcom/msmcobalt/device-common.mk +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2147483648 PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=560 \ From 150d6c0487afa433c00e0202030ab4bb372b815f Mon Sep 17 00:00:00 2001 From: Devin Kim Date: Fri, 24 Feb 2017 12:06:18 -0800 Subject: [PATCH 006/182] Add vendorsetup.sh Test: built, booted Change-Id: I03fe7d3bb8a1ce818b107375bbef795b2b2e989d --- vendorsetup.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100755 vendorsetup.sh diff --git a/vendorsetup.sh b/vendorsetup.sh new file mode 100755 index 0000000..39058a8 --- /dev/null +++ b/vendorsetup.sh @@ -0,0 +1,17 @@ +# +# Copyright 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +add_lunch_combo aosp_taimen-userdebug From 803aa115b8179fb8fd44362a7b5bcf90a5bbc83d Mon Sep 17 00:00:00 2001 From: Fyodor Kupolov Date: Tue, 28 Feb 2017 10:08:43 -0800 Subject: [PATCH 007/182] Enforce privapp-permissions Test: build system image and run development/tools/privapp_permissions/privapp_permissions.py should return no results Bug: 34872687 Change-Id: Id31606976c90f264d8d873757180306767293792 --- aosp_taimen.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/aosp_taimen.mk b/aosp_taimen.mk index 4668370..a759499 100644 --- a/aosp_taimen.mk +++ b/aosp_taimen.mk @@ -18,6 +18,10 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) $(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk) +# Enforce privapp-permissions whitelist +PRODUCT_PROPERTY_OVERRIDES += \ + ro.control_privapp_permissions=enforce + PRODUCT_NAME := aosp_taimen PRODUCT_DEVICE := taimen PRODUCT_BRAND := Android From a9ab449bd42b5d1cebf1ad679c9ab5f286f16ce8 Mon Sep 17 00:00:00 2001 From: "jungki.kim" Date: Wed, 1 Mar 2017 19:03:35 +0900 Subject: [PATCH 008/182] taimen: disable treble property for camera bringup Change-Id: I98a33438e08923ffaa79738a3698dec524050d27 --- device.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/device.mk b/device.mk index 60d4113..ae36023 100644 --- a/device.mk +++ b/device.mk @@ -27,6 +27,10 @@ BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2147483648 PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=560 \ +# camera service treble disable for bringup +PRODUCT_PROPERTY_OVERRIDES += \ + camera.disable_treble=true + # Thermal packages PRODUCT_PACKAGES += \ thermal.default From 91d9cab3fd5fe3001bf6c7c73348ced9a318aa00 Mon Sep 17 00:00:00 2001 From: Devin Kim Date: Wed, 1 Mar 2017 07:49:22 +0900 Subject: [PATCH 009/182] Inherit the taimen vendor specific makefiles Change-Id: I0081b686a79e5b7438efffba07c0a5fdf599e034 --- BoardConfig.mk | 2 ++ aosp_taimen.mk | 1 + 2 files changed, 3 insertions(+) diff --git a/BoardConfig.mk b/BoardConfig.mk index f8827c8..90e16c9 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -18,3 +18,5 @@ TARGET_BOOTLOADER_BOARD_NAME := taimen DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x00000056 include device/qcom/msmcobalt/CommonBoardConfig.mk + +-include vendor/google_devices/taimen/BoardConfigVendor.mk diff --git a/aosp_taimen.mk b/aosp_taimen.mk index 4668370..2398e23 100644 --- a/aosp_taimen.mk +++ b/aosp_taimen.mk @@ -28,6 +28,7 @@ PRODUCT_RESTRICT_VENDOR_FILES := all $(call inherit-product, device/qcom/msmcobalt/utils.mk) $(call inherit-product, device/google/taimen/device.mk) $(call inherit-product-if-exists, vendor/qcom/msmcobalt/device-vendor.mk) +$(call inherit-product-if-exists, vendor/google_devices/taimen/device-vendor.mk) PRODUCT_PACKAGES += \ Launcher3 From 2b7be886c824c80aba8ffc29ab97b5f1fbd07570 Mon Sep 17 00:00:00 2001 From: Thierry Strudel Date: Sat, 4 Mar 2017 13:02:35 -0800 Subject: [PATCH 010/182] taimen: derive product from device/google/wahoo Test: boot, basic functionality Change-Id: I983773ad19721997998bfe45c5b19a741bf8290f Signed-off-by: Thierry Strudel --- Android.mk | 19 -------- BoardConfig.mk | 3 +- android_filesystem_config.h | 40 ---------------- aosp_taimen.mk | 2 - board-info.txt | 1 + device.mk | 11 ++--- fstab.hardware | 10 ++++ system.prop | 96 ------------------------------------- 8 files changed, 17 insertions(+), 165 deletions(-) delete mode 100644 Android.mk delete mode 100644 android_filesystem_config.h create mode 100644 board-info.txt create mode 100644 fstab.hardware delete mode 100644 system.prop diff --git a/Android.mk b/Android.mk deleted file mode 100644 index 7e4418d..0000000 --- a/Android.mk +++ /dev/null @@ -1,19 +0,0 @@ -# -# Copyright 2017 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -ifneq ($(filter taimen, $(TARGET_DEVICE)),) - include $(call first-makefiles-under, device/qcom/msmcobalt) -endif diff --git a/BoardConfig.mk b/BoardConfig.mk index 90e16c9..7006704 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -17,6 +17,5 @@ TARGET_BOOTLOADER_BOARD_NAME := taimen DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x00000056 -include device/qcom/msmcobalt/CommonBoardConfig.mk - +include device/google/wahoo/BoardConfig.mk -include vendor/google_devices/taimen/BoardConfigVendor.mk diff --git a/android_filesystem_config.h b/android_filesystem_config.h deleted file mode 100644 index 2033b7e..0000000 --- a/android_filesystem_config.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* This file is used to define the properties of the filesystem -** images generated by build tools (mkbootfs and mkyaffs2image) and -** by the device side of adb. -*/ - -#include - -static const struct fs_path_config android_device_dirs[] = { - { 00771, AID_SYSTEM, AID_SYSTEM, 0, "bt_firmware"}, -}; - -/* Rules for files. -** These rules are applied based on "first match", so they -** should start with the most specific path and work their -** way up to the root. Prefixes ending in * denotes wildcard -** and will allow partial matches. -*/ -static const struct fs_path_config android_device_files[] = { - { 00755, AID_SYSTEM, AID_SYSTEM, (1ULL << CAP_NET_BIND_SERVICE), "vendor/bin/pm-service" }, - { 00755, AID_SYSTEM, AID_SYSTEM, (1ULL << CAP_NET_BIND_SERVICE), "vendor/bin/cnss-daemon"}, -#ifdef NO_ANDROID_FILESYSTEM_CONFIG_DEVICE_DIRS - { 00000, AID_ROOT, AID_ROOT, 0, "system/etc/fs_config_dirs" }, -#endif -}; diff --git a/aosp_taimen.mk b/aosp_taimen.mk index 1b9d7c5..abf0e00 100644 --- a/aosp_taimen.mk +++ b/aosp_taimen.mk @@ -29,9 +29,7 @@ PRODUCT_MODEL := AOSP on taimen PRODUCT_MANUFACTURER := Google PRODUCT_RESTRICT_VENDOR_FILES := all -$(call inherit-product, device/qcom/msmcobalt/utils.mk) $(call inherit-product, device/google/taimen/device.mk) -$(call inherit-product-if-exists, vendor/qcom/msmcobalt/device-vendor.mk) $(call inherit-product-if-exists, vendor/google_devices/taimen/device-vendor.mk) PRODUCT_PACKAGES += \ diff --git a/board-info.txt b/board-info.txt new file mode 100644 index 0000000..71f0186 --- /dev/null +++ b/board-info.txt @@ -0,0 +1 @@ +require board=taimen diff --git a/device.mk b/device.mk index ae36023..5c61d09 100644 --- a/device.mk +++ b/device.mk @@ -21,8 +21,11 @@ PRODUCT_AAPT_PREBUILT_DPI := xxxhdpi xxhdpi xhdpi hdpi PRODUCT_HARDWARE := taimen TARGET_PREBUILT_KERNEL := device/google/taimen-kernel/Image.gz-dtb -include device/qcom/msmcobalt/device-common.mk -BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2147483648 +include device/google/wahoo/device.mk + +# Until taimen supports encryption, need an fstab without encryption +PRODUCT_COPY_FILES += \ + device/google/taimen/fstab.hardware:root/fstab.$(PRODUCT_HARDWARE) \ PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=560 \ @@ -31,7 +34,3 @@ PRODUCT_PROPERTY_OVERRIDES += \ PRODUCT_PROPERTY_OVERRIDES += \ camera.disable_treble=true -# Thermal packages -PRODUCT_PACKAGES += \ - thermal.default - diff --git a/fstab.hardware b/fstab.hardware new file mode 100644 index 0000000..73c9270 --- /dev/null +++ b/fstab.hardware @@ -0,0 +1,10 @@ +# Android fstab file. + +# +/dev/block/bootdevice/by-name/system / ext4 ro,barrier=1,discard wait,slotselect +/dev/block/bootdevice/by-name/vendor /vendor ext4 ro,barrier=1 wait,slotselect +/dev/block/bootdevice/by-name/userdata /data ext4 nosuid,nodev,barrier=1,noauto_da_alloc,discard wait,check,formattable,encryptable=footer +/dev/block/bootdevice/by-name/misc /misc emmc defaults defaults +/dev/block/bootdevice/by-name/modem /firmware vfat ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait,slotselect +/devices/soc/a800000.ssusb/a800000.dwc3* auto vfat defaults voldmanaged=usb:auto +# /dev/block/bootdevice/by-name/bluetooth /bt_firmware vfat ro,shortname=lower,uid=1002,gid=3002,dmask=227,fmask=337,context=u:object_r:bt_firmware_file:s0 wait,slotselect diff --git a/system.prop b/system.prop deleted file mode 100644 index b491b17..0000000 --- a/system.prop +++ /dev/null @@ -1,96 +0,0 @@ - -persist.rild.nitz_plmn= -persist.rild.nitz_long_ons_0= -persist.rild.nitz_long_ons_1= -persist.rild.nitz_long_ons_2= -persist.rild.nitz_long_ons_3= -persist.rild.nitz_short_ons_0= -persist.rild.nitz_short_ons_1= -persist.rild.nitz_short_ons_2= -persist.rild.nitz_short_ons_3= -ril.subscription.types=NV,RUIM -DEVICE_PROVISIONED=1 -# Set network mode to (T/L/G/W/1X/EVDO, T/G/W/L) for 7+5 mode device on DSDS mode -ro.telephony.default_network=22,20 - -debug.sf.hw=1 -debug.gralloc.enable_fb_ubwc=1 - -# system props for the cne module -persist.cne.feature=1 - -# system props for the MM modules -media.stagefright.enable-player=true -media.stagefright.enable-http=true -media.stagefright.enable-aac=true -media.stagefright.enable-qcp=true -media.stagefright.enable-scan=true -mmp.enable.3g2=true -media.aac_51_output_enabled=true -mm.enable.smoothstreaming=true -#13631487 is decimal sum of supported codecs in AAL -#codecs:(PARSER_)AAC AC3 AMR_NB AMR_WB ASF AVI DTS FLV 3GP 3G2 MKV MP2PS MP2TS MP3 OGG QCP WAV FLAC AIFF APE DSD -mm.enable.qcom_parser=13631487 -persist.mm.enable.prefetch=true - -# Additional buffers shared between Camera and Video -vidc.enc.dcvs.extra-buff-count=2 - -# system props for the data netmgrd -persist.data.netmgrd.qos.enable=true -persist.data.mode=concurrent - -# system props for time-services -persist.timed.enable=true - -# System prop to turn on CdmaLTEPhone always -telephony.lteOnCdmaDevice=1 - -# Simulate sdcard on /data/media -persist.fuse_sdcard=true - -# system prop for Bluetooth SOC type -qcom.bluetooth.soc=cherokee - -# system prop for A4WP profile support -ro.bluetooth.a4wp=false - -# system prop for wipower support -ro.bluetooth.wipower=true - -# settings to enable PMD and Device Orientation Sensors -ro.qti.sensors.dev_ori=true -ro.qti.sensors.pmd=true -ro.qti.sensors.sta_detect=true -ro.qti.sensors.mot_detect=true - -#system prop for RmNet Data -persist.rmnet.data.enable=true -persist.data.wda.enable=true -persist.data.df.dl_mode=5 -persist.data.df.ul_mode=5 -persist.data.df.agg.dl_pkt=10 -persist.data.df.agg.dl_size=4096 -persist.data.df.mux_count=8 -persist.data.df.iwlan_mux=9 -persist.data.df.dev_name=rmnet_usb0 - -# -## system props for the data modules -# -#ro.use_data_netmgrd=true -persist.data.netmgrd.qos.enable=true -persist.data.mode=concurrent - -#system prop for Bluetooth SOC type -qcom.bluetooth.soc=cherokee - -#system prop for A4WP profile support -ro.bluetooth.a4wp=false - -#system prop for wipower support -ro.bluetooth.emb_wp_mode=true -ro.bluetooth.wipower=true - -# Property for loading BDA from bdaddress module in kernel -ro.bt.bdaddr_path=/sys/module/bdaddress/parameters/bdaddress From b10f2356e7c6c1d0beb25fabac8f1b59000b4b98 Mon Sep 17 00:00:00 2001 From: Nick Desaulniers Date: Mon, 6 Mar 2017 14:03:30 -0800 Subject: [PATCH 011/182] taimen: fbe: share fstab with wahoo Bug: 34250938 Change-Id: I23b19611c8f06acb5c96a6153d0f5784844a0828 --- device.mk | 4 ---- fstab.hardware | 10 ---------- 2 files changed, 14 deletions(-) delete mode 100644 fstab.hardware diff --git a/device.mk b/device.mk index 5c61d09..6b8d5a7 100644 --- a/device.mk +++ b/device.mk @@ -23,10 +23,6 @@ TARGET_PREBUILT_KERNEL := device/google/taimen-kernel/Image.gz-dtb include device/google/wahoo/device.mk -# Until taimen supports encryption, need an fstab without encryption -PRODUCT_COPY_FILES += \ - device/google/taimen/fstab.hardware:root/fstab.$(PRODUCT_HARDWARE) \ - PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=560 \ diff --git a/fstab.hardware b/fstab.hardware deleted file mode 100644 index 73c9270..0000000 --- a/fstab.hardware +++ /dev/null @@ -1,10 +0,0 @@ -# Android fstab file. - -# -/dev/block/bootdevice/by-name/system / ext4 ro,barrier=1,discard wait,slotselect -/dev/block/bootdevice/by-name/vendor /vendor ext4 ro,barrier=1 wait,slotselect -/dev/block/bootdevice/by-name/userdata /data ext4 nosuid,nodev,barrier=1,noauto_da_alloc,discard wait,check,formattable,encryptable=footer -/dev/block/bootdevice/by-name/misc /misc emmc defaults defaults -/dev/block/bootdevice/by-name/modem /firmware vfat ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait,slotselect -/devices/soc/a800000.ssusb/a800000.dwc3* auto vfat defaults voldmanaged=usb:auto -# /dev/block/bootdevice/by-name/bluetooth /bt_firmware vfat ro,shortname=lower,uid=1002,gid=3002,dmask=227,fmask=337,context=u:object_r:bt_firmware_file:s0 wait,slotselect From a9f82848de6d402fcc52718e8a0f3dbdf821e289 Mon Sep 17 00:00:00 2001 From: Devin Kim Date: Wed, 1 Mar 2017 22:36:19 +0900 Subject: [PATCH 012/182] audio: Add initial audio config files Test: boot, chrome, youtube Change-Id: Ic8a3475d294a995935c249df7b65e447949391f1 --- audio_platform_info_tavil.xml | 73 + device.mk | 4 + mixer_paths_tavil.xml | 2568 +++++++++++++++++++++++++++++++++ 3 files changed, 2645 insertions(+) create mode 100644 audio_platform_info_tavil.xml create mode 100644 mixer_paths_tavil.xml diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml new file mode 100644 index 0000000..a0671a2 --- /dev/null +++ b/audio_platform_info_tavil.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/device.mk b/device.mk index 6b8d5a7..dbbad70 100644 --- a/device.mk +++ b/device.mk @@ -30,3 +30,7 @@ PRODUCT_PROPERTY_OVERRIDES += \ PRODUCT_PROPERTY_OVERRIDES += \ camera.disable_treble=true +# Audio +PRODUCT_COPY_FILES += \ + device/google/taimen/audio_platform_info_tavil.xml:system/etc/audio_platform_info_tavil_taimen.xml \ + device/google/taimen/mixer_paths_tavil.xml:system/etc/mixer_paths_tavil_taimen.xml diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml new file mode 100644 index 0000000..23c775c --- /dev/null +++ b/mixer_paths_tavil.xml @@ -0,0 +1,2568 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 22c65953d7bb3b772a7d48426eaf90c6d41f4f28 Mon Sep 17 00:00:00 2001 From: Thierry Strudel Date: Tue, 7 Mar 2017 16:28:20 -0800 Subject: [PATCH 013/182] BoardConfig: default to console ON Change-Id: Ia19f652b3b7d2e4ae366b5ae53886ae664b1b2df Signed-off-by: Thierry Strudel --- BoardConfig.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/BoardConfig.mk b/BoardConfig.mk index 7006704..8fb194b 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -17,5 +17,7 @@ TARGET_BOOTLOADER_BOARD_NAME := taimen DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x00000056 +BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200,n8 earlycon=msm_serial_dm,0xc1b0000 + include device/google/wahoo/BoardConfig.mk -include vendor/google_devices/taimen/BoardConfigVendor.mk From 9f8698237a29dc04fc8940494ceed4ddff1ca953 Mon Sep 17 00:00:00 2001 From: Devin Kim Date: Wed, 8 Mar 2017 17:59:32 -0800 Subject: [PATCH 014/182] Disable fps_hal service on lunchbox LCD FPC IRQ conflicts with Touch SPI of LunchBox LCD. So fpc is disabled in kernel on rev-0 only. Stop the fps_hal service to avoid being continually re-loaded. Test: built and verified on a device Bug: 36076258 Change-Id: If77591bac111514470759d0e72fdc65b21c58f2b --- device.mk | 3 +++ init-taimen.rc | 2 ++ 2 files changed, 5 insertions(+) create mode 100644 init-taimen.rc diff --git a/device.mk b/device.mk index dbbad70..64325c0 100644 --- a/device.mk +++ b/device.mk @@ -23,6 +23,9 @@ TARGET_PREBUILT_KERNEL := device/google/taimen-kernel/Image.gz-dtb include device/google/wahoo/device.mk +PRODUCT_COPY_FILES += \ + device/google/taimen/init-taimen.rc:system/etc/init/init-taimen.rc + PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=560 \ diff --git a/init-taimen.rc b/init-taimen.rc new file mode 100644 index 0000000..25eac60 --- /dev/null +++ b/init-taimen.rc @@ -0,0 +1,2 @@ +on property:init.svc.fps_hal=running && property:ro.boot.revision=rev_0 + stop fps_hal From 107ec99a199ef7158a9c6d3d7d396ed3f791da9b Mon Sep 17 00:00:00 2001 From: Devin Kim Date: Wed, 8 Mar 2017 18:18:30 -0800 Subject: [PATCH 015/182] sensors: Enable QC sensors Test: build and verified on taimen Change-Id: Ie9ffa17021c30ad7f9cd5f986de802c2b7532438 --- init-taimen.rc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/init-taimen.rc b/init-taimen.rc index 25eac60..ba6e8f1 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -1,2 +1,10 @@ +on post-fs-data + # QC Sensors + mkdir /persist/sensors + chmod 775 /persist/sensors + write /persist/sensors/sensors_settings 1 + chmod 664 /persist/sensors/sensors_settings + chown system root /persist/sensors/sensors_settings + on property:init.svc.fps_hal=running && property:ro.boot.revision=rev_0 stop fps_hal From 8dd58cc30da847328291ca09594ef3446dd23d74 Mon Sep 17 00:00:00 2001 From: Thierry Strudel Date: Thu, 9 Mar 2017 15:08:45 -0800 Subject: [PATCH 016/182] Move common inherit-product to wahoo Change-Id: If3a643419c542cdbb5ced136747c1ec433b193e1 Signed-off-by: Thierry Strudel --- aosp_taimen.mk | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/aosp_taimen.mk b/aosp_taimen.mk index abf0e00..3164a7e 100644 --- a/aosp_taimen.mk +++ b/aosp_taimen.mk @@ -14,23 +14,15 @@ # limitations under the License. # -# Inherit from the common Open Source product configuration -$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) -$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk) - -# Enforce privapp-permissions whitelist -PRODUCT_PROPERTY_OVERRIDES += \ - ro.control_privapp_permissions=enforce - -PRODUCT_NAME := aosp_taimen -PRODUCT_DEVICE := taimen -PRODUCT_BRAND := Android -PRODUCT_MODEL := AOSP on taimen -PRODUCT_MANUFACTURER := Google -PRODUCT_RESTRICT_VENDOR_FILES := all - $(call inherit-product, device/google/taimen/device.mk) $(call inherit-product-if-exists, vendor/google_devices/taimen/device-vendor.mk) PRODUCT_PACKAGES += \ Launcher3 + +PRODUCT_RESTRICT_VENDOR_FILES := all +PRODUCT_MANUFACTURER := Google +PRODUCT_BRAND := Android +PRODUCT_NAME := aosp_taimen +PRODUCT_DEVICE := taimen +PRODUCT_MODEL := AOSP on taimen From adf15a07108cc7e6c1d83668513719bf92fd2739 Mon Sep 17 00:00:00 2001 From: Patrick Tjin Date: Fri, 10 Mar 2017 15:02:09 -0800 Subject: [PATCH 017/182] REVERT ME taimen: enable permissive mode SELinux for bringup Test: Build Change-Id: If10d0b6ded3c0c3dc076d8976935412eaad15201 --- BoardConfig.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/BoardConfig.mk b/BoardConfig.mk index 8fb194b..ab093ec 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -18,6 +18,7 @@ TARGET_BOOTLOADER_BOARD_NAME := taimen DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x00000056 BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200,n8 earlycon=msm_serial_dm,0xc1b0000 +BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive include device/google/wahoo/BoardConfig.mk -include vendor/google_devices/taimen/BoardConfigVendor.mk From 5afc7c8f27182bbd9d62737de0b3938a42c95f94 Mon Sep 17 00:00:00 2001 From: Thierry Strudel Date: Fri, 10 Mar 2017 15:08:46 -0800 Subject: [PATCH 018/182] aosp_taimen: add Dialer app Change-Id: Iaf4ed899bd04dc066c8f76225f83336c4e9cc8a6 Signed-off-by: Thierry Strudel --- aosp_taimen.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/aosp_taimen.mk b/aosp_taimen.mk index 3164a7e..1294baf 100644 --- a/aosp_taimen.mk +++ b/aosp_taimen.mk @@ -18,7 +18,8 @@ $(call inherit-product, device/google/taimen/device.mk) $(call inherit-product-if-exists, vendor/google_devices/taimen/device-vendor.mk) PRODUCT_PACKAGES += \ - Launcher3 + Launcher3 \ + Dialer PRODUCT_RESTRICT_VENDOR_FILES := all PRODUCT_MANUFACTURER := Google From 205bcd964a2755f801363aac290312ca646810c9 Mon Sep 17 00:00:00 2001 From: Shawn Yang Date: Tue, 14 Mar 2017 15:44:18 -0700 Subject: [PATCH 019/182] dumpstate for Taimen Change-Id: I17a278a8fc456bafdcada264324083d8b308c52e --- device.mk | 10 ++ dumpstate/Android.mk | 41 ++++++ dumpstate/DumpstateDevice.cpp | 129 ++++++++++++++++++ dumpstate/DumpstateDevice.h | 49 +++++++ ...d.hardware.dumpstate@1.0-service.taimen.rc | 4 + dumpstate/service.cpp | 35 +++++ init.logging.rc | 0 7 files changed, 268 insertions(+) create mode 100644 dumpstate/Android.mk create mode 100755 dumpstate/DumpstateDevice.cpp create mode 100644 dumpstate/DumpstateDevice.h create mode 100644 dumpstate/android.hardware.dumpstate@1.0-service.taimen.rc create mode 100644 dumpstate/service.cpp create mode 100644 init.logging.rc diff --git a/device.mk b/device.mk index 64325c0..85152f6 100644 --- a/device.mk +++ b/device.mk @@ -37,3 +37,13 @@ PRODUCT_PROPERTY_OVERRIDES += \ PRODUCT_COPY_FILES += \ device/google/taimen/audio_platform_info_tavil.xml:system/etc/audio_platform_info_tavil_taimen.xml \ device/google/taimen/mixer_paths_tavil.xml:system/etc/mixer_paths_tavil_taimen.xml + +# Logging +PRODUCT_COPY_FILES += \ + device/google/taimen/init.logging.rc:root/init.$(PRODUCT_HARDWARE).logging.rc + +# Dumpstate HAL +PRODUCT_PACKAGES += \ + android.hardware.dumpstate@1.0-service.taimen + + diff --git a/dumpstate/Android.mk b/dumpstate/Android.mk new file mode 100644 index 0000000..038371e --- /dev/null +++ b/dumpstate/Android.mk @@ -0,0 +1,41 @@ + +# Copyright 2016 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) +LOCAL_MODULE := android.hardware.dumpstate@1.0-service.taimen +LOCAL_INIT_RC := android.hardware.dumpstate@1.0-service.taimen.rc +LOCAL_MODULE_RELATIVE_PATH := hw + +LOCAL_SRC_FILES := \ + DumpstateDevice.cpp \ + service.cpp + +LOCAL_SHARED_LIBRARIES := \ + android.hardware.dumpstate@1.0 \ + libbase \ + libcutils \ + libdumpstateutil \ + libhidlbase \ + libhidltransport \ + libhwbinder \ + liblog \ + libutils + +LOCAL_MODULE_TAGS := optional +LOCAL_PROPRIETARY_MODULE := true + +include $(BUILD_EXECUTABLE) diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp new file mode 100755 index 0000000..7d0f9ba --- /dev/null +++ b/dumpstate/DumpstateDevice.cpp @@ -0,0 +1,129 @@ +/* + * Copyright 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#define LOG_TAG "dumpstate" + +#include "DumpstateDevice.h" + +#include +#include +#include +#include +#include +#include + +#include "DumpstateUtil.h" + +#define MODEM_LOG_PREFIX_PROPERTY "ro.radio.log_prefix" +#define MODEM_LOG_LOC_PROPERTY "ro.radio.log_loc" + +using android::os::dumpstate::CommandOptions; +using android::os::dumpstate::DumpFileToFd; +using android::os::dumpstate::PropertiesHelper; +using android::os::dumpstate::RunCommandToFd; + +namespace android { +namespace hardware { +namespace dumpstate { +namespace V1_0 { +namespace implementation { + +namespace { + +static void getModemLogs(int fd) +{ + bool modemLogsEnabled = 0; + std::string modemLogDir = android::base::GetProperty(MODEM_LOG_LOC_PROPERTY, ""); + if (modemLogDir.empty()) { + ALOGD("No modem log place is set\n"); + return; + } + + if (!PropertiesHelper::IsUserBuild()) { + + CommandOptions options = CommandOptions::WithTimeout(120).Build(); + std::string modemLogAllDir = modemLogDir + "/modem_log"; + std::vector rilAndNetmgrLogs + { + "/data/misc/radio/ril_log", + "/data/misc/radio/ril_log_old", + "/data/misc/netmgr/netmgr_log", + "/data/misc/netmgr/netmgr_log_old" + }; + std::string modemLogMkDirCmd= "/system/bin/mkdir " + modemLogAllDir; + RunCommandToFd(fd, "MKDIR MODEM LOG", { "/system/bin/sh", "-c", modemLogMkDirCmd.c_str()}, options); + for (std::string logFile : rilAndNetmgrLogs) + { + std::string copyCmd= "/system/bin/cp " + logFile + " " + modemLogAllDir; + RunCommandToFd(fd, "MV MODEM LOG", { "/system/bin/sh", "-c", copyCmd.c_str()}, options); + } + std::string filePrefix = android::base::GetProperty(MODEM_LOG_PREFIX_PROPERTY, ""); + if (!filePrefix.empty()) { + std::string modemLogCombined = modemLogDir + "/" + filePrefix + "all.tar"; + std::string modemLogTarCmd= "/system/bin/tar cvf " + modemLogCombined + " -C " + modemLogAllDir + " ."; + RunCommandToFd(fd, "TAR LOG", { "/system/bin/sh", "-c", modemLogTarCmd.c_str()}, options); + std::string modemLogPermCmd= "/system/bin/chmod a+rw " + modemLogCombined; + RunCommandToFd(fd, "CHG PERM", { "/system/bin/sh", "-c", modemLogPermCmd.c_str()}, options); + std::string modemLogClearCmd= "/system/bin/rm -r " + modemLogAllDir; + RunCommandToFd(fd, "RM MODEM DIR", { "/system/bin/sh", "-c", modemLogClearCmd.c_str()}, options); + } + } +} + +} // unnamed namespace + + +// Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow. +Return DumpstateDevice::dumpstateBoard(const hidl_handle& handle) { + if (handle->numFds < 1) { + ALOGE("no FDs\n"); + return Void(); + } + + int fd = handle->data[0]; + if (fd < 0) { + ALOGE("invalid FD: %d\n", handle->data[0]); + return Void(); + } + + getModemLogs(fd); + DumpFileToFd(fd, "CPU present", "/sys/devices/system/cpu/present"); + DumpFileToFd(fd, "CPU online", "/sys/devices/system/cpu/online"); + DumpFileToFd(fd, "RPM Stats", "/d/rpm_stats"); + DumpFileToFd(fd, "Power Management Stats", "/d/rpm_master_stats"); + DumpFileToFd(fd, "SMD Log", "/d/ipc_logging/smd/log"); + RunCommandToFd(fd, "ION HEAPS", {"/system/bin/sh", "-c", "for d in $(ls -d /d/ion/*); do for f in $(ls $d); do echo --- $d/$f; cat $d/$f; done; done"}); + DumpFileToFd(fd, "dmabuf info", "/d/dma_buf/bufinfo"); + RunCommandToFd(fd, "Temperatures", {"/system/bin/sh", "-c", "for f in `ls /sys/class/thermal` ; do type=`cat /sys/class/thermal/$f/type` ; temp=`cat /sys/class/thermal/$f/temp` ; echo \"$type: $temp\" ; done"}); + DumpFileToFd(fd, "cpu0-1 time-in-state", "/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state"); + RunCommandToFd(fd, "cpu0-1 cpuidle", {"/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu0/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"}); + DumpFileToFd(fd, "cpu2-3 time-in-state", "/sys/devices/system/cpu/cpu2/cpufreq/stats/time_in_state"); + RunCommandToFd(fd, "cpu2-3 cpuidle", {"/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu2/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"}); + DumpFileToFd(fd, "MDP xlogs", "/d/mdp/xlog/dump"); + + /* Check if qsee_logger tool exists */ + if (!access("/system/bin/qsee_logger", X_OK)) { + RunCommandToFd(fd, "FP LOGS", {"qsee_logger", "-d"}); + } + + return Void(); +}; + +} // namespace implementation +} // namespace V1_0 +} // namespace dumpstate +} // namespace hardware +} // namespace android diff --git a/dumpstate/DumpstateDevice.h b/dumpstate/DumpstateDevice.h new file mode 100644 index 0000000..9237b3b --- /dev/null +++ b/dumpstate/DumpstateDevice.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef ANDROID_HARDWARE_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H +#define ANDROID_HARDWARE_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H + +#include +#include +#include + +namespace android { +namespace hardware { +namespace dumpstate { +namespace V1_0 { +namespace implementation { + +using ::android::hardware::dumpstate::V1_0::IDumpstateDevice; +using ::android::hardware::hidl_array; +using ::android::hardware::hidl_handle; +using ::android::hardware::hidl_string; +using ::android::hardware::hidl_vec; +using ::android::hardware::Return; +using ::android::hardware::Void; +using ::android::sp; + +struct DumpstateDevice : public IDumpstateDevice { + // Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow. + Return dumpstateBoard(const hidl_handle& h) override; +}; + +} // namespace implementation +} // namespace V1_0 +} // namespace dumpstate +} // namespace hardware +} // namespace android + +#endif // ANDROID_HARDWARE_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H diff --git a/dumpstate/android.hardware.dumpstate@1.0-service.taimen.rc b/dumpstate/android.hardware.dumpstate@1.0-service.taimen.rc new file mode 100644 index 0000000..5ce646a --- /dev/null +++ b/dumpstate/android.hardware.dumpstate@1.0-service.taimen.rc @@ -0,0 +1,4 @@ +service dumpstate-1-0 /vendor/bin/hw/android.hardware.dumpstate@1.0-service.taimen + class hal + user system + group system diff --git a/dumpstate/service.cpp b/dumpstate/service.cpp new file mode 100644 index 0000000..925d71e --- /dev/null +++ b/dumpstate/service.cpp @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#define LOG_TAG "android.hardware.dumpstate@1.0-service.taimen" + +#include +#include + +#include "DumpstateDevice.h" + +using ::android::hardware::configureRpcThreadpool; +using ::android::hardware::dumpstate::V1_0::IDumpstateDevice; +using ::android::hardware::dumpstate::V1_0::implementation::DumpstateDevice; +using ::android::hardware::joinRpcThreadpool; +using ::android::sp; + + +int main(int /* argc */, char* /* argv */ []) { + sp dumpstate = new DumpstateDevice; + configureRpcThreadpool(1, true); + dumpstate->registerAsService(); + joinRpcThreadpool(); +} diff --git a/init.logging.rc b/init.logging.rc new file mode 100644 index 0000000..e69de29 From c03ad8df99464b5d30de17cfef3a7fc9718c99dd Mon Sep 17 00:00:00 2001 From: John Dias Date: Tue, 14 Mar 2017 16:25:20 -0700 Subject: [PATCH 020/182] taimen: use lz4-compressed kernel Test: booted, youtube Change-Id: I5160e73a55aa3b5d7527b8babe38e6dee8da9916 Signed-off-by: John Dias --- device.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device.mk b/device.mk index 64325c0..ae26957 100644 --- a/device.mk +++ b/device.mk @@ -19,7 +19,7 @@ PRODUCT_AAPT_PREF_CONFIG := 560dpi PRODUCT_AAPT_PREBUILT_DPI := xxxhdpi xxhdpi xhdpi hdpi PRODUCT_HARDWARE := taimen -TARGET_PREBUILT_KERNEL := device/google/taimen-kernel/Image.gz-dtb +TARGET_PREBUILT_KERNEL := device/google/taimen-kernel/Image.lz4-dtb include device/google/wahoo/device.mk From a5b36d5174cbb352a80f51967306a43b6b780c83 Mon Sep 17 00:00:00 2001 From: Patrick Tjin Date: Fri, 17 Mar 2017 11:45:01 -0700 Subject: [PATCH 021/182] taimen: move to wahoo kernel Test: Boot taimen, verify wahoo kernel Change-Id: I8369e57354c283191bad8b93708d53da27f2ef06 --- device.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device.mk b/device.mk index bae86ed..31dad3f 100644 --- a/device.mk +++ b/device.mk @@ -19,7 +19,7 @@ PRODUCT_AAPT_PREF_CONFIG := 560dpi PRODUCT_AAPT_PREBUILT_DPI := xxxhdpi xxhdpi xhdpi hdpi PRODUCT_HARDWARE := taimen -TARGET_PREBUILT_KERNEL := device/google/taimen-kernel/Image.lz4-dtb +TARGET_PREBUILT_KERNEL := device/google/wahoo-kernel/Image.lz4-dtb include device/google/wahoo/device.mk From 447f692403063af3ce2ecf7d0e57960a0f13a72b Mon Sep 17 00:00:00 2001 From: Patrick Tjin Date: Fri, 17 Mar 2017 14:35:50 -0700 Subject: [PATCH 022/182] taimen: remove extra kernel defintion This is defined in device/google/wahoo already, no need to duplicate here. Test: Build Change-Id: I62118f821c833fbe1cd62618dec49faec7a83dce --- device.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/device.mk b/device.mk index 31dad3f..4836039 100644 --- a/device.mk +++ b/device.mk @@ -19,7 +19,6 @@ PRODUCT_AAPT_PREF_CONFIG := 560dpi PRODUCT_AAPT_PREBUILT_DPI := xxxhdpi xxhdpi xhdpi hdpi PRODUCT_HARDWARE := taimen -TARGET_PREBUILT_KERNEL := device/google/wahoo-kernel/Image.lz4-dtb include device/google/wahoo/device.mk From b5857b26b9d01ae7fdcaa1a1bcb342ab6d0bea69 Mon Sep 17 00:00:00 2001 From: Thierry Strudel Date: Sun, 19 Mar 2017 20:51:05 -0700 Subject: [PATCH 023/182] Don't enforce RESTRICT_VENDOR_FILES := all To work around b/36413696 allow vendor files to be installed in system. Change-Id: Iba439a8d69c23ff2a8ac974ce73e7347a221e6c6 Signed-off-by: Thierry Strudel --- aosp_taimen.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/aosp_taimen.mk b/aosp_taimen.mk index 1294baf..215346d 100644 --- a/aosp_taimen.mk +++ b/aosp_taimen.mk @@ -21,7 +21,6 @@ PRODUCT_PACKAGES += \ Launcher3 \ Dialer -PRODUCT_RESTRICT_VENDOR_FILES := all PRODUCT_MANUFACTURER := Google PRODUCT_BRAND := Android PRODUCT_NAME := aosp_taimen From 755b8affab0698fb32d32c60dfaa3e75e0e4bf09 Mon Sep 17 00:00:00 2001 From: "jonghyun26.kim" Date: Tue, 14 Mar 2017 15:42:34 +0900 Subject: [PATCH 024/182] Support touch firmware update Change-Id: I61cde0e1e77ff774992d9d87a26f51c7c7dd8e15 --- init-taimen.rc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/init-taimen.rc b/init-taimen.rc index ba6e8f1..64c4686 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -6,5 +6,8 @@ on post-fs-data chmod 664 /persist/sensors/sensors_settings chown system root /persist/sensors/sensors_settings + # Update touch firmware if required + write /sys/devices/virtual/input/ftm4_touch/check_fw 1 + on property:init.svc.fps_hal=running && property:ro.boot.revision=rev_0 stop fps_hal From 8370e403f79c9921d1656522a35e853420986863 Mon Sep 17 00:00:00 2001 From: Sandeep Patil Date: Wed, 22 Mar 2017 12:49:13 -0700 Subject: [PATCH 025/182] dumpstate: dump /proc/interrupts default bugreport stops dumping /proc/interrupts but devices still probably care about it. Bug: 36486169 Change-Id: Iec1a3da8afb7bccc66de329d65d7fdebbae62eb0 Signed-off-by: Sandeep Patil --- dumpstate/DumpstateDevice.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp index 7d0f9ba..2d20c34 100755 --- a/dumpstate/DumpstateDevice.cpp +++ b/dumpstate/DumpstateDevice.cpp @@ -102,6 +102,7 @@ Return DumpstateDevice::dumpstateBoard(const hidl_handle& handle) { getModemLogs(fd); DumpFileToFd(fd, "CPU present", "/sys/devices/system/cpu/present"); DumpFileToFd(fd, "CPU online", "/sys/devices/system/cpu/online"); + DumpFileToFd(fd, "INTERRUPTS", "/proc/interrupts"); DumpFileToFd(fd, "RPM Stats", "/d/rpm_stats"); DumpFileToFd(fd, "Power Management Stats", "/d/rpm_master_stats"); DumpFileToFd(fd, "SMD Log", "/d/ipc_logging/smd/log"); From e8444b1a05dc28d52bc3559e816e187c2839b8f6 Mon Sep 17 00:00:00 2001 From: David Lin Date: Thu, 23 Mar 2017 11:20:17 -0700 Subject: [PATCH 026/182] audio: add usb tty support - add usb tty mixer path to enable usb tty feature Change-Id: If15276ef16db8299ae3cad65ddcbbeb923ad12d0 Signed-off-by: David Lin --- mixer_paths_tavil.xml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index 23c775c..fe360ef 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -2430,6 +2430,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + From 7e76e6418370eed60105f74f879f5922c88f489e Mon Sep 17 00:00:00 2001 From: Badhri Jagan Sridharan Date: Thu, 23 Mar 2017 19:06:16 -0700 Subject: [PATCH 027/182] usb.rc: taimen specific usb script Change-Id: I5f7efa31207e4d18d378fa0a7597d39ab398713f --- device.mk | 3 ++- init.taimen.usb.rc | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 init.taimen.usb.rc diff --git a/device.mk b/device.mk index 4836039..63b2e78 100644 --- a/device.mk +++ b/device.mk @@ -23,7 +23,8 @@ PRODUCT_HARDWARE := taimen include device/google/wahoo/device.mk PRODUCT_COPY_FILES += \ - device/google/taimen/init-taimen.rc:system/etc/init/init-taimen.rc + device/google/taimen/init-taimen.rc:system/etc/init/init-taimen.rc \ + device/google/taimen/init.taimen.usb.rc:root/init.taimen.usb.rc PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=560 \ diff --git a/init.taimen.usb.rc b/init.taimen.usb.rc new file mode 100644 index 0000000..b01f057 --- /dev/null +++ b/init.taimen.usb.rc @@ -0,0 +1 @@ +import init.wahoo.usb.rc From f84d1dc352e6ea01a53a5c0f6d715a244b685e72 Mon Sep 17 00:00:00 2001 From: Jie Song Date: Mon, 27 Mar 2017 17:47:23 -0700 Subject: [PATCH 028/182] Use wahoo dumpstate Bug: 33820081 Test: Verify dumpstate service running Change-Id: I344e799f4429cde5e2586e9d96c9de1f57667411 --- CleanSpec.mk | 48 +++++++ device.mk | 3 - dumpstate/Android.mk | 41 ------ dumpstate/DumpstateDevice.cpp | 130 ------------------ dumpstate/DumpstateDevice.h | 49 ------- ...d.hardware.dumpstate@1.0-service.taimen.rc | 4 - dumpstate/service.cpp | 35 ----- 7 files changed, 48 insertions(+), 262 deletions(-) create mode 100644 CleanSpec.mk delete mode 100644 dumpstate/Android.mk delete mode 100755 dumpstate/DumpstateDevice.cpp delete mode 100644 dumpstate/DumpstateDevice.h delete mode 100644 dumpstate/android.hardware.dumpstate@1.0-service.taimen.rc delete mode 100644 dumpstate/service.cpp diff --git a/CleanSpec.mk b/CleanSpec.mk new file mode 100644 index 0000000..1181912 --- /dev/null +++ b/CleanSpec.mk @@ -0,0 +1,48 @@ +# Copyright 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# If you don't need to do a full clean build but would like to touch +# a file or delete some intermediate files, add a clean step to the end +# of the list. These steps will only be run once, if they haven't been +# run before. +# +# E.g.: +# $(call add-clean-step, touch -c external/sqlite/sqlite3.h) +# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates) +# +# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with +# files that are missing or have been moved. +# +# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory. +# Use $(OUT_DIR) to refer to the "out" directory. +# +# If you need to re-do something that's already mentioned, just copy +# the command and add it to the bottom of the list. E.g., if a change +# that you made last week required touching a file and a change you +# made today requires touching the same file, just copy the old +# touch step and add it to the end of the list. +# +# ************************************************ +# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST +# ************************************************ + +# For example: +#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates) +#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates) +#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f) +#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*) + +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor) diff --git a/device.mk b/device.mk index 63b2e78..65da935 100644 --- a/device.mk +++ b/device.mk @@ -42,8 +42,5 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \ device/google/taimen/init.logging.rc:root/init.$(PRODUCT_HARDWARE).logging.rc -# Dumpstate HAL -PRODUCT_PACKAGES += \ - android.hardware.dumpstate@1.0-service.taimen diff --git a/dumpstate/Android.mk b/dumpstate/Android.mk deleted file mode 100644 index 038371e..0000000 --- a/dumpstate/Android.mk +++ /dev/null @@ -1,41 +0,0 @@ - -# Copyright 2016 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) -LOCAL_MODULE := android.hardware.dumpstate@1.0-service.taimen -LOCAL_INIT_RC := android.hardware.dumpstate@1.0-service.taimen.rc -LOCAL_MODULE_RELATIVE_PATH := hw - -LOCAL_SRC_FILES := \ - DumpstateDevice.cpp \ - service.cpp - -LOCAL_SHARED_LIBRARIES := \ - android.hardware.dumpstate@1.0 \ - libbase \ - libcutils \ - libdumpstateutil \ - libhidlbase \ - libhidltransport \ - libhwbinder \ - liblog \ - libutils - -LOCAL_MODULE_TAGS := optional -LOCAL_PROPRIETARY_MODULE := true - -include $(BUILD_EXECUTABLE) diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp deleted file mode 100755 index 2d20c34..0000000 --- a/dumpstate/DumpstateDevice.cpp +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#define LOG_TAG "dumpstate" - -#include "DumpstateDevice.h" - -#include -#include -#include -#include -#include -#include - -#include "DumpstateUtil.h" - -#define MODEM_LOG_PREFIX_PROPERTY "ro.radio.log_prefix" -#define MODEM_LOG_LOC_PROPERTY "ro.radio.log_loc" - -using android::os::dumpstate::CommandOptions; -using android::os::dumpstate::DumpFileToFd; -using android::os::dumpstate::PropertiesHelper; -using android::os::dumpstate::RunCommandToFd; - -namespace android { -namespace hardware { -namespace dumpstate { -namespace V1_0 { -namespace implementation { - -namespace { - -static void getModemLogs(int fd) -{ - bool modemLogsEnabled = 0; - std::string modemLogDir = android::base::GetProperty(MODEM_LOG_LOC_PROPERTY, ""); - if (modemLogDir.empty()) { - ALOGD("No modem log place is set\n"); - return; - } - - if (!PropertiesHelper::IsUserBuild()) { - - CommandOptions options = CommandOptions::WithTimeout(120).Build(); - std::string modemLogAllDir = modemLogDir + "/modem_log"; - std::vector rilAndNetmgrLogs - { - "/data/misc/radio/ril_log", - "/data/misc/radio/ril_log_old", - "/data/misc/netmgr/netmgr_log", - "/data/misc/netmgr/netmgr_log_old" - }; - std::string modemLogMkDirCmd= "/system/bin/mkdir " + modemLogAllDir; - RunCommandToFd(fd, "MKDIR MODEM LOG", { "/system/bin/sh", "-c", modemLogMkDirCmd.c_str()}, options); - for (std::string logFile : rilAndNetmgrLogs) - { - std::string copyCmd= "/system/bin/cp " + logFile + " " + modemLogAllDir; - RunCommandToFd(fd, "MV MODEM LOG", { "/system/bin/sh", "-c", copyCmd.c_str()}, options); - } - std::string filePrefix = android::base::GetProperty(MODEM_LOG_PREFIX_PROPERTY, ""); - if (!filePrefix.empty()) { - std::string modemLogCombined = modemLogDir + "/" + filePrefix + "all.tar"; - std::string modemLogTarCmd= "/system/bin/tar cvf " + modemLogCombined + " -C " + modemLogAllDir + " ."; - RunCommandToFd(fd, "TAR LOG", { "/system/bin/sh", "-c", modemLogTarCmd.c_str()}, options); - std::string modemLogPermCmd= "/system/bin/chmod a+rw " + modemLogCombined; - RunCommandToFd(fd, "CHG PERM", { "/system/bin/sh", "-c", modemLogPermCmd.c_str()}, options); - std::string modemLogClearCmd= "/system/bin/rm -r " + modemLogAllDir; - RunCommandToFd(fd, "RM MODEM DIR", { "/system/bin/sh", "-c", modemLogClearCmd.c_str()}, options); - } - } -} - -} // unnamed namespace - - -// Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow. -Return DumpstateDevice::dumpstateBoard(const hidl_handle& handle) { - if (handle->numFds < 1) { - ALOGE("no FDs\n"); - return Void(); - } - - int fd = handle->data[0]; - if (fd < 0) { - ALOGE("invalid FD: %d\n", handle->data[0]); - return Void(); - } - - getModemLogs(fd); - DumpFileToFd(fd, "CPU present", "/sys/devices/system/cpu/present"); - DumpFileToFd(fd, "CPU online", "/sys/devices/system/cpu/online"); - DumpFileToFd(fd, "INTERRUPTS", "/proc/interrupts"); - DumpFileToFd(fd, "RPM Stats", "/d/rpm_stats"); - DumpFileToFd(fd, "Power Management Stats", "/d/rpm_master_stats"); - DumpFileToFd(fd, "SMD Log", "/d/ipc_logging/smd/log"); - RunCommandToFd(fd, "ION HEAPS", {"/system/bin/sh", "-c", "for d in $(ls -d /d/ion/*); do for f in $(ls $d); do echo --- $d/$f; cat $d/$f; done; done"}); - DumpFileToFd(fd, "dmabuf info", "/d/dma_buf/bufinfo"); - RunCommandToFd(fd, "Temperatures", {"/system/bin/sh", "-c", "for f in `ls /sys/class/thermal` ; do type=`cat /sys/class/thermal/$f/type` ; temp=`cat /sys/class/thermal/$f/temp` ; echo \"$type: $temp\" ; done"}); - DumpFileToFd(fd, "cpu0-1 time-in-state", "/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state"); - RunCommandToFd(fd, "cpu0-1 cpuidle", {"/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu0/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"}); - DumpFileToFd(fd, "cpu2-3 time-in-state", "/sys/devices/system/cpu/cpu2/cpufreq/stats/time_in_state"); - RunCommandToFd(fd, "cpu2-3 cpuidle", {"/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu2/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"}); - DumpFileToFd(fd, "MDP xlogs", "/d/mdp/xlog/dump"); - - /* Check if qsee_logger tool exists */ - if (!access("/system/bin/qsee_logger", X_OK)) { - RunCommandToFd(fd, "FP LOGS", {"qsee_logger", "-d"}); - } - - return Void(); -}; - -} // namespace implementation -} // namespace V1_0 -} // namespace dumpstate -} // namespace hardware -} // namespace android diff --git a/dumpstate/DumpstateDevice.h b/dumpstate/DumpstateDevice.h deleted file mode 100644 index 9237b3b..0000000 --- a/dumpstate/DumpstateDevice.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef ANDROID_HARDWARE_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H -#define ANDROID_HARDWARE_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H - -#include -#include -#include - -namespace android { -namespace hardware { -namespace dumpstate { -namespace V1_0 { -namespace implementation { - -using ::android::hardware::dumpstate::V1_0::IDumpstateDevice; -using ::android::hardware::hidl_array; -using ::android::hardware::hidl_handle; -using ::android::hardware::hidl_string; -using ::android::hardware::hidl_vec; -using ::android::hardware::Return; -using ::android::hardware::Void; -using ::android::sp; - -struct DumpstateDevice : public IDumpstateDevice { - // Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow. - Return dumpstateBoard(const hidl_handle& h) override; -}; - -} // namespace implementation -} // namespace V1_0 -} // namespace dumpstate -} // namespace hardware -} // namespace android - -#endif // ANDROID_HARDWARE_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H diff --git a/dumpstate/android.hardware.dumpstate@1.0-service.taimen.rc b/dumpstate/android.hardware.dumpstate@1.0-service.taimen.rc deleted file mode 100644 index 5ce646a..0000000 --- a/dumpstate/android.hardware.dumpstate@1.0-service.taimen.rc +++ /dev/null @@ -1,4 +0,0 @@ -service dumpstate-1-0 /vendor/bin/hw/android.hardware.dumpstate@1.0-service.taimen - class hal - user system - group system diff --git a/dumpstate/service.cpp b/dumpstate/service.cpp deleted file mode 100644 index 925d71e..0000000 --- a/dumpstate/service.cpp +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#define LOG_TAG "android.hardware.dumpstate@1.0-service.taimen" - -#include -#include - -#include "DumpstateDevice.h" - -using ::android::hardware::configureRpcThreadpool; -using ::android::hardware::dumpstate::V1_0::IDumpstateDevice; -using ::android::hardware::dumpstate::V1_0::implementation::DumpstateDevice; -using ::android::hardware::joinRpcThreadpool; -using ::android::sp; - - -int main(int /* argc */, char* /* argv */ []) { - sp dumpstate = new DumpstateDevice; - configureRpcThreadpool(1, true); - dumpstate->registerAsService(); - joinRpcThreadpool(); -} From 424ef5c8ce5f16895c51a5a0dba32163a2e64ffb Mon Sep 17 00:00:00 2001 From: Ruchi Kandoi Date: Mon, 27 Mar 2017 14:13:50 -0700 Subject: [PATCH 029/182] Add libnfc-nxp.conf for Taimen Test: NFC powers up Bug: 36163226 Change-Id: I70e53bbce4d8cdec700c6a6531b628ecd61e5700 Signed-off-by: Ruchi Kandoi --- device.mk | 3 + nfc/libnfc-nxp.taimen.conf | 447 +++++++++++++++++++++++++++++++++++++ 2 files changed, 450 insertions(+) create mode 100644 nfc/libnfc-nxp.taimen.conf diff --git a/device.mk b/device.mk index 4836039..850999b 100644 --- a/device.mk +++ b/device.mk @@ -45,4 +45,7 @@ PRODUCT_COPY_FILES += \ PRODUCT_PACKAGES += \ android.hardware.dumpstate@1.0-service.taimen +PRODUCT_COPY_FILES += \ + device/google/taimen/nfc/libnfc-nxp.taimen.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-nxp.conf + diff --git a/nfc/libnfc-nxp.taimen.conf b/nfc/libnfc-nxp.taimen.conf new file mode 100644 index 0000000..57e31bd --- /dev/null +++ b/nfc/libnfc-nxp.taimen.conf @@ -0,0 +1,447 @@ +## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn547) +## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn547) +############################################################################### +# Application options +# Logging Levels +# NXPLOG_DEFAULT_LOGLEVEL 0x01 +# ANDROID_LOG_DEBUG 0x03 +# ANDROID_LOG_WARN 0x02 +# ANDROID_LOG_ERROR 0x01 +# ANDROID_LOG_SILENT 0x00 +NXPLOG_EXTNS_LOGLEVEL=0x01 +NXPLOG_NCIHAL_LOGLEVEL=0x01 +NXPLOG_NCIX_LOGLEVEL=0x01 +NXPLOG_NCIR_LOGLEVEL=0x01 +NXPLOG_FWDNLD_LOGLEVEL=0x01 +NXPLOG_TML_LOGLEVEL=0x01 + +############################################################################### +# Nfc Device Node name +NXP_NFC_DEV_NODE="/dev/nq-nci" + +############################################################################### +# Extension for Mifare reader enable +MIFARE_READER_ENABLE=0x01 + +############################################################################### +# Vzw Feature enable +VZW_FEATURE_ENABLE=0x01 + +############################################################################### +# File name for Firmware +#NXP_FW_NAME="libpn553_fw.so" + +############################################################################### +# System clock source selection configuration +#define CLK_SRC_XTAL 1 +#define CLK_SRC_PLL 2 +NXP_SYS_CLK_SRC_SEL=0x01 + +############################################################################### +# System clock frequency selection configuration +#define CLK_FREQ_13MHZ 1 +#define CLK_FREQ_19_2MHZ 2 +#define CLK_FREQ_24MHZ 3 +#define CLK_FREQ_26MHZ 4 +#define CLK_FREQ_38_4MHZ 5 +#define CLK_FREQ_52MHZ 6 +NXP_SYS_CLK_FREQ_SEL=0x00 + +############################################################################### +# The timeout value to be used for clock request acknowledgment +# min value = 0x01 to max = 0x06 +NXP_SYS_CLOCK_TO_CFG=0x01 + +############################################################################### +# NXP proprietary settings +NXP_ACT_PROP_EXTN={20, 03, 03, 01, A0, 01} + +############################################################################### +# NFC forum profile settings +NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00} + +############################################################################### +# NFCC Configuration Control +# Allow NFCC to manage RF Config 0x01 +# Don't allow NFCC to manage RF Config 0x00 +NXP_NFC_MERGE_RF_PARAMS={20, 02, 04, 01, 85, 01, 01} + +############################################################################### +# Standby enable settings +#NXP_CORE_STANDBY={2F, 00, 01, 01} + +############################################################################### +# NXP TVDD configurations settings +# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported, +# out of them only one can be configured at a time. +NXP_EXT_TVDD_CFG=0x02 + +############################################################################### +#config1:SLALM, 3.3V for both RM and CM +NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C} + +############################################################################### +#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, +#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms +NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_1={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_2={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_3={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_4={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_5={ +#} + +############################################################################### +# NXP RF configuration ALM/PLM settings +# This section needs to be updated with the correct values based on the platform +#NXP_RF_CONF_BLK_6={ +#} + +############################################################################### +# Set configuration optimization decision setting +# Enable = 0x01 +# Disable = 0x00 +NXP_SET_CONFIG_ALWAYS=0x00 + +############################################################################### +# Core configuration extensions +# It includes +# Wired mode settings A0ED, A0EE +# Tag Detector A040, A041, A043 +# Low Power mode A007 +# Clock settings A002, A003 +# PbF settings A008 +# Clock timeout settings A004 +# eSE (SVDD) PWR REQ settings A0F2 +# How eSE connected to PN553 A012 +# UICC2 bit rate A0D1 +# SWP1A interface A0D4 +# DWP intf behavior config, SVDD Load activated by default if set to 0x31 - A037 +NXP_CORE_CONF_EXTN={20, 02, 25, 09, + A0, EC, 01, 01, + A0, ED, 01, 00, + A0, 5E, 01, 01, + A0, 12, 01, 02, + A0, 40, 01, 01, + A0, DD, 01, 2D, + A0, D1, 01, 02, + A0, D4, 01, 01, + A0, 37, 01, 35 + } +# A0, F2, 01, 01, +# A0, 40, 01, 01, +# A0, 41, 01, 02, +# A0, 43, 01, 04, +# A0, 02, 01, 01, +# A0, 03, 01, 11, +# A0, 07, 01, 03, +# A0, 08, 01, 01 +# } + +############################################################################### +# Core configuration rf field filter settings to enable set to 01 to disable set +# to 00 last bit +NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00 } + +############################################################################### +# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set +# to 0x00 +NXP_I2C_FRAGMENTATION_ENABLED=0x00 + +############################################################################### +# Core configuration settings +NXP_CORE_CONF={ 20, 02, 2E, 0E, + 28, 01, 00, + 21, 01, 00, + 30, 01, 08, + 31, 01, 03, + 32, 01, 60, + 38, 01, 01, + 33, 04, 01, 02, 03, 04, + 54, 01, 06, + 50, 01, 02, + 5B, 01, 00, + 80, 01, 01, + 81, 01, 01, + 82, 01, 0E, + 18, 01, 01 + } + +############################################################################### +# Mifare Classic Key settings +#NXP_CORE_MFCKEY_SETTING={20, 02, 25,04, A0, 51, 06, A0, A1, A2, A3, A4, A5, +# A0, 52, 06, D3, F7, D3, F7, D3, F7, +# A0, 53, 06, FF, FF, FF, FF, FF, FF, +# A0, 54, 06, 00, 00, 00, 00, 00, 00} + + +############################################################################### +# Default SE Options +# No secure element 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x04 + +NXP_DEFAULT_SE=0x07 + +############################################################################### +#Enable SWP full power mode when phone is power off +NXP_SWP_FULL_PWR_ON=0x00 + +############################################################################### +#### Select the CHIP #### +#PN547C2 0x01 +#PN65T 0x02 +#PN548AD 0x03 +#PN66T 0x04 +#PN551 0x05 +#PN67T 0x06 +#PN553 0x07 +#PN80T 0x08 +NXP_NFC_CHIP=0x07 + +############################################################################### +# CE when Screen state is locked +# This setting is for DEFAULT_AID_ROUTE, +# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE +# Disable 0x00 +# Enable 0x01 +NXP_CE_ROUTE_STRICT_DISABLE=0x01 + +############################################################################### +#Timeout in secs to get NFCEE Discover notification +NXP_DEFAULT_NFCEE_DISC_TIMEOUT=20 + +############################################################################### +NXP_DEFAULT_NFCEE_TIMEOUT=20 + +############################################################################### +#Timeout in secs +NXP_SWP_RD_START_TIMEOUT=0x0A + +############################################################################### +#Timeout in secs +NXP_SWP_RD_TAG_OP_TIMEOUT=0x01 + +############################################################################### +#Set the default AID route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_AID_ROUTE=0x00 + +############################################################################### +#Set the Mifare Desfire route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_DESFIRE_ROUTE=0x02 + +############################################################################### +#Set the Mifare CLT route Location : +#This settings will be used when application does not set this parameter +# host 0x00 +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_MIFARE_CLT_ROUTE=0x02 + +############################################################################### +#Set the default AID Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen Lock +# bit pos 4 = Screen Off +DEFAULT_AID_PWR_STATE=0x19 + +############################################################################### +#Set the Mifare Desfire Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen Lock +# bit pos 4 = Screen Off +DEFAULT_DESFIRE_PWR_STATE=0x1B + +############################################################################### +#Set the Mifare CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen Lock +# bit pos 4 = Screen Off +DEFAULT_MIFARE_CLT_PWR_STATE=0x1B + +############################################################################### +#Set the Felica CLT route Location : +#This settings will be used when application does not set this parameter +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_FELICA_CLT_ROUTE=0x01 + +############################################################################### +#Set the Felica CLT Power state : +#This settings will be used when application does not set this parameter +# bit pos 0 = Switch On +# bit pos 1 = Switch Off +# bit pos 2 = Battery Off +# bit pos 3 = Screen Lock +# bit pos 4 = Screen Off +DEFAULT_FELICA_CLT_PWR_STATE=0x1B + +############################################################################### +# AID Matching platform options +# AID_MATCHING_L 0x01 +# AID_MATCHING_K 0x02 +AID_MATCHING_PLATFORM=0x01 + +############################################################################### +# P61 interface options +# NFC 0x01 +# SPI 0x02 +NXP_P61_LS_DEFAULT_INTERFACE=0x01 + +############################################################################### +# P61 LTSM interface options +# NFC 0x01 +# SPI 0x02 +NXP_P61_LTSM_DEFAULT_INTERFACE=0x01 + +############################################################################### +#CHINA_TIANJIN_RF_SETTING +#Enable 0x01 +#Disable 0x00 +NXP_CHINA_TIANJIN_RF_ENABLED=0x01 + +############################################################################### +#SWP_SWITCH_TIMEOUT_SETTING +# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60]. +# Timeout in milliseconds, for example +# No Timeout 0x00 +# 10 millisecond timeout 0x0A +NXP_SWP_SWITCH_TIMEOUT=0x0A + +############################################################################### +# P61 interface options for JCOP Download +# NFC 0x01 +# SPI 0x02 +NXP_P61_JCOP_DEFAULT_INTERFACE=0x01 + +############################################################################### +# P61 JCOP OS download options +# FRAMEWORK API BY APPLICATION 0x00 +# AT BOOT_TIME 0x01 +NXP_JCOPDL_AT_BOOT_ENABLE=0x00 + +############################################################################### +# Loader service version +# NFC service checks for LS version 2.0 or 2.1 +# LS2.0 0x20 +# LS2.1 0x21 +# LS2.2 0x22 +# AT NFC service intialization +NXP_LOADER_SERVICE_VERSION=0x22 + +############################################################################### +#Timeout value in milliseconds for NFCC standby mode.The range is between 5000 +#msec to 20000 msec and zero is to disable. +NXP_NFCC_STANDBY_TIMEOUT=20000 + +############################################################################### +#Dynamic RSSI feature enable +# Disable 0x00 +# Enable 0x01 +NXP_AGC_DEBUG_ENABLE=0x00 + +############################################################################### +#Virtual Mode ESE and Wired Mode ongoing delay Wired Mode +# For Technology routing to ESE Technology Mask = 4 +# For ISO-DEP Protocol routing to ESE Mask = 2 +# It can also take TECH|PROTO = 6 +# To ignore the delay set mask to = 0 +NXP_ESE_WIRED_PRT_MASK=0x00 + +############################################################################### +#Virtual Mode UICC and Wired Mode ongoing delay Wired Mode +#For Technology routing to UICC Technology Mask = 4 +#For ISO-DEP Protocol routing to UICC set Mask = 2 +#For Select AID Routing to UICC set Mask = 1 +#It can also take values TECH|PROTO|SELECT_AID = 7 , 6 , 5 ,3 .To ignore delay +#set mask = 0 +NXP_UICC_WIRED_PRT_MASK=0x00 + +############################################################################### +#RF field true delay Wired Mode +# delay wired mode = 1 +# allow wired mode = 0 +NXP_WIRED_MODE_RF_FIELD_ENABLE=0x00 + +############################################################################### +#Config to allow adding aids +#NFC on/off is required after this config +#1 = enabling adding aid to NFCC routing table. +#0 = disabling adding aid to NFCC routing table. +NXP_ENABLE_ADD_AID=0x01 + +############################################################################### +# JCOP-3.3 continuous process timeout in msec and value should be in Hexadecimal +# JCOP CP TIMEOUT +NXP_CP_TIMEOUT={00, 77} + +############################################################################### +# Enable/Disable checking default proto SE Id +# Disable 0x00 +# Enable 0x01 +NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01 + +############################################################################### +#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE +#Enable/Disable block number checks for china transit use case +#Enable 0x01 +#Disable 0x00 +NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01 + +############################################################################### +# Restrict routing to first matched rule only. +# Blacklist enable 0x01 +# Blacklist disable 0x00 +NXP_PROP_BLACKLIST_ROUTING=0x00 + +############################################################################### +# Timeout value in milliseconds to send response for Felica command received +NXP_HCEF_CMD_RSP_TIMEOUT_VALUE=5000 + +############################################################################### From e4e819b2f2dffe77c43d827e24ed0a04005a8603 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Wed, 22 Mar 2017 15:48:28 -0700 Subject: [PATCH 030/182] Including WallpaperPicker in aosp build Bug: 35724630 Test: None Change-Id: I29293647403670f6969d4269066b5ac48f4888c4 --- aosp_taimen.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/aosp_taimen.mk b/aosp_taimen.mk index 215346d..8bde0a9 100644 --- a/aosp_taimen.mk +++ b/aosp_taimen.mk @@ -18,8 +18,9 @@ $(call inherit-product, device/google/taimen/device.mk) $(call inherit-product-if-exists, vendor/google_devices/taimen/device-vendor.mk) PRODUCT_PACKAGES += \ + Dialer \ Launcher3 \ - Dialer + WallpaperPicker PRODUCT_MANUFACTURER := Google PRODUCT_BRAND := Android From 48f2cdc7975849ab779adefd4cf30e5044521994 Mon Sep 17 00:00:00 2001 From: David Lin Date: Wed, 29 Mar 2017 13:52:38 -0700 Subject: [PATCH 031/182] audio: specify the correct afe-proxy device id Change-Id: I42f6fe63071795676d6b2034c1cdf6ab0c948c7b Signed-off-by: David Lin --- audio_platform_info_tavil.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml index a0671a2..46eaa68 100644 --- a/audio_platform_info_tavil.xml +++ b/audio_platform_info_tavil.xml @@ -43,6 +43,8 @@ + + From 2a6f73b735ad8e8eba99ef7b93c74422d454f537 Mon Sep 17 00:00:00 2001 From: Vineeta Srivastava Date: Thu, 30 Mar 2017 15:02:30 -0700 Subject: [PATCH 032/182] Remove taimen specific audio configs Use wahoo's common audio configs instead. Change-Id: If2fb5d14f27e9741ee9a18b03d9b59fde05fbd53 --- audio_platform_info_tavil.xml | 75 - device.mk | 5 - mixer_paths_tavil.xml | 2593 --------------------------------- 3 files changed, 2673 deletions(-) delete mode 100644 audio_platform_info_tavil.xml delete mode 100644 mixer_paths_tavil.xml diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml deleted file mode 100644 index 46eaa68..0000000 --- a/audio_platform_info_tavil.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/device.mk b/device.mk index 06c8bcc..8a0e37c 100644 --- a/device.mk +++ b/device.mk @@ -33,11 +33,6 @@ PRODUCT_PROPERTY_OVERRIDES += \ PRODUCT_PROPERTY_OVERRIDES += \ camera.disable_treble=true -# Audio -PRODUCT_COPY_FILES += \ - device/google/taimen/audio_platform_info_tavil.xml:system/etc/audio_platform_info_tavil_taimen.xml \ - device/google/taimen/mixer_paths_tavil.xml:system/etc/mixer_paths_tavil_taimen.xml - # Logging PRODUCT_COPY_FILES += \ device/google/taimen/init.logging.rc:root/init.$(PRODUCT_HARDWARE).logging.rc diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml deleted file mode 100644 index fe360ef..0000000 --- a/mixer_paths_tavil.xml +++ /dev/null @@ -1,2593 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 89b56a800eae2a993bd61243543e27350e0a4ea7 Mon Sep 17 00:00:00 2001 From: Devin Kim Date: Sat, 4 Mar 2017 04:33:04 +0900 Subject: [PATCH 033/182] Enable AVB feature and set boot partition size Change-Id: Ied57a2b190365d43333648faabbad80313bfd06a --- BoardConfig.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/BoardConfig.mk b/BoardConfig.mk index ab093ec..2ca2552 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -21,4 +21,8 @@ BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200,n8 earlycon=msm_serial_dm,0xc1b00 BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive include device/google/wahoo/BoardConfig.mk + +BOARD_BOOTIMAGE_PARTITION_SIZE := 41943040 +BOARD_AVB_ENABLE := true + -include vendor/google_devices/taimen/BoardConfigVendor.mk From 0402af370dad5ecb091b2313beabd0abe4d64676 Mon Sep 17 00:00:00 2001 From: Vineeta Srivastava Date: Mon, 3 Apr 2017 17:54:46 -0700 Subject: [PATCH 034/182] Split fstab from wahoo Change-Id: Idb3b7b539ed7c2b6b7db91ca0b77bf1b35cbbd13 --- BoardConfig.mk | 1 + device.mk | 3 +++ fstab.hardware | 8 ++++++++ 3 files changed, 12 insertions(+) create mode 100644 fstab.hardware diff --git a/BoardConfig.mk b/BoardConfig.mk index ab093ec..238e774 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -20,5 +20,6 @@ DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x00000056 BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200,n8 earlycon=msm_serial_dm,0xc1b0000 BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive +TARGET_RECOVERY_FSTAB := device/google/taimen/fstab.hardware include device/google/wahoo/BoardConfig.mk -include vendor/google_devices/taimen/BoardConfigVendor.mk diff --git a/device.mk b/device.mk index 8a0e37c..16f9278 100644 --- a/device.mk +++ b/device.mk @@ -41,4 +41,7 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \ device/google/taimen/nfc/libnfc-nxp.taimen.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-nxp.conf +# TODO: move this to wahoo. +PRODUCT_COPY_FILES += \ + device/google/taimen/fstab.hardware:root/fstab.$(PRODUCT_HARDWARE) diff --git a/fstab.hardware b/fstab.hardware new file mode 100644 index 0000000..8c82a1f --- /dev/null +++ b/fstab.hardware @@ -0,0 +1,8 @@ +# Android fstab file. + +# +/dev/block/platform/soc/1da4000.ufshc/by-name/system / ext4 ro,barrier=1 wait,slotselect +/dev/block/platform/soc/1da4000.ufshc/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,noauto_da_alloc wait,check,formattable,fileencryption=ice:aes-256-heh +/dev/block/platform/soc/1da4000.ufshc/by-name/misc /misc emmc defaults defaults +/dev/block/platform/soc/1da4000.ufshc/by-name/modem /firmware vfat ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait,slotselect +/devices/soc/a800000.ssusb/a800000.dwc3* auto vfat defaults voldmanaged=usb:auto From 60ba746c7e28cac0ef69e58f073628eb4c3cf2a6 Mon Sep 17 00:00:00 2001 From: Vineeta Srivastava Date: Mon, 3 Apr 2017 20:21:59 -0700 Subject: [PATCH 035/182] Add fs_mgr_flags avb into fstab for AVB Change-Id: I1926c5f2c26b88189005231c280f70c46f418c43 --- fstab.hardware | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fstab.hardware b/fstab.hardware index 8c82a1f..f6d084a 100644 --- a/fstab.hardware +++ b/fstab.hardware @@ -1,7 +1,7 @@ # Android fstab file. # -/dev/block/platform/soc/1da4000.ufshc/by-name/system / ext4 ro,barrier=1 wait,slotselect +/dev/block/platform/soc/1da4000.ufshc/by-name/system / ext4 ro,barrier=1 wait,slotselect,avb /dev/block/platform/soc/1da4000.ufshc/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,noauto_da_alloc wait,check,formattable,fileencryption=ice:aes-256-heh /dev/block/platform/soc/1da4000.ufshc/by-name/misc /misc emmc defaults defaults /dev/block/platform/soc/1da4000.ufshc/by-name/modem /firmware vfat ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait,slotselect From 970efc402c7626acaf90386d288decf886d4635c Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 4 Apr 2017 09:49:22 -0700 Subject: [PATCH 036/182] taimen: mount data late to start bootanim early Bug: 36780513 Test: build Change-Id: I02803179746710413f4b1e2372f3550cd95d1581 --- fstab.hardware | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fstab.hardware b/fstab.hardware index f6d084a..48e7498 100644 --- a/fstab.hardware +++ b/fstab.hardware @@ -2,7 +2,7 @@ # /dev/block/platform/soc/1da4000.ufshc/by-name/system / ext4 ro,barrier=1 wait,slotselect,avb -/dev/block/platform/soc/1da4000.ufshc/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,noauto_da_alloc wait,check,formattable,fileencryption=ice:aes-256-heh +/dev/block/platform/soc/1da4000.ufshc/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,noauto_da_alloc latemount,wait,check,formattable,fileencryption=ice:aes-256-heh /dev/block/platform/soc/1da4000.ufshc/by-name/misc /misc emmc defaults defaults /dev/block/platform/soc/1da4000.ufshc/by-name/modem /firmware vfat ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait,slotselect /devices/soc/a800000.ssusb/a800000.dwc3* auto vfat defaults voldmanaged=usb:auto From 88a72dc35f9dc319ad1c0f5d3545b0b8816813d7 Mon Sep 17 00:00:00 2001 From: Thierry Strudel Date: Tue, 4 Apr 2017 21:02:59 -0700 Subject: [PATCH 037/182] Revert "Don't enforce RESTRICT_VENDOR_FILES := all" This reverts commit b5857b26b9d01ae7fdcaa1a1bcb342ab6d0bea69. --- aosp_taimen.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/aosp_taimen.mk b/aosp_taimen.mk index 8bde0a9..09ce6de 100644 --- a/aosp_taimen.mk +++ b/aosp_taimen.mk @@ -22,6 +22,7 @@ PRODUCT_PACKAGES += \ Launcher3 \ WallpaperPicker +PRODUCT_RESTRICT_VENDOR_FILES := all PRODUCT_MANUFACTURER := Google PRODUCT_BRAND := Android PRODUCT_NAME := aosp_taimen From 2bd621adce589260912331bdf4bbb0f677410ec4 Mon Sep 17 00:00:00 2001 From: John Dias Date: Thu, 6 Apr 2017 13:43:54 -0700 Subject: [PATCH 038/182] thermal: add thermal conf with shutdown temps Bug: 35700896 Test: boot, check for thermal-engine messages Change-Id: Ieaccb180cf9cf8d4fa0c9ff1a2f1b9f49046f9fa --- device.mk | 2 ++ thermal-engine.conf | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100755 thermal-engine.conf diff --git a/device.mk b/device.mk index 16f9278..c953f6d 100644 --- a/device.mk +++ b/device.mk @@ -45,3 +45,5 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \ device/google/taimen/fstab.hardware:root/fstab.$(PRODUCT_HARDWARE) +PRODUCT_COPY_FILES += \ + device/google/taimen/thermal-engine.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine.conf diff --git a/thermal-engine.conf b/thermal-engine.conf new file mode 100755 index 0000000..bda83be --- /dev/null +++ b/thermal-engine.conf @@ -0,0 +1,17 @@ +[SKIN_SHUTDOWN] +algo_type monitor +sampling 1000 +sensor amux5_quiet_therm +thresholds 60000 +thresholds_clr 59000 +actions shutdown +action_info 1 + +[SKIN_SHUTDOWN] +algo_type monitor +sampling 1000 +sensor battery +thresholds 60000 +thresholds_clr 59000 +actions shutdown +action_info 1 From 00f49a71dc8601809500f59987183835ab5920a8 Mon Sep 17 00:00:00 2001 From: Thierry Strudel Date: Sun, 19 Mar 2017 20:51:05 -0700 Subject: [PATCH 039/182] Don't enforce RESTRICT_VENDOR_FILES := all To work around QCOM AU69 limitations, allow vendor files to be installed in system. Change-Id: Ia51baa298876c9b1ab8e7f54d4179696bb3508ed Signed-off-by: Thierry Strudel --- aosp_taimen.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/aosp_taimen.mk b/aosp_taimen.mk index 09ce6de..8bde0a9 100644 --- a/aosp_taimen.mk +++ b/aosp_taimen.mk @@ -22,7 +22,6 @@ PRODUCT_PACKAGES += \ Launcher3 \ WallpaperPicker -PRODUCT_RESTRICT_VENDOR_FILES := all PRODUCT_MANUFACTURER := Google PRODUCT_BRAND := Android PRODUCT_NAME := aosp_taimen From 7dc8244ce0a2388d0964ac3da4f86f42b39a9c48 Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Tue, 4 Apr 2017 10:25:40 -0700 Subject: [PATCH 040/182] Add vbmeta to AB_OTA_PARTITIONS. Test: m dist and check META/ab_partitions.txt in target_files.zip. Change-Id: If75616269316ba12d88c72ff94474edcbbc7ed21 --- device.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/device.mk b/device.mk index c953f6d..2c66432 100644 --- a/device.mk +++ b/device.mk @@ -47,3 +47,7 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \ device/google/taimen/thermal-engine.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine.conf + +# verity +AB_OTA_PARTITIONS += \ + vbmeta From b33d8952d8c88b21983532b6268b7b424da34293 Mon Sep 17 00:00:00 2001 From: Zhijun He Date: Mon, 10 Apr 2017 09:39:55 -0700 Subject: [PATCH 041/182] camera: enable treble for taimen Bug: 37080049 Change-Id: I611d9335e753e0679b0da4bf59fc6e4456860baa --- device.mk | 4 ---- 1 file changed, 4 deletions(-) diff --git a/device.mk b/device.mk index c953f6d..50ad35e 100644 --- a/device.mk +++ b/device.mk @@ -29,10 +29,6 @@ PRODUCT_COPY_FILES += \ PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=560 \ -# camera service treble disable for bringup -PRODUCT_PROPERTY_OVERRIDES += \ - camera.disable_treble=true - # Logging PRODUCT_COPY_FILES += \ device/google/taimen/init.logging.rc:root/init.$(PRODUCT_HARDWARE).logging.rc From 349178a100d9b3bc5048a204326fea60d9a7abd6 Mon Sep 17 00:00:00 2001 From: Pat Tjin Date: Mon, 10 Apr 2017 23:42:14 +0000 Subject: [PATCH 042/182] Revert "REVERT ME taimen: enable permissive mode SELinux for bringup" This reverts commit adf15a07108cc7e6c1d83668513719bf92fd2739. Change-Id: Ic317bd8fbdec58722318b96b53f981421edfe6c9 --- BoardConfig.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/BoardConfig.mk b/BoardConfig.mk index ab093ec..8fb194b 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -18,7 +18,6 @@ TARGET_BOOTLOADER_BOARD_NAME := taimen DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x00000056 BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200,n8 earlycon=msm_serial_dm,0xc1b0000 -BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive include device/google/wahoo/BoardConfig.mk -include vendor/google_devices/taimen/BoardConfigVendor.mk From 152692b641f2364a7d120d7ce35077efed8ab622 Mon Sep 17 00:00:00 2001 From: Ramanan Rajeswaran Date: Mon, 10 Apr 2017 12:23:28 -0700 Subject: [PATCH 043/182] Add aosp assets. Test: build muskie. Change-Id: I34fd83487d3ffe4eea58ddab397ef72acc866ac8 --- aosp_taimen.mk | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/aosp_taimen.mk b/aosp_taimen.mk index 8bde0a9..eacf83c 100644 --- a/aosp_taimen.mk +++ b/aosp_taimen.mk @@ -14,6 +14,11 @@ # limitations under the License. # +# Inherit from the common Open Source product configuration +$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk) + + $(call inherit-product, device/google/taimen/device.mk) $(call inherit-product-if-exists, vendor/google_devices/taimen/device-vendor.mk) From 8fbca0239c188d760f32eb2aa0d6df95862ffed4 Mon Sep 17 00:00:00 2001 From: David Lin Date: Tue, 11 Apr 2017 18:13:21 -0700 Subject: [PATCH 044/182] soundfx: add msm voice processing audio effects Bug: 36865903 Change-Id: I048c806cc676ecdb666d4d5a2d66e9ac8f60129d Signed-off-by: David Lin --- aosp_taimen.mk | 3 + audio_effects.conf | 331 ++++++++++++++++++ voice_processing/Android.mk | 32 ++ .../voice_processing_descriptors.c | 47 +++ 4 files changed, 413 insertions(+) create mode 100644 audio_effects.conf create mode 100644 voice_processing/Android.mk create mode 100644 voice_processing/voice_processing_descriptors.c diff --git a/aosp_taimen.mk b/aosp_taimen.mk index eacf83c..9a3bc45 100644 --- a/aosp_taimen.mk +++ b/aosp_taimen.mk @@ -27,6 +27,9 @@ PRODUCT_PACKAGES += \ Launcher3 \ WallpaperPicker +PRODUCT_COPY_FILES += \ + device/google/taimen/audio_effects.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.conf + PRODUCT_MANUFACTURER := Google PRODUCT_BRAND := Android PRODUCT_NAME := aosp_taimen diff --git a/audio_effects.conf b/audio_effects.conf new file mode 100644 index 0000000..ea6c1fb --- /dev/null +++ b/audio_effects.conf @@ -0,0 +1,331 @@ +# List of effect libraries to load. Each library element must contain a "path" element +# giving the full path of the library .so file. +# libraries { +# { +# path +# } +# } +libraries { + bundle { + path /system/lib/soundfx/libbundlewrapper.so + } + reverb { + path /system/lib/soundfx/libreverbwrapper.so + } + visualizer_sw { + path /system/lib/soundfx/libvisualizer.so + } + visualizer_hw { + path /vendor/lib/soundfx/libqcomvisualizer.so + } + downmix { + path /system/lib/soundfx/libdownmix.so + } + loudness_enhancer { + path /system/lib/soundfx/libldnhncr.so + } + proxy { + path /system/lib/soundfx/libeffectproxy.so + } + offload_bundle { + path /vendor/lib/soundfx/libqcompostprocbundle.so + } + audio_pre_processing { + path /vendor/lib/soundfx/libqcomvoiceprocessing.so + } + volume_listener { + path /vendor/lib/soundfx/libvolumelistener.so + } +} + +# Default pre-processing library. Add to audio_effect.conf "libraries" section if +# audio HAL implements support for default software audio pre-processing effects +# +# pre_processing { +# path /system/lib/soundfx/libaudiopreprocessing.so +# } + +# list of effects to load. Each effect element must contain a "library" and a "uuid" element. +# The value of the "library" element must correspond to the name of one library element in the +# "libraries" element. +# The name of the effect element is indicative, only the value of the "uuid" element +# designates the effect. +# The uuid is the implementation specific UUID as specified by the effect vendor. This is not the +# generic effect type UUID. +# effects { +# { +# library +# uuid +# } +# ... +# } + +effects { + +# additions for the proxy implementation +# Proxy implementation + #effectname { + #library proxy + #uuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + + # SW implemetation of the effect. Added as a node under the proxy to + # indicate this as a sub effect. + #libsw { + #library libSW + #uuid yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy + #} End of SW effect + + # HW implementation of the effect. Added as a node under the proxy to + # indicate this as a sub effect. + #libhw { + #library libHW + #uuid zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz + #}End of HW effect + #} End of effect proxy + + bassboost { + library proxy + uuid 14804144-a5ee-4d24-aa88-0002a5d5c51b + + libsw { + library bundle + uuid 8631f300-72e2-11df-b57e-0002a5d5c51b + } + + libhw { + library offload_bundle + uuid 2c4a8c24-1581-487f-94f6-0002a5d5c51b + } + } + virtualizer { + library proxy + uuid d3467faa-acc7-4d34-acaf-0002a5d5c51b + + libsw { + library bundle + uuid 1d4033c0-8557-11df-9f2d-0002a5d5c51b + } + + libhw { + library offload_bundle + uuid 509a4498-561a-4bea-b3b1-0002a5d5c51b + } + } + equalizer { + library proxy + uuid c8e70ecd-48ca-456e-8a4f-0002a5d5c51b + + libsw { + library bundle + uuid ce772f20-847d-11df-bb17-0002a5d5c51b + } + + libhw { + library offload_bundle + uuid a0dac280-401c-11e3-9379-0002a5d5c51b + } + } + volume { + library bundle + uuid 119341a0-8469-11df-81f9-0002a5d5c51b + } + reverb_env_aux { + library proxy + uuid 48404ac9-d202-4ccc-bf84-0002a5d5c51b + + libsw { + library reverb + uuid 4a387fc0-8ab3-11df-8bad-0002a5d5c51b + } + + libhw { + library offload_bundle + uuid 79a18026-18fd-4185-8233-0002a5d5c51b + } + } + reverb_env_ins { + library proxy + uuid b707403a-a1c1-4291-9573-0002a5d5c51b + + libsw { + library reverb + uuid c7a511a0-a3bb-11df-860e-0002a5d5c51b + } + + libhw { + library offload_bundle + uuid eb64ea04-973b-43d2-8f5e-0002a5d5c51b + } + } + reverb_pre_aux { + library proxy + uuid 1b78f587-6d1c-422e-8b84-0002a5d5c51b + + libsw { + library reverb + uuid f29a1400-a3bb-11df-8ddc-0002a5d5c51b + } + + libhw { + library offload_bundle + uuid 6987be09-b142-4b41-9056-0002a5d5c51b + } + } + reverb_pre_ins { + library proxy + uuid f3e178d2-ebcb-408e-8357-0002a5d5c51b + + libsw { + library reverb + uuid 172cdf00-a3bc-11df-a72f-0002a5d5c51b + } + + libhw { + library offload_bundle + uuid aa2bebf6-47cf-4613-9bca-0002a5d5c51b + } + } + visualizer { + library proxy + uuid 1d0a1a53-7d5d-48f2-8e71-27fbd10d842c + + libsw { + library visualizer_sw + uuid d069d9e0-8329-11df-9168-0002a5d5c51b + } + + libhw { + library visualizer_hw + uuid 7a8044a0-1a71-11e3-a184-0002a5d5c51b + } + } + downmix { + library downmix + uuid 93f04452-e4fe-41cc-91f9-e475b6d1d69f + } + loudness_enhancer { + library loudness_enhancer + uuid fa415329-2034-4bea-b5dc-5b381c8d1e2c + } + aec { + library audio_pre_processing + uuid b4398408-1fb9-11e7-93ae-92361f002671 + } + ns { + library audio_pre_processing + uuid b43988c2-1fb9-11e7-93ae-92361f002671 + } + music_helper { + library volume_listener + uuid 08b8b058-0590-11e5-ac71-0025b32654a0 + } + ring_helper { + library volume_listener + uuid 0956df94-0590-11e5-bdbe-0025b32654a0 + } + alarm_helper { + library volume_listener + uuid 09f303e2-0590-11e5-8fdb-0025b32654a0 + } + # voice_helper is called when stream type is voice_call in VoIP usecase + voice_helper { + library volume_listener + uuid 0ace5c08-0590-11e5-ae9e-0025b32654a0 + } + notification_helper { + library volume_listener + uuid 0b776dde-0590-11e5-81ba-0025b32654a0 + } +} + +# additional effect from vendor +# UUID generated using version 1 + +output_session_processing { + music { + music_helper { + } + } + ring { + ring_helper { + } + } + alarm { + alarm_helper { + } + } + # stream type voice_call is used for VoIP call + voice_call { + voice_helper { + } + } + notification { + notification_helper { + } + } +} + +pre_processing { + voice_communication { + aec { + } + ns { + } + } +} + +# Default pre-processing effects. Add to audio_effect.conf "effects" section if +# audio HAL implements support for them. +# +# agc { +# library pre_processing +# uuid aa8130e0-66fc-11e0-bad0-0002a5d5c51b +# } +# aec { +# library pre_processing +# uuid bb392ec0-8d4d-11e0-a896-0002a5d5c51b +# } +# ns { +# library pre_processing +# uuid c06c8400-8e06-11e0-9cb6-0002a5d5c51b +# } + +# Audio preprocessor configurations. +# The pre processor configuration consists in a list of elements each describing +# pre processor settings for a given input source. Valid input source names are: +# "mic", "camcorder", "voice_recognition", "voice_communication" +# Each input source element contains a list of effects elements. The name of the effect +# element must be the name of one of the effects in the "effects" list of the file. +# Each effect element may optionally contain a list of parameters and their +# default value to apply when the pre processor effect is created. +# A parameter is defined by a "param" element and a "value" element. Each of these elements +# consists in one or more elements specifying a type followed by a value. +# The types defined are: "int", "short", "float", "bool" and "string" +# When both "param" and "value" are a single int, a simple form is allowed where just +# the param and value pair is present in the parameter description +# pre_processing { +# { +# { +# { +# param { +# int|short|float|bool|string +# [ int|short|float|bool|string ] +# ... +# } +# value { +# int|short|float|bool|string +# [ int|short|float|bool|string ] +# ... +# } +# } +# { } +# ... +# } +# ... +# } +# ... +# } + +# +# TODO: add default audio pre processor configurations after debug and tuning phase +# diff --git a/voice_processing/Android.mk b/voice_processing/Android.mk new file mode 100644 index 0000000..b0d902d --- /dev/null +++ b/voice_processing/Android.mk @@ -0,0 +1,32 @@ +# Copyright 2016 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +ifneq ($(filter taimen, $(TARGET_DEVICE)),) + +LOCAL_PATH:= $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := voice_processing_descriptors.c +LOCAL_C_INCLUDES += $(call include-path-for, audio-effects) +LOCAL_MULTILIB := $(AUDIOSERVER_MULTILIB) +LOCAL_MODULE := libqcomvoiceprocessingdescriptors +LOCAL_MODULE_RELATIVE_PATH := soundfx +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_OWNER := qcom +LOCAL_PROPRIETARY_MODULE := true + +include $(BUILD_SHARED_LIBRARY) + +endif diff --git a/voice_processing/voice_processing_descriptors.c b/voice_processing/voice_processing_descriptors.c new file mode 100644 index 0000000..d1bba14 --- /dev/null +++ b/voice_processing/voice_processing_descriptors.c @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +//------------------------------------------------------------------------------ +// Effect descriptors +//------------------------------------------------------------------------------ + +// UUIDs for effect types have been generated from http://www.itu.int/ITU-T/asn1/uuid.html +// as the pre processing effects are not defined by OpenSL ES + +// Acoustic Echo Cancellation b4398408-1fb9-11e7-93ae-92361f002671 +const effect_descriptor_t qcom_product_aec_descriptor = { + { 0x7b491460, 0x8d4d, 0x11e0, 0xbd61, { 0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b } }, // type + { 0xb4398408, 0x1fb9, 0x11e7, 0x93ae, { 0x92, 0x36, 0x1f, 0x00, 0x26, 0x71 } }, // uuid + EFFECT_CONTROL_API_VERSION, + (EFFECT_FLAG_TYPE_PRE_PROC|EFFECT_FLAG_DEVICE_IND|EFFECT_FLAG_HW_ACC_TUNNEL), + 0, + 0, + "Acoustic Echo Canceler", + "Qualcomm Fluence for Taimen" +}; + +// Noise suppression b43988c2-1fb9-11e7-93ae-92361f002671 +const effect_descriptor_t qcom_product_ns_descriptor = { + { 0x58b4b260, 0x8e06, 0x11e0, 0xaa8e, { 0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b } }, // type + { 0xb43988c2, 0x1fb9, 0x11e7, 0x93ae, { 0x92, 0x36, 0x1f, 0x00, 0x26, 0x71 } }, // uuid + EFFECT_CONTROL_API_VERSION, + (EFFECT_FLAG_TYPE_PRE_PROC|EFFECT_FLAG_DEVICE_IND|EFFECT_FLAG_HW_ACC_TUNNEL), + 0, + 0, + "Noise Suppression", + "Qualcomm Fluence for Taimen" +}; From 625d18fabab54f5d97f37fb3587bb97c0df2e15a Mon Sep 17 00:00:00 2001 From: Max Shi Date: Thu, 13 Apr 2017 12:19:44 -0700 Subject: [PATCH 045/182] taimen cleanspec: remove old sensor registry copy Test: make Bug: 37292029 Change-Id: If3d642a80ca8d330d4ad996301f72cdcc5f21489 --- CleanSpec.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CleanSpec.mk b/CleanSpec.mk index 1181912..d7de969 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -46,3 +46,5 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor) + +$(call add-clean-step, rm -rf $(OUT_DIR)/target/product/taimen/vendor/etc/sensors/sensor_def_taimen.conf) From dfe3092c97754a4c0e4c329ccb71e8bfa81a960a Mon Sep 17 00:00:00 2001 From: Devin Kim Date: Fri, 14 Apr 2017 18:16:41 -0700 Subject: [PATCH 046/182] apn: copy the full APNs list when making aosp_taimen build Bug: 37361886 Change-Id: I0d06bb0645428832f54b2edec675e89bffe10752 --- aosp_taimen.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/aosp_taimen.mk b/aosp_taimen.mk index 9a3bc45..7feed1d 100644 --- a/aosp_taimen.mk +++ b/aosp_taimen.mk @@ -14,6 +14,9 @@ # limitations under the License. # +# Get the full APNs +PRODUCT_COPY_FILES := device/google/wahoo/apns-full-conf.xml:system/etc/apns-conf.xml + # Inherit from the common Open Source product configuration $(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) $(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk) From b4eb9148c3da4c3e2e862126a7dd73e99a0bf9b3 Mon Sep 17 00:00:00 2001 From: Patrick Tjin Date: Tue, 28 Mar 2017 09:15:23 -0700 Subject: [PATCH 047/182] Taimen: add touch driver loadable modules Bug: 36655680 Test: booted device, touch works Change-Id: Ic8f40bf208a770530357f069c08caceeb23aaaa7 --- device.mk | 6 ++++++ init-taimen.rc | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/device.mk b/device.mk index d8f1584..a48630b 100644 --- a/device.mk +++ b/device.mk @@ -29,6 +29,12 @@ PRODUCT_COPY_FILES += \ PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=560 \ +# Kernel modules +PRODUCT_COPY_FILES += \ + device/google/wahoo-kernel/touch_core_base.ko:$(TARGET_COPY_OUT_VENDOR)/lib/modules/touch_core_base.ko \ + device/google/wahoo-kernel/ftm4.ko:$(TARGET_COPY_OUT_VENDOR)/lib/modules/ftm4.ko \ + device/google/wahoo-kernel/sw49408.ko:$(TARGET_COPY_OUT_VENDOR)/lib/modules/sw49408.ko + # Logging PRODUCT_COPY_FILES += \ device/google/taimen/init.logging.rc:root/init.$(PRODUCT_HARDWARE).logging.rc diff --git a/init-taimen.rc b/init-taimen.rc index 64c4686..e965346 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -11,3 +11,9 @@ on post-fs-data on property:init.svc.fps_hal=running && property:ro.boot.revision=rev_0 stop fps_hal + +on boot + # Touch drivers + insmod /vendor/lib/modules/touch_core_base.ko + insmod /vendor/lib/modules/ftm4.ko + insmod /vendor/lib/modules/sw49408.ko From cadfb76c1723c33d7b183404abf05e1c2b21239c Mon Sep 17 00:00:00 2001 From: Thierry Strudel Date: Wed, 19 Apr 2017 23:00:35 -0700 Subject: [PATCH 048/182] device: build default GK & KM HAL impl Change-Id: Ib886cf9b777a9289aa6dbbd28ff8c1ba3e2bb5bf Signed-off-by: Thierry Strudel --- device.mk | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/device.mk b/device.mk index a48630b..7d4b7c0 100644 --- a/device.mk +++ b/device.mk @@ -53,3 +53,13 @@ PRODUCT_COPY_FILES += \ # verity AB_OTA_PARTITIONS += \ vbmeta + +# generic gatekeeper HAL +PRODUCT_PACKAGES += \ + android.hardware.gatekeeper@1.0-impl \ + android.hardware.gatekeeper@1.0-service + +# generic keymaster HAL +PRODUCT_PACKAGES += \ + android.hardware.keymaster@3.0-impl \ + android.hardware.keymaster@3.0-service From 6961529a061741486500e7d642c788decdb68d92 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Fri, 21 Apr 2017 11:08:23 -0700 Subject: [PATCH 049/182] Split VR thermal config Bug: 36514493 Test: thermal config changed enter/exit VR mode in muskie Change-Id: Ic0f3433f2eeadd40a2334f41b33dd08af3a8b40b --- device.mk | 4 ++-- thermal-engine-vr.conf | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100755 thermal-engine-vr.conf diff --git a/device.mk b/device.mk index a48630b..78bc494 100644 --- a/device.mk +++ b/device.mk @@ -48,8 +48,8 @@ PRODUCT_COPY_FILES += \ device/google/taimen/fstab.hardware:root/fstab.$(PRODUCT_HARDWARE) PRODUCT_COPY_FILES += \ - device/google/taimen/thermal-engine.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine.conf - + device/google/taimen/thermal-engine.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine.conf \ + device/google/taimen/thermal-engine.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine-vr.conf # verity AB_OTA_PARTITIONS += \ vbmeta diff --git a/thermal-engine-vr.conf b/thermal-engine-vr.conf new file mode 100755 index 0000000..bda83be --- /dev/null +++ b/thermal-engine-vr.conf @@ -0,0 +1,17 @@ +[SKIN_SHUTDOWN] +algo_type monitor +sampling 1000 +sensor amux5_quiet_therm +thresholds 60000 +thresholds_clr 59000 +actions shutdown +action_info 1 + +[SKIN_SHUTDOWN] +algo_type monitor +sampling 1000 +sensor battery +thresholds 60000 +thresholds_clr 59000 +actions shutdown +action_info 1 From a66ba7a73daa5e5898a63248b73b2cd84d6d7cd4 Mon Sep 17 00:00:00 2001 From: Max Bires Date: Mon, 24 Apr 2017 10:16:14 -0700 Subject: [PATCH 050/182] Setting Taimen into permissive to allow wahoo to turn on enforcing. Taimen will remain in permissive until Monday, May 1st when this change will be reverted so as to give a week for teams to write policy for the actual devices that just came in. Bug: 34784662 Test: Taimen is in permissive mode Change-Id: I67fc3c0d22dac2956437957e1f7575414cb8a045 --- BoardConfig.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/BoardConfig.mk b/BoardConfig.mk index d02192b..d73954f 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -18,6 +18,7 @@ TARGET_BOOTLOADER_BOARD_NAME := taimen DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x00000056 BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200,n8 earlycon=msm_serial_dm,0xc1b0000 +BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive TARGET_RECOVERY_FSTAB := device/google/taimen/fstab.hardware include device/google/wahoo/BoardConfig.mk From 45f2d042a45b912970d6dc22cb1372108a4c5a36 Mon Sep 17 00:00:00 2001 From: Max Shi Date: Mon, 10 Apr 2017 21:38:54 -0700 Subject: [PATCH 051/182] init: update firmware after driver is loaded Test: flash & boot Bug: 37581765 Change-Id: I5120c06e966e395e8166c2624319709c65014a1d --- init-taimen.rc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/init-taimen.rc b/init-taimen.rc index e965346..f4edf9e 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -6,9 +6,6 @@ on post-fs-data chmod 664 /persist/sensors/sensors_settings chown system root /persist/sensors/sensors_settings - # Update touch firmware if required - write /sys/devices/virtual/input/ftm4_touch/check_fw 1 - on property:init.svc.fps_hal=running && property:ro.boot.revision=rev_0 stop fps_hal @@ -17,3 +14,6 @@ on boot insmod /vendor/lib/modules/touch_core_base.ko insmod /vendor/lib/modules/ftm4.ko insmod /vendor/lib/modules/sw49408.ko + + # Update touch firmware if required + write /sys/devices/virtual/input/ftm4_touch/check_fw 1 From 6e3fec9b3ed627c3db98c7e4324e0805c4b9aeec Mon Sep 17 00:00:00 2001 From: Vineeta Srivastava Date: Mon, 24 Apr 2017 23:04:36 -0700 Subject: [PATCH 052/182] Default overlay for Taimen Bug: 37652055 Change-Id: Ib3da3d1d7315c9fac0bfd3aaa388275a154d644d --- device.mk | 8 ++ .../base/core/res/res/values/config.xml | 109 ++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 overlay/frameworks/base/core/res/res/values/config.xml diff --git a/device.mk b/device.mk index d9c4b09..61092e8 100644 --- a/device.mk +++ b/device.mk @@ -20,6 +20,14 @@ PRODUCT_AAPT_PREBUILT_DPI := xxxhdpi xxhdpi xhdpi hdpi PRODUCT_HARDWARE := taimen +# DEVICE_PACKAGE_OVERLAYS for the device should be before +# including common overlays since the one listed first +# takes precedence. +ifdef DEVICE_PACKAGE_OVERLAYS +$(warning Overlays defined in '$(DEVICE_PACKAGE_OVERLAYS)' will override '$(PRODUCT_HARDWARE)' overlays) +endif +DEVICE_PACKAGE_OVERLAYS += device/google/taimen/overlay + include device/google/wahoo/device.mk PRODUCT_COPY_FILES += \ diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml new file mode 100644 index 0000000..dee60d8 --- /dev/null +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -0,0 +1,109 @@ + + + + + + + + g2pw2100 + + http://www.gstatic.com/android/sms/G_2PW2100.xml + + + + 5 + 20 + 40 + 100 + 325 + 600 + 1250 + 2200 + 4000 + + + + + 10 + 33 + 49 + 68 + 87 + 108 + 132 + 167 + 206 + 255 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 6 + + + 13 + + + 98 + + + 86 + + + 4 + + + + "usbradio:adb:diag,serial_cdev,rmnet_gsi,adb:diag,serial_cdev,rmnet_gsi" + "usbradio:mtp,adb:diag,serial_cdev,rmnet_gsi,adb:diag,serial_cdev,rmnet_gsi" + "usbradio:mtp:diag,serial_cdev,rmnet_gsi:diag,serial_cdev,rmnet_gsi" + + + From c59cc615008b1c498e5c5134a4439a561114278c Mon Sep 17 00:00:00 2001 From: Devin Kim Date: Tue, 25 Apr 2017 16:38:49 -0700 Subject: [PATCH 053/182] Set the slot_suffix for backward compatibility Bug: 37663204 Test: boot Change-Id: Ic134f489bc5dcf4d67dabd18a4fa86ba04da8bf0 --- init-taimen.rc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/init-taimen.rc b/init-taimen.rc index f4edf9e..d35cf33 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -1,3 +1,7 @@ +on init && property:ro.boot.slot=* + # will remove this once slot_suffix is deprecated + setprop ro.boot.slot_suffix _${ro.boot.slot} + on post-fs-data # QC Sensors mkdir /persist/sensors From def90f804c70de5faad5bfebc10a9916bcf11487 Mon Sep 17 00:00:00 2001 From: Nick Desaulniers Date: Fri, 28 Apr 2017 09:58:57 -0700 Subject: [PATCH 054/182] Enable metadata encryption Bug: 26778031 Test: Boots, reboots, sector 0 of userdata encrypted Make sure an FDE device, both default and password protected, boots. Make sure an FBE device without metadata encryption boots. Change-Id: Iafefd0065c069f7e23897c9d33fa0c301b386212 --- fstab.hardware | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fstab.hardware b/fstab.hardware index 48e7498..64a1620 100644 --- a/fstab.hardware +++ b/fstab.hardware @@ -2,7 +2,8 @@ # /dev/block/platform/soc/1da4000.ufshc/by-name/system / ext4 ro,barrier=1 wait,slotselect,avb -/dev/block/platform/soc/1da4000.ufshc/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,noauto_da_alloc latemount,wait,check,formattable,fileencryption=ice:aes-256-heh +/dev/block/platform/soc/1da4000.ufshc/by-name/metadata /metadata ext4 noatime,nosuid,nodev,barrier=1 wait,check,formattable +/dev/block/platform/soc/1da4000.ufshc/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,noauto_da_alloc latemount,wait,check,formattable,fileencryption=ice:aes-256-heh,keydirectory=/metadata /dev/block/platform/soc/1da4000.ufshc/by-name/misc /misc emmc defaults defaults /dev/block/platform/soc/1da4000.ufshc/by-name/modem /firmware vfat ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait,slotselect /devices/soc/a800000.ssusb/a800000.dwc3* auto vfat defaults voldmanaged=usb:auto From ad022f2c78f1393b1e9035b4aff2963a0b0f6963 Mon Sep 17 00:00:00 2001 From: Vineeta Srivastava Date: Fri, 28 Apr 2017 11:29:17 -0700 Subject: [PATCH 055/182] Taimen: Use hardware keymaster Bug: 36781550 Change-Id: I57d0540b35eadded626d779dfc536687ff2d549d --- device.mk | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/device.mk b/device.mk index 61092e8..4ba5423 100644 --- a/device.mk +++ b/device.mk @@ -58,16 +58,7 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \ device/google/taimen/thermal-engine.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine.conf \ device/google/taimen/thermal-engine.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine-vr.conf + # verity AB_OTA_PARTITIONS += \ vbmeta - -# generic gatekeeper HAL -PRODUCT_PACKAGES += \ - android.hardware.gatekeeper@1.0-impl \ - android.hardware.gatekeeper@1.0-service - -# generic keymaster HAL -PRODUCT_PACKAGES += \ - android.hardware.keymaster@3.0-impl \ - android.hardware.keymaster@3.0-service From 142c5512469afa58d592ef8ba9ca9e96159ff682 Mon Sep 17 00:00:00 2001 From: Guang Zhu Date: Fri, 28 Apr 2017 23:56:41 +0000 Subject: [PATCH 056/182] Revert "Enable metadata encryption" Bug: 37792477 This reverts commit def90f804c70de5faad5bfebc10a9916bcf11487. Change-Id: I4ad499b87fcaa3bf6a3478f7a39f25db86db2b70 --- fstab.hardware | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fstab.hardware b/fstab.hardware index 64a1620..48e7498 100644 --- a/fstab.hardware +++ b/fstab.hardware @@ -2,8 +2,7 @@ # /dev/block/platform/soc/1da4000.ufshc/by-name/system / ext4 ro,barrier=1 wait,slotselect,avb -/dev/block/platform/soc/1da4000.ufshc/by-name/metadata /metadata ext4 noatime,nosuid,nodev,barrier=1 wait,check,formattable -/dev/block/platform/soc/1da4000.ufshc/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,noauto_da_alloc latemount,wait,check,formattable,fileencryption=ice:aes-256-heh,keydirectory=/metadata +/dev/block/platform/soc/1da4000.ufshc/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,noauto_da_alloc latemount,wait,check,formattable,fileencryption=ice:aes-256-heh /dev/block/platform/soc/1da4000.ufshc/by-name/misc /misc emmc defaults defaults /dev/block/platform/soc/1da4000.ufshc/by-name/modem /firmware vfat ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait,slotselect /devices/soc/a800000.ssusb/a800000.dwc3* auto vfat defaults voldmanaged=usb:auto From 901fc8bbadd7b04ed7f642065bc88999ef077984 Mon Sep 17 00:00:00 2001 From: Vineeta Srivastava Date: Tue, 25 Apr 2017 18:10:48 -0700 Subject: [PATCH 057/182] Add proprietary to paths Bug: 36524009 Change-Id: If3147b0d6cc643813e391a7d2c65a158c43a5a1b --- BoardConfig.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BoardConfig.mk b/BoardConfig.mk index d73954f..b94aff6 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -26,4 +26,4 @@ include device/google/wahoo/BoardConfig.mk BOARD_BOOTIMAGE_PARTITION_SIZE := 41943040 BOARD_AVB_ENABLE := true --include vendor/google_devices/taimen/BoardConfigVendor.mk +-include vendor/google_devices/taimen/proprietary/BoardConfigVendor.mk From 674e8afb0adb1be6d86d65e6a09008844eeeb983 Mon Sep 17 00:00:00 2001 From: "taeho.youn" Date: Wed, 26 Apr 2017 23:14:14 +0900 Subject: [PATCH 058/182] audio: Add taimen specific audio config files will be used independently, and be updated frequently - dmic configuration - acoustic voice path for fluenceProv2 - audio path for factory - camcorder mic (main mic) - stereo configuration for tas2557 - device setting for fluenceProv2 Bug: 37453005 Bug: 36666337 Change-Id: I5d1910862757671da35dc044d4a14891fcc11e70 Signed-off-by: taeho.youn Signed-off-by: David Lin --- audio_platform_info_tavil.xml | 67 ++ device.mk | 6 + mixer_paths_tavil.xml | 1884 +++++++++++++++++++++++++++++++++ 3 files changed, 1957 insertions(+) create mode 100644 audio_platform_info_tavil.xml create mode 100644 mixer_paths_tavil.xml diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml new file mode 100644 index 0000000..44ba2a5 --- /dev/null +++ b/audio_platform_info_tavil.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/device.mk b/device.mk index 4ba5423..7944d57 100644 --- a/device.mk +++ b/device.mk @@ -59,6 +59,12 @@ PRODUCT_COPY_FILES += \ device/google/taimen/thermal-engine.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine.conf \ device/google/taimen/thermal-engine.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine-vr.conf +# Audio +PRODUCT_COPY_FILES += \ + device/google/taimen/mixer_paths_tavil.xml:system/etc/mixer_paths_tavil_taimen.xml \ + device/google/taimen/audio_platform_info_tavil.xml:system/etc/audio_platform_info_tavil_taimen.xml + # verity AB_OTA_PARTITIONS += \ vbmeta + diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml new file mode 100644 index 0000000..693d56d --- /dev/null +++ b/mixer_paths_tavil.xml @@ -0,0 +1,1884 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 257138431696bd9b8a076d6a19c9e326e0211311 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Mon, 1 May 2017 15:38:50 -0400 Subject: [PATCH 059/182] Add rounded corners for taimen Test: visual Bug: 33208650 Change-Id: Id184448b7644e59303891e6684b693c822e099b8 --- .../packages/SystemUI/res/values/dimens.xml | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml diff --git a/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml b/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml new file mode 100644 index 0000000..daa53be --- /dev/null +++ b/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml @@ -0,0 +1,21 @@ + + + + 30dp + 8dp + From ebc2f9428a245111b5a086ff3ec5028a3ccedd1f Mon Sep 17 00:00:00 2001 From: "Kyunam.jo" Date: Wed, 3 May 2017 07:20:10 +0900 Subject: [PATCH 060/182] Taimen: fixed to loading touch driver loadable modules Directly using 'insmod' operation to init process is not permitted. Therefore modified to use init.insmod.sh Bug: 37914698 Test: booted device, touch works Change-Id: I57ba8a86a6c508a66a805bacaf014640c6b49254 --- device.mk | 4 ++++ init-taimen.rc | 7 +------ init.insmod.cfg | 3 +++ 3 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 init.insmod.cfg diff --git a/device.mk b/device.mk index 7944d57..2eec110 100644 --- a/device.mk +++ b/device.mk @@ -37,6 +37,10 @@ PRODUCT_COPY_FILES += \ PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=560 \ +# Kernel Modules Config +PRODUCT_COPY_FILES += \ + device/google/taimen/init.insmod.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/init.insmod.cfg + # Kernel modules PRODUCT_COPY_FILES += \ device/google/wahoo-kernel/touch_core_base.ko:$(TARGET_COPY_OUT_VENDOR)/lib/modules/touch_core_base.ko \ diff --git a/init-taimen.rc b/init-taimen.rc index d35cf33..aa5c7da 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -13,11 +13,6 @@ on post-fs-data on property:init.svc.fps_hal=running && property:ro.boot.revision=rev_0 stop fps_hal -on boot - # Touch drivers - insmod /vendor/lib/modules/touch_core_base.ko - insmod /vendor/lib/modules/ftm4.ko - insmod /vendor/lib/modules/sw49408.ko - +on property:sys.all.modules.ready=1 # Update touch firmware if required write /sys/devices/virtual/input/ftm4_touch/check_fw 1 diff --git a/init.insmod.cfg b/init.insmod.cfg new file mode 100644 index 0000000..01fbeed --- /dev/null +++ b/init.insmod.cfg @@ -0,0 +1,3 @@ +insmod /vendor/lib/modules/touch_core_base.ko +insmod /vendor/lib/modules/ftm4.ko +insmod /vendor/lib/modules/sw49408.ko From 4d30d83cb2e806e2d05b0fc1ffbca6612739e75a Mon Sep 17 00:00:00 2001 From: Vinay Kalia Date: Fri, 28 Apr 2017 10:30:18 -0700 Subject: [PATCH 061/182] Taimen: Add power_profile.xml Bug: 37668215 Test: Verified "App usage since last charge" under Settings->Battery Change-Id: I0f815b27a05a509b230052dd7d8892ad2fc8c53a --- .../base/core/res/res/xml/power_profile.xml | 157 ++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 overlay/frameworks/base/core/res/res/xml/power_profile.xml diff --git a/overlay/frameworks/base/core/res/res/xml/power_profile.xml b/overlay/frameworks/base/core/res/res/xml/power_profile.xml new file mode 100644 index 0000000..464e004 --- /dev/null +++ b/overlay/frameworks/base/core/res/res/xml/power_profile.xml @@ -0,0 +1,157 @@ + + + + 6 + + 11 + + 30 + + 50 + 5 + + 6 + 5 + 4 + 3 + 3 + + + 0 + + + 4 + 4 + + + + + 300000 + 364800 + 441600 + 518400 + 595200 + 672000 + 748800 + 825600 + 883200 + 960000 + 1036800 + 1094400 + 1171200 + 1248000 + 1324800 + 1401600 + 1478400 + 1555200 + 1670400 + 1747200 + 1824000 + 1900800 + + + + 125.927994 + 125.343994 + 126.192001 + 127.300003 + 128.143005 + 128.007004 + 126.160995 + 127.184006 + 128.455994 + 132.464005 + 133.457001 + 136.403000 + 138.167007 + 139.893005 + 141.796005 + 143.692001 + 146.570999 + 148.878006 + 153.154007 + 157.662994 + 160.550003 + 166.753006 + + + + + 300000 + 345600 + 422400 + 499200 + 576000 + 652800 + 729600 + 806400 + 902400 + 979200 + 1056000 + 1132800 + 1190400 + 1267200 + 1344000 + 1420800 + 1497600 + 1574400 + 1651200 + 1728000 + 1804800 + 1881600 + 1958400 + 2035200 + 2112000 + 2208000 + 2265600 + 2323200 + 2342400 + 2361600 + 2457600 + + + + 135.47 + 134.93 + 137.16 + 140.10 + 143.30 + 146.59 + 139.80 + 137.54 + 139.42 + 140.58 + 142.38 + 143.40 + 167.40 + 159.51 + 175.65 + 181.65 + 187.83 + 195.19 + 201.31 + 208.11 + 218.77 + 230.67 + 238.13 + 258.11 + 270.27 + 296.85 + 311.92 + 336.86 + 343.08 + 351.30 + 352.63 + + 165.68 + 135 + 240.10 + 870 + 3620 + From 39b866fd0a93112ddb6c587a16291c103ac8172f Mon Sep 17 00:00:00 2001 From: David Lin Date: Wed, 3 May 2017 19:46:03 -0700 Subject: [PATCH 062/182] audio: assign VOICE_HANDSET_TMUS to use VOICE_HANDSET acdb_id This is to use the same ACDB file as non-TMUS before we split the tuning file for TMUS. Bug: 37964718 Change-Id: I5e2457a9a4bc2790b4cfbb78b645374afda22624 Signed-off-by: David Lin --- audio_platform_info_tavil.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml index 44ba2a5..674021b 100644 --- a/audio_platform_info_tavil.xml +++ b/audio_platform_info_tavil.xml @@ -28,7 +28,9 @@ - + + + From 5eb17bf62b2ffaa8963d34394d2ba1edc2affaa8 Mon Sep 17 00:00:00 2001 From: Patrick Tjin Date: Thu, 4 May 2017 13:09:06 -0700 Subject: [PATCH 063/182] Revert "Revert "Enable metadata encryption"" This reverts commit 142c5512469afa58d592ef8ba9ca9e96159ff682. --- fstab.hardware | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fstab.hardware b/fstab.hardware index 48e7498..64a1620 100644 --- a/fstab.hardware +++ b/fstab.hardware @@ -2,7 +2,8 @@ # /dev/block/platform/soc/1da4000.ufshc/by-name/system / ext4 ro,barrier=1 wait,slotselect,avb -/dev/block/platform/soc/1da4000.ufshc/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,noauto_da_alloc latemount,wait,check,formattable,fileencryption=ice:aes-256-heh +/dev/block/platform/soc/1da4000.ufshc/by-name/metadata /metadata ext4 noatime,nosuid,nodev,barrier=1 wait,check,formattable +/dev/block/platform/soc/1da4000.ufshc/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,noauto_da_alloc latemount,wait,check,formattable,fileencryption=ice:aes-256-heh,keydirectory=/metadata /dev/block/platform/soc/1da4000.ufshc/by-name/misc /misc emmc defaults defaults /dev/block/platform/soc/1da4000.ufshc/by-name/modem /firmware vfat ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait,slotselect /devices/soc/a800000.ssusb/a800000.dwc3* auto vfat defaults voldmanaged=usb:auto From 2885b68e2cda46d1bad521a5745cbdbd3fb94c1b Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Thu, 4 May 2017 11:13:26 -0700 Subject: [PATCH 064/182] Interim thermal config to avoid extreme hot cases Bug: 37544246 Test: Build Change-Id: I275dde433e91032b9cad54e8858a4a559e09570e --- thermal-engine-vr.conf | 2 +- thermal-engine.conf | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/thermal-engine-vr.conf b/thermal-engine-vr.conf index bda83be..9e1fb53 100755 --- a/thermal-engine-vr.conf +++ b/thermal-engine-vr.conf @@ -1,7 +1,7 @@ [SKIN_SHUTDOWN] algo_type monitor sampling 1000 -sensor amux5_quiet_therm +sensor pa_therm0 thresholds 60000 thresholds_clr 59000 actions shutdown diff --git a/thermal-engine.conf b/thermal-engine.conf index bda83be..c1c4f9c 100755 --- a/thermal-engine.conf +++ b/thermal-engine.conf @@ -1,17 +1,17 @@ -[SKIN_SHUTDOWN] -algo_type monitor -sampling 1000 -sensor amux5_quiet_therm -thresholds 60000 -thresholds_clr 59000 -actions shutdown -action_info 1 +[SKIN-MONITOR] +algo_type monitor +sampling 2000 +sensor pa_therm0 +thresholds 52000 55000 58000 +thresholds_clr 50000 53000 56000 +actions cluster0+cluster1+gpu cluster0+cluster1+gpu cluster0+cluster1+gpu +action_info 1094400+1190400+414000000 883200+902400+342000000 300000+300000+257000000 -[SKIN_SHUTDOWN] -algo_type monitor -sampling 1000 -sensor battery -thresholds 60000 -thresholds_clr 59000 -actions shutdown -action_info 1 +[SKIN-SHUTDOWN] +algo_type monitor +sampling 1000 +sensor pa_therm0 +thresholds 60000 +thresholds_clr 59000 +actions shutdown +action_info 1 From de242daf7600222329b0f3be506950c559155859 Mon Sep 17 00:00:00 2001 From: "taeho.youn" Date: Thu, 4 May 2017 11:05:53 +0900 Subject: [PATCH 065/182] audio: corresponding change for FluenceProv2 in audioHAL - dmic configuration 4->3 - add voice-speaker-tmic Bug: 37129980 Change-Id: I5f267d0a257ac6f02e1269a57c761d2974e6ec5e Signed-off-by: taeho.youn --- audio_platform_info_tavil.xml | 2 +- mixer_paths_tavil.xml | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml index 674021b..c856b71 100644 --- a/audio_platform_info_tavil.xml +++ b/audio_platform_info_tavil.xml @@ -48,7 +48,7 @@ - + diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index 693d56d..e9415b1 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -1310,6 +1310,14 @@ + + + + + + + + From a45427973ec6762d88fdba741a1d8be5d7f797b4 Mon Sep 17 00:00:00 2001 From: Thierry Strudel Date: Mon, 8 May 2017 08:51:26 -0700 Subject: [PATCH 066/182] aosp_taimen: fix vendor device-vendor.mk path Bug: 38077101 Change-Id: Ie3014f1ccdea4e6f0f9b5d64b807c58d082f2fb0 Signed-off-by: Thierry Strudel --- aosp_taimen.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aosp_taimen.mk b/aosp_taimen.mk index 7feed1d..a689952 100644 --- a/aosp_taimen.mk +++ b/aosp_taimen.mk @@ -23,7 +23,7 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk) $(call inherit-product, device/google/taimen/device.mk) -$(call inherit-product-if-exists, vendor/google_devices/taimen/device-vendor.mk) +$(call inherit-product-if-exists, vendor/google_devices/taimen/proprietary/device-vendor.mk) PRODUCT_PACKAGES += \ Dialer \ From 64db4b6e3e2dda1222eaf30fc071658e9aa17671 Mon Sep 17 00:00:00 2001 From: Thierry Strudel Date: Mon, 8 May 2017 14:59:15 -0700 Subject: [PATCH 067/182] Use BOARD_VENDOR_KERNEL_MODULES for modules instead of PRODUCT_COPY_FILES Change-Id: I676cda3893393467661d5db0adb499027d24b3c9 Signed-off-by: Thierry Strudel --- BoardConfig.mk | 12 ++++++++++++ device.mk | 6 ------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/BoardConfig.mk b/BoardConfig.mk index b94aff6..13342ef 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -26,4 +26,16 @@ include device/google/wahoo/BoardConfig.mk BOARD_BOOTIMAGE_PARTITION_SIZE := 41943040 BOARD_AVB_ENABLE := true +ifeq (,$(filter taimen_clang, $(TARGET_PRODUCT))) +BOARD_VENDOR_KERNEL_MODULES += \ + device/google/wahoo-kernel/touch_core_base.ko \ + device/google/wahoo-kernel/ftm4.ko \ + device/google/wahoo-kernel/sw49408.ko +else +BOARD_VENDOR_KERNEL_MODULES += \ + device/google/wahoo-kernel/clang/touch_core_base.ko \ + device/google/wahoo-kernel/clang/ftm4.ko \ + device/google/wahoo-kernel/clang/sw49408.ko +endif + -include vendor/google_devices/taimen/proprietary/BoardConfigVendor.mk diff --git a/device.mk b/device.mk index 2eec110..310596c 100644 --- a/device.mk +++ b/device.mk @@ -41,12 +41,6 @@ PRODUCT_PROPERTY_OVERRIDES += \ PRODUCT_COPY_FILES += \ device/google/taimen/init.insmod.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/init.insmod.cfg -# Kernel modules -PRODUCT_COPY_FILES += \ - device/google/wahoo-kernel/touch_core_base.ko:$(TARGET_COPY_OUT_VENDOR)/lib/modules/touch_core_base.ko \ - device/google/wahoo-kernel/ftm4.ko:$(TARGET_COPY_OUT_VENDOR)/lib/modules/ftm4.ko \ - device/google/wahoo-kernel/sw49408.ko:$(TARGET_COPY_OUT_VENDOR)/lib/modules/sw49408.ko - # Logging PRODUCT_COPY_FILES += \ device/google/taimen/init.logging.rc:root/init.$(PRODUCT_HARDWARE).logging.rc From f7a98ea13789d74a8397afd98cff08280378838e Mon Sep 17 00:00:00 2001 From: Max Bires Date: Mon, 8 May 2017 15:24:14 -0700 Subject: [PATCH 068/182] Turning enforcing on for taimen Sanity testing was done around noon ToT today for the following: GPS/Maps Chrome Wi-Fi/Wi-Fi Calling LTE VoLTE Camera (HDR on/off, Video Slo-Mo on/off) Start-Up Wizard Play App Download and Launch Fingerprint Account Registration Bug: 34784662 Test: Enforcing is on globally on taimen, individual permissive domains are still permissive Change-Id: I113c5e8959fbd07ae689644223dbea7a5a8a6b32 --- BoardConfig.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/BoardConfig.mk b/BoardConfig.mk index b94aff6..a9227b5 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -18,7 +18,6 @@ TARGET_BOOTLOADER_BOARD_NAME := taimen DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x00000056 BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200,n8 earlycon=msm_serial_dm,0xc1b0000 -BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive TARGET_RECOVERY_FSTAB := device/google/taimen/fstab.hardware include device/google/wahoo/BoardConfig.mk From 871c96922033a43acabf472b5d65bfb6cd901b6f Mon Sep 17 00:00:00 2001 From: Thierry Strudel Date: Tue, 9 May 2017 12:17:32 -0700 Subject: [PATCH 069/182] move fstab and BOARD_AVB_ENABLE to wahoo Change-Id: Ide7f7d4dcd6d4d67f209943e2ce2048015e1a010 Signed-off-by: Thierry Strudel --- BoardConfig.mk | 1 - device.mk | 4 ---- fstab.hardware | 9 --------- 3 files changed, 14 deletions(-) delete mode 100644 fstab.hardware diff --git a/BoardConfig.mk b/BoardConfig.mk index 13342ef..f8b1b71 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -20,7 +20,6 @@ DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x00000056 BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200,n8 earlycon=msm_serial_dm,0xc1b0000 BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive -TARGET_RECOVERY_FSTAB := device/google/taimen/fstab.hardware include device/google/wahoo/BoardConfig.mk BOARD_BOOTIMAGE_PARTITION_SIZE := 41943040 diff --git a/device.mk b/device.mk index 310596c..e0b3ac3 100644 --- a/device.mk +++ b/device.mk @@ -49,10 +49,6 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \ device/google/taimen/nfc/libnfc-nxp.taimen.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-nxp.conf -# TODO: move this to wahoo. -PRODUCT_COPY_FILES += \ - device/google/taimen/fstab.hardware:root/fstab.$(PRODUCT_HARDWARE) - PRODUCT_COPY_FILES += \ device/google/taimen/thermal-engine.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine.conf \ device/google/taimen/thermal-engine.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine-vr.conf diff --git a/fstab.hardware b/fstab.hardware deleted file mode 100644 index 64a1620..0000000 --- a/fstab.hardware +++ /dev/null @@ -1,9 +0,0 @@ -# Android fstab file. - -# -/dev/block/platform/soc/1da4000.ufshc/by-name/system / ext4 ro,barrier=1 wait,slotselect,avb -/dev/block/platform/soc/1da4000.ufshc/by-name/metadata /metadata ext4 noatime,nosuid,nodev,barrier=1 wait,check,formattable -/dev/block/platform/soc/1da4000.ufshc/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,noauto_da_alloc latemount,wait,check,formattable,fileencryption=ice:aes-256-heh,keydirectory=/metadata -/dev/block/platform/soc/1da4000.ufshc/by-name/misc /misc emmc defaults defaults -/dev/block/platform/soc/1da4000.ufshc/by-name/modem /firmware vfat ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 wait,slotselect -/devices/soc/a800000.ssusb/a800000.dwc3* auto vfat defaults voldmanaged=usb:auto From 30ed97c4bd0b3f214d60a5e4808c7c8c7deaa2de Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 9 May 2017 12:17:35 -0700 Subject: [PATCH 070/182] taimen: modify pm8998 amux name Test: build Change-Id: Ie01b40d88590c44809aa7ad46b68216e43eb4849 --- thermal-engine-vr.conf | 2 +- thermal-engine.conf | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/thermal-engine-vr.conf b/thermal-engine-vr.conf index 9e1fb53..4bc1ff0 100755 --- a/thermal-engine-vr.conf +++ b/thermal-engine-vr.conf @@ -1,7 +1,7 @@ [SKIN_SHUTDOWN] algo_type monitor sampling 1000 -sensor pa_therm0 +sensor pa_therm1 thresholds 60000 thresholds_clr 59000 actions shutdown diff --git a/thermal-engine.conf b/thermal-engine.conf index c1c4f9c..97031f1 100755 --- a/thermal-engine.conf +++ b/thermal-engine.conf @@ -1,7 +1,7 @@ [SKIN-MONITOR] algo_type monitor sampling 2000 -sensor pa_therm0 +sensor pa_therm1 thresholds 52000 55000 58000 thresholds_clr 50000 53000 56000 actions cluster0+cluster1+gpu cluster0+cluster1+gpu cluster0+cluster1+gpu @@ -10,7 +10,7 @@ action_info 1094400+1190400+414000000 883200+902400+342000000 300000+300000+25 [SKIN-SHUTDOWN] algo_type monitor sampling 1000 -sensor pa_therm0 +sensor pa_therm1 thresholds 60000 thresholds_clr 59000 actions shutdown From 7ddefe4f9b82ce80a05a3dfa693604d72cdc74ef Mon Sep 17 00:00:00 2001 From: "taeho.youn" Date: Wed, 10 May 2017 10:52:12 +0900 Subject: [PATCH 071/182] audio: change acdb_id for fluenceProv2 speakerphone change device pair to use 3-mic Bug: 37129980 Change-Id: I731cf58edd301cad618e6722641150bea3986c12 --- audio_platform_info_tavil.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml index c856b71..a4dbfbe 100644 --- a/audio_platform_info_tavil.xml +++ b/audio_platform_info_tavil.xml @@ -31,6 +31,7 @@ + From 42db652a543c0791783c78702b56529ac2051c1d Mon Sep 17 00:00:00 2001 From: gopinath Date: Tue, 9 May 2017 16:38:48 -0700 Subject: [PATCH 072/182] Part 2 : Board config change for perf setup test script. b/37865876 Change-Id: I60c338282fbb895f48958773347eda23e89f86e6 --- BoardConfig.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/BoardConfig.mk b/BoardConfig.mk index f8b1b71..14931ba 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -38,3 +38,6 @@ BOARD_VENDOR_KERNEL_MODULES += \ endif -include vendor/google_devices/taimen/proprietary/BoardConfigVendor.mk + +# Testing related defines +BOARD_PERFSETUP_SCRIPT := platform_testing/scripts/perf-setup/wahoo-setup.sh From 4905809ff334be2a1db903f5a9e3d67e40b7cb36 Mon Sep 17 00:00:00 2001 From: Jie Song Date: Wed, 10 May 2017 10:10:06 -0700 Subject: [PATCH 073/182] Adding system properties for modem logging Bug: 37115787 Test: Manually trigger bugreport Change-Id: I611083c0c23fab4887beaf0aed0139aa0b5d5e41 --- device.mk | 8 ++++++++ init.logging.rc | 2 ++ 2 files changed, 10 insertions(+) diff --git a/device.mk b/device.mk index 310596c..f487f12 100644 --- a/device.mk +++ b/device.mk @@ -66,3 +66,11 @@ PRODUCT_COPY_FILES += \ AB_OTA_PARTITIONS += \ vbmeta +# Enable modem logging +ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT))) +PRODUCT_PROPERTY_OVERRIDES += \ + persist.sys.modem.diag.mdlog=true \ + ro.radio.log_loc="/data/vendor/modem_dump" \ + ro.radio.log_prefix="modem_log_" +endif + diff --git a/init.logging.rc b/init.logging.rc index e69de29..2e76037 100644 --- a/init.logging.rc +++ b/init.logging.rc @@ -0,0 +1,2 @@ +on post-fs-data + mkdir /data/vendor/modem_dump 0777 system system From 38a3f91cfd351e9a05be26e1c336bc6d9f9ce1b5 Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Thu, 11 May 2017 14:01:38 -0700 Subject: [PATCH 074/182] wifi: use the WCNSS_qcom_cfg.ini only for taimen. Diabling DBS for taimen while the antenna issue is not fixed. gDualMacFeatureDisable=1 Bug: 38198219 Change-Id: I9a2eb5949ae1f40aae15f0547cd9c7dd874f0615 Signed-off-by: Ecco Park --- WCNSS_qcom_cfg.ini | 596 +++++++++++++++++++++++++++++++++++++++++++++ device.mk | 4 + 2 files changed, 600 insertions(+) create mode 100644 WCNSS_qcom_cfg.ini diff --git a/WCNSS_qcom_cfg.ini b/WCNSS_qcom_cfg.ini new file mode 100644 index 0000000..3136089 --- /dev/null +++ b/WCNSS_qcom_cfg.ini @@ -0,0 +1,596 @@ +# This file allows user to override the factory +# defaults for the WLAN Driver + +############################################# +# STA related general configurations +############################################# +# Assigned MAC Addresses - This will be used until NV items are in place +# Each byte of MAC address is represented in Hex format as XX +Intf0MacAddress=000AF58989FF +Intf1MacAddress=000AF58989FE +Intf2MacAddress=000AF58989FD +Intf3MacAddress=000AF58989FC + +#Channel Bonding +gChannelBondingMode5GHz=1 +gChannelBondingMode24GHz=0 + +#Enable Keep alive with non-zero period value +gStaKeepAlivePeriod=90 + +# Maximum MPDU length (VHT only. Valid values: 0->3895 octets, 1->7991 octets, 2->11454 octets) +gVhtMpduLen=2 + +# 0 for OLPC 1 for CLPC and SCPC +gEnableCloseLoop=1 + +ImplicitQosIsEnabled=0 + +# Enable Tx beamforming in VHT20MHz +# Valid values are 0,1. If commented out, the default value is 0. +# 0=disable, 1=enable +gEnableTxBFin20MHz=1 + +#Enable/Disable SU Tx beamformer support. +gEnableTxSUBeamformer=1 + +# 1=enable tx STBC; 0=disable +gEnableTXSTBC=1 + +# 1=enable STBC; 0=disable STBC +gEnableRXSTBC=1 + +# 1=enable rx LDPC; 0=disable +gEnableRXLDPC=1 + +# Flag to allow STA send AddTspec even when ACM is Off +gAddTSWhenACMIsOff=1 + +# RTS threshold +RTSThreshold=1048576 + +# 802.11d support +g11dSupportEnabled=0 + + +# Phy Mode (auto, b, g, n, etc) +# Valid values are 0-9, with 0 = Auto, 4 = 11n, 9 = 11ac +# 1 = 11abg, 2 = 11b, 3 = 11g, 5 = 11g only, 6 = 11n only +# 7 = 11b only 8 = 11ac only. +gDot11Mode=0 + +# Enable Rx handling options +# Rx_thread=1 RPS=2(default for ROME) NAPI=4(default for ihelium) +rx_mode=4 + +#Enable VHT on 2.4Ghz +gEnableVhtFor24GHzBand=1 + +# Regulatory Setting; 0=STRICT; 1=CUSTOM +gRegulatoryChangeCountry=1 + +# userspace country code setting shld take priority +gCountryCodePriority=1 + +# Enable/Disable LPASS support +# 0 to disable, 1 to enable +gEnableLpassSupport=1 + +# Enable(1)/Disable(0) SIFS burst +gEnableSifsBurst=1 + +# Tx Chain Mask for CCK +gCckChainMaskEnable=1 + +# Tx Chain Mask for 1SS +gTxChainMask1ss=0 + +# TPC power +gSelfGenFrmPwr=3 + +################ NAN feature set start ################### +# Enable or Disable NAN +# 1=Enable (default), 0=Disable +gEnableNanSupport=1 +################ NAN feature set end ##################### + +gIgnorePeerHTopMode=1 +gIgnorePeerErpInfo=1 + +# 802.11n Protection flag +gEnableApProt=1 + +# Fixed Rate +gFixedRate=0 + +# Intra-BSS forward +gDisableIntraBssFwd=0 + +# WMM Enable/Disable +WmmIsEnabled=0 + +# 802.11h support +g11hSupportEnabled=1 + +#Short Guard Interval Enable/disable +gShortGI20Mhz=1 +gShortGI40Mhz=1 + +#Auto Shutdown wlan : Value in Seconds. 0 means disabled. Max 1 day = 86400 sec +gWlanAutoShutdown=0 + +#Preferred band (both or 2.4 only or 5 only) +BandCapability=0 + +gVhtChannelWidth=2 + +# Enable Tx beamforming +gTxBFEnable=1 + +# Set txchainmask and rxchainmask +# These parameters are used only if gEnable2x2 is 0 +# Valid values are 1,2 +# Set gSetTxChainmask1x1=1 or gSetRxChainmask1x1=1 to select chain0. +# Set gSetTxChainmask1x1=2 or gSetRxChainmask1x1=2 to select chain1. +gSetTxChainmask1x1=1 +gSetRxChainmask1x1=1 + +#If set to 0, MCC is not allowed. +gEnableMCCMode=1 + +# MCC to SCC Switch mode: 0-Disable 1-Enable 2-Force SCC if same band +gWlanMccToSccSwitchMode = 0 + +# Maximum Receive AMPDU size (VHT only. Valid values: 0->8k 1->16k 2->32k 3->64k 4->128k) +gVhtAmpduLenExponent=7 + +# Maximum number of concurrent connections +gMaxConcurrentActiveSessions=3 + +# Radar PRI multiplier +gDFSradarMappingPriMultiplier=4 + +# Enable or Disable Multi-user MIMO +# 1=Enable (default), 0=Disable +gEnableMuBformee=1 + +# Enable to check FW hash if secure FW feature is enabled. It's for defconfig +# builds only since it will be ignored in performance/release builds. +gEnableFWHashCheck=1 + +# Enable or Disable MCC Adaptive Scheduler at the FW +# 1=Enable (default), 0=Disable +gEnableMCCAdaptiveScheduler=1 + +# Disable/Enable GreenAP +# 0 to disable, 1 to enable, default: 1 +gEnableGreenAp=0 + +################ Datapath feature set Begin ################ +# Bus bandwidth threshold values in terms of number of packets +gBusBandwidthHighThreshold=2000 +gBusBandwidthMediumThreshold=500 +gBusBandwidthLowThreshold=150 + +# Bus bandwidth compute timeout value in ms +gBusBandwidthComputeInterval=100 + +# VHT Tx/Rx MCS values +# Valid values are 0,1,2. If commented out, the default value is 0. +# 0=MCS0-7, 1=MCS0-8, 2=MCS0-9 +gVhtRxMCS=2 +gVhtTxMCS=2 + +# VHT Tx/Rx MCS values for 2x2 +# Valid values are 0,1,2. If commented out, the default value is 0. +# 0=MCS0-7, 1=MCS0-8, 2=MCS0-9 +gEnable2x2=1 +gVhtRxMCS2x2=2 +gVhtTxMCS2x2=2 + +#IPA config is a bit mask and following are the configurations. +#bit0 IPA Enable +#bit1 IPA PRE Filter enable +#bit2 IPv6 enable +#bit3 IPA Resource Manager (RM) enable +#bit4 IPA Clock scaling enable +#bit5 IPA uC ENABLE +#bit6 IPA uC STA ENABLE +#bit8 IPA Real Time Debugging +gIPAConfig=0x7d +gIPADescSize=800 + +# Enable/Disable RX full reorder offload +gReorderOffloadSupported=1 + +# Enable CE classification +# 1 - enable(default) 0 - disable +gCEClassifyEnable=1 + +# Enable(Tx) fastpath for data traffic. +# 1 - enable(default) 0 - disable +gEnableFastPath=1 + +# This flag enables IP, TCP and UDP checksum offload +# 1 - enable(default) 0 - disable +gEnableIpTcpUdpChecksumOffload=1 + +# Enable TCP Segmentation Offload +# 1 - enable 0 - disable +TSOEnable=1 + +# Enable Large Recieve Offload +# 1 - enable(default) 0 - disable +LROEnable=1 + +# Enable HT MPDU Density +# 4 for 2 micro sec +ght_mpdu_density=4 + +# Enable flow steering to enable multiple CEs for Rx flows. +# Multiple Rx CEs<==>Multiple Rx IRQs<==>probably different CPUs. +# Parallel Rx paths. +# 1 - enable 0 - disable(default) +gEnableFlowSteering=1 + +################ Datapath feature set End ################ + +############################################# +# SCAN related configurations +############################################# +# Enable/Disable Idle Scan +gEnableIdleScan=0 + +#Enable Scan Results Aging based on timer +#Timer value is in seconds +#If Set to 0 it will not enable the feature +gScanAgingTime=0 + +#Enable Scan Results Aging based on number of scans +gScanResultAgeCount=1 + +#Enable thermal mitigation +gThermalMitigationEnable=0 + +#List of Country codes for which 11ac needs to be disabled +#Each country code must be delimited by comma(,) +gListOfNon11acCountryCode=RU,UA,ZA + +#Maximum Channel time in msec +gMaxMediumTime=6000 + +# Scan Timing Parameters +# gPassiveMaxChannelTime=110 +# gPassiveMinChannelTime=60 +gActiveMaxChannelTime=40 +gActiveMinChannelTime=20 + +gPNOScanSupport=1 + +# Perform PNO fast scan this many number of times +gPNOScanTimerRepeatValue=6 + +# PNO slow scan period = gPNOSlowScanMultiplier times PNO fast scan period +# Example: fast scan period is passed from framework (default = 10 sec), then +# PNO slow scan period = 60 sec. +gPNOSlowScanMultiplier=6 + +# Enable or Disable Extended Scan (GScan) +# 1=Enable (default), 0=Disable +gExtScanEnable=1 + +#If set will start with active scan after driver load, otherwise will start with +#passive scan to find out the domain +gEnableBypass11d=1 + +#If set to 0, will not scan DFS channels +gEnableDFSChnlScan=1 + +#Maxium Channel time in msec +gMaxMediumTime = 6000 + +adaptive_dwell_mode_enabled=1 + +hostscan_adaptive_dwell_mode=1 + +adapt_dwell_lpf_weight=80 + +adapt_dwell_wifi_act_threshold=10 + + +############################################# +# Power related configurations +############################################# +# Enable IMPS or not +gEnableImps=1 + +# Enable BMPS or not +gEnableBmps=1 + +# Increase sleep duration (seconds) during IMPS +# 0 implies no periodic wake up from IMPS. Periodic wakeup is +# unnecessary if Idle Scan is disabled. +gImpsModSleepTime=0 + +# UAPSD service interval for VO,VI, BE, BK traffic +InfraUapsdVoSrvIntv=0 +InfraUapsdViSrvIntv=0 +InfraUapsdBeSrvIntv=0 +InfraUapsdBkSrvIntv=0 + +# Enable suspend or not +# 1: Enable standby, 2: Enable Deep sleep, 3: Enable Mcast/Bcast Filter +gEnableSuspend=3 + +#Enable Power Save offload +gEnablePowerSaveOffload=2 + +# Enable Runtime PM Feature. +# Enabling this feature will put target wow and shutdown pcie link +# when inactivity is detected in WLAN Driver. +# This feature is inactive when beaconing interfaces are active with +# clients associated. +# 0 - disable +# 1 - enable +gRuntimePM=1 + +# When gRuntimePM is disabled gRuntimeAutoTime won't take effect. +# The Time is in msec. +# 100 is min, 10000 is max, 500 is default. +gRuntimePMDelay=500 + +#Enable Power saving mechanism Based on Android Framework +#If set to 0 Driver internally control the Power saving mechanism +#If set to 1 Android Framwrok control the Power saving mechanism +isAndroidPsEn=0 + +beaconEarlyTerminationWakeInterval=3 + +#Data Inactivity Timeout when in powersave (in ms) +gDataInactivityTimeout=200 + +# Inactivity time (in ms) to end TX Service Period while in IBSS power save mode +gIbssTxSpEndInactivityTime=10 + +gEnableModulatedDTIM=2 +gMaxLIModulatedDTIM=6 + +############################################# +# Roaming related configurations +############################################# +# CSR Roaming Enable(1) Disable(0) +gRoamingTime=0 + +# ESE Support and fast transition +EseEnabled=1 + +gNeighborLookupThreshold=76 +gNeighborReassocThreshold=81 +gNeighborScanTimerPeriod=200 +gNeighborScanChannelMinTime=20 +gNeighborScanChannelMaxTime=30 +gMaxNeighborReqTries=3 + +# To enable, set gRoamIntraBand=1 (Roaming within band) +# To disable, set gRoamIntraBand=0 (Roaming across band) +gRoamIntraBand=0 + +# Legacy (non-ESE, non-802.11r) Fast Roaming Support +# To enable, set FastRoamEnabled=1 +# To disable, set FastRoamEnabled=0 +FastRoamEnabled=1 + +#Check if the AP to which we are roaming is better than current AP in terms of RSSI. +#Checking is disabled if set to Zero.Otherwise it will use this value as to how better +#the RSSI of the new/roamable AP should be for roaming +RoamRssiDiff=3 + +# If the RSSI of any available candidate is better than currently associated +# AP by at least gImmediateRoamRssiDiff, then being to roam immediately (without +# registering for reassoc threshold). +# NOTE: Value of 0 means that we would register for reassoc threshold. +gImmediateRoamRssiDiff=10 + +# 802.11K support +gRrmEnable=1 +gRrmOperChanMax=8 +gRrmNonOperChanMax=8 + +gEnableFastRoamInConcurrency=1 + +# Enable/Disable Roaming Offload Support (a.k.a Key Management Offload) +# 0 to disable, 1 to enable +gRoamOffloadEnabled=1 + +gAllowDFSChannelRoam=1 + +############################################# +# Offload related configurations +############################################# +# Beacon filtering frequency (unit in beacon intervals) +gNthBeaconFilter=50 + +# Enable WAPI or not +# WAPIIsEnabled=0 +# Flags to filter Mcast abd Bcast RX packets. +# Value 0: No filtering, 1: Filter all Multicast. +# 2: Filter all Broadcast. 3: Filter all Mcast abd Bcast +McastBcastFilter=3 + +#Flag to enable HostARPOffload feature or not +hostArpOffload=1 + +#Flag to enable TCPChkSumOffld feature or not +gEnableTCPChkSumOffld=1 + +#Flag to enable HostNSOffload feature or not +hostNSOffload=1 + +#Flag to enable IPChkSumOffld feature or not +gEnableIPChecksumOffload=1 + +# controlling the following offload patterns +# through ini parameter. Default value is 1 +# to disable set it to zero. ssdp = 0 +# Setup multicast pattern for mDNS 224.0.0.251, +# SSDP 239.255.255.250 and LLMNR 224.0.0.252 +ssdp = 0 + +#Enable MC address filtering offload +gMCAddrListEnable=1 + +# Enable Active mode offload +gActiveModeOffload=1 + +# Enable Active mode offload +gEnableActiveModeOffload=1 + +# WOW Enable/Disable. +# 0 - Disable both magic pattern match and pattern byte match. +# 1 - Enable magic pattern match on all interfaces. +# 2 - Enable pattern byte match on all interfaces. +# 3 - Enable both magic patter and pattern byte match on all interfaces. +# Default value of gEnableWoW is 3. +# gEnableWoW=0 + + +############################################# +# Logging related configurations +############################################# +gEnableLogp=1 + +gEnableSelfRecovery=1 + +#Enable firmware log +gEnablefwlog=1 +# Additional firmware log levels +gFwDebugLogLevel=4 +gFwDebugModuleLoglevel=1,0,2,0,4,0,5,0,6,0,7,4,8,0,9,0,11,0,13,0,17,0,18,0,19,0,27,0,29,0,31,0,35,0,36,0,38,0 + +#Enable firmware uart print +gEnablefwprint=0 + +############################################# +# TDLS related configurations +############################################# +# Enable support for TDLS +# 0 - disable +# 1 - enable +gEnableTDLSSupport=1 + +# Enable support for Implicit Trigger of TDLS. That is, wlan driver shall +# initiate TDLS Discovery towards a peer whenever setup criteria (throughput +# and RSSI) is met and then will initiate teardown when teardown criteria +# (idle packet count and RSSI) is met. +# 0 - disable +# 1 - enable +gEnableTDLSImplicitTrigger=1 + +# Enable TDLS External Control. That is, user space application has to +# first configure a peer MAC in wlan driver towards which TDLS is desired. +# Device will establish TDLS only towards those configured peers whenever +# TDLS criteria (throughput and RSSI threshold) is met and teardown TDLS +# when teardown criteria (idle packet count and RSSI) is met. However, +# device will accept TDLS connection if it is initiated from any other peer, +# even if that peer is not configured. +# 0 - disable +# 1 - enable +# For TDLS External Control, Implicit Trigger must also be enabled. +gTDLSExternalControl=1 + +# Enable support for TDLS off-channel operation +# 0 - disable +# 1 - enable +# TDLS off-channel operation will be invoked when there is only one +# TDLS connection. +gEnableTDLSOffChannel=1 + +gEnableTDLSScan=1 +gTDLSTxPacketThreshold=10 +gTDLSIdlePacketThreshold=1 + +############################################# +# P2P related configurations +############################################# +#P2P Listen offload +gEnableP2pListenOffload=1 + +#Enable or Disable p2p device address administered +isP2pDeviceAddrAdministrated=0 + +#Say gGoKeepAlivePeriod(5 seconds) and gGoLinkMonitorPeriod(10 seconds). +#For every 10 seconds DUT send Qos Null frame(i.e., Keep Alive frame if link is idle for last 10 seconds.) +#For both active and power save clients. + +#Power save clients: DUT set TIM bit from 10th second onwards and till client honors TIM bit. +#If doesn't honor for 5 seconds then DUT remove client. + +#Active clients: DUT send Qos Null frame for 10th seconds onwards if it is not success still we try on +#11th second if not tries on 12th and so on till 15th second. Hence before disconnection DUT will send 5 NULL frames. +#Hence in any case DUT will detect client got removed in (10+5) seconds. i.e., (gGoKeepAlivePeriod + gGoLinkMonitorPeriod).. + +#gGoLinkMonitorPeriod/ gApLinkMonitorPeriod is period where link is idle and it is period +#where we send NULL frame. + +#gApLinkMonitorPeriod = 10 +#gGoLinkMonitorPeriod = 10 + +#gGoKeepAlivePeriod/gApKeepAlivePeriod is time to spend to check whether frame are succeed to send or not. +#Hence total effective detection time is gGoLinkMonitorPeriod+ gGoKeepAlivePeriod/gApLinkMonitorPeriod+ gApKeepAlivePeriod. +gGoKeepAlivePeriod = 20 +gApKeepAlivePeriod = 20 + +############################################# +# SAP related configurations +############################################# +#Enable OBSS protection +gEnableApOBSSProt=1 + +#Enable/Disable UAPSD for SoftAP +gEnableApUapsd=1 + +# SAP auto channel selection configuration +# 0 = disable auto channel selection +# 1 = enable auto channel selection, channel provided by supplicant will be ignored +gApAutoChannelSelection=0 + +#SOFTAP Channel Range selection +gAPChannelSelectStartChannel=1 +gAPChannelSelectEndChannel=11 + +# SAP Country code +# Default Country Code is 2 bytes, 3rd byte is optional indoor or out door. +# Example +# US Indoor, USI +# Korea Outdoor, KRO +# Japan without optional byte, JP +# France without optional byte, FR +#gAPCntryCode=USI + +# DFS Master Capability +gEnableDFSMasterCap=1 + +# Disable 11AC for hotspot +gSapForce11NFor11AC=1 + +#Auto Shutdown Value in seconds. A value of 0 means Auto shutoff is disabled +gAPAutoShutOff=0 + +# Remove Overlap channel restriction +gEnableOverLapCh=0 + +# Enable/Disable channel avoidance for SAP in SCC scenario +# 0 - disable +# 1 - enable +gSapSccChanAvoidance=0 + +#Enable/Disable Tx beamformee in SAP mode +gEnableTxBFeeSAP=1 + +#Disable DBS +gDualMacFeatureDisable=1 + + +END + +# Note: Configuration parser would not read anything past the END marker diff --git a/device.mk b/device.mk index d7bf7b3..45bddcf 100644 --- a/device.mk +++ b/device.mk @@ -58,6 +58,10 @@ PRODUCT_COPY_FILES += \ device/google/taimen/mixer_paths_tavil.xml:system/etc/mixer_paths_tavil_taimen.xml \ device/google/taimen/audio_platform_info_tavil.xml:system/etc/audio_platform_info_tavil_taimen.xml +# Wifi configuration file +PRODUCT_COPY_FILES += \ + device/google/taimen/WCNSS_qcom_cfg.ini:system/etc/firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini + # verity AB_OTA_PARTITIONS += \ vbmeta From 4232986daf6b36aaa4df1e8d4c339e2f23982a0e Mon Sep 17 00:00:00 2001 From: Isaac Chen Date: Wed, 10 May 2017 19:03:01 +0800 Subject: [PATCH 075/182] Move configuration files to vendor for build split The following configuration files need to reside in vendor partition to work with generic AOSP system image. Move uevent.*.rc to /vendor Move fstab.* to /vendor/etc Move init.*.rc and init.wahoo.usb.rc to /vendor/etc/init. Also the following two make file variables need to be set: - BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true - PRODUCT_ENFORCE_RRO_TARGETS := framework-res Comment out "import init.wahoo.usb.sh" in init.taimen.usb.rc since /init will load all rc files under /vendor/etc/init. Bug: 37927875 Test: These files are under /vendor instead of / or /system, path in init.taimen.usb.rc is changed to vendor accordingly. Change-Id: I79e41aeb13d284816ab7a2b4bde3ce8375863160 --- CleanSpec.mk | 4 ++++ device.mk | 6 +++--- init.taimen.usb.rc | 7 ++++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/CleanSpec.mk b/CleanSpec.mk index d7de969..6ae050f 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -48,3 +48,7 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor) $(call add-clean-step, rm -rf $(OUT_DIR)/target/product/taimen/vendor/etc/sensors/sensor_def_taimen.conf) + +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc/init/init-$(PRODUCT_HARDWARE).rc) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/root/init.$(PRODUCT_HARDWARE).usb.rc) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/root/init.$(PRODUCT_HARDWARE).logging.rc) diff --git a/device.mk b/device.mk index 45bddcf..5e083a1 100644 --- a/device.mk +++ b/device.mk @@ -31,8 +31,8 @@ DEVICE_PACKAGE_OVERLAYS += device/google/taimen/overlay include device/google/wahoo/device.mk PRODUCT_COPY_FILES += \ - device/google/taimen/init-taimen.rc:system/etc/init/init-taimen.rc \ - device/google/taimen/init.taimen.usb.rc:root/init.taimen.usb.rc + device/google/taimen/init-taimen.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init-$(PRODUCT_HARDWARE).rc \ + device/google/taimen/init.taimen.usb.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.$(PRODUCT_HARDWARE).usb.rc PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=560 \ @@ -43,7 +43,7 @@ PRODUCT_COPY_FILES += \ # Logging PRODUCT_COPY_FILES += \ - device/google/taimen/init.logging.rc:root/init.$(PRODUCT_HARDWARE).logging.rc + device/google/taimen/init.logging.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.$(PRODUCT_HARDWARE).logging.rc PRODUCT_COPY_FILES += \ diff --git a/init.taimen.usb.rc b/init.taimen.usb.rc index b01f057..1c5bb86 100644 --- a/init.taimen.usb.rc +++ b/init.taimen.usb.rc @@ -1 +1,6 @@ -import init.wahoo.usb.rc +# +# The following import has been moved to /vendor/etc/init and will be +# loaded by /init automatically, so is commented out to reduce the +# noise in the log (and avoid redundancy). +# +#import init.wahoo.usb.rc From 2b373737de893bbb65b58b40b5c0df1655117407 Mon Sep 17 00:00:00 2001 From: Vineeta Srivastava Date: Mon, 15 May 2017 11:43:40 -0700 Subject: [PATCH 076/182] Revert "Add rounded corners for taimen" Bug: 38306660 Test: Loaded device policy successfully This reverts commit 257138431696bd9b8a076d6a19c9e326e0211311. Change-Id: I3283c6f5d654ba0705a32392c540d68f5f5df33c --- .../packages/SystemUI/res/values/dimens.xml | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml diff --git a/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml b/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml deleted file mode 100644 index daa53be..0000000 --- a/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - 30dp - 8dp - From 02237ba80910b9eea2a2791a04b463fd6fccf6fa Mon Sep 17 00:00:00 2001 From: Ranjith Kagathi Ananda Date: Thu, 11 May 2017 17:27:01 -0700 Subject: [PATCH 077/182] Add IMU calibration related properties and copyto - Add CAD calibration file - Add persist properties pointing to CAD and factory calibration xml files Test: Tested on taimen BUG=38234792 Change-Id: Ie8d88c6e1d0127d70868f004d216a9c7272aeec5 --- calibration_cad.xml | 58 +++++++++++++++++++++++++++++++++++++++++++++ device.mk | 8 +++++++ 2 files changed, 66 insertions(+) create mode 100644 calibration_cad.xml diff --git a/calibration_cad.xml b/calibration_cad.xml new file mode 100644 index 0000000..5a40d55 --- /dev/null +++ b/calibration_cad.xml @@ -0,0 +1,58 @@ + +0 + + + 640 + 480 + [512.4374; 512.4374; 320.0; 240.0; 0.0; 0.0; 0.0] + + + + + + 640 + 480 + [512.4374; 512.4374; 320.0; 240.0; 0.0; 0.0; 0.0] + + + + + + 640 + 480 + [512.4374; 512.4374; 320.0; 240.0; 0.0; 0.0; 0.0] + + + + + [0.0; 0.0; 0.0; 0.0; 0.0; 0.0] + [1; 1; 1; 0; 0; 0; 1; 1; 1; 0; 0; 0; 0; 0; 0; 1] + 5.3088444e-4 + 1.4125375e-4 + 0.004883649 + 1.2589254e-2 + + + [1, 0, 0, -0.0394227; 0, -1, 0, 0.0277431; 0, 0, -1, -0.00758045] + + + [1, 0, 0, -0.0394227; 0, -1, 0, 0.0277431; 0, 0, -1, -0.00758045] + + + [1, 0, 0, -0.0394227; 0, -1, 0, 0.0277431; 0, 0, -1, -0.00758045] + + + [0, -1, 0, 0; 1, 0, 0, 0; 0, 0, 1, 0] + + + [0, 1, 0, 0; -1, 0, 0, 0; 0, 0, 1, 0] + + + [0, 1, 0, 0; -1, 0, 0, 0; 0, 0, 1, 0] + + + 37.389444 + 122.0819 + 32 + + diff --git a/device.mk b/device.mk index 5e083a1..eb1b064 100644 --- a/device.mk +++ b/device.mk @@ -74,3 +74,11 @@ PRODUCT_PROPERTY_OVERRIDES += \ ro.radio.log_prefix="modem_log_" endif +#IMU calibration +PRODUCT_COPY_FILES += \ + device/google/taimen/calibration_cad.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/calibration_cad.xml + +#IMU calibration +PRODUCT_PROPERTY_OVERRIDES += \ + persist.config.calibration_cad=/vendor/etc/sensors/calibration_cad.xml \ + persist.config.calibration_fac=/persist/sensors/calibration/calibration.xml From 9410fc7d38c7b1b21f0d90b090861c27e7506dd0 Mon Sep 17 00:00:00 2001 From: Subhani Shaik Date: Mon, 15 May 2017 16:30:01 -0700 Subject: [PATCH 078/182] qcacld-3.0: Enable scan aging time ini parameter Stale scan entries are updated to NL because scan results are not aged out in PNO complete handler. Fix is to enable scan aging time ini. Bug: 38028945 Change-Id: I4084ddf20dae7d03ac1c774f0c1e595bb922270c --- WCNSS_qcom_cfg.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WCNSS_qcom_cfg.ini b/WCNSS_qcom_cfg.ini index 3136089..784fc30 100644 --- a/WCNSS_qcom_cfg.ini +++ b/WCNSS_qcom_cfg.ini @@ -244,7 +244,7 @@ gEnableIdleScan=0 #Enable Scan Results Aging based on timer #Timer value is in seconds #If Set to 0 it will not enable the feature -gScanAgingTime=0 +gScanAgingTime=30 #Enable Scan Results Aging based on number of scans gScanResultAgeCount=1 From f1cbfff0c6b49a30be7c933de184fec49d901f1a Mon Sep 17 00:00:00 2001 From: David Lin Date: Thu, 11 May 2017 14:31:04 -0700 Subject: [PATCH 079/182] audio: hifi profile Add controls for hifi profile Bug: 37304195 Change-Id: I251475974baf1f09422e17f90e1b148219b5e172 Signed-off-by: David Lin --- mixer_paths_tavil.xml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index e9415b1..a7c8052 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -780,14 +780,22 @@ - + - + + + + + + + + + From 5af1d67c61f6479892130fb430154b7693c1ec5c Mon Sep 17 00:00:00 2001 From: David Lin Date: Thu, 11 May 2017 14:38:26 -0700 Subject: [PATCH 080/182] audio: Introduce app_type section in audio_platform_info add & populate new section to define audio app_types Test: phone call, playback, capture with and without USB headset Bug: 37304195 Change-Id: I39480f3dfeac9c52682aaff65eb330f98fd1c437 Signed-off-by: David Lin --- audio_platform_info_tavil.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml index a4dbfbe..1e4ceb4 100644 --- a/audio_platform_info_tavil.xml +++ b/audio_platform_info_tavil.xml @@ -65,6 +65,11 @@ + + + + + From 23385a06509b2121c5d7033e21022dadd548efb4 Mon Sep 17 00:00:00 2001 From: Joel Fernandes Date: Tue, 16 May 2017 14:36:11 -0700 Subject: [PATCH 081/182] taimen: Add LISA related script path for storing LISA scripts Bug: 38046504 Change-Id: Ie33dd55be55c898710ac8fdb60651e3960a690de Signed-off-by: Joel Fernandes --- BoardConfig.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/BoardConfig.mk b/BoardConfig.mk index f8246ef..8d0f1eb 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -40,3 +40,5 @@ endif # Testing related defines BOARD_PERFSETUP_SCRIPT := platform_testing/scripts/perf-setup/wahoo-setup.sh + +BOARD_LISA_TARGET_SCRIPTS := device/google/wahoo/lisa/ From c555bae9d2f296423ac558f6effae23dc2ede919 Mon Sep 17 00:00:00 2001 From: Andrew Lehmer Date: Tue, 16 May 2017 15:42:22 -0700 Subject: [PATCH 082/182] Increase low-persistence mode brightness Bug: 38245535 Test: loaded on taimen and ran DreamBench Change-Id: I67f15668336eaacb47f95782ba5e0f62adceb073 --- BoardConfig.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BoardConfig.mk b/BoardConfig.mk index 8d0f1eb..3c1b2d5 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -15,7 +15,7 @@ # TARGET_BOOTLOADER_BOARD_NAME := taimen -DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x00000056 +DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x000000ff BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200,n8 earlycon=msm_serial_dm,0xc1b0000 From ffbe89e90ec0b08c4711845dbaf6f59d009d5995 Mon Sep 17 00:00:00 2001 From: Andrew Lehmer Date: Wed, 17 May 2017 16:18:47 -0700 Subject: [PATCH 083/182] Fix ALS/prox calibration at init if needed Bug: 38066490 Test: loaded on taimen and verified behavior and registry Change-Id: I08c27bd3f62dcad90854815e70be49fb21294db9 --- BoardConfig.mk | 1 + device.mk | 4 ++++ init-taimen.rc | 10 ++++++++++ init.resetcalib.sh | 19 +++++++++++++++++++ sepolicy/file_contexts | 2 ++ sepolicy/init-resetcalib-sh.te | 15 +++++++++++++++ 6 files changed, 51 insertions(+) create mode 100755 init.resetcalib.sh create mode 100644 sepolicy/file_contexts create mode 100644 sepolicy/init-resetcalib-sh.te diff --git a/BoardConfig.mk b/BoardConfig.mk index 3c1b2d5..7b9ff9f 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -21,6 +21,7 @@ BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200,n8 earlycon=msm_serial_dm,0xc1b00 include device/google/wahoo/BoardConfig.mk +BOARD_SEPOLICY_DIRS += device/google/taimen/sepolicy BOARD_BOOTIMAGE_PARTITION_SIZE := 41943040 BOARD_AVB_ENABLE := true diff --git a/device.mk b/device.mk index eb1b064..546bd62 100644 --- a/device.mk +++ b/device.mk @@ -82,3 +82,7 @@ PRODUCT_COPY_FILES += \ PRODUCT_PROPERTY_OVERRIDES += \ persist.config.calibration_cad=/vendor/etc/sensors/calibration_cad.xml \ persist.config.calibration_fac=/persist/sensors/calibration/calibration.xml + +# Temporary ALS/prox calibration reset +PRODUCT_COPY_FILES += \ + device/google/taimen/init.resetcalib.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.resetcalib.sh diff --git a/init-taimen.rc b/init-taimen.rc index aa5c7da..0e5d45a 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -2,6 +2,9 @@ on init && property:ro.boot.slot=* # will remove this once slot_suffix is deprecated setprop ro.boot.slot_suffix _${ro.boot.slot} +on late-fs && property:ro.boot.revision=rev_a + start resetcalib_sh + on post-fs-data # QC Sensors mkdir /persist/sensors @@ -16,3 +19,10 @@ on property:init.svc.fps_hal=running && property:ro.boot.revision=rev_0 on property:sys.all.modules.ready=1 # Update touch firmware if required write /sys/devices/virtual/input/ftm4_touch/check_fw 1 + +service resetcalib_sh /vendor/bin/init.resetcalib.sh + class main + user root + group root system + disabled + oneshot diff --git a/init.resetcalib.sh b/init.resetcalib.sh new file mode 100755 index 0000000..3a6623b --- /dev/null +++ b/init.resetcalib.sh @@ -0,0 +1,19 @@ +#!/system/bin/sh +ALS_FACTOR=$(od -An -t d2 -j 0x114 -N 2 /persist/sensors/sns.reg | xargs echo) +PROX_THRESHOLD=$(od -An -t d2 -j 0x104 -N 2 /persist/sensors/sns.reg | xargs echo) +# Set ALS calibration factor to default if needed +if [[ $ALS_FACTOR = "1200" ]]; then + cp /persist/sensors/sns.reg /persist/sensors/sns.reg.orig + xxd /persist/sensors/sns.reg.orig | sed 's/\(00000110: .... ....\) ..../\1 9411/' | xxd -r > /persist/sensors/sns.reg + RECALIBRATED=1 +fi +# Overwrite prox threshold if needed +if [[ $PROX_THRESHOLD = "6656" ]]; then + cp /persist/sensors/sns.reg /persist/sensors/sns.reg.orig + xxd /persist/sensors/sns.reg.orig | sed 's/\(00000100: .... ....\) ..../\1 0002/' | xxd -r > /persist/sensors/sns.reg + RECALIBRATED=1 +fi +if [[ -n $RECALIBRATED ]]; then + echo related > /sys/bus/msm_subsys/devices/subsys5/restart_level + echo restart > /sys/kernel/debug/msm_subsys/slpi +fi diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts new file mode 100644 index 0000000..d559528 --- /dev/null +++ b/sepolicy/file_contexts @@ -0,0 +1,2 @@ +# files in /vendor +/vendor/bin/init\.resetcalib\.sh u:object_r:init-resetcalib-sh_exec:s0 diff --git a/sepolicy/init-resetcalib-sh.te b/sepolicy/init-resetcalib-sh.te new file mode 100644 index 0000000..29296d7 --- /dev/null +++ b/sepolicy/init-resetcalib-sh.te @@ -0,0 +1,15 @@ +type init-resetcalib-sh, domain, vendor_executes_system_violators; +type init-resetcalib-sh_exec, exec_type, vendor_file_type, file_type; + +init_daemon_domain(init-resetcalib-sh) + +allow init-resetcalib-sh shell_exec:file rx_file_perms; +allow init-resetcalib-sh persist_file:dir search; +allow init-resetcalib-sh persist_sensors_file:dir search; +allow init-resetcalib-sh persist_sensors_file:file { getattr open read write }; +allow init-resetcalib-sh self:capability dac_override; +allow init-resetcalib-sh toolbox_exec:file { execute execute_no_trans getattr open read }; +allow init-resetcalib-sh sysfs_msm_subsys:dir search; +allow init-resetcalib-sh sysfs_msm_subsys:file { open write }; +allow init-resetcalib-sh sysfs_msm_subsys:lnk_file read; +allow init-resetcalib-sh system_data_file:dir getattr; From 73de253fab0e2601831b047aa5a8ac7e735a08de Mon Sep 17 00:00:00 2001 From: SzuWei Lin Date: Thu, 18 May 2017 11:15:50 +0800 Subject: [PATCH 084/182] libeffects: move all libraries to vendor Bug: 37490685 Test: equalizer works in google play music Change-Id: I8bb4b9d1678d4811344b4379d23f6901beeccd14 --- audio_effects.conf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/audio_effects.conf b/audio_effects.conf index ea6c1fb..32a4082 100644 --- a/audio_effects.conf +++ b/audio_effects.conf @@ -7,25 +7,25 @@ # } libraries { bundle { - path /system/lib/soundfx/libbundlewrapper.so + path /vendor/lib/soundfx/libbundlewrapper.so } reverb { - path /system/lib/soundfx/libreverbwrapper.so + path /vendor/lib/soundfx/libreverbwrapper.so } visualizer_sw { - path /system/lib/soundfx/libvisualizer.so + path /vendor/lib/soundfx/libvisualizer.so } visualizer_hw { path /vendor/lib/soundfx/libqcomvisualizer.so } downmix { - path /system/lib/soundfx/libdownmix.so + path /vendor/lib/soundfx/libdownmix.so } loudness_enhancer { - path /system/lib/soundfx/libldnhncr.so + path /vendor/lib/soundfx/libldnhncr.so } proxy { - path /system/lib/soundfx/libeffectproxy.so + path /vendor/lib/soundfx/libeffectproxy.so } offload_bundle { path /vendor/lib/soundfx/libqcompostprocbundle.so From ff5370caae431c343d4c70c69e8b398a1ebd9e5f Mon Sep 17 00:00:00 2001 From: Nick Desaulniers Date: Thu, 18 May 2017 14:44:33 -0700 Subject: [PATCH 085/182] taimen: include correct kernel modules Based on whether the lunch target is set to taimen, taimen_clang, or taimen_gcc. Bug: 32455818 Change-Id: I0299aa01649ca3fa5ebf050364da7f15a7b240da --- BoardConfig.mk | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/BoardConfig.mk b/BoardConfig.mk index 3c1b2d5..f32e2b3 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -24,16 +24,23 @@ include device/google/wahoo/BoardConfig.mk BOARD_BOOTIMAGE_PARTITION_SIZE := 41943040 BOARD_AVB_ENABLE := true -ifeq (,$(filter taimen_clang, $(TARGET_PRODUCT))) -BOARD_VENDOR_KERNEL_MODULES += \ - device/google/wahoo-kernel/touch_core_base.ko \ - device/google/wahoo-kernel/ftm4.ko \ - device/google/wahoo-kernel/sw49408.ko -else +ifeq (,$(filter-out taimen_clang, $(TARGET_PRODUCT))) +# if TARGET_PRODUCT == taimen_clang BOARD_VENDOR_KERNEL_MODULES += \ device/google/wahoo-kernel/clang/touch_core_base.ko \ device/google/wahoo-kernel/clang/ftm4.ko \ device/google/wahoo-kernel/clang/sw49408.ko +else ifeq (,$(filter-out taimen_gcc, $(TARGET_PRODUCT))) +BOARD_VENDOR_KERNEL_MODULES += \ +# if TARGET_PRODUCT == taimen_gcc + device/google/wahoo-kernel/gcc/touch_core_base.ko \ + device/google/wahoo-kernel/gcc/ftm4.ko \ + device/google/wahoo-kernel/gcc/sw49408.ko +else +BOARD_VENDOR_KERNEL_MODULES += \ + device/google/wahoo-kernel/touch_core_base.ko \ + device/google/wahoo-kernel/ftm4.ko \ + device/google/wahoo-kernel/sw49408.ko endif -include vendor/google_devices/taimen/proprietary/BoardConfigVendor.mk From bb0bb1c62a0157461d92235563f1399ae6783391 Mon Sep 17 00:00:00 2001 From: Yueyao Zhu Date: Thu, 18 May 2017 14:11:22 -0700 Subject: [PATCH 086/182] Ensure usb related .rc is parsed in a defined order Loading process (e.g. taimen): - rootdir/init.rc |- /vendor/etc/init/hw/init.taimen.rc |- /vendor/etc/init/hw/init.taimen.usb.rc |- /vendor/etc/init/hw/init.wahoo.usb.rc This CL moves the init.taimen.usb.rc to /vendor/etc/init/hw, and imports init.wahoo.usb.rc from init.taimen.usb.rc. Test: Build with related CLs and USB File Transfer works on taimen Bug: 38301110 Change-Id: I00ba96c1ebb5c17dfd3a8ca59024c2f6b81ef409 Signed-off-by: Yueyao Zhu --- device.mk | 2 +- init.taimen.usb.rc | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/device.mk b/device.mk index eb1b064..071dd77 100644 --- a/device.mk +++ b/device.mk @@ -32,7 +32,7 @@ include device/google/wahoo/device.mk PRODUCT_COPY_FILES += \ device/google/taimen/init-taimen.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init-$(PRODUCT_HARDWARE).rc \ - device/google/taimen/init.taimen.usb.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.$(PRODUCT_HARDWARE).usb.rc + device/google/taimen/init.taimen.usb.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.$(PRODUCT_HARDWARE).usb.rc PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=560 \ diff --git a/init.taimen.usb.rc b/init.taimen.usb.rc index 1c5bb86..0d7d2ef 100644 --- a/init.taimen.usb.rc +++ b/init.taimen.usb.rc @@ -1,6 +1 @@ -# -# The following import has been moved to /vendor/etc/init and will be -# loaded by /init automatically, so is commented out to reduce the -# noise in the log (and avoid redundancy). -# -#import init.wahoo.usb.rc +import /vendor/etc/init/hw/init.wahoo.usb.rc From e04fdcf53aad06fe55732e9c6d2f76811de5365c Mon Sep 17 00:00:00 2001 From: Andrew Lehmer Date: Fri, 19 May 2017 08:50:13 -0700 Subject: [PATCH 087/182] Overwrite EVT1 ALS/prox registry after boot Bug: 38066490 Test: loaded on Taimen and checked registry Change-Id: I30e50e7feba183ad5d4cbaa22fd78972c3fec61e --- init-taimen.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init-taimen.rc b/init-taimen.rc index 0e5d45a..53024bd 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -2,7 +2,7 @@ on init && property:ro.boot.slot=* # will remove this once slot_suffix is deprecated setprop ro.boot.slot_suffix _${ro.boot.slot} -on late-fs && property:ro.boot.revision=rev_a +on property:ro.boot.revision=rev_a start resetcalib_sh on post-fs-data From c6ad038b870f8619d11dd2f96968bacac9605e10 Mon Sep 17 00:00:00 2001 From: Andrew Lehmer Date: Mon, 22 May 2017 12:48:38 -0700 Subject: [PATCH 088/182] Revert ALS/prox recalibration init script Bug: 38377320 Test: loaded on taimen Change-Id: Ifce25901117afe295055074863ae3993651e27db --- BoardConfig.mk | 1 - device.mk | 4 ---- init-taimen.rc | 10 ---------- init.resetcalib.sh | 19 ------------------- sepolicy/file_contexts | 2 -- sepolicy/init-resetcalib-sh.te | 15 --------------- 6 files changed, 51 deletions(-) delete mode 100755 init.resetcalib.sh delete mode 100644 sepolicy/file_contexts delete mode 100644 sepolicy/init-resetcalib-sh.te diff --git a/BoardConfig.mk b/BoardConfig.mk index 8910719..f32e2b3 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -21,7 +21,6 @@ BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200,n8 earlycon=msm_serial_dm,0xc1b00 include device/google/wahoo/BoardConfig.mk -BOARD_SEPOLICY_DIRS += device/google/taimen/sepolicy BOARD_BOOTIMAGE_PARTITION_SIZE := 41943040 BOARD_AVB_ENABLE := true diff --git a/device.mk b/device.mk index ecdd254..071dd77 100644 --- a/device.mk +++ b/device.mk @@ -82,7 +82,3 @@ PRODUCT_COPY_FILES += \ PRODUCT_PROPERTY_OVERRIDES += \ persist.config.calibration_cad=/vendor/etc/sensors/calibration_cad.xml \ persist.config.calibration_fac=/persist/sensors/calibration/calibration.xml - -# Temporary ALS/prox calibration reset -PRODUCT_COPY_FILES += \ - device/google/taimen/init.resetcalib.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.resetcalib.sh diff --git a/init-taimen.rc b/init-taimen.rc index 53024bd..aa5c7da 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -2,9 +2,6 @@ on init && property:ro.boot.slot=* # will remove this once slot_suffix is deprecated setprop ro.boot.slot_suffix _${ro.boot.slot} -on property:ro.boot.revision=rev_a - start resetcalib_sh - on post-fs-data # QC Sensors mkdir /persist/sensors @@ -19,10 +16,3 @@ on property:init.svc.fps_hal=running && property:ro.boot.revision=rev_0 on property:sys.all.modules.ready=1 # Update touch firmware if required write /sys/devices/virtual/input/ftm4_touch/check_fw 1 - -service resetcalib_sh /vendor/bin/init.resetcalib.sh - class main - user root - group root system - disabled - oneshot diff --git a/init.resetcalib.sh b/init.resetcalib.sh deleted file mode 100755 index 3a6623b..0000000 --- a/init.resetcalib.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/system/bin/sh -ALS_FACTOR=$(od -An -t d2 -j 0x114 -N 2 /persist/sensors/sns.reg | xargs echo) -PROX_THRESHOLD=$(od -An -t d2 -j 0x104 -N 2 /persist/sensors/sns.reg | xargs echo) -# Set ALS calibration factor to default if needed -if [[ $ALS_FACTOR = "1200" ]]; then - cp /persist/sensors/sns.reg /persist/sensors/sns.reg.orig - xxd /persist/sensors/sns.reg.orig | sed 's/\(00000110: .... ....\) ..../\1 9411/' | xxd -r > /persist/sensors/sns.reg - RECALIBRATED=1 -fi -# Overwrite prox threshold if needed -if [[ $PROX_THRESHOLD = "6656" ]]; then - cp /persist/sensors/sns.reg /persist/sensors/sns.reg.orig - xxd /persist/sensors/sns.reg.orig | sed 's/\(00000100: .... ....\) ..../\1 0002/' | xxd -r > /persist/sensors/sns.reg - RECALIBRATED=1 -fi -if [[ -n $RECALIBRATED ]]; then - echo related > /sys/bus/msm_subsys/devices/subsys5/restart_level - echo restart > /sys/kernel/debug/msm_subsys/slpi -fi diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts deleted file mode 100644 index d559528..0000000 --- a/sepolicy/file_contexts +++ /dev/null @@ -1,2 +0,0 @@ -# files in /vendor -/vendor/bin/init\.resetcalib\.sh u:object_r:init-resetcalib-sh_exec:s0 diff --git a/sepolicy/init-resetcalib-sh.te b/sepolicy/init-resetcalib-sh.te deleted file mode 100644 index 29296d7..0000000 --- a/sepolicy/init-resetcalib-sh.te +++ /dev/null @@ -1,15 +0,0 @@ -type init-resetcalib-sh, domain, vendor_executes_system_violators; -type init-resetcalib-sh_exec, exec_type, vendor_file_type, file_type; - -init_daemon_domain(init-resetcalib-sh) - -allow init-resetcalib-sh shell_exec:file rx_file_perms; -allow init-resetcalib-sh persist_file:dir search; -allow init-resetcalib-sh persist_sensors_file:dir search; -allow init-resetcalib-sh persist_sensors_file:file { getattr open read write }; -allow init-resetcalib-sh self:capability dac_override; -allow init-resetcalib-sh toolbox_exec:file { execute execute_no_trans getattr open read }; -allow init-resetcalib-sh sysfs_msm_subsys:dir search; -allow init-resetcalib-sh sysfs_msm_subsys:file { open write }; -allow init-resetcalib-sh sysfs_msm_subsys:lnk_file read; -allow init-resetcalib-sh system_data_file:dir getattr; From d1c7f2edd70df7da9f8af592ee329bda2952721c Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Mon, 22 May 2017 10:09:59 -0700 Subject: [PATCH 089/182] Wifi: move the WCNSS_qcom_cfg.ini to /vendor partition Bug: 38242491 Change-Id: I1526643ca2532d75133f258a3505c2a8925a3db4 Signed-off-by: Ecco Park --- device.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device.mk b/device.mk index ecdd254..ac8d521 100644 --- a/device.mk +++ b/device.mk @@ -60,7 +60,7 @@ PRODUCT_COPY_FILES += \ # Wifi configuration file PRODUCT_COPY_FILES += \ - device/google/taimen/WCNSS_qcom_cfg.ini:system/etc/firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini + device/google/taimen/WCNSS_qcom_cfg.ini:$(TARGET_COPY_OUT_VENDOR)/firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini # verity AB_OTA_PARTITIONS += \ From 32961d2b1050877c9dc7da6b62c916415dbcece7 Mon Sep 17 00:00:00 2001 From: Nick Desaulniers Date: Mon, 22 May 2017 15:00:54 -0700 Subject: [PATCH 090/182] taimen: fix taimen_gcc builds A comment inbetween a line continuation stops the line continuation, producing invalid syntax. Change-Id: Icfcc30f14f3a5c49c4a3ede9ed872e5aa668ffe8 --- BoardConfig.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BoardConfig.mk b/BoardConfig.mk index 8910719..bb6c8c4 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -32,8 +32,8 @@ BOARD_VENDOR_KERNEL_MODULES += \ device/google/wahoo-kernel/clang/ftm4.ko \ device/google/wahoo-kernel/clang/sw49408.ko else ifeq (,$(filter-out taimen_gcc, $(TARGET_PRODUCT))) -BOARD_VENDOR_KERNEL_MODULES += \ # if TARGET_PRODUCT == taimen_gcc +BOARD_VENDOR_KERNEL_MODULES += \ device/google/wahoo-kernel/gcc/touch_core_base.ko \ device/google/wahoo-kernel/gcc/ftm4.ko \ device/google/wahoo-kernel/gcc/sw49408.ko From 8d0e6dca7912707bfe03d5f10647a4be72e3f94b Mon Sep 17 00:00:00 2001 From: Vineeta Srivastava Date: Fri, 19 May 2017 16:13:29 -0700 Subject: [PATCH 091/182] Clean up init script Removed commands which were needed only for lunchbox. Test: boot test on a device. Change-Id: I1e9a24cb82eb7e1dfd8701c15e4cf4c84d856a1e --- init-taimen.rc | 8 -------- 1 file changed, 8 deletions(-) diff --git a/init-taimen.rc b/init-taimen.rc index aa5c7da..cbb7e10 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -2,14 +2,6 @@ on init && property:ro.boot.slot=* # will remove this once slot_suffix is deprecated setprop ro.boot.slot_suffix _${ro.boot.slot} -on post-fs-data - # QC Sensors - mkdir /persist/sensors - chmod 775 /persist/sensors - write /persist/sensors/sensors_settings 1 - chmod 664 /persist/sensors/sensors_settings - chown system root /persist/sensors/sensors_settings - on property:init.svc.fps_hal=running && property:ro.boot.revision=rev_0 stop fps_hal From c91d4b4b08010929e2543db31ee693984d2a903f Mon Sep 17 00:00:00 2001 From: "eunsoo.na" Date: Thu, 11 May 2017 10:58:34 +0900 Subject: [PATCH 092/182] taimen: Add lge battery linux kernel module Test: lge_battery is loaded (logs present) Bug: 62023915 Bug: 36789160 Change-Id: I21bbb1f4beb46e603ccf844003e983b7ad55667d Signed-off-by: eunsoo.na --- BoardConfig.mk | 9 ++++++--- init.insmod.cfg | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/BoardConfig.mk b/BoardConfig.mk index d942852..d799095 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -29,18 +29,21 @@ ifeq (,$(filter-out taimen_clang, $(TARGET_PRODUCT))) BOARD_VENDOR_KERNEL_MODULES += \ device/google/wahoo-kernel/clang/touch_core_base.ko \ device/google/wahoo-kernel/clang/ftm4.ko \ - device/google/wahoo-kernel/clang/sw49408.ko + device/google/wahoo-kernel/clang/sw49408.ko \ + device/google/wahoo-kernel/clang/lge_battery.ko else ifeq (,$(filter-out taimen_gcc, $(TARGET_PRODUCT))) # if TARGET_PRODUCT == taimen_gcc BOARD_VENDOR_KERNEL_MODULES += \ device/google/wahoo-kernel/gcc/touch_core_base.ko \ device/google/wahoo-kernel/gcc/ftm4.ko \ - device/google/wahoo-kernel/gcc/sw49408.ko + device/google/wahoo-kernel/gcc/sw49408.ko \ + device/google/wahoo-kernel/gcc/lge_battery.ko else BOARD_VENDOR_KERNEL_MODULES += \ device/google/wahoo-kernel/touch_core_base.ko \ device/google/wahoo-kernel/ftm4.ko \ - device/google/wahoo-kernel/sw49408.ko + device/google/wahoo-kernel/sw49408.ko \ + device/google/wahoo-kernel/lge_battery.ko endif -include vendor/google_devices/taimen/proprietary/BoardConfigVendor.mk diff --git a/init.insmod.cfg b/init.insmod.cfg index 01fbeed..42a97a0 100644 --- a/init.insmod.cfg +++ b/init.insmod.cfg @@ -1,3 +1,4 @@ insmod /vendor/lib/modules/touch_core_base.ko insmod /vendor/lib/modules/ftm4.ko insmod /vendor/lib/modules/sw49408.ko +insmod /vendor/lib/modules/lge_battery.ko From 8d9dca5dc84ade3b8ca0c645b90a0ce97c1f1e5d Mon Sep 17 00:00:00 2001 From: Yueyao Zhu Date: Wed, 10 May 2017 19:00:57 -0700 Subject: [PATCH 093/182] Move AB_OTA_PARTITION vbmeta to wahoo/device.mk Change-Id: I555098be6e4fe1f9061ad3bfbdcd4a20eea71306 Signed-off-by: Yueyao Zhu --- device.mk | 4 ---- 1 file changed, 4 deletions(-) diff --git a/device.mk b/device.mk index 9431805..5ab1652 100644 --- a/device.mk +++ b/device.mk @@ -62,10 +62,6 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \ device/google/taimen/WCNSS_qcom_cfg.ini:$(TARGET_COPY_OUT_VENDOR)/firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini -# verity -AB_OTA_PARTITIONS += \ - vbmeta - # Enable modem logging ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT))) PRODUCT_PROPERTY_OVERRIDES += \ From 9da82eddbfaa66bb3e62cc13e77e37077c7c975f Mon Sep 17 00:00:00 2001 From: David Lin Date: Wed, 24 May 2017 09:33:25 -0700 Subject: [PATCH 094/182] audio: move audio table to /vendor/etc Bug: 62039625 Change-Id: Ibd9419c2495b23dd2757ab8b321dee2f3650fc7a Signed-off-by: David Lin --- device.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/device.mk b/device.mk index ecdd254..f8a9f1c 100644 --- a/device.mk +++ b/device.mk @@ -55,8 +55,8 @@ PRODUCT_COPY_FILES += \ # Audio PRODUCT_COPY_FILES += \ - device/google/taimen/mixer_paths_tavil.xml:system/etc/mixer_paths_tavil_taimen.xml \ - device/google/taimen/audio_platform_info_tavil.xml:system/etc/audio_platform_info_tavil_taimen.xml + device/google/taimen/mixer_paths_tavil.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_tavil_taimen.xml \ + device/google/taimen/audio_platform_info_tavil.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info_tavil_taimen.xml # Wifi configuration file PRODUCT_COPY_FILES += \ From e5aed0ad1e2a170fde6065fa75a5ed84e075be90 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Fri, 26 May 2017 13:18:10 +0000 Subject: [PATCH 095/182] Revert "Revert "Add rounded corners for taimen"" This reverts commit 2b373737de893bbb65b58b40b5c0df1655117407. Change-Id: I69f22295c20f89d4bb7c9a75b805dab873a9bd5f --- .../packages/SystemUI/res/values/dimens.xml | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml diff --git a/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml b/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml new file mode 100644 index 0000000..daa53be --- /dev/null +++ b/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml @@ -0,0 +1,21 @@ + + + + 30dp + 8dp + From f08e30d121f92935ecfc3964b21b5ed78a49ba78 Mon Sep 17 00:00:00 2001 From: "taeho.youn" Date: Thu, 25 May 2017 19:45:26 +0900 Subject: [PATCH 096/182] audio: taimen: device specific configurations - device setting for HAC mode - device id setting for USB devices (bug:38451946) Change-Id: Ifc30f7aa696306296bcde4baa8583fd7c1621026 --- audio_platform_info_tavil.xml | 5 ++++- mixer_paths_tavil.xml | 25 ++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml index 1e4ceb4..f59dae9 100644 --- a/audio_platform_info_tavil.xml +++ b/audio_platform_info_tavil.xml @@ -32,6 +32,9 @@ + + + @@ -62,7 +65,7 @@ - + diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index a7c8052..96d9363 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -633,6 +633,10 @@ + + + + @@ -689,6 +693,10 @@ + + + + @@ -745,6 +753,10 @@ + + + + @@ -947,6 +959,11 @@ + + + + + @@ -1424,7 +1441,13 @@ - + + + + + + + From 2060beed3de87f58ddf30d2e429d0ed6eba5e571 Mon Sep 17 00:00:00 2001 From: "taeho.youn" Date: Thu, 25 May 2017 19:44:03 +0900 Subject: [PATCH 097/182] audio: taimen: volume curve tuning for system sounds in call - DTMF, call waiting tone, etc. Change-Id: I9ed9319dc947097d6222ad22705085f36ab27fc8 --- audio_policy_volumes.xml | 180 ++++++++++++++++++++++++++++++++++++++ default_volume_tables.xml | 69 +++++++++++++++ device.mk | 5 ++ 3 files changed, 254 insertions(+) create mode 100644 audio_policy_volumes.xml create mode 100644 default_volume_tables.xml diff --git a/audio_policy_volumes.xml b/audio_policy_volumes.xml new file mode 100644 index 0000000..256b5de --- /dev/null +++ b/audio_policy_volumes.xml @@ -0,0 +1,180 @@ + + + + + + + 0,-4200 + 33,-2800 + 66,-1400 + 100,0 + + + 0,-2400 + 33,-1600 + 66,-800 + 100,0 + + + 0,-4000 + 33,-3400 + 66,-2600 + 100,-1800 + + + + 1,-3000 + 33,-2600 + 66,-2200 + 100,-1800 + + + + + + + 1,-2970 + 33,-2010 + 66,-1020 + 100,0 + + + + + + + + + + 1,-2970 + 33,-2010 + 66,-1020 + 100,0 + + + + + + 1,-2970 + 33,-2010 + 66,-1020 + 100,0 + + + + + 0,-4200 + 33,-2800 + 66,-1400 + 100,0 + + + 0,-2400 + 33,-1600 + 66,-800 + 100,0 + + + 0,-4200 + 33,-2800 + 66,-1400 + 100,0 + + + + 1,-3000 + 33,-2600 + 66,-2200 + 100,-1800 + + + + + + 1,-3000 + 33,-2600 + 66,-2200 + 100,-1800 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/default_volume_tables.xml b/default_volume_tables.xml new file mode 100644 index 0000000..5a776a3 --- /dev/null +++ b/default_volume_tables.xml @@ -0,0 +1,69 @@ + + + + + + + + 0,0 + 100,0 + + + 0,-9600 + 100,-9600 + + + + 1,-2400 + 33,-1800 + 66,-1200 + 100,-600 + + + + 1,-5800 + 100,0 + + + + 1,-4950 + 33,-3350 + 66,-1700 + 100,0 + + + + 1,-5800 + 20,-4000 + 60,-1700 + 100,0 + + + + 1,-4950 + 33,-3350 + 66,-1700 + 100,0 + + + + 1,-5800 + 20,-4000 + 60,-2100 + 100,-1000 + + + diff --git a/device.mk b/device.mk index 1e2c347..b9d586b 100644 --- a/device.mk +++ b/device.mk @@ -28,6 +28,11 @@ $(warning Overlays defined in '$(DEVICE_PACKAGE_OVERLAYS)' will override '$(PROD endif DEVICE_PACKAGE_OVERLAYS += device/google/taimen/overlay +# Audio +PRODUCT_COPY_FILES += \ + device/google/taimen/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \ + device/google/taimen/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml + include device/google/wahoo/device.mk PRODUCT_COPY_FILES += \ From 653abc70329d17e2d3bf00a99633e0464d1cee26 Mon Sep 17 00:00:00 2001 From: Ruchi Kandoi Date: Fri, 26 May 2017 13:43:03 -0700 Subject: [PATCH 098/182] Add NFC firmware Test: manual Bug: 37412012 Change-Id: I22c433935ee7a8a02452b0bec798838892680c20 Signed-off-by: Ruchi Kandoi --- nfc/libnfc-nxp.taimen.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nfc/libnfc-nxp.taimen.conf b/nfc/libnfc-nxp.taimen.conf index 57e31bd..08abdc0 100644 --- a/nfc/libnfc-nxp.taimen.conf +++ b/nfc/libnfc-nxp.taimen.conf @@ -29,7 +29,7 @@ VZW_FEATURE_ENABLE=0x01 ############################################################################### # File name for Firmware -#NXP_FW_NAME="libpn553_fw.so" +NXP_FW_NAME="libpn553_fw.so" ############################################################################### # System clock source selection configuration From e89deeacdfe284e3fdbce9d332d03d02ea56ed49 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 30 May 2017 10:58:25 -0700 Subject: [PATCH 099/182] Add thermal shutdown in batteryservice Bug: 37711924 Test: Build Change-Id: I56efb5fcd1bbcf5f43f423788af9c9dba57d3312 --- 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 dee60d8..76f3a41 100644 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -82,6 +82,9 @@ 0 + + 600 + 6 From 1d78b585df61e8f4a035a6b579c18959aa41fbaa Mon Sep 17 00:00:00 2001 From: Etan Cohen Date: Tue, 30 May 2017 11:51:31 -0700 Subject: [PATCH 100/182] [AWARE] Enable NAN feature in firmware Bug: 37674519 Test: submitted for integration test suite Change-Id: I59a8d4e9c46ce23da1daa8607b5f1df4f04dc417 --- WCNSS_qcom_cfg.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/WCNSS_qcom_cfg.ini b/WCNSS_qcom_cfg.ini index 784fc30..c4c4cce 100644 --- a/WCNSS_qcom_cfg.ini +++ b/WCNSS_qcom_cfg.ini @@ -92,6 +92,8 @@ gSelfGenFrmPwr=3 # Enable or Disable NAN # 1=Enable (default), 0=Disable gEnableNanSupport=1 +genable_nan_datapath=1 +gnan_datapath_ndi_channel=6 ################ NAN feature set end ##################### gIgnorePeerHTopMode=1 From 34b58e20772f67deda07b2187511a2688eda3d95 Mon Sep 17 00:00:00 2001 From: David Lin Date: Wed, 31 May 2017 13:18:36 -0700 Subject: [PATCH 101/182] haptics: update effect waveform Make EFFECT_CLICK 10ms and LONG_PRESS 12ms. Bug: 62176703 Change-Id: Id676a6581e8beff9ad2d951b2d9f405d38d374b9 Signed-off-by: David Lin --- device.mk | 4 ++++ overlay/frameworks/base/core/res/res/values/config.xml | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/device.mk b/device.mk index b9d586b..ca7e285 100644 --- a/device.mk +++ b/device.mk @@ -83,3 +83,7 @@ PRODUCT_COPY_FILES += \ PRODUCT_PROPERTY_OVERRIDES += \ persist.config.calibration_cad=/vendor/etc/sensors/calibration_cad.xml \ persist.config.calibration_fac=/persist/sensors/calibration/calibration.xml + +# Vibrator HAL +PRODUCT_PROPERTY_OVERRIDES += \ + ro.vibrator.hal.click.duration=10 diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml index dee60d8..9d47073 100644 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -106,4 +106,8 @@ "usbradio:mtp:diag,serial_cdev,rmnet_gsi:diag,serial_cdev,rmnet_gsi" + + + 12 + From 92c6624540a19fb5cd2d2e906fe0e344e5497961 Mon Sep 17 00:00:00 2001 From: David Lin Date: Wed, 31 May 2017 20:20:19 -0700 Subject: [PATCH 102/182] haptics: update effect waveform Set EFFECT_TICK duration to 4 ms. Bug: 62176703 Test: VtsHalVibratorV1_1TargetTest Change-Id: I0ff38adebcd1679b1fb8e061fa46db797a7b354b Signed-off-by: David Lin --- device.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/device.mk b/device.mk index ca7e285..5c8bfb9 100644 --- a/device.mk +++ b/device.mk @@ -86,4 +86,5 @@ PRODUCT_PROPERTY_OVERRIDES += \ # Vibrator HAL PRODUCT_PROPERTY_OVERRIDES += \ - ro.vibrator.hal.click.duration=10 + ro.vibrator.hal.click.duration=10 \ + ro.vibrator.hal.tick.duration=4 From 710c6a428c265af45286a6e5416d285a69aed3f5 Mon Sep 17 00:00:00 2001 From: Haynes Mathew George Date: Fri, 19 May 2017 15:03:48 -0700 Subject: [PATCH 103/182] audio: Add profile for hifi record Add profile to support hifi capture from USB Test: test playback and capture with and without USB headset Change-Id: I43a21961eaa64ff27614978ebc53a1d9ca3dbf26 --- audio_platform_info_tavil.xml | 3 ++- mixer_paths_tavil.xml | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml index f59dae9..082e83a 100644 --- a/audio_platform_info_tavil.xml +++ b/audio_platform_info_tavil.xml @@ -71,7 +71,8 @@ - + + diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index 96d9363..4c6f0bc 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -808,6 +808,10 @@ + + + + From 8d3f5491115231b4792db15c27874a828a1e0a15 Mon Sep 17 00:00:00 2001 From: Siyuan Zhou Date: Fri, 2 Jun 2017 11:01:28 -0700 Subject: [PATCH 104/182] Added directory to kasan ko files. Change-Id: I9a2f5c972dbc30c48312af8e8a05ece568ba68aa --- BoardConfig.mk | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/BoardConfig.mk b/BoardConfig.mk index d799095..429085c 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -38,6 +38,13 @@ BOARD_VENDOR_KERNEL_MODULES += \ device/google/wahoo-kernel/gcc/ftm4.ko \ device/google/wahoo-kernel/gcc/sw49408.ko \ device/google/wahoo-kernel/gcc/lge_battery.ko +else ifeq (,$(filter-out taimen_kasan, $(TARGET_PRODUCT))) +# if TARGET_PRODUCT == taimen_kasan +BOARD_VENDOR_KERNEL_MODULES += \ + device/google/wahoo-kernel/kasan/touch_core_base.ko \ + device/google/wahoo-kernel/kasan/ftm4.ko \ + device/google/wahoo-kernel/kasan/sw49408.ko \ + device/google/wahoo-kernel/kasan/lge_battery.ko else BOARD_VENDOR_KERNEL_MODULES += \ device/google/wahoo-kernel/touch_core_base.ko \ From 3f485235e3620d9a86a28d0805d7944d56dd5689 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Fri, 2 Jun 2017 22:29:10 -0700 Subject: [PATCH 105/182] init-taimen.rc: add boottime IO setting Bug: 36780513 Test: Taimen boots Change-Id: I09b41a7f4c511fd9c148a8139b1c8b28478dacfd --- init-taimen.rc | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/init-taimen.rc b/init-taimen.rc index cbb7e10..fb8b1ee 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -1,3 +1,31 @@ +on late-fs + # boot time fs tune + write /sys/block/sda/queue/iostats 0 + write /sys/block/sda/queue/scheduler cfq + write /sys/block/sda/queue/iosched/slice_idle 0 + write /sys/block/sda/queue/read_ahead_kb 2048 + write /sys/block/sda/queue/nr_requests 256 + write /sys/block/sde/queue/iostats 0 + write /sys/block/sde/queue/scheduler cfq + write /sys/block/sde/queue/iosched/slice_idle 0 + write /sys/block/sde/queue/read_ahead_kb 2048 + write /sys/block/sde/queue/nr_requests 256 + write /sys/block/dm-0/queue/read_ahead_kb 2048 + write /sys/block/dm-1/queue/read_ahead_kb 2048 + +on property:sys.boot_completed=1 + # end boot time fs tune + write /sys/block/sda/queue/scheduler noop + write /sys/block/sda/queue/read_ahead_kb 512 + write /sys/block/sda/queue/nr_requests 128 + write /sys/block/sda/queue/iostats 1 + write /sys/block/sde/queue/scheduler noop + write /sys/block/sde/queue/read_ahead_kb 512 + write /sys/block/sde/queue/nr_requests 128 + write /sys/block/sde/queue/iostats 1 + write /sys/block/dm-0/queue/read_ahead_kb 512 + write /sys/block/dm-1/queue/read_ahead_kb 512 + on init && property:ro.boot.slot=* # will remove this once slot_suffix is deprecated setprop ro.boot.slot_suffix _${ro.boot.slot} From 1a90278fed1877c65bfd041090855771ebe655b2 Mon Sep 17 00:00:00 2001 From: Jia-yi Chen Date: Tue, 6 Jun 2017 17:07:17 -0700 Subject: [PATCH 106/182] Use bd_therm for thermal throttling Test: boot & check logcat Change-Id: Ia10adc2f3ea3f8da377804f0a2d5accf0afd9c8b --- thermal-engine-vr.conf | 22 +++++++--------------- thermal-engine.conf | 32 ++++++++++++++++++++++++++------ 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/thermal-engine-vr.conf b/thermal-engine-vr.conf index 4bc1ff0..46e993b 100755 --- a/thermal-engine-vr.conf +++ b/thermal-engine-vr.conf @@ -1,17 +1,9 @@ [SKIN_SHUTDOWN] -algo_type monitor -sampling 1000 -sensor pa_therm1 -thresholds 60000 -thresholds_clr 59000 -actions shutdown -action_info 1 +algo_type monitor +sampling 1000 +sensor bd_therm +thresholds 66000 +thresholds_clr 65000 +actions shutdown +action_info 1 -[SKIN_SHUTDOWN] -algo_type monitor -sampling 1000 -sensor battery -thresholds 60000 -thresholds_clr 59000 -actions shutdown -action_info 1 diff --git a/thermal-engine.conf b/thermal-engine.conf index 97031f1..d7fac8a 100755 --- a/thermal-engine.conf +++ b/thermal-engine.conf @@ -1,17 +1,37 @@ +[SKIN-MID-FLOOR] +algo_type ss +sampling 2000 +sensor bd_therm +device cluster1 +set_point 49000 +set_point_clr 48000 +device_max_limit 2035200 +time_constant 0 + +[SKIN-LOW-FLOOR] +algo_type ss +sampling 2000 +sensor bd_therm +device cluster1 +set_point 53000 +set_point_clr 52000 +device_max_limit 1728000 +time_constant 0 + [SKIN-MONITOR] algo_type monitor sampling 2000 -sensor pa_therm1 -thresholds 52000 55000 58000 -thresholds_clr 50000 53000 56000 +sensor bd_therm +thresholds 58000 60000 64000 +thresholds_clr 57000 59000 63000 actions cluster0+cluster1+gpu cluster0+cluster1+gpu cluster0+cluster1+gpu action_info 1094400+1190400+414000000 883200+902400+342000000 300000+300000+257000000 [SKIN-SHUTDOWN] algo_type monitor sampling 1000 -sensor pa_therm1 -thresholds 60000 -thresholds_clr 59000 +sensor bd_therm +thresholds 66000 +thresholds_clr 65000 actions shutdown action_info 1 From 2968c918aac7e90d671a0c93f8079e03f8e5f996 Mon Sep 17 00:00:00 2001 From: "Kyunam.jo" Date: Wed, 10 May 2017 08:18:02 +0900 Subject: [PATCH 107/182] Add and show regulatory info. Bug: 38171402 Test: build and show regulatory info. Change-Id: I4ea528f7a979e22c1bc7bda4e6c480d6393245de --- .../res/drawable-xxxhdpi/regulatory_info.png | Bin 0 -> 167196 bytes .../apps/Settings/res/values/bools.xml | 21 ++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 overlay/packages/apps/Settings/res/drawable-xxxhdpi/regulatory_info.png create mode 100644 overlay/packages/apps/Settings/res/values/bools.xml diff --git a/overlay/packages/apps/Settings/res/drawable-xxxhdpi/regulatory_info.png b/overlay/packages/apps/Settings/res/drawable-xxxhdpi/regulatory_info.png new file mode 100644 index 0000000000000000000000000000000000000000..7ddc495e3ac642d3e105f47d1b4dad5b03ebfe37 GIT binary patch literal 167196 zcmeFa2Ut|s_BK9hVnGq3#)dSF6^1&)PzMDCMGyp}7byb_ZIIs4NC{EI1_%g<2uSZB z-GGRK2!hlBCa8e)-rKh}YQoLUz2tuR{lEMFJr6vOa-2D5pR?EAd#!i9@7hNn`SVir zbo=Nq7!3W{Gp7_Vm~S6qFm#q1*TW|=^*?QeUz;q?s99q$n|Gi;YcRnN_Fyn_WU`W~ zjjF7SkUqtnQ`dl^N8)raw}i7X7!ffCOI>|ak`1dK$%t$rdSEcG=m0C(K=gnLUY1+d zQi5bmKI3FXQgk}6r0-;^FKBQ;j7TTqAOsDVlWcTZ9n8%vtc4sz4=lAS1jp!Ot^=$~ zr`VW^9yp0^$f_zU&niK&BC+B*`LX&ud;+WlK~5gLpa3t9gO!(?ho6gEkc$V0<>nFM z78K&P^Ji_6~Lp3|O>lVWAW#Um&v$i>ae z#mkF@GqBc<7B;#LSPScepBwqw&MA_$z7^ThhD@P=x{!nw zN!NyAr9`2a5kF5?`L9pUDj|WUCxP{-3faPdVsCv+gzJx&{62AhZ;fwy6C2CJ zi{&OL@$d=p@(JPb>}Yy(FKguUnSW?Q78a3#u8r>3RtQ*bJeG%B30*8Ggcn@i%0Ha@ z$95`^j6}G8|8UuvOS4z#tcA6Wu7y77 z>?tCAz)2<>2=Q?X@(>L830OP{7A66Y}w1t`q2Du6G_OB-;l&dG8Dk_;lYvc@Q?^tK|CJ*;xphk#Nlwd1U=l> z8!c<>pKc^)MFv->Yqsnh)E5J|8Lu9Jq^nQT$Liwv^{^xojt8s9XF$T@NP2oa1Rg=W zE`j&!E&imLf4bEfvNg;*$7S;oX62HzQzTvf$4|e0VMbnZT9&$2)+Ds1MGt&k)W3PT z-<%k_X2~}Q>FOhQN7P3Xon#=w^$(x^{#d_V`Qz_PSQ2lSVK@{>mEu-0DAG_Q&Q$xKMa7BmaLe5Z1bOe{UEJaooCk z{5%A#E+2^mf8n^X0^B4%tS(+(pC6~oZKy}$|2oY7*TaAp;vszXH2=L}_zM{KZ=DN$?89Gf8b5s1}> z!n!O>ezyCvHvS*ZQUj6|`9JY6%brsItC?8;m-YE?`_#XNR6Y;u>dO3#6+Xwve?%)^ z5zs%Q8-$Mm=AHUHJ0;PYLLqi#Favl55)GkcR{shw|EfFv!{z_57QeI(fb!oXOdMpG zI0HRhEFYh);b(-YOX4SC^>_hn^5_fj^Xlp&*NyJAtg%147v=AQ%+GiElV*Ou+t+be zX6|KBM&viYB_u&HqgcsO3`j&i5w1V`cv+jjf2~Avu#wSqMBefD?@_QuLn^Lo^pBr@ z{o+5xufN}K>0al-ArsG97?5?BKk4sZ{lk-dnWBGa0zLP?XkzKBKQ{3{3j_b~FiZVW zJgFeW&8e!&s={^7=md`u>rrEpuE8%Y{)vl6UlPq7NIs-hq4(%*ltn}4Oj|59HibS;3(`Fq{_7j68vdUWzU>sg7@ zidep*;>Wno%Ze`@{LLQzwKo4tJ(dI-@b?J|^Y!m_cID>&OZ^0g0|^qVq7BeQ)~pmm z)|2Ld)%5@7?ETBF{+D_!D|hO&40t0cZXOgKMx+y zf0`hGKP5@vnaz0dZbFkp6ghPfJRk=H)wymk{UWC!CVt zmy{6XU-=3CTus2~QGUUbT|Z1-x~T$ z+Qy%a=I2}d>pA%E=9mZ)^MpVv0p5OzSR?X?aQ)L~zvKGP=c^*k!_0O`(;)D2!w(k^ z`uoeJ%fJ5PrE35F(&b_9S8Jw*n!%NnURJg}6$T=mDV{`69{-!FxA0FSwJ!=+1?ef8zi&x5y26JJW( zKYt2}JBa;Uzp4HIl+k}qu>Xhu{=HBC!woNQZuKV1t+C?qs<~D)(ee{k&9&SbD;}?! zYef?+KVj8e%dN5E@v6C2G|}=CR?W5C8Y>>JnrlT9Ek9w^T+6Mo;_<4vRy5J_6IRW& z+!`w$ubOK`6D>bs)m+Q1vEuQnxmGmM@)K6gwcHvj9>JnrlT9Ek9w^T+6Mo z;_<4vRy5J_6IRW&+!`w$ubOK`6D>bs)m+Q1vEuQnxmGmM@)K6gwcHvj9?E zTXWI<{{B3Y1-vxR9^Q`UB*GO7Z`NbgKcgUv!8jelV6I%lV5S%0cQ*!O%ZAB{6G7v1d=6RB~wUYt=R0-&Mf1a3rws?(p^X@4m_AN^*G$K#ZmmN?l$%jYrO z;ed_z1XOqrsV0scF8g5@Zt{J+tMi!q+k=aT`uhf6n}pX%&$yhpH2CJt8{+8ezSs8Q z)0Ir@@UsTJ8W6LuugG}q(vjY_6YJ2yHc!kx^!v)uZ>rI6%qg}j=;ebLR=PDf^c!i>Ii;BpS$ zj$FsV$?26`v>?>-^zuQEZN-_U4aEeS%MS64?L+M)Y#!St23i>h3TFqZo0?*Ox#S%j z60%vxb^PK}+g|03Y#tSXTr{_Vh1o#{=g9$jHjfkvtm5zI|t0Z}JcXto9IS+bH zPfyDv4-O78cr&nUMSuGH`>{ENDjlQKmQ|vYEene#KP^4r(67H#*VkuZXDBl1>FF0G zo^n*Q(r7GiLWPZtGG#fiSWoDeH~KT$Rn>s^Gwf%m>1*KB%2jGG+PiNbo%dEIy4KcK zs$N0jK#ADYuh%RW=B9(GDIG~>78aay!+!2t2J=VH-wzIM&YEYzWX)-6Vd$UToK~Qo zx)NB`Rl>3`g9cy-+dUhh0p{0zGbnS3mNeuCOw?72BaJt-0E`bU_{$g5B7S24lLJOsk-HkZ-LT!}7|-bEv^Sv5t8(z;)#OLyzEjJaV0D?Is( z-gtzCg#~C*_~0E~dU^-8FfbT3dtvQ!UcGuXRL-9K?t38>UL0=cLU;JWt0ztvyRMvE z%)Tp3qfuF}Fce+g2y)=-H?LoNNO*5GH(~ajq2uzG)-^NZ7#klyJ)18fA<_Qv)m?h} z%OOmSFSb^FQ*D+B18h0b*W|UK>g@cbOP5$@7VN+nV`F2uz73fdJ;mAPdQ^%`e70}C ze*Jnop=esRj%BL`&lQWhjo5H1_rOYN94S6as(N-2$xSyIW!iz zyN?Yy+G;ez!5$VCzX|5Mckj0U`pY$X2Gj=hMPy;>gRY^W;ko*{ni_?t4#Rp=-tJT0 zDej94+yVl7I;;nxJ2?HN+sC?V+p8laE|hc`j=N)w@c`wgrxX+v$hr@i!ZH<8F3=GYlD6guc~1euvZ+P=by3zlbLVPV>K*2+(dF>>J(qHCWe z4PhapT6BNN&BwPRH#hfDVU<6-O4eMu#l-rbLU`cO7X}ySi`u8V!YMtn3;Pn2let{R z-b%G+HfUR0AIpkTh}}6eGgI8y*cgB<>2Wi@bm<}6sHx;se!X>-=x(>gS(?Pel$1~l_e*Vb-~5o-eQr4A=~Lr%dQ=z;vvVF*@#{BiAZRI0M+Is( z-{HP&VsczF*M_V(s#>t-BP_$>2np{j*`M;X0`tJ9gfGr@VHK}AIXI}w8e{Bm2OqAv z_?65fKsQ7pfeOa7@OfrltnWtTD`FsC@Ir>&=_R?6AclhAGPj4gJ@5&K<)TIQ&tGss{Ie$-d0ep5FbIx2t(Sohw)#os^9ojv22P;&h z*L3-`C*=*KDK?&zj#3bC8Z*{PuI#XCe;2FR{#J@5aY~{B-DB#5UkQ71{vAhmZZR>I z7cX8Er|OsSa#2Glg+b&Qu#DSuh0b9w*LCaG!8+y@nQXBRB9>4oMWH!2UivZ;vPft+ zgguJpRo^x=s5F?)&d!#=L+)LG$z5p1coh7Rt}dHqk(+4#@C!!U%&NsHmc@hlvjcf{ zN|-(oc1((d$F_YF+4=b`LmhdJqlOZJJlFM7RU4eQ(9<~&d~)z zZ(*kV(Z^1H@R`30k;S&Dx0PTt9TFO9?jY8jR8f$Yc846A)X%3DXr!m7cPOxe9pOcO3TRDsSR`Fb#lo4`y06m#uR#PzcM#BM^R7L&W``1 zRgTOcUPNSnXJ==YOF?#Kre{)861?eQn?+mx-kI51zAAkO2Z!2BGq(D|hha60J9g|q z*9J*WpmQM7 zZ@)Tt@L+qZJ*`r6Uu0gMFw9&0PC8GS8~WPMpIqgq;YQ7?%mlRy`-WPj%hx%WUDoml#(K7t;>syJZSyN z2I90=mSf~QzMrkZ2i)-Uqu#O$0(W@$$dQt%sj2=V<-PPp7iWL0Gd~($CDpXZiN%uk zy>*%zYJXj^*r@Lp6=ny)r^o4ahgHzpVdb}U6{386cVm-be1_&mt0*(BR4TP3h|h?( zpc8ySmc+N0q`o_`?!>pg96_lUkK7I9)GEi#z$!B;)O>mehUN7kj-I^{O6ojtitWFsS^=v90dt+>i@ca2Y&moGXg38bbSoOvyh12*KItfX56yc4c;?f=f|$ zGDd9v*tkgg4TH8%Qera~ddSH-MQyhRWA#$^?Ao=f7y%>8zQ)w*y1Gnkp^k=aPWn5s zstzmqz4JxG!ar0@O0jEy_YG!z`-ycay)BMip|K`o=VfK_kGFmRpA%Q%CI!GL)V{4L zr79;Q<6dl^)QuejKI<>BlOS zYwmj#rtp2H!KTZLQ)Ob&ZAH=Jt%Gja1EiwC!dV5m5PlJwv9a;do!3h(M>{Kr2J!~I zU<|9lGmKE5*{KdB(Ad?A-)As8eTo1>?QLbiB%TN4mt^y)Izp)y|H$SA#ced?=#iLA z11#Geyryh#cTD&j-284Gm$zy2hkK8{QBE|K{V+GvP;_3jA0GLsRflwK;AQXtwPWJ} zaZe7N`zd6iEFBWW@`fa>3f%l; z(c=73^HAF#I;2=!-_^JtF_ow6q`nCl?|h^tEr}}!2hA%RJ}woR5$5pThg(=UWG4A- z+WIS|q)o}`9-&%VS`m49c@Z7wgLOaOe-B9_?Is=Nqw7)3rFd7!JW@26#N6^bqec}K z6?Fk9+Su9Ek23>WjkTD|+-JgXHAblqP9ArAq25fTN)W^4E_(goQS_}741`6+L`cHP z`LQvZl5-&`uJ}g@a>{Dg64q_ldP?nPR#ukRfKgf&DP8hYbZf&~5jD4?CSwJA>W}Zb z9vf51+rx}e4@DEbtAs&p3)|zO=M#~B#5iHx^jNJN%+ODfeqP)5?bd`jAv5~3V=+@P zO*+g#Ev(XGA(f<+lpyv^O1k-J^OgiLvwm8UyGBOG$Vl4O)3R#rPo`!8rWjY$)Yj^I zVp7QfEhWA(A?(~W_ZFL?jkkxs?A+`W+#$09V+PGIU5~u42*)b3K zA@Julr&kd*tb+le03f{U*alAgEV$(7K0D|aHBqt_-CZ>-a%yVO>s8We2mWN;f=$DX++>(M*9SL*W{WHF8O_kP7(QqjP=UZ?=y z-Wjqz3R`e%{IDw-lDGJ%X2+^9(V*x>Slk-9Gz0p+qM4p}uYjG?LnRC)ukId+bjiAU z^(yw*j#MpMJ3Fu2w{HiJf3(igoXU2e&5q`xK^|y+$b3!5$*g2meD#`3gdMQ3<85th zJj5g9N7tVQOovdcoGaNWR*4S&g^%eS9Hcb+re@V{nmo@a+W3j(8;EI&zDdbt;GXz| zy>6^uzrMI&vW-#OvBUql)$aNE`5#>|7&|PoR2u+QExs#T+bM_eHQGdX0CY;VqSGJm zW-k`p&%h9q8_@vyNZfaI5P;wQ*hDFue)03S zk3t~xwr{yCbx#a>vmScmv281p&^?n}$WsXh!P~?gK1F!rM1V&S4hDGwrmZeam*Coh z#f4e=pu><9CM9vwGhi^!ZXUj}{>o7HzEbew$%3tojjDCL`ynffEvGzoB(!!`sm_}cV zmZujcR8>?|UUpdNy15nhn9>|R_<|?8JJljQn6Efm0CVlrr%#O+`$Y+a>`0>AL3fTP zQW5eSi{?7GB40Z%F3j6)%WDJ{;`jjVl5j4pcHCNw84q+f;W7lGYJh^a!LT|2-mC69 zfU+a_NATd~_s@L-W?K;70LTHGE+TCHyt%EwnNg?+?wcM}zgxHrXpPA4Fc{;bhXgQ} ze8I2b>TJ$N@z(^<) zabkF~;GJoI741!BH<{R-69NFrf`^K9zX|@wAedQeVz>$BV{G(1tPj%wf#zfP(#TA(CTo!i!R9Hy`0O}hvc7tBbQBWP!#1|I zp4-Il2L+w|K4I?T5wX}Q&4UuZCS2`ef$;RiJa{~vL|+}!KQ}!Jo~^@5cKYp_<7Y=B zo7DmQWMpPW1!n>3vAyIv^6{0{juSEFV(+QxMsm^Jl-As+x0r{&EUoRhT|Y%*Zx2Ht zI=qk&yI2dswAVv>Qe@srrd_i5|H z!OLF=h*UaGqI(MS;hf)|H~XUFrz@2!nm6d{eE0UK+T;%3x!ZpIkr1uHbH1x}pKAAh z8_;o6c;L*u{m93&>TV-!j1D8(1+ICeE+7W z+@BpBR6B!vV~y)U*~Gz2W|yIpj5{@so6@)V5oe64E?FEZPLK#R%oCBX>>=0IKaX}q zOUtPlTltGF3FTd*5s{H4>q`TK9EL7MBU@%w8n?q84L02-lq>9>qS6+!&Nt|# zeNzoYS(8yX-eqs$!c4DBEyVSPpVwU~1Htgbj}X zG~6J!&%yST{Xr}i8)XunS>v@>seIg@*Uyc3`Mrm)Pe5ZhJv}|isS+U%^Wmnnxo4w; ziwlFcMOCoM6y%&~u9Mw1*u%ZX?~yyU&rZ6t=h9({5sz_V3?v?%X--VosVS zPij!jfx&`F?H=;C-ia{<1)?a8n4L`^JV-p$dr=Y=tnz-0uopP3F~1mS_g|q=|_MnJ6z#ox%sxqG|UIb`K6tmMC6#dhc_DcYdQaNNexuSdotbBam1)&eGj)b?=R1JM#SriyGy~!-9Zod%-5X98*`cBZX8Eh@n zV+S^>uPNQux14{*(f&B3z>qpawm@5;_W23=DpeI4TUw^*vW@91&NLhiXRq*c;VPWc zgIqai!bmOY<4dQyO_jCv^#RjT9e~zlTNxu@6)q4VoxwVDeS>)t2!jy!(&=E4FP*2j zF@-{_sgkcc`U#OA0AYcm3Okk%1azIB$jBKO`ihqGkhow|-vk1w3oMw!uU9wl25#Hb zPC3Y$esjTamXU>p0eL;CoBKBbqmjJ`>uTphJIg{u`?x`G>ux~Ouag;JvK)~MOUOGs z260coam1i=UR)h5&S+O^1y|7nlV(WK+!jW|jnsFk5Hqr1?i+EQwgv_*S5h2J4PeM# z&$lt$$Ml_|)qI1IZv{8X+v;MGn1DZ`A7-NiiQwpykI-XCn~Gx+`OJJ4}gU~@TM7a1?RTtmnDB>s4A3#4t)e;PKbNj(P zzXtLK5nV|vR%s9rH$qrwM}9n-g_(IP&1F(N|bXlj!jUZu5~8y00K2F?Z< zg*A;$ssJ{yZ*w%-$cF2iO;P2@{c-&jrdJz{F;5~sJCfH&0)acm;`b#1%tqNR%mvv> zBNLN2w)UEyO)jGC*6hLe?;8i*^6s1l<|1^-t0O88%SEVdYTEmAsb1%Whm3W6#eAJc z<-BxG7e!B6-+{rxa%G=#Dw?TFF0PAL;nVp(LpkzX`BB<8&(24$$6+21-3_1nVboN8 zm~#S?LKvDMOu3}1Uz-aLK+e?(OA;`p4dOgYHg-x_eW(>o1bPZo&Mt=-CiDFfb7976w@* zwkY)nUB!74yTm8xC2{)W4%$IXp98SJXO8vzz5ux>wT#(xy2=`|cUS?f@6OdrNlBFe z>6n*T(goyLbWBXiIj#bO=lg=(?$fb(Ku*(8$ok96muFzom`L#{>LA_>KdhX8rndTiCD{5`yY|~VY2r1^<@>d zUm}JxAnuF7ed^kGek~Jni(_&@GxG841JLO`b@8%Xuik>zV`yYl^6c3O3HNG2nAI>| zKW&fevdV!+$GWtgL~<0xeU=(MXPG+V+W3hGiM$NpjlGYLB@XwcS6ReYy#siJ(rn0m zsY9$z=Eiwi;?tP`nD*@5y9rjv(i1%M;f3fHD^9HwN={4wG_z&P7LO1DMUwsz0G~Zf zO!Ndw+m^03q1Ur0p9TiDhP#ZMl@P1wIb$v+-Y@cn|9d;*9wFaY59D{sUgX_wX$RNr zlY=41nlppe(NcUM;>fF6=pvX8SRW}Hqb?)UE>rLbdzhX3Qq67eXn}?VyvW{xqQ!+2 z`@y!MU#~I5Rh&Hz>}xwnXY|SWBhnyO9d|AS2LTUh7P5dkh;pgn4`n4$=K`0M!J(m{ z=*}iE-&Pi4%UHk3c={ahBwLZwap(%Q-`;Q`(X|;lr1lbT|8tGs)=vagy6jGx2sH|K z;TX{`Gy@13{7 zO7QZ?Uu-MBNj+TemWBKVBu0lX=hm@Y{;E+1%(9t$b?Nnq8b0Crw&7XOTT9@?sWG>E z@+{41V&Ho~8!Fn)h#3n1TD}zl3mW~bmTmp-DoHVu`0(LFJER3qW(Y)Lp()kq@@1aa zFjbBSDzHsY`F zi!h-~h}dG+;uhdCg0$1q()12(2f}(s zNmnLPh{QzMk~NsV1K_Dy(?KoAxrC{4wr|L418j`c z%ARhTQ*WYihcjfxT1zKETH{qU3K>sBN{TGdU`R*8jgOV;@jyOG7QkH5Is>lIfFINd z(DL{37a{SIpFdhRmI}+BQHZIoU~Z%WS*R`pLbJs#I!wxSfZ11aacKcbx%p=o6u!HtkdJ(ucV)9yKR_4)_QMfE^{}<>mcF z_B2gwf6(j~GR)?hZCgzlJ$ACxw7nHw(Kw>|4B5&(g|Al7AA2yMhXI}V{o zJ{#o-;Nx&VWIP43JG$_~laQ@zF)8)gxHTC0TOvF}Hy-ivF39 z*+ZFCh<*avZM5o1PyF?|^4Le#t%fjWgO($#5T`%KSU z547a`T&0!oz=L4*_u&w2W=lZ#s~6=L6x{1J->ak29|P!OKTyBjy~*Ff)GtA~kV*3% z0@DK^xL91rE=&RCu9D7>lr;*vYDVk`3)1ZY;ht&rLyHmw#Jz9A#dP?!QdMO{_vK&A z%2sY7ti=ewgn1V4xh-zN_vXzcpuT>t>KdKSrR6odSm(4zr>Z98xTwj>$Rr>xb~G_l z)Av^A=%GZvjO0XnK}uVG4wC)s8OJ9llQ}pzGBkCP>U2O@i!Zb@*9i{|O^j#3#|`3g zweAF%IyyQ=f$+Cr2I3UGMrTt~Q*du&eQt1QsBe~5(mp1p*0C82|Ncb(317^!H;*8= z$kzcGRRW=uohXLKe-A|myjAvwhS5ErP$G{|FuuGlo=K~3iM+W6NYZ)kpDu8FqT`<&PYc3Dbz#6p5y!hC8MbH;r@dMEf=W8CPhIH z9&Fjbz?=}zGCnck1vA&;dKD65VhYzr+$J#PL)C)-P!sQede70@1KJI$c0j%*-y97N zs$kI3p=Ht9)X6ZL`ec@76RM2yW_EhggF{oNbGqKCQc+Iy`@-qY5HA;0=`-~5pr6_C z>Skk9WdToS>#5=D>KdXR08k%QpWs}ybYPO~7qt4JjxFuL&K*|Qp-$3N3R2N|+`WkfOf=QvDuPByHVF}sevjjMvJ zA|^~Fk<0*i>=r33B;=ecc^WV^@{a&Qk#r1^BrdYB!D+a3H^>{EA(X5ZCoJ#?Ao{G5%A_N))RyVj>^7%(HkISJUhg2tSt*XJ&BwpmRu=WJ=Iz@Hc$+=U%;#-= zoMV;Z)HSl8gaLRDFOE^5RF$lQH92=9Ob6f^$Q-&a02RuBJdn2lP4{u92r%}h^<$OW zr^Y5Hy?5{aa&ke2u>D*DGt0m zm4_-3H350T87=LD=Dr<yQaWG4K9O}{%KUEkH%LU zZccz$s=hIzM<+u5si-+P2cdq@H!3IN@qT)#_nn$dn931*o*W()mXz}vGLcRfNbTa^ z=z}O-*R^-=-dLeRg;+%nNNrKZ*7*SwCAKbin;oiZ~DjGH<6ivwXyyP1|S2ss;; z_ClpWHn{(gM@kKiMoS@q)PJV6)A!Rga@KYA*(cKdDjd5i7U~Cd)X86ldh;7WJOuBN zYge~Kv{r@?2uw0{baD;rxkBi75@u&ElGnznhl|SodY8WuRXD^=;|~~DbXeg_QZAB< zpJa^w+!}cI@ur8hNs$@4ANu;t&Y68sTd>M$DTlTg)65_`<7r&sRWSnua=k7woHk~c z%C9M#XO@^zkXcjs9j0*_C}NC)DTR{kG(9;z+EoIh?xw{HQ}r1gv=eoQvIYId+l$2u6);K$lW$N|U9L$c#CdY?cxbTJlj z0F*rb`{CgXkOfi4Tul5ws6m~>gItC%qHAs^4zLz|&aqAy8^k{JkW8cc6E7mSICS2YQBme<=DYV*DO=`p`jKy$$G zl1)uFgAN4$c1^#5FL}R>s~5$gcRS_&lRxJMV<7^-wYKOi)U0>!2k?F9cWDM z4~5^=c;JBaBlif&@*U5s@!JwI-0scN{Lt=}Rz2$vXAMzHo<=vvbJ4l*f+Ah8wDV zpKj6+t!cS&yI$U$Q767lVSk;;D@vVRDr0tbVhiAcylVi$pHu+rcbrJT<1;xe)igB| zgx;rw2_>tc+NurA4y@%HOC+0K)4zTA7L{HClNm==Id{2{Gb_9wJztg>f`EbG;4*qf zQDNft#n6v{lWt@^K;Q(510~zUrO_}!;Ui=MUQiLBl)M+HJRsBdQ5aL9jo{PtfW$bN zn3&kYt5o(kxj?Ze6!2Ki()@uBPh;H0Uk;GmVIZeVK`y+iYX@ch6ws3R8B+IWHK$wE zELJ?i(m79Sei1aSyK#miZzH8jfV*LA_9N7X8%?4J*e{17U_WTT-(QOb+Ln6oK)i2? z^GtWl4wl89_+Egrj*X!uCA^U2wzR~XW|QV68n34lZ$qpkg7gDD~Y*eFaP5@%#-e!@m?Q4 z7NAFadWrL6wL_pODTj7~DsaYS4)XC3^-jPBN(4bv;{?pZ1=GsIzWZBD$V5u2>K52< zMZXw1p5Rq=HZo8cDu}A9<>RKI5YiKBKb30RpxOf;qo%E$WJ*mw)K9<5{{2L~^wQ1I zmMUBDQ4F5q5${K#F!PDJn?96js5kk*%1!9R0jh;^1Ysv(Bv&R0%0}H13m9}AbjHWz z*!2gWFFYp#PkS-D6!-_Ct?}%2ow);$_XO9rx-ZVdIhQ|3c24zYVX*68 ze&>)8AOau1w+7AbBG)L<=97FzN3P4XRV6vhb)qRch+q#sclta;i zW}(&oS5_z2CU#)bxU-9`5bDFKp_ag;85bo`bK?p# zu=Vf!pkl8so>RG>nw=bLp52<2ZTNfJ(m*Zu%%qq?U51GIw6A1*%+`K&a!CvWaf-Fh z1|}h@vkO_!glUeC>F)2B)vC2m`~vno09ZDkvAYEIGMf z0$lZm1WT5y7LttslUzs!Wg;4(#?k?tPzm7VJ)j@}ROG+I^axmCP=yZHWss#WE3vny zn*e;g$O5%KTL8M@V}#x2rUEir?V8(ybI@ZDmmUMS!C0x&UfV$3^&_t3sq|em@#RPP z2!qJbiOTQ%$&cx~{q_rPe^FMpL+a+6&x!-+a4om^d;0ohE-IjG5itu7M4kCLI60Lc zSb%(s!1{h68)K~yfZp|6>YIp8PEHEGnp-36j@?9xRb62u=u8iQ4^Dl33efFtE^V0t z-+7?a+V0qyLIP2@lt4_Pa$npM5eNK39699jwRjw1VKbWtDtm^c%o5Z!FQ8h5QBuiB zuKd+GBF#bLllpvrZn+O1o+qO2113dH%R z59FwiB5nX^(Tx!B_yd@JRVkXe*wg<30jsHgihGEvRScTI;ILzhKYSJ?_k(2g6l(Ys zCkrwGD@iyz&jw^_u$xg5v%XrodYhc+xDu2|K%uB_p@^Kw@F`%yfgjDN(2@gtac&BrI| ze?}h22+CG4^mn5(UVz5fn$ht}AwKK7nihdRRDu1H7e8Z7zh%oQ`qH0EAB`{yR|6#w z?9{wl+acn;HR5lwKm*dDQlw3mw@+}zAxAoH0d;?GY+q%Gj3Xh!M!J0N$#Vd=^bxO107(R zXLun|_J%MAvO<0JLyL&f7LBQfG)_K0^8bwFRc#8<){xpuY-H=BW^BOMj(&6%d{ zz-6gTYQj={3N<4oK)JF2`-|U&!DvXsBJ6Vj$=tSp6M`oqiC~|A%pTcukos;0<-|NA_#e6YJ@E3?RbA(yRe9^mQ` zL*w!4)meJrHvO7*!u+$JHE@x(e>+5H;ghL8RDVon>kq09CI9fs5GoYw0P}}Jkund8slMr&qtikVV zqRv6Ec5BrKu&6hc9|sjuXk*fGXH=zB{t`WzB$z`9{vSno<(nVi!yu{KPzLS^_ZESo z$KDBj07RF-3qLW&&Lh?-C3)>x$i<#m&8!*Pl*rD)GbE9sn4$3qeK+8;XG(*Lt z0+o>L?+Dk(;{aMYHjo4u1jtLJ2Ra*dN#Nc)MF^aV5HBn2 zOKoqCDn~%2vz?tCy7CZIuDdOQ+fO6Itc~X^85yx^G6guQ6>el_mu0364!>3eB$JBH z3mm&b>Z^izXc<)1n%p2@P@6i*&GAjHOqfd=p?>7Gm`i0WLuR~J&eQqxuU9!+3#{u8 zUJYm0kP@Gn!=0BNF282I(b)=NQPEHnM-?#*?AbK~hRqKH9%Gyk4>Nn@+g`+#*Iwj< z-3?E-_|AxsOR6*H4dH29bu#TNY{agM(tu!k=gJ?;g*$%5!VXN;c>WzY+9&P62_1Dd zgNj4E&LnVxfpvqjys%Y88#cPcLACX`f9tl?060+ypr-VJC4L5V8WF@RGd5W@^iKqD4PxCikFE%7nA%%$Eqc4v9pk= zmop247#ZydrFx!VcU$+m@+Z%GjCeZpo<7}!pyFgxhAUgVa(6EVlZYIGd@0Z`OERs9 zEViNU5->2R799yAP{nX`CmpHwChWEXV)6O3Ch)7U^~ztA$jiGOiSIy&K+yFe$n^F0 z#tYD-E2uPDk%i;kPGLO$;^jhcTRyt97ags82Hrq99a=Z#PMY&FbBz*Cly@VA;cR7Q))&I`};mo zinoJZGl~^?`T3g4+anZST?N8TsYA9#`ncMKe!fGp;T0YAb)RHS7Nu?P-|fLR#O(zT z+5EwGJ9+|&f`<1Z$HBXg6^;c|-utz&93CMh6frip9>N~4>$|xQYpc7Xy8KZG&}l$? zF?w$ej-A7~Z?sB`%efDBv~W82y$<60zRMXEHQ;a=1F4XOK$W4IwIhHb5bWFDjc7y0 zWv0{vTRyf|5Yb3N3KS^10Nw^~CaOFu1L%|#X@Qbw*rR8$SOhNJ?D-79FuiGy#|l_f z<ZA`&Q{S&YI4Pmkf@;h(E?pg1WX zVusI}OA+!<_840zndbuVQ5ppurx=E1bQ-Z?<9M;@S90Y&{pX>MNprwtR5mZ40$JSB zxCM{)!&cd@s_>%uM#TOAXsW(ts}*lJ0t1{kP$03fowhhnYnWezG@g^4?J_VtX;tH( z1l>!FHyICLOjHloHXUp$Ai1(Bi(SXle5)FIjMzMobdS#{&`3;Phsi+FSxPU!_e1rz zNw5LRvq9TAkzA33s&{`}9P$=Rn9i*W=}MfxfeHl2g42PlPtbB7i)5*DX$3X0!P9Cy zA;jsB@BLPRv{_&hj)rtX;Os4a0f}c?ha1plAsU`zen^uOj zjNpUTTsnoC6OAn`nx(w-zF9ndb3pbrh|)fn($xFrG6BT{fnlzHLME4|-LRa3Q%rE% zWm;HKQDIwUpFL@dxsu3=yp0|#RS2e!^~{^@f3A{Fyt6(2PB}ezJ)Gz#AqeJbKG&6j zs++v$8OnI5Zobf}qrCt2^Fh$ia=Z3jaEp{bde491r{RO*OLu@6!sTp1D|FRp^UIPz z{iIupsK3Q$8bqYVbR)kDK6?*+dri0$F$WWkCR*q-VnPhQtFl$2!cW*5y72h2vPr z0;*dab4J7k$xo}utw0Y`py9@Sw#Vo!Nf5PFKcoW^=?PQmEs~Y9$+3*2Nod=UCu>}Kf~KfLx!{ zKLvBz3)Shi>O&QtjYI%@Y+o5LGa$4z@0#bRcey*G);v8hft<$os7eG2Kp~Q2C?90f z$_A*s3h<1B>Ur9o4m1N`(vqkSAm{a^KCapA-+UR0F#DoCVGFv&%e2IR`NmJM{f+u4 z9PeCM*=Iyeg_U9UJ*T8uDtNh;dly~)0cmf1fpiEGY1=TLrS?x#ED5y*t z%~g7pgl_LE(xad|`HZ%b0RlX{h&BOXGEm7ZWL^>!%3y98qF7*^HuyWkt^q>1^lqrS zfMhwhqe2)qHFIh{-F7}y=zCP{1NCM=D7K>+oc$W`U;8X=(G9Xw<3?U2b3(ltBHvJ@ z)ALC!e_WhxB&t9f&Sb+S&Am_ukb?F@L#32i>j$XBKoTQxutTuHuXVvJ9BL4zV4YV; zUrUfa&ht5%KzP^#02EFpjbeAwWxH>j0#>R7cF-QrDm~u|M#Yl9#a!~<%$6{Vwx~=w zBh*u0o$lhaa?RP^dPop(rYL?ZO>Vfz#VB`93uZv zkpy3McXJj}522=!ddF>-ej#Eg0L8o3-8pL7MSv)%KP!Ye!Hy^ovmJ2OW_YlR*D^r% zL)7_^aF;X^=%y&ChAnbXw7wnCVQDvVzevOZ4nSgE4)~QLHo(|`s|AiyC$#|J%hKHo zCP6PPXLbhODx^LdmK^?CLtP;PIIuHN>~YdMgf8w=zK|D;a9JslAMTN)U9b;yg+eAO z7)8B_Y0*&-UN}a54W3(7TYD?PqGcnnuNzS*GC(qHUOwn2AS()@?ZasAbqhEnU4VkJ zo8N=nf!RG2d*!U~MA{|&}?Ew~ZP zW7sFZ6SiaI*!n@0@X^GSZ&6}$`=Au6j6sVLLYq%5Dxrg6Nh@;)#@hH4=E`Bj+GFBW znRI8t(|AF#(LG_;eIPvuIhZp^epg#ye=4X0;ml9Ok!%uG6yRP+^Ms)~}=;x9A zy8nrnw_S-AhKlK@A8rcQ&*N(Vm#b=Ow%AqBYnTHgkl+VZ>Eu0)(R!{dCJY$X>lE_Z zMn^O#;D&YqwBIKLsA0MaIk9Y(3ZX?v9xMT0p+B~M_OSmA%3}#4fHt6hD{)}Q&#I$u zOk7+*>zjlb39o#xd3{(AZjU$sD5M5=hoWh9TU(ND<5-qv1u7VVNG@(<6!Sv=-0UZ) zp4kK5ncsE)?Z>yvcJ;LlmOzqV`Qe4HtzSP(e^`qIGYu%qewI6*`r+CObZuU(WEk1Fio?aqmE2A*MQ&6omIq_>ZO_$f-s9MYRQPk&H6ts(&WsB z;+-^JVd1=fqIC^_29sEs#b6`|6(PZcFqcXl(_OPWB;8mn>S2eT-lDp;_8Sp|^PW3m zIXKKhCK}H}$-;I&@8hm4{O_lnbe zggvv&jt3YZC=PRX{=qSLumtkjq1Sv>W^rS$l$mwVJ~}C8#~~rV zubzMcolm{JrZ4A~_AhKr*#Ixf01ujN(>9*f3UO0`MWEIJ_P((@_knJlEC4&n#DPKi zHMht&@Yth%etlc_o>M-C@kd@#U-ud(y6V>tmLyuvO%11&K|0Gh5Y-ctZq0gP#LMpr#`cl5Kw|59zUrgOd2? z(=t#^miHLjo%V8DF)FFZHfS4{R*z13RUvI3cRz~b=hFAm?(U1y5%NnRy?Nklpp9}~ zhTNu`GgJ#esNvXDxP3o0#xH4}eJ7o5WqQr!6Y@XmQ~Mdy zU05tUrK9-LIJ)32iY#53PR6xYXz z*~)`w^=jr+OwH@8EwhI&aRgQ*3O{`Ey_3>rGrc!?+L`B@8<^+1D-yr^NcYfQ^5yn^ z*4Udnx*&a5PRM)8bpGBq)zmyc3x1g=J3E`Yng}oM>}(+kYD+g8)y;m`{0dh3j^5Fm zH*UO}yDipjtLEpO4bM#0;M_^)6As*uU@BL`j!*Ub%#`|t9ogUb^=P#{9#=QlX-XIs zWMw`ia47^Vgm`*{n5Lm7GQfWX=nu3VU=t+VL4yMMkYOtO&A>}ZzV96#hw39(2zF}9 z>0MgMpUYLV22y=9>D{3uu{R~91ns~5LKPC`6?7Ys$NWi1)T|zIVT}pZ0N(v)I|yM= z>_$&L0h-fs_GG{de@5M_OuCBL*Qvaa|~b-D1Bfbd42@a9>i#%_+QUt97V2$ z4iAkt=mau7PZoXF(zqV+m!(w-5FNp}E(Ogp1ayENRvq>B^sPt()Neb;M4;A zNIow>T$~$4AV(?ua=(!lXdjb}s30||5;nRb4sat|g2u!}$h zy4rn|uH0y<<~UVX>0Dsyrn9qV!|E zrc@%6w~bqu5GSg6L1wa8q_?!d-SRdASfTM~Gr zC_0>*66y%Anb@`v+i4i1dDDgs>OOkSwy{Faw&z321cYG4NXsUA9<0&6piK6X@?RvZ zmhW{E0xq~ls*9;*e=))9WK`)LiQbi;ydjP} z623x9&xlrx`;$ofliKG)#jA6@OdJ!vJRMa})2eriahnK`Hu(ql_+&|hu3S!-V(*y- z(-)@UWjoAGEmL<`A2xA6y~o)o)$)jz)-CgUW~r8ycH!b(OL7~tw2D6M9aUgDT{yk# zQO^DQM~8Cz89hJxS3An<$YK74IUD_lO3~{@tUr_ z(3R%$aHU*>mzl9~%K72g?u$jbr8Jq5Ons4TUBArLwg!`bWUkyVZ}q@2I>p%|Ce%gl zbU<|&wHDye8pk-JNyoFTGhXvPFa|j?Q^SlI z-}w0-4h_ziTeaVnuAG}zKzFQHNzpxLIOujFzU%_s%hEWz_EHsN^s+s(>{V5hNdwE0 zz2t;^nItMI5dWtmE%(#~^XHUsn+pYHy-Mf1rSdH)J`OIDTw24eGc6qUq6E;1QF<`o z3c)?p#s<-Ygn$^}A$;jbt&K_PsSBC3@O^UDZQOCBVN^>l>qkKWNRMD-b=un61X`{c z%o){v>_Av1fV|5IT;33_y$lKhh&39jZ;t9d1SbSGDcq}!oWmx8j~rri3}oCNfDnmF zttI~u(Kr^=3mb)mq>2ybh5=Ol_~&<0mrzU5IC5dL_O`_`j{yeVaIkF1px(kjd%FU5 z*xu;sJ<%23q&$iMy`Nio=?o9;w5~~T>>@f*XD0>-)nvzELZE6WM$&!ebQnhUr+tu% zaBr+QaQhNaN{*u;3D&;^wp-d0gugcV3&1bY9!}^fMw!y3v(O|`XVbg%dL z&n?z8hgXJaOWr^XabM2vy=R@_z<2V(y*`L17|{A|RKFST59uyBA4gpjcQTx19OA;g*wyjm+MExQNWB5ZT8|g-tfE z{ImVnc1B1pxs0o+xgJqfP%xz{ZE5hFAI`9efRwdJoH40h?I1P-oj$E5q`;et?))U<)BRFU>E&L#=VN0VTHGpPxwHz)8Vm zdI{w;p5s`f6v_I6VJx!VgZ690p#sf3ot+^Lt6bi!ll7WgHRtdWtACBfr3KGetrw_I@1=iI3T)O_?r2>A)v_&espSEH0MIb9L%gi8JBcFaS;r5J&U^ z&tXKXXzUrYGrQK|6J93gJ9$Uzl$H+@1sQZrHx}CR3&NW}k6i zO3bLvnTekholELfwxkBx)_1WO&le|3tXolRPA)V>Ga-_Ku4e=5HSlj5^&0te)2k!t z3)FO3`Yib!nXw6)sZl1s3hVEZxb9(TQCBA2sB$82`(A#=rl@@}X@>s7_8Za|fiLPe zNn<~9ux$R|qm|e3+xn`esF{9l*sFApjk!a`AapXP7MpZ8{ecmabWP-(rGk!aTMzE4!bxRpZBP1viJVlfiTJlH9Hwi;jk$Xyf&;>@G+uU zBMHTIgnCYGORu-d22^PytX?1HmP$;;BybQ$)3KuBrtDco!{UlfG~xxQsHTT#@XMSL zWH=0(-aNE`grosmEbCAqH*u#39%A!CwT(FLpAu%ODqlSzcIHnW&aSRU?nv6Nw$_~p zB_dJ#nU4re(4gH(7p|7`ZDZJIo29Y;ODK&60yh&A7*ddx4Ncvs9}f`xYJ8cs??M{e zx2T0P1n@Cj*)Vmnn(njP-taAmEw=I=b7GXe9HP$11&zi+FerXL*RcNSv_sW*YQdW% z6qEiie{Qv>N z*c-;SCp#ZKb-AJM_x-NL18lZvvDWvgWtOr4%MdtH&u0um`N{sBmzE=+b&xUhz>zTv z*jhjBd)s)2@C(UHp3)Cs*aPL;b}ANTAw~rZSAWF^&+;krma`Cbi=`JE*OE-G2KrQw z-)v8sh$LpM1&rZ8%_)&QajhiLp4Uym&MZs+up{h z$o&K;o(SKb6!oDpCcE?zWggBrDkQMw<#%Ok1Txoz$z!aEd19B%iHns0M*}PeKuwbj zzJenMSWM;tB9J1=xxIf<#ndF6LlZ(KG=$&C1?`10Gu>+>jU#TqS}*+%LzkZj2WI#& z*!NR>WH#&E>!bv)$C+8oWn!7ll90pO2%nJ)s#h=ib=zNbS|Y1B5;A&`wue7M1;u#Q zQz>8-7#NtT_)Ba=gh`Xj=@)lQ#+37iLw5aH4;^b;;^w!E;g&_-Uv zv^cxfIM2&^XBivuHYQ`dgcF643Co>2mo(kncKN-4+L_$qZGm>JyKH}SV3fPqZB0CYU5xxPa^k#Bzvsnl|-fM}Obf3inN0{k?cU9C@GJGiBXgXcysH*Jb)USv5mo;w?*8M%tzABfW5cOA zu$O+OxB{98A)Q#2Xs?PBVp;JT@`p8x>y9`~(ZcIoN)B{9S}3%b7*$;T>Hs%h2KU06 zstyd#OkSiYz{tWxIf($c*6oi_Q;}q zV2ok&I)$g$M&aemuHq11(9ku@j0+jY;`DxoZ|(6mU~j}f!{U`g2>6AN zXymK|$~31-sfZGqp9wwRtyF4DKRY_PY121OT{d}UTY3|GI_>gkhH74!$|rmfuGko@ z&)G)A&5g7=kkbT=cRs!=8idbln>#dOskNN$SjTd|b+*PM!2UCtxs4k5Cx;#cMy{O* zl#*43SnHX-@EH}bY&lQgFyc;j9)1c1cE3m5eYe$ban7?ENXh1d@CDW{)0LVJ3mo*V za44G;`$3@IH~GGzqN1n?QomCw5#>-_w^-u}d6>&g@StcRY7%)l7VXpg{^h8m)piACBSbu~Hs-tTN_tHv-ri3xG(r;4`6_;kt6o*FI#Pd%T zLc0F`Tf&V50mlX~wNzEXAL|+O9M$r7EIHS_msuWKet~XfS-1hZCa2i7BchiLmC6v` zuoR03b2g=8;su+bBT)UjllY!|fFm9TudsER4|V$!zLcR-gssg#RxC5xGF{x2kU@ZO zAH%j)MEwXk(zkIZ1wdCE+a`Fw@uq&BMDOml+ao%{m`2=+vY7eKe4hr0(cW%^SkM;B z5+>+JgyIeq^<_~-=0R5B6tSXGnw4llZW@n|oTZN_@WVr<{QN>^V2)w-)n?-?E9bxl z%%b+TY@%U-PC$a_C3j7!9RBuz6}^vLTi-Y^(*D;ieS6Rgt)d$SdD}u|3eWbEgq}qN zmibQOO>^o5eMDumf5M8)bWmGCUkt@>~d7-+1J$>Mr3cwt=}=n7kfE& zb@o9l4}NKS3$$*x%(+82Kib+3k@rNca~8igjN8erTE)~F16jvp5-?5@8$5hhpE;lB zfa^S|QpH&Lp*D>do!(qp?(rbum~dd>`KrqKjWQydxb2y#49dvG4&SPij!NW{#@U)$V4pw zmV#Z-wf@{{saxC6`PsV_?n*EijWd}p@#LPv_py>1F1xvneJ1;MwOMe&uukT=CmXLL zE~EH({o&w1Plk?lr};giW5~64xV&0@;d1qb{HTyCD?>(W9p3YKih*?(O>YmE`PIK1 zCi^2T*6Me)3~>tfzlQ+Xj`c@jFher)RB=W;9O4$hm=F)T22-q2Szc8&wrFux<&6`h zI%tZ1Gj}~25s(srZ*M7x+=-&9#-No>w#8XN;ufS=eMxTyOK0R|K+?zO1*wNmsRlX0|c{zgE}sp-td zI}N_-s>hwjI{OOReT$v^*2ar#Y&Y}qz4ZjlBgz}gvGDFHrxO?Sew~kL@mnavG|WWj zw(rN^gfgahD3Mxon|$!%40@u@{#oRQ5vl^Z8b-7&A+W<=-*u|_TrU$A_?&olxU}Az_Z-Ub5TFB z?mg2 z?}-biRhSk+XMi3g0S1xn$pU?;E{ogBP(X`(Eo!Em=3T&*#b$>7s(oSY z_<((5+5KajoSbdXaiWZ4F-NeK#X=bb#$Rrkox3-c_)_Wq!V;uoF z%9^j(7*q9Ruj*A=2~oP3S>iU@J;_XaxY2GgpUmE;%Ls-xuZ#GJNyN*VW#S=+Ry!#@ z)0uq2L-mq+ZaFwneUG<>sWIj?=bMH}EvP(7oI31Bt%n4Tq{+3tD`m{dRocOhzQe!S zbwSB~!4h6Mj+fBri%Ab2u}DM$bP?pjs>khdh+hfVvSoW|aiY1YdU|#|IQ5UPRE1q$ zh>{mY^dHrV{e z=^!6+iQXhYZtJZcDrK7hrF^GHkY8ktJx@}GZod1xtJ9RmJ3m~*jH{#0T3qj5_#0T% z`2HNPuUGS#{kUl9=IQ>^s!*IJCyNXnbb)f0@k1k9JF+nn_Y0+W;usZpp3ZmtaypT+ zt+B*W{ad3v3yW}>$WEm9*V22XNVHf->l~H~Sxn0>r{N$qlofw%q0n|%T~_>e6d_p7 zVvXP5f%}F)L4>XZCnOdn*?Z9&hDNtyk_3-S`nedzCBjC+br za5-=x16DC^URKKE8p0bwvg%C?>=W$rm^7#kGQu1)eSE&@3g3hS_>kpkMp-hn21(aN zICRLU&4%)#$>3^`@B>4yt*KhgB#*qgj)VvRfGW!@GotsY#BI3wXK~<+oMGzC=62=U z=5=!Js;^sH&FLk;Io=8JhJ;oHFEpC!L!G)xO_js~w~bacVdI-iEgz}b6CmGp0d-pB z?EG=V7$KWb{qKCJCL#1_lxrjyjLw4`q+QzR$)l|M^ZH57m)Mp|R6i4hkcXD4T)Iz) zOI`7`MuaQ6d-U*~BxCU%FQA-=3V4l(2G+<%K|yn9x@=wpb55%kIMWsiQYXCD5hd7& z_suX|@mhV$AkkG;g*1d3BS6llYy}_Y*x^VQ&gpDMvuC0js>-jIhG!wmE{`nolT_I@xQNXHca;kcNx8q z(!zJP(Z@QYtZ3D|4-Qr5O@h1F`&6z>w63}UOodWp_)TfV8GlN#x!8&sO6 z%-i}$;%miSOIgP8zxl@PgD=~~l8!`De$+R5<+j9Euk8;}#E&EuqYeNdNK(B}C!pU6 znw*=G!Wm-&jq2f^P=dN%E6W`kF4G{A97tW;hhs(TOI<>-w`=)$(W1o|C;Q=)f=*~l zcs1kB5lqVC1?uwN_8u(RB5Zv9)YTVSLK>@KJ{7a@jnOa2HOzdUATTk50?H}CL%ZmY z!g>|o^zEUGL1ZnFxFPfX_t%YM5}9MeASf9tH-n#BQ@v)JkE+eSAp6UMp`4OsS2*wo z>o|qmhK^pHXnmdGb25Hx0%-1_o@=mU!3Y@Fb1&}e1!WVn0}&YYx*rOBSu+x!*<4xg z?Mlf+>cbn@kk-O-xNgUe9ci16kA4moh(z;NRIRIMi8CB2o|!Lw9r|#l{7Q}(`oo-6aWScd53+D z*E_U}vCa!EpDO$`KGbOwtcvs>)+mV5(aV7i2rnX95CX-HRK+klAK|<(EP3$8L%EFj zq&_RgNk%w$Hq-8;yjmqyhi*AKU3F3H$qPlDs!}3+JM$nXDucC;q{b5s-Os30e}{j; zRiPmQ_61b5#M|`l;V<*ITzY?FbEe#2>(1U6ZP=0vSZAGuTA(~F?8_>qGnOn2nXH3_ zcntz@)-2t)cR9HbNT}Y0R%S6iWl76YoTy+Ezah!15VDZCxVtQiJ*=!7oO%tbtoT-O z+hPkS*#XwK&hk);oa;>thd;X8;U34Sb8HwQ7dfu-s}B=2=GaxA{f;b2?BPu86HN?f z_rGpo5^mEKqe`k8%*sz9%^M)*)Ylig_;oXfJP$A*S6+Ez;v=HGLZGFlvhsez(LI!W zexj?3TM8(n@6Vp)Y2odtQBBu<3xj`{L=&IW5%M!ziT3K$f3;VPH1kO$qh?R>fIiZF zTGq$Wn(HVpuM#H^C5{e-C+P%&+ZGAiY5C9tLr+GBV-Jp_w{PEac-Zc*%6HF8`F&>b zXSqLRms3VSc_Y3xV{)7XX@KwsEg}t7BzWMYAAa%Ajpd6oc(7;-Wexu0VdVTC1mt>` zAdrLj&%+;tL$raT1c6p}fB0o*|7rBDaUhzrXcW)7zt?TK1oPgG)${I=k6}O>zyBwk zYwv(tSd2B#&P=t|eBB&M#2rX`cj58S4+@!!=8vJ}TJs+*6;Y7=+rW&B!M{yG|Ltyy zY4C4%(|?VtWIOo(HcE2th`FeNtBniq0yHxu_Aj17xlTF(#4REUMc$+(uWyvc<680z z;$P+xEowH@Pd|6pMCA6&j`3#O5hSW7%tyI?75|2Q7uOeD4Y2J46ZsYavk^Uc9;Z5q zs1z0dYt?Fpmt4QuI^H63a1y`3jlO=O$VY~80Z&NmB5=SjeF7UfbMm6ufx+3VER{b8 z_UzlYfpqASXiZ*J$T@@5E)wO=dI|mCxGRrSj)NX3-#TDSyX#JKlu)J?oYEgybwp_e zPHPyg5p4SVI{-3g0{jk<^9sD$QXpsD9JE40BCZE2h@H}}BTeGwfPC}y^9Zf@o$6jW8qT~=?S1)>8_@j#Inetue$ z@p0d!#Ia`hIK7e@dcce8= zODFJa)R*nEtPi-YF2%si6cD6}I-A+h*68C6&e=TT_GhNQDb((Yw62G{dv1SK2sYMcW7f_K%PF4u|BfNaIar z^Z3b$PYN-~6GTC^33->_MVtNg8rdb#C z$blpU(q3!IFH_+y(D=IuWu9)r+;d&nMDEiVveui-_WUy90GPZ04NB(JvG-6-Edj0L zh6)e}#pAL^Dq}qBL7r8o=-}m7yr>zLf_(QuCP!>t#k-EZXWhM)>+CvkVCekl) z^$b#Ul2X=X9==9I&&yvXnMjs;l}P4k+OYL(=c~C zjiT`G&0k6EL$IXM*%KsooXsU_zw{U$pgFyi{wvTLoaeR^ECp}dXlDN~)UaaPV8J>~ z{MLFPK8B=t!&2#W$lB{=$o?j>V}}*gEgFgSZ0(9okm;YpdgugirFHg9I)TmS`u82I z0Au-tC|{dq%CB4@@(DJreX4CNEyk60s{(p;(r&gK-z#)% zO7ni+<&NHUibLs^GieUHet|rMB&IG$mSByyU~6l!XEM_lwlIUbY}q* zmsHkTQT=?uf!6H)5hBT1Qhk`@u0nb&1n?t*F@@g^bLx;ky`X*}L1WVdzHu>lfi*MZ zXEf7}8>tYlS9K;?zw1sVGh!M~?t1VbxtXQ=`GKhFfZa^%&F^vwmZ8;M1pA-vE1z|o z^Fr1c^+k6A0Yc_VO7~=@n%QxI9YI`d2Z^_Ty8$IV^rsWj`eQYTB{h}t8p|e}5^a)}f@X2)c!#9>! zu-xV>g2xSb9>1yQ8%iA27*+gXh=}Eg1XOmui*WnI3r{P!qtt>6j!Ra_mkk9H8Pq)v zVg@&YPHu58#;vyy>L0+qzn{sD7}vkx;J?yI2UZuSkL7l$Msx5tb(0qf7bBXi=%3 za-VIN?d=sS0QBLNv7e-ht0d;O5=z|d>*>7xi z+zr7Vq%RKJ;t2lE4fj~1+WYNki{UiO?VU)8c(H=A-+J!rcTFyM4)2i_4o|mgiGqU_ zmN#EZl~21HSV3WbzuRW#?2r&onzSxB$(>;Oh^Q|oIXziSq%%BGoq4VLWL??E%Z0s3 zQ5_`k9SpKxiiZEp+l8uEST4oRj|HaCpW_Kx4{7C@{bMle1YEg-7c`E(9C=0U+o~e< zfh<6HKR?~Z4as1{D3zA@ZSKxNjC7j&ALG@DpLpZJyh7$7(z)?T`D|ag;r4vOBvc4` zzBxv_^Fv{SuWM@mE4Juu%{_|YU5Bi zwbrOZ35YJ~^C=tJ`dsB^<7?zj9IRlsH`0mgULZ_~B(-?=nYA;|?h6uUc5n@u@4ei} zu_((p_TYFBF-RD6<$3TN>&}RE4aLsB_A~W-5atyljQ!7Qjq8 z$W`{Po?9z<_sE%jdUuB)__mG~?ni@cf=cQea-#nE~c#9^<@= zGtZLco2#Nmq10;5r&Mw4O{j-h&~ zMwisHd|E)bSF>Gh6JToOO19+2&~GM{G|@x0EqY8_#0hCeSPOlQ{%ClBX5{z zI`L+Htix;{$weIP_2+Z8%E(8+-VN&Ty4&Ta_u^nllN3~iBQ>mA4{;u72xsP_A}dRM zEa%uH;nN*)n*PQWDi#KR0T%(5LcCE|p2y?iugJ0`FVby_Q&7blEuV39Ls40X>Y&@k z7p4kEm2j|9Zr3QWx-&))T%VBI=bMQG#C4K~-C+n6${{!!$pJIPn=NnJ_!{cLG%FHV zx+=4^G&iB*Dmf#o>b4-?!-Fw`I7z=&4$c!xMv|lbV|BJKXF_!AN*bD9_!hD!;Kd4} zJ@K1N_G2~{-eV($4Ya2%w+CZnfG%HXvV+4XX^AzDeFu2Cd=jiw%jB&{7@ttc{c zCI`7IcY>|-#cvuYc2%p+#J?pW$V3z2dibE)w2cHyX!`9!HyGWYgrjj4!HuYo|4cwE zp*1=mb8}j0K~XsaMvV>TLycyx&L&}m{2*;^&3ziglCpg`jsX@;;21(z6F)H=;Qe-J z`B5ux#PflzY61(@*g#b|xj+2I>&(5(pkXhQ zBr;9%Vy)Ey?Kt;NR@C7TTUEF8c$B_r)QOVWLss^qQ8aj`@D-Mk_>&><`G&P|$LF>g zZ0p|KbW7)_e|+#rp9+mqwP;^khMpIdXbxPIXW5skFPb?!^~=Idhh?VDKOs8}cN%#! zok5J+uIljgtgYjX1!c5%bi7FUnv~j(s*o!w8euM{lf2@YR*hNZd~cZthYfq~dQHEb zN68N_H&{T~uUMq=j0z3Nc-vT6_y;O)rkppH)`KIE925g|5~va-IeEMK8PBUwXh$!Y6iyv*CinY9L5f-B@+Mm@4IN&B0Dmb~O$ z?0d&0jU+@!i?f4$dyu%nQ1Hf4YbweYZDUsRoQdV#(#-J)qEK>05O4944>zWGv~hqA zw*#16I%wswav^ZdgY4aAp5Q54EBc?;yrl(X5P79R_+-J=P-+2Ie+R^r?LT*SgX-!; z3N!*-I(gHoyt<;=D>_ljox*IaNC;zE4@77Irx#=sHg9@Fm3Jm>`{BbqunN9#YL9lu zW2DW^L|FJLRi_`THhg0Cg-Dz1u;sTwI40guk-{n}w9qcq{6wCUrXfyFdQ={T_VZ-= z-s_gKeU-)3XNVgIGT)VGRmIyx!~;tf^@8mkAH;O2B8_^Aw*7|6Gcv8L@r7OMF4t17 zA!DR3TuOZ|qYjFy4C}fdO{#~xFV>#>GBnO7M4HYzf8{sk>1PzappRKmlkLk*_m^6D zAAmP{Z#-jBx4wPY4*`F-=k+bK9N`dte6a0?-9SqaT*c4rpKVGSiw7+ zVU+s!*b|`JZ#(R|(HCxoRHADrG>Wp!+p?T~Vgz^udF0Bs9$wX2piWG0DmuK;tt* zWTtipg8o4Q?-Bi0r_4s{^B*5AOt%eAQh!Ladj@r$9Z8qwD)e$8Tx=Qw#95-h!hU?ecu!#fhIA_xRS@WLjCPj2N%*9@>2%f=mC z8jKVKhC|qfWI6lhQS8JQ*&*JdeY#sdJ%;$3@zHc|a}-cQAfycz-L=YTUYR#skNq-T zgNYWBRfK@>ZpFSyLMh?N%ys!S9a>dUzUkkDrcYG6t3q~R?wWwJJ~gce`b3SAgy--9 zE>Tr^g9s9qN)qY2lJ4a@*t`H3l{ z9@YD0SItksWIl%s$n@D!QitM8$Y~jqy_A%$X#y|7z6h+mSu5&1&zj@(n4G~wrGq}M zts5R=6iLxB-m$KHJxup*cp!n5rDCK(kHB*uC#Qb@maF7vaM?)PzMg#&9q%3FK0u>G z&Ij@@m#lh)zn7MiTMHr26vhE5`!2;LW2iE?kShG#$~kRo+i{_N%7VSy-oMB)szez( zJLyB+H(CH!42jER^ml@uaWmu2Lch`ev9k)U;3glU6i(wN3vVTMkR^QzV)#AK`w-i7 znSJ+FoMYMS3Fdp>yyt8jG_=9umh%I&CW~u`KuK{pZZaio-$*8RfC1%VnBmUVqPU3` zy~_bB_Z)XkBcVR$Jai9u-q6sHG)2P7nPvK-+ZD30Pwp64pC02Y`J3Ou=0*CWsAGh=YQe0%`jv8vGN&OyP? z34I^!UR!5yy+gZ|@{c)1g&LKztTNq_0;%bvWv}+x#k*~OytPlllCd3VFgY6PcG1jJ2>r#CAtc~Y0s`;lB+_P zgy|{&Y$5xx3T+8vN8+W_^~i9)b?e|MWOve6~Q?( zRN7I*-{U$Xa-KjDp>+eT#hnnDPt$KIJ60?84mGd<>XOJm1DiZ|C1NPp$9J1vf}bay z_4L&;^~d@+c{jM_$FztRll6(~af@+&rz4igkSl55Tk z7V=-7UP3uW{zP0y1Q7mgUPbUW{5f?1w=n#he>Bi%tgJ8Z?3u3rNI@=-hHlkoupNYhiFKM!J zP5#HD-u!K$o$sq1d*WcA5W9Tfq*{FDj^ z8D=h#*LO3+jrq?9wFV5Z1peOTB-kI_r3Ri(#VSxmQ7f$MayQXx=zn@c*bN;vp?lC> zzl-YWSp_(f-2_RUhuPp14!C6BTH@VEPfxe*`1`9lymV9C#821iF2bgh0i#^f-T`d8 zMYY{d1-IFETTkz=qVBn$p&HQ!H=OoNQX{pns;bJdXpxObrSMvgR%=R>N16a7Qat(Y zHx$#ir&|A9^Z~oPpxM297V336S5hq$w)06WGA}m0xfEC5q_MQFq&WMKU7Xdy#`$}w z@h;3%7mD4zJN{cKcE5yBzY~drYAAAeykKN|lAv{3xQ@nt%>zwY#^OnmeJCsS2akz{ z>XuhQWKmW1_uv0GtK2tYep~>DNfR5QBb2NR7bsg_E!;QFT#)L&3egqm_B@D$h*@)d zx<}RTarBGNJ0S@zA)W$hG$i)o!PP|e`($5p#Y+7n_SMNapdB>1{ofJF1DF4U2P=|e zeTz78JX?w-J|3C9}m>e=BP~Yg%1&8HqtwX?eDhe9`$*I694BMi51IigV6V&-9eUk`Vf! zscn<9=Y}Yct7_uRh@xZi9DR9;%nv$0uAt;Ud{*?;s+Y73;lk)@F-Mc|eVke+EMYIl zCksAtv7#M|ruRA&E_m>o;r=)smsF(lx8*K<-Ds{7yKe4n2*=1}3Q#=S+HcQax_>RP z3hT4r{Hp|c;^12j(LK3C!7#Ypw-$k_Y~97t{Hqucv2}t4n|m)FNH^h2a%xXL605_F zL?Zywf=dofQ{>wY`-ms&M6dkY?}@xPHwbH^J}+XEJ?e?2`ADNqu(p1FAieHlnT5oj zwy3V%?=YX9W7ojGl&KO)_4i=fILq~!0f0#D%V_JV`NvT7pZGEqPgF9J%@yyr^{q{Q z;3U(V7>%uAEpr#2xn`;S(av*J(-(SSCZ#rcMzSps61H# z0j4Xro75WrVWf2db(+$qZtQB9yPU@b=*(FmEyEyCd|o&jXk9 zd~ZxH_>hYQ&}V=Qlik(+`2_3)sf`N3g>DkBNbdti9~8v6F&tI0diA0q@SH-53#ECB z`$tNxl&RgdEtC3nK_s$9rEL;hZTDv%&Rd|-|8g;)*q6Ka(3(O#GDof$ zo9iTmaf|YT%A^0jI|QC4Pt67Gl*}y4&dwgFBF*6)rjVB7aa=1Q#AEFzotphZkb~1^ zgb?|aB-#mN?hr^3ZlsaLd7MCVlPFtk?KO1ql-iVIcba`jNzfQmwyj-s9)-P2du7Ja zou@oVkKG|U@ZbTA1ww`g)M+!Q3SayEVqt7-m)6J{z{}F_lY<<P~~9W!K3Z}?h}#@Smt&_#EQ?G*QOlG{U1?^rbN|w zcki*9M*zPna8c~sY#a=xfBXC!7r%~k89=~^^eZ|-JJ%eTAC1s^V3GJyq%Q!7UiIIP zoKGsb{BS4)EGM2DVRB$35-x7J3*=qw5`S$?O$GYV^%d1YFHu3F$AL+FUaA$sYbpGP z=kdqYdUuIgk~DC7MGgXr4pwI+whPGr%h`d(mFzy2BI+J-^F<1lx)wPiHn`_wB8|gWWHWbtelwr{-HA1nNQ;Bpd=aG}sNCqS z5<6~;jZpKJiDKm~Qc~(ynTUp(-djx8Sl~4c8wBncY*0H$5~^`i5=9NbAT3#tmu>Rb z%Tl1goZP#JTnjQH(v_|>F@b_U4cR? zl3fxuS{bR{mmg;0vEo=n?0>7G3{<$Azf`!tF8W|veyZVSMN~|TPIO9USLxhGGZuWp z?FU5)L%+PXVNf)*HvAd@8%2-bp3{7GacTvHpD@`p@z~sG1*gBioc$s1|8t#LvDPeO zi?L{^T=Y;bXv_`p9AT12w#7F_{D~K?EUP!qE3roY0#MS%Pd{C7et_sAxu0S+6)s#z zKK)};eQ}cnblqwaU4T%UZH;)yLk>8BGd%!)3&s`g~f&7lh&cm!+9=L$?$9FJNiB1 z4f%cV5D4HwosT594@FcwGMDn`#*Pp2=Z@Bfz#{wPBEGnQr;o_t{H}U6E<=tMjhoY} zJgQSjm5+kA^@`e_+NT=Dr>b=Xr@(%)-8b>`r}dUPJcv9&YQlfqCvSbZPYzLs9ZUwL z($#Qzt=_$cjL})$c||Rf3tjZ<<8E+-=?^N@B?i~62x!m#M`csn|fr4fr*}!C3BBzKgRuh8t>%x5#%Q5 z+TUyO4g1br>|W>Wp8PTTj_mQBt9M7pqV$q=_jgRMy|`)PMyJS@Zk9yUp}LD%U6qF1 z!klh$X{MGk0{L10*yb*^8~k<6-G)UwZ8P)UbilVPn%sSo)E|5Nk!r|^ya21=wi(HpF_ZrBm9-hj}1Y_{!67@yYi(N-ntmJ>j-h}96j=I zy8=B9?+5wy98aq!GAVyEfrA?MIgE6#=>Zv%z~;luGtPWDN50%++`fFI_NvbxiO1C4 zxtcDkN5vet8$i>!w(HudPEhr@dnLkVf#(;+&m=zg62{d@Kys0u_*#KY))GFO(?^UY zG`ljC!~Xfu+2(#TyBAWl@8ZnH!=Oy7M8b6k1c7}no=xVSPk@P8131lr3K2TVm8*^e zNZx_N8*2mPa3ISS83M({YZjyP#L+L%Rfp^9IdqF+@-M2j<6n^O{{-p&9g}~@C-{kT<%EO>$v>g+@%161#fhdLG_G#rL+IbG69~dy) zzeEP)CW)f)84y-Qub?N3!G<`H4(|kXMn`t<*BnH26RP&=?5yu)uqlES{NPd=-V-{q z&S&6^*^XG@tuPID!udzAfSuvh-!7w26fSMRk0t0zhIh7{jt#`!R$vxgg{z1n^2!yG zBxp^n!aNwlJ5lun0@ub#sCygVqnm7Ghr6Jgklz;jyT5-&6iDtRj>-s}tAGlu11VZp zQJ7!3!btd3=Qn%iGMseIFIH}(P`1g*$r;k#A41WHA`*?_nv3N55m$(3pB?9B`w1c) zh&u>JGdSI({d|_rO<_i*iInvwtgM zL|?FX^RHL|THzJK49B_9_dpV36brL?CA3d##L>P$novqB&*OTV7UPGJ(?wwTaAVP6M$mbVFOiNI)gG`EgVwdqcQg+=)bU`_rH|cSF!?l=Aw8e+kf3iAIvOZh za;MSwINe?qN)Lp9mQGGjCXAXwHJn=X?wujw7kGmZ`VkCxr87+H0+2j4%iP7K0i3oV zFq$ZraE3H;Nh^MtzmWc>9V9)`k7H_fSU)Yg!$Kaue28)&dWRG;ei$O!*g zV(qmdbTzAxD0s7S#R_z3iX|%~2-7i*1NIw|D4xGhRy3baDTbiA+>ggDLsy4R(qtoY z1+Kas2#NXwn6$s(nS(?iKRwgV^D(%mgfG3PPH7cMu9=gyRJr<&L@inMOu*-T9s4#P z<-}z|L7JIHU4$?>sI9F{s|{dyRe0H_#I#F&w$EPBs_3tVH}`Fi1E_$OOql|jn1m20 z>r2$-ymC85ty!@GY*41gEP^lAZ`fcWzoP8^{rdwqxAx&T4A1=rVo`ai4@N5e<~_W( zs2BNy>({54x?6!>8mb*8j^8D#dI{SMK}0s&m8hoLURnd|Owmw5H=rdUbu0W#I^Lt- z^Hnrh*Y8?P+22EypcHM;5m5L6k!^RMBH48gjf3!5uLK$tRR&x6Hc)Z>vTT2kJDCK+#5Urd@0+@ z7lKKK1pQFx9ttJ8mMr3z30bkuxYE$?!1GF}tt4AgB=diW`CJPhStM^9Az2jUv8w@s zQQ~$%{ZGVn*tbfAgU@5JuqQ|c9Oj4JK2k;}$RVt9ZC)S9cKU zH6+=Y>_NCS{=n=Ilvq`T-!4zUyAzrh#s)IIe8Kuej!|c7+912yg%NOR?k1)j1KoVU zJ?Ky>Z$AHg@~U{Q3S@6(54wUjP$-S=s}5iVb)~9ttvTzZweVJ`omD%-Ep(k!n5Zjh2-lVRZ+4NP9oV z2;4}0{?0%Z(qfjOi>1#5<_+S%x$QzepN?s6#E>38LXgXYn|waKO6wteI@^bMJPhi} zKVFu4bHA48Dj9wVUkKY7l@T-n%e}?S81Qe>foO&-VeZ^!{Qm8u-*9&|j75G-iGy-a zCVVgYnL>B!dg8OQU0*kCGj}a)tJZT;Qx2X8QXIfkfS7D+$gtfLcf1!_LbhK&4EUFT zr)*cO=K$L-goQrA&Tq~wI307|w$)j6B%)4V87b_nv+cxBFeK1vL#@HpS$^9LcnWsz zprQC_3dJ;-3`qc*r|L^Ip>z2~ZeMJ6V3-7H2WjRq%4>EG$^#eyw9z+kT7@ z?D82=8>4X+qRo0Gpia+{XvQXd*9`}6dns2omGRyYpOAI8}t4WK2X%j z?1G{PylC4;KfvNDQ!RCeDlApYCY^ChyqBKt_;_r*QohXX@hleh98@}Iw2>m( z(AmMsojm# zF1(BV2P@__)OsA0S8-kzg2HgQy{6bgchU<7(hy0ti}Vh;*PMlM8WZ|%H#h%<%?hXHx%Y;?7>90BaQQU#fqjZ^K0lR zaq!?luw-vMSk5a}xS`~!td(!yh*SPsqRmMW1KRB%17aM7j>a^o2*;<=rO?L>A^2&Z z%GiUtCs+j?&=I;JO`0q&fcm867O6bBgUE>wCJKox^WqM$l0=9H1d#nMyT1QId=*jI z@AdlhVQw!ae@6-#_Xin!7%i~8uoallA+`2dAsH=cbhk9f5dwQV>MOmFX6672%Jd52 zv(sEdaoCMe@_;K9!MdrpT5=#MGlC5yt+Ry)^)j4r&ersEl`}x4E41^(_M)#;>wRezr)w3X%*p#$%mZBivxD_9U?p!yICMiE#By zGLYDl;r`%F828Pbj^uv~t_Vu9{OdUJh}p^t31w<+JY>#6K(a#qg<~9woeH!gFlAR> zue}E>7yGAfIkCF3yxKu=DR3Q;$SH{OMUe1Ud54~KZj2X9hdL*%XZ=O`R?r@I_P91h zNuv{%hxZ|uY3h!%$qhg5x#c-cT^l6(&1*B5V^Z52ik6N6qt}+d+h0K#C|S`>J?lBf zP?Q)dS5fl61M9d$+dFF}u1v4m<=}kRwB|p!FSTqW7nw(ymYr+#s+ux&`8IO&JE|h# zDl?7^?X9w_VjpVFXYczuP7nv1jD5$57s@Z~&~KcRmi0v6x)^pT%N&6_=8ez=rMAT* zvC%geGbJb(0Io@Vhg;CAAO^r{#+k+Y)3Jxy)mNO(9L)1bdOAKnUbLv15C$;q5sY7E zPlAc$5vQaDXMsG!Xeh7==qH+u81GtpjT-R`mCKve$$T?Aq1J%r z8C29i+L7bOk7>FWBJlF;u2T|yLvS<~P?b-)*?+)GCR(fAGBOQo`+hFCYWiH!ek#kx zpWzXnV?T%T)0o3Ym^mI9E+CM1l^Kc6yV$MeZ75313@(VS{@T&R(JT4%4+U29CcO}c zEo=U(X|+vCbXH@;QL|b(%j3su&VFqqLWryXF@&Kr+LV|1{|_n?W1WI9U zL^*HY#?8}eDT7=(nk@^?cnHo6r=nU+_8XJNXbHESEJ?-X!Ds#;&#avuV@)xQ1b1`h zMM-pIWZIO|^@Mth+`YSZ*VDPnH~dEkqWkJE!iK?Ys#W+=k&`PI#m&UZjcl|f`jx!s zz`w8ZOhSobmD@K}q>q`_*h~KY=9%VN)?WgUu6zHR0EF#xCVmbt{vVS;48^A1ZxyHE z0KedEzv`|c_fcu2AYw&`<6qwz!9JpwN!{eu>2(t=sl3xj=U^oC#my}s^?&T3`-l=me#C>c-Yv_! zZ64_{gYi|aci9tXlu#->4dsT^>Tf0X=v`2@Z&C=p!st5aV3MuaH~x7Gs`YC7^5BQ- z7Go`b`rl+AX@v?Jir;yO*v1711tl?Om-&tVs24hfnp-%wF4?OV8E&}Up}p>bw5B!J zo_rV_oO@L}uBn;Wlf_DTN%{Pka<#s|^po%(}Hqpy7kx!ii}am9!~u_#T)1PFL@aY?)3crQDk>1LYO*L z4>t6=a1}G5Aqz^3=ydtKX6AE@71v%nM^T7IbWmgsR#_T{^dh<3n1t=Q!&yW`M8G$s z9CuHBR=Zo3pti{iq<~jDwL^pu5_QQ#gYcWoUpz7dul=M%iPphndj>W^bivlGGYW4Y zPFkW|Mw~$b1?W+)UHrldXEBM&%^gI?Sv4c0@VPg3Ug^08IhVe^*pCe>zYtBPMK8%w zSqG<4xOHf!7}+@mD7i!| z>)Zhzeu-ZlF=Jup^7qV;!etw#ilms@Ry%U-B*}_dQ^fYVlPpGw)xo*-Wb5PGEI@Xn zZbTRuegmZ&gv891RV|Qp2zh_}0V-fM+=!4hf!BefWej z_j;ame0e<$u?uAOhakc3DEYwuP2Pb^X{)=9MQ{W>rjo!-MCTrf|H~uAm640itY~jh zW7Ix$$9ui4{qqbZ<-)m!Ky22IkZ7VLBb9?nq{~6#@KVt4Z ziP+96BcT_Vt?tzl-)0^n+XJ*gxQ5{^5uQA6ZNQiBczp>uT#3ws%vUP}%ri#i+r9G+ zq(4HYGu_oC{|3}nveQXwpT#ufTvlRN;#}ndmXnDf*KEcp>P$U5XNPm=_72hU<_Ilj zs_}Qdhw^8=$3C3P9mnKfpz`{GEE5zGB6GsGV|LCvIW>2(aT)tI^J|QDs;i5PjLa>E zsY7j_Qs&6ZFqs%Ki;1OP$iB)Ni`G!SgYU%re^!U*+M)Oy^2NQ*RyrvFRyMl1a{s9f zWWDjP3ni>$+U}q$go^}Os6SVJ5jJvoICpLpn*4VaM&Mmtf>|~891B2ZgX32sH#}k? zb`QUr9#4!zj8W+I3l3=Z0wqYb9DyBt&(^Im=Q;xPv(f1B+L`~0z4wfYYU{cNF6T`$zZa{`WY>9fn&}ojPalwda~^uDNJXFHW8wN+P4zu7Hrv8xL`Pz;(w-AG;XgvI{`iPn%uXWp54ivOG0+yjiDYfeDC zJ0j{*r>&-64#S`#$Mj6fiAg!-wX*Af7w%g=-xmAV9j_dQ$As`Srk+c|}=4 zhn6p2o?|U7lCiwswr^)hlCep>iDGEIWmzD(soCYe)+|u+dfszyB1xlgqqhmNn@$FZ zWiX^x^dGvQpvm9`X0V93@&(ub7ut_Z?*E4D1r>h-Wq=?3BN(4!V6Q~Z=%AU8eVp4< zWac?vxso62?86r_4KGVQBCh~+YbXcUS7SD3i8m_g#AUzFy5orzQ^Z;s2mTu*-S-=k zQhQ$63;qz5mJX8~Z(T;I)>J+O9fl^TU1cVhqk)}qp_r}^A4=(O+PW?C^Npg<=oUj= znxl4`wVN_ErAN)nf1h1EQwAxE*n;=}dd!o*PB+)+gy5n}=VPr(5$|E&qbIde{j$(16^P3~TpZo)@iGQKtPVCx--;aLC zIs3hm!6eC-{vg$6!_3`tYLpiD%1Z~Iledk*jNuxUnKP$pmEPO7Ir_<3>n3OG{jZ77 zbLB;Ibe^cUO}QAnO)YKm8qQRhE{~w$DFm4{ShGy zzv`@VSzzPg|Im8uG;zpg=}tDR`LFw^1-$Q}yF3vgyoAbd*UB-;XqyPQA__DF`>I$4FfpoK5N6n;o2nSAd za|x@axhS?(yz^cOFp zCpf>|_RJ7-Igy#+|JJJ-7e9d4B74wHq)zO<&jMxcH+XwkXzwy*Jo_Dn{>O8yfz&^L zVTAX8@>72rUX0rq#IW*X@zqOYNHCcM46L)nH<)mG(D)xc`d?J3xz{1t=sio$di=WZ zZwbf$=(F0g4Sr&T+xgXEnU?LEjH%tE_yrm4>0fMR3ykL7PtXrghT~H?zM9)f~R>9>89DX4d9iy0HIbR#6BlNuAKZVFDb-HHWJzjZWg}qzf3H}KoT^y z8S0i5q0NOfpH1k>g!{sdR1}Q9$dc!I)#tjdKb!M5n0S5mo*@njv_o!cFSgDm^iHigfNolte2m7HN-t1uq$#uy?YLsIPXh^J( z%1Bwm`PCf}K$}+g*=gI^=}~dz^PSEZ2KVk`=Z{S>hyp!jkD(&dS#0B#oc6yGOvX;Bp^a(t)$Kl4clbGRREITPf|fT-qw`AfQI-AE z_cd3L%fs37{+$(XbM+#M9}jf;eUrzZok>=dQmowp93|(@^O5jUf#n4?woWhe^4r83 z-d5=&Go#D2YjV=ycjwJsDT}qj#uM?6B6wh+UwYN?M^8t+L(`SXgt1tK?;TWBYW9jKx}y_<9?Z;vq}D81G1#S| zRSsk8csYo=P1twMOO7 z4dX1thoueCF%@hGq~Gq({F8V!q%*^Oej3D*m4K|=RHLWA2G3EDh7nEn+VF``$&%F@(FvJ%o z!I-m^}KENe_JG^*c3uL%J?VbnV?xbn_q1>agZZ zPj8tXic9(7BEC6xAXcXN8f?l&sy z#iLY$zL}1X#~9FTj-p$zooXm5wp*+_@2r(sRfzRmL|67l#(N|sThz;;G>F7GQ8DG( zzxM_y^P0C5xME^Zl%9~~mkAZRGyaTb3``Wn_v*)L%+db~u|(O>iDGigI{Fmg_NQp{#+AFsp(VG-mnP2KX*~qvxi@Hm$w; z=JJ;Z$2-vz?Sff4>eGg({9~7+soI-(8qrp`bGdp>!)Eb`_BSND)PlZP>mNI4U9C70 zaz@btcOFg!k&Fu%;S3@~_o;G|jtrxogj9T4;v>kV8U*{g*;vCRq`wQgoP^Orj#nm= z!a+1r%p((Jlnq}KWev)E%C0lBC|Ew2_{$%=j1*L2yGOvKVutn(RbjC^h?#K8V-Df8HkE%oYyTjO6k*C?N!>rjLg?>bVK`Hj>j0j~v9YXiG0 zb^EW_2jC9H>RsR7@31(E_drYGkLYHbXJ@Q}hqMG~;Yh)w-NLbQgZm>M+tfcC-bdG= zs|$*MZT(QoOZm`4G{fPyE&DeA!HRVfyg66)=ktjFuu=~{S%=^MPE@m`ren+Ed!<6mrDDj7>|IvV*2CE@ze-m7&FicaJ@eBwD zl;z1HSFm^eTqpF4owL7Q_G?udu{502QENPg?j~4oy(R`XM}uV2n6Sodm};lIyKwn( z-d5U#RRbT_vnlx*=yeSlxUJ$`(XnjBdfrm>b|G29d6<|LOXw;8cR%c8YC}* z2zlHp?Sk@Hs^w^`AWfbN{SxTnw;aaiK}q&xHh_IcBQF!hJgm8W)7v^ukml4*Ypi-@ z<0dln{q{q0&(G((j1LCNE?TqX7FS@QIq^5JMgJG8e>vB#!YPFzN#QQWAehJHv&8yp zVwU)Q+1mg0u2_4dxzDxXWA$T#xy&>;st+ZuFtL=qfcapVbhi$OunvHWOKiHZw{Q%) zoz#ID)X{@y?)HQI=i=y>vfj>U@nD|Goq#?e!EJs#lTXF_{?~FZ2G0zUJiMki7PNO0 zX->hWa+Ry_fKjzBZF35YwgT1lq;KrOm*bz&Ala1n_#c47f_4!{Snl*uKhTB9Mdf!L ziSuDUG%%rij4gWntWzAf59)@UD@uSF*ozMy zNFl9P+}tTwwfm*Q8ZPNHz}X?U*cVbF;+hzWuIh%Mag)$_cO>)7 zb1xXJB|0o(R->qA7ym=Vuw!c{;(${2G!TzkS&h)*YX998l=G{g!*vidHC?hVGW}jwvqPb3nLu0ug~-J zJW;HEbgki3t$~7WmE#b(Cb(#*>OT#7Q|Z#r0PiLFPf49^u;|M7BRtw%Sq(y&?Tay^ z{8J#k{%V59n#zJHd8vCLq@TnH{jf9!)E)zNRo8Hs9hLn_b|{hZaj#&lD>baEqtT@T zcKARdeMBt;nhT*HA;TF(o~64>fv_L;a};al{rUhJ7Tz+wizZZ#QzQj!1VAvHPEhBN zMWB@`XszR!sY^~PCT1VH)Q8M{TNs~67ipIMTJc7!#%}Qz)0Mwug$^sCM4Ba(>6tN7 zuXZxu+_MDrcDF0TuV^1mV9E#l+te6Wfy8TK-lmLge~t=i@MU`RKz3u)J@{wojGhU( zGVblPUVL(Laux5-{$JbM&?%PF8q4W+%B&kGvA5MWvaW1lM7H+44Y>W;Ukz$sTMB|s z>a>Q&PCsbW1@qxo*-QdAS^Mp=)FOy}c+>}_?ekBFZqnWTa0MBUcmut0TMU|zL3*7XF|b$zD2?Cf}zsnc%n zl5@xWgbM^T13S(( zoq#7hVK_D^S{^t&vq69%+E*EYqh2ofS)_jXEfp@VYmM;c-NN+FtNn1o(!@M)+Zk;) zqhrCw2N1DTJCaik$Vhp0%Wmn}sUgW*C3P7k--u#@$v)%6FhAjoH$dB4m^C&u+6qEIQ*$snS0-46%A=%oLK_-)V z3^Chol1I@jIZjV#hclyP^QctcMy)Ec0FrGZS7HAVa-Dnn^CxH=Rf-tSnG0)M_g;k+ z?D6wNDT}(%j&?VoO*ExCEOU+H{p0dbnI`Ktbr}do7{;$Q#I&L?ujvKQX(;Slu@dh0 z-?eLLt^&gHGO2DuaX|1i72pN$q8gxk^ffAWuL>}nFe9-^C!CV1VDb81jS8oD(@c8F z6CL+MrSR;1Iy2Vx!!5VF%C@o^Nk!ORA%}k8r@zoDosdn_e~K0v4#V&HHOs<8XsiJG z#C4>(e*Xk9ZrVbWpxyE+p$AsNi@5cH5h89CB0F)^sJzgDRjVj%6bH;lQrHw)KJ3c1 zCgEh{32~#yclbIgI_Q~V{tuKUIiF_{9R%Bv;HnR($xn3;_G3V;y9!3Kp_Eb6J0R{BvVg&!ehP4 zT;_Nm&gLv5IjMW#3nHx5ulazD-L>+;7?4@pT3bXeUY{#Oq%n=8_Vwh>00p|tcM(So zh>Q)zK?e6{gT)Wobi8GnaiNfMHJLJy5H_h2oR{HJuVaE_KLC~sqg^1w2qy*;)NfIl5}#_ZKYY)jkh!c}(^A(Y0hPms+WAndWvorbvIdRP z3A=p{g3QVOwapv^_#uU05C~7Mn#F$qc7W+xZU< zW~T^^E8CC5Hlo)j@Dhd;1>C=iG{Et1*EnP2fSU%kur?!fgbR$Ae7w9CFDR)LuGs80 z_Bkg|tM~QHBU<-UFc@eB&FxZ@jV|6fphF^H;~A?~rSB6rPt{iKF&Bz~$8ggsYZPck z8&alwlgbu$9k~jaFbS$evKF0NVVCJC)LM)SgJMp`R=nI+}~ZpG=*Yu{aoPT;@5TzzY*H z#1-i&1Jbw|Bi$cE5SvmhcZ*RQV{xE^r2uq5jP;_v3;rVSC&0*6<9OzcR2f$(^{=b^ zfNjg_o|dWLEj17POd_|F2sH9D>J@pANb*e7F0M?3R|IL@MudM{>ESb`*lCX0IYhaR zXDIrk2jKo0OvVaigZE0v;9HPNpuWld9Tev_Ko#q{R9^&Pj47>f8JR}A+kW2|&Y+H7 zz&_}gymILMd=DtOUY>bqnU^wImU!Hd5p5g!#7HjAdnrRqjE!+@?uOn2l+umIcuK#B zSMJ+L4BX&r!7X?LmAV+oc4!JM4rCP(VL$F9Bq7GZo-&v~?b4@cm~m9`&iogM_?=uG zV;=h~KW7v=Gc799tZ_smsV@Tj<_KH$u(fM;rkdIU~&`WRNgVyBLGFw5g*~+6zO7O^@50s3XnLDq#wt_ruX4@XM(2 zQm`5VCo$r9{Ou|kXuBD{3+}||42NqMl*`25mN)oK&{xGFxXAekZ#`w>3k&%`+6rVg zqQsvS4>N&g1;hGZ#uJEH)(x`gee8l9z=uRrp+Xz?N%}9?ZAzlrJ771Zoi^0Ggl3aP z&&zLDeu2jYU4nIUy8)(tvUfFG@LkPpFfAm9@c=8RZrAv4K{ewU=C!}J^+AreST%tp_J;gRNI%`dlPcDup!Qs@!q@#uGQ->_f-H4 zsAn#)$p0eV7xra)j)CH{(`0zI#U#YPDm!}9OX|FElZlMyB*m?7B7l}_R)B7p0V31wjMY!cLh^VoghF#J)*he)b)2xTGeQ1y z)~dSw+6a^$EPcjGTNPzxUgEd#1}7in-_g!fRkK60q5Y5AVVB4)9E40jU0f5cRyncO zx0zuoFf-;RzPF&W%Se~JxX?k^UY4g(h&hP*fVDtoDSX1b065~Dm4kWXoD>8EOKXsa zBMW{yL?>1Vy*8FeDsyzHPt}l&AHF*8qtIfrErbyH4dJ`b>*?qa%NE{tHvm+a;RQ`R zFj?quG=s^(MPPx3Dg&iool!pd36)7EcVf!>Mumqi1v5qG8#N1>qexJ}*-|k2M$>_8 zvHfi`1Mbslj#oN%r?q~xSVktL(zBQ~sa+<1`@%y)k_sZ5A*@=Ze=euFG8lSlBiyG` zP0u1%mECgU=DIclr>{f(A#mZei|Ib!`Yn|qWsb~C2!rLuy($yy)e~knO{LZnwY=+0kIAZjRi?_wL zQGez=`IAj{ZdQYk2*ei@KU!*K4=;>+n;51>YLr)2`V~`XQ)Dz}ziAM$3iUF`#Ff*{ zwXf}-uqgChs*Uyb=Oh)ztp(?|4PwHQq)C9Mpyp?o1rMXE->pI+W^~X~`R26Q31M3) za_r-@S>=9Bd1Arg4s%9{oYh442+6t<1vX=4_AMetnAT2yb3}H+7~&)7T0#9&|aeIq0`T;?`hb6j`Zcc+cwn_=H|w5u7z z2|KwCZa#4F(2f__4{VZ;NDlYFnbApTHn=N+$l!UnA|d5srZwyag;gj7>`Wbg`SFmw zFZ-dZne+cbp6DLt2H{MOUb#q0wB@2yQq6eE@YCB+P)CLw2sRzC_D9c%y5-M4@?kp1 zTDaH=ZPMM(?q-47O8*+1t#4>weWL3X4{* z`%caQj%x1qOFER6?7a`)e;g3O@j_7FQDQ`7y@S(_PbA(6BNseMO>23LYNyh(aSa-* zYZxM)+Vql=k?b_U;)UcO?7avzzs1bU(RTuA^^D>=zB_+mm033_c*T-w%H}>Xzm;kZ zcb0#bO5v-Nd{4AZ`}eEmj+VfY@Obtph!=FyS$quYj&=;WP~m~rhInI|D|pFY_v+S= zs@E$Y;l6-H41_%?-w-(eIBL`3NpR^s`>;+-np5q^>hAzc-hgzt3z|ew(hx)%7z zskugs#|h=z)@k*XtCreLqzO4h`<aUq2fuhs>*i?N0*xIQ6!G9%FPKAbn zq}#E8Pa#K2&SnS6@|Y_UVI|r=G6}Qaqx6{kxslvh%1t=d6ivy97;fg3vvGtp9YQoj zLcILcoV*V>EO>)x8r!xtuw=Vw=*z@N+qd6}YrkKG&is3~1VBvxdKR~C8ca@OYoe%E zYpQXERZSnaWfQ7yk8^vR`lY05KJ-Th=D-c+3{2&yCuR+2% zFYi&_3bB5@`uLgCmWIBb#M156hcHSR>4|&{-LI~zxRER4OWtFRdob$yN(y<810Exv zIAND+_63E8cvtN68|bYY_|Q&qe)V7t+GFqhA=bN~Zfw8k(Ew+T82*49)?vN%8uo*%j84~uUyCH!!4z$rr#%((tOF{7h!OXDGzv%dd{#5 zbGs5|GN=;hl2A*w6T^MVqprmWT$dr*w@AEgVlcN`w_`#xap)_?h>}@XZtmX)|1&S)HKgIjMW(d--Y}tI+C4J^XUM>lNBHjJwLhKp8TW@h&SFf!@u!Ry z!WeOj6Bqc#*5$g^Vpj!5fubx)DLY~nXaaHKB94*c6V&h6Wg4435jkB(GQ+(+Jx|I` zX9-=pEem?~>6dTtIag(fCy6d8EGRgSB5OmpEvb-<=)WFF`0Yd13F}D7<9`i@=_E_f z>{iCa*|C^RY-LCHyPhx_*PZ^nbx{?(nlW1n`Bm8>>6E(MqsI)Q`IFRx^@{=F}0v-BT6hm#cfsvjuL{i|_5T374r=4#8->Lmt_ ze9S!K7S%`_&Mmkg>U7rprcO|h=W?CvQTh`qf{f$`z9}s=a3;k5`WFv$7}U;Oo%*0dAAo976NJ8*h>@KOr{ev=YC-8pv-$%nDNiJ4g|&B~=ET ztJ0*LbEdF(J(ZwVJ+p3{A{!AbW1S=)z#O|1u6T}}oG8OcFelOozx~xVI&ASU5@#{v ztMSJ2PfO}HxW=_5^F%&$>3ffk^}FQCa7};u?6@f+xQiIg-qBbY;WrhZ*I?DEsl2Ct zf8QwfF>ebMc`@kVFYlsFN>}Rc0GZ-`!X155u8Yjhg27zBPR9`;{1HRm@##28kn`#yC zkx~$@SufP}71=R|%_OFOOt4iy|4pZWZF5))5coiz&kk!1qK0yyP*wNKq?KLOI-EJk z)#QHmWZ|;onIB%0;Nw%ZtKm|A$E6kx(o_IhFyXM$h2JBmMzjsZp!JvmGVG1e2&jJz zbt@6TfxazceLqrG(tQ$zwMWJr#L%6f!og!6L)p_{bh88$G-zYCqcQw=c;TPQaw4#9 zaV`Et819J)jZ^Wx5j=N7f#6S{=YQ(xG-Y-ZHwxemqsMH++^%su(dYA;j4vRsA#5X;fk&b0 zirjW*OXA7TUHV}JW%S?rC_t*Fwy)%>Jw4ITAm-pPgSM4irJGs(mCrLAz!e?U`i6%@ zZJxmbYIUen?q|Elu1v}?!A7{Uhop_zn)oguZOrWx`<>(@rKdjRIZPCz;Ed^ZhCo@m zsS65VLH(B~v|)#FFg#8s&FpkEv$qYFJ;X=`pwFoE84FUI=^i2va22C!kn0)|<@`+= zB@Ts<=@U7vUm+bheQM`BFva{e-3{G#S7=P1y7tg@c;gnlaXzcrGR(j4^Rl9l4+a3@Z7rc2)DXrhWx7`DL8avE}>7Ln`3F; z%q$TwSyO+$eEAYfSN^S=I}U*iEou8UB&<WK4EieRhWizN9x+MSl%dKpV6j*Lj0Y6Fe$^St0ksvB}Y}b6?aY8Ix5+~>&d*}uxMMO3@+1ishle2FqEh$Oy#((|< z8V%SE9p?gy1KHF-^TnB0lvOEi-U7AjkC3bBcV;qU{TO{zjA z8XjA_)?=Kf5xW`NwE<)rigt$|j=>aylPEJFQ%CiE$$a<{gM`3aCSagMEHeo`U@jk!;Nm#ARm+`GvLGodZZKiR*e5|7{X$AnhKe+C zMM|I%-6P?HE<+R#XEO)p4**KiC=xs>wRi7I2&ORxc@0<;QO2dHj6Anl45T$o2@l9{ zLw!cqj`1tG%axJM@(2wXxgBOkXXu1ufK5Cbn?pJ(`Cgt4Q<{5mjGlOwaK6!z?q!UFh_dQaoyxgMWi%lWadDpI=Es)qa=BZ10J+lkBt?$=tC zm)qaN{egpV=?$7@4h~n#Y3$Dyr;mc9SIm7Ab}x6ObzxoqDz=DC1Ql0zqN9J!%9Y40 z$^3$`m+MOY7H@MfWfWP#`PlvF|cIaq+ z0^dEbsS32D3)uc&FP93d^Ts{=Hd!t^W7}Yx);1cBQM#lbA$_7`l>KhR&OlWHYg4NKNsG@wG&k*Hrko6X(=QSWFvU&zoUgdIb~m>k0yiFNIcLoJ+flO z3az$J4Cj;5O!dw)SFc_rvm=xCYxH16VA`nod(9`|;c3CQq%kq9@7`B%bPy3H?YBZ1 z%Lp5(rgC}iuAbkvMVDq_xmFxAc`B;Q`U3s?Yg{|20wQeiXw#X_Sg7T`p)W(F~*h=TX2E6PGJRIctHBDD!J7SVR|!OQ9W@^+h%&nibZ)nbuN|Bkv*8c)tXx9d?F5Xz@wgq0E z)TEpUlXZvR7ZQw`Wi@NaB5W9vo%!XPU{Lx1$ylPXAOaehoT5S33)jO47%!WzIXTN| z-5FdjvJ*_K=xl6LE68!%M8+A*C#s5$jX+Q7ZW!xq~u-w4N1SSm-aGMcbnnOlZpRW#H;AA&-ox#-urZ? z7JgS?b!cj2JlljMjYMPYpVV{Y)fW!^ezo>_o^AW|3(oHd+JlyU)*xYx%;fDe8TIAT zu-ucAAkyjnSV!_RR?4iO(Sx)Am2GHj_V0h#{EUQhR^gH`?7{6l#FFi^jqF5?FXA4! zDAs6ERn@sV^o49&xXE%_PR!);d3`7MhmR{Ie(5wp5|r3@MJPbQk$x$&FWS*tH`^Mg zTxRKMm~ArBPVpztNHKP|cg&3BYE+R&p4(M0a|W~&`>gwP2Ta-eM@lS58&oQKvIjQ6 ze1n%M16C``nvJcW;F^eeq{~U83KD&e(h;~OB|96Wapmflxa9YbBYxO?{E8d>+l{S_ zBdV#&A6|ym8co=TEGIT>vE%uAD%rlI6sb{VsXq~|Mi*mao4o;I|0Lt*+mh?Np_il%Q)Rkm4jg2}hyF_B~OjaHLU8 zD`U0Ooa3aSeAB4vfUM_r8j4+%S2fX~%vs*CIgn<7FZk_RzBVa<{Z=`{X~h6oMC z{h%8ULS>QveXqB-_Zztt(&_=88#y_>+S}WY{&2+P0619{Zta79w2RoF%H3YBF+Gh4 z$Mr#Gn$-9cd&+$``@&)_Rrf0tkz|%6Df<(d5b8Gvv4q8~a-DLRXt8KiK0?%l*iT(J znFJerKz$osxbVe8Qo{c0`vRt`tJFbEXAU$wk8+kpOo z{_!SMQ4?QxMD>*`*~2vGXdomd1acN9xl2JLMdasTc(KO~KmL3K%+OHT zUhChjP!#Sq(N{njf!AQ4G8@9S5%ewnd8Cydx4zxA{J2J}^~TZ<{yg{ZpOQO1-+RG= zXA##$*E%1X|Juj%+WB&gOKX;%X>40ZpSwhUNoaQ!-gWHL?3DQPtX`I5e|3mmS#@?c*hnMDTDWIOcLMg;q= z-+N@c{JllaPs*iM>`)Gl#_Z}Pvju_!_FMp|yvNx9NzXpeOwr+96{@hyDQ4)=UL*hD zU<-48=%!6$qN97E>|VS?El5z;N$GNk4W^!9z(|}z>t^x2d-w8>9c+L1ea^gv8#7gN z^R6H+4q&q`4<0S^=DI;$w;DbFxRSJwBP$_`Z`?a1KrO6 z%*22wc=U)#U#(of`qXW^?y{~f=J?X(xX7j5x6dz_T)%EDaS-tL-=@{C6AAH~&a?B! zPTjr#blLhnhj5;35VcTGm|KA7&dbNQYv<0L@q$OrVTUUyDeeCCk&J?=DI$H0{{GQd zhQ4x(AF8xbvn^sfC?uppp-_S)9TQ>WvTitY@hU#`JN7?Ok#9f@KY1qidiEqHx9TRm z?8%VKMH}-eXAkYM%%`}p^w+_nmRaXsc|2#}W5WQ*x;G3Po0?h=YaHNyVieqE%5&DUy6T|?11%a_hIrtS-;ZfvtCL5 z{G4Mxj<(;w{_Bg+J&H9~C6ggTlL0=h+lwSF7M_lhzk^cv9`fo%V8MR>YK&O$*PlQB z-@V!Yqfh?#i~s9$`2XT=ELXtuxp*FlZcBkYzU5Jvs7vemb;9rb z`STYtn;lSVO9T#Cy<)2Gk$3(VO^FHM;Neyo<@mQ?4h?iT5lVw9Yax4GP&}89~ zu_I{2YHCc;-Knqu)>~QNU?D&6nLtBLHk7Pa4sLoJt8E;fX&$_9nViQte#l>@Czy5j zIQK7#Op1iDUT?|d_d0wMF9l_+ca@c7Sw|e%#`>6AbRvmf9kJr&iC zXhK#)qobdnpNRX63%86*o{qHpt3AW;f)?1fPZiNs4Z7qBj5mZ0HOCRH%%&GOty4Jn zo1E}Nlh8py%p_M15sN|7{J%cOgU)EYzF?_85+`28z`rH6I1tC9I3QcW351?~y0TYR$$6KS8tqUJOPSKeJB zbJ5s;svBv$d260+@B!PWxXp5hcg@MAr(oI{%9ZW4m>P5F@DhS**AUpn;aql)Q={N7 zC&x?hA0*%w9mHI`2~_!I)msmPUxDc5#c(gFo100+o# z;)6l=+=%A7EzgYpS|H)GRnCK7SokEQt)4K(s82JL71YZ+#VzF&eLzFWz~G6;GER;~ z;Z?XfFJW7I%KRfg7FE0jOvxk3k0SmOsf|nOd^>x4COX`c90wXnp=eRKA~`5(QI!w~ zsf@jMZy8pdVz~Q^#I1xQxKrQrdp5ZuU+|00v8G#K(7Gg~;yZC*#IGiC>rlXhfPff$ zB~3)tK!kH?ESEc~i_ubb9RHew$&@Q~qC;=u8hW8m_FeX>8feoINS~jV_ts1GmG1CL zAdiSLlf#98u6B2=AU|$;yvXl&zmJ1N%(|r)?IVpy;Q3GR{v1dv?ML&mM!1Y?mNi{$ ziQSS-mp{!>4n45fjMo7b?OO@2iwx38n}s*$etAEK7Yo*zy|}(Wl95%%Pp(^?_0BOl z_B|@RJUqRDy3`uf!PHgF5HV}Aue~#`w6N~$@a=>s79AzUU#r5?0tIzd$uil=S|$oR zwr`h1buww;@{RF8fv4{)JQqc|^z(@d=;=OYi_SV&eWb}IHFfJ>=nsvhOs zu8M&#(05kfT)c{BoKAiJL|V5pL_Ch{pIW<9uuVVp7>TQJKU#*xY}%Ff?()L>n*(|V z?>AlkhJQP*?BTif1?Wg}?5*C)MEU_me4~bzzVUcTu|e9}-De_j_P^V+OdnZ!LGRPM zDi+DJ7$hAm>s|s&gHJMbBF5`Ilqgg3CdGdWTtYR6DS7D1O%_m?lH?kSwdwnf4bl4aW^f9G_W$8zpn z2p(u9>qQ{$Z_bP(*8`Wn+S+L!E^!s?nG>I!qU61Y5k$i3ceRUJHue&Gavq9Uh~VEs ziZ2d3e4ZSfH-N^00d$L{tS%owZLAL66@rw4pD&k^_$72;5gS|Ld{!v<{5Up&2%?3H zhdJKFAN2#xhNXcZqk7M7--Wk-gB$5104@3E6H&{+)cmg-Xd~KVFa2NuQscqSrJhUG zp9T}6ps1)urKV!>?Vz*(uy5HTrmTjfp#{C0-<%2?leM=~bfE1O%Kzf`T)}kbV;0$w{G92nFvfS zzZGk~@KzPhqfMV-(;ctM+5)%0{fL-VZy|l`tD`u^!7!40Og8Z859le_iiihuX9HEl zVh#=tvZD2&x7pg!g!aIIkdUkIr=i-9Q>s(f(b0Jj`O9m!PSyz|z*oICS+4hJOfwXw z1dEv0F3v^G{M3zw?CNnU+zkn8$Gta**764FJ%#4_6oQS~Lq28oQa4vcA8+$uXV7Hx zJ`cTFXQ)&~;#l|kuN6h}kOK41Lw83FNnDZlYrPvU#k@$;bf45_d$r43T;%-gMFHh> zrS_J!KS0ma;OTFpB&x;v02jtsrWKF)mouG zC9!e2bw`Ol9v#vq7y+k2mj#9QVMa%(AqvNh==1X7jB=ZvAp116ctl6vu|WfWmV4_{ zfpjk#x)%k%57MK0ywFCGShDLjE0&yq08;bFk(YZn_XyhnyEfvRB_JjwYG;}xYNb5^ zqTPX*4MZ&I3r-vFx#?TEynV#&J4dj7R z<0R5OiM}V*vE~*yd&tISVnr(YeUO>7!lJRP3>N*z=rkT!ieae%?#V8u3<5(k$=ITW zwwVRTrWW+?61Do6{<_ru4+;Xd)^90wFGZikx@jmSS~8690_gBi7B61hUl-?#lqvz| zUN3wP)azoE6{T~@P=^isP44mZU0*6xon>C<(5P){>o@m5ZomNv35ov3l#oDSLxa?z ziw8Cqe9NGr-)M(EK7<5Goh-8#b9R*}3KvJ?bO;>Sc-ivmc_5Ny!)met0r+-_An7J> z>Js}&vL_qKBSQc`iuJg}N()=Wx;5`Kc1*lK6FDlmegw<}=o<_M8dH`|T*2ZL0eHhY zO?qvFj^G;`#Hpb?2|yn@85bxCa#qL^-d*2BqSO)Fd_8>8llix*uwY0W0@oMCMa?^m z9B!jO$7Pu5&;(s_nym`@6O$b9H~TFLXJJ5uRWkwESPTGLA_mhT=KA3FCaQX8y3e|~ z;&laMop*0IXBD=6H_E9jeS6jz=yEj|R}xLQR1dePe98rk(1tx{ua)41tK2$Y^bGZ( zt3`K<3)Eu8vC1Lx1jr=*1~N!T638imIAUD#BPq2&0iUah(u+ovJo|F_okZW@3^feR zrIZYXUbtdYGQdFyTbe({hKL?Jdep2w{akto@&wAA8hS7Mp`-_D&D3v_eD~aTA&20&COt9%Nxp zFbA|+bnuU)KQE6y1$1s#*mlf=fn%9W!`$Lhf>TWd`coFX60C+ef=zu9INK83AU(dx z3_MkgpdH5fkpO75dX{GzZa?I9;F#Cuo3zA(n1S4^AIm>_Z0m66UEzML#rr%2wjF z3a;l~Je1xnJM~iz#Koq}iF`bLXW-f!Iit?SWGRvqjiQRc#Dt$s-_yH7oi~y0H!LA( z8Nc}WI_}nIMz>=o`w)&02Ie95-G6%fIebe*u_zQrZLw!1sOO&s7VKHEu>0G;&gKgDb1xSxUE6y{Ahr6=8UY7n zNzDu=5Md;^6d>&pMGZ|O$X%1n0*4=2NNUlbf}n2B?q1Va^L`S@!JYC_a7@*q+~8Qj z8+1_>gQqN5d`-lA05oJAXV%J;zj;Ffokep7@0;b3=$)v`_$je#mja%%8e-;7hXp@@ zdlmi24F-TqggL%tG{f*|X#;NoU}LAwZG5 z_~{xBQK^^3xFv&nz|LgOLo?FxSAiS~c;BsD8bghZ0xM;<6ElEg|n z^gdq`8RPeJ_xb^MKeJP+%afUXZ{*S(|nkM|~N z9lv2*d>IJ04zX9z5nC{(~{Wg=eRrpt4_mqJ{tt zU2j>`sM%IOUqVuH6JX3V_?O&vX&tJPHAMQj-6iK*RZpFfuk_kMTg%4e1hfkDV=q5_ z8}J-0#G;t_KvBh{9zf<8V_IMWoeAUx%<%vO4}bas5^E6aZ#gI-{lJ<8-c(tg$H6IT;Scv6Tgr^4BuUr6 z7DOc{@1_ay>#Xc{zaE7fX?I|1Gr#w}d;UBP@uzRBT7WS4H!HQ^(@Zl+!MgHrc<<@C zs1jK;?r7BWwLdQ(B-HEMa@VhqO-c5@L~k)kZ^@`@9(TGI$-V}dnn`P_rJTOq=OLhh z+)ZE@IG3d<_!Sul@4(=)LtBRlD`VUVfbDM{yp?;1B;`USW9RQ!K0rfAKiKa@eUI7- z95Z?9<(o?aiOZ77`}LF=S@kIZL`itLCr#OlE30vdQpbq^ zKLJT@6=^6Qb5SO83hxj>thf>Zhs1as=4!3GI&r;C>E~YYP(s9Q0Hd!X?w;ZePih)y@LaiF3X%^I)9yt1MnFCg=yJA#!(dKsI}`yA>0<0~ zOuEK9J3a=hu7S5(qXY3**!x)-!vLG=+&6 zbknK`=_8?^RyUp}lcV02kyYi0<3g=|*RE~bjvy%`I9%RmV*();F~PV2`!eAE{RoVT z3Uh4K4j9arM&r#tKl5$7$_QEpHN}U+7AKcHbQ-I6;Oib*%z|iV_)rqKV027g9_5rL zPvh5;F=GM2!5cDu5i}#QG5Jb-;|-#3x2=+)Z8t>dUY*Usorw~I z9BN4s@fwfn`qUAn0vmcQ(@Rs&2t{- z;*Z^3i^f<_lB$V~eH{9Tt9VOFt)vq4iRK%P7`@jsR6-(U@HE z0(g;sE9+Z%fm6L{l`P{ranUwyUpl@uDP!;$9Xocc4-%M&_=e}^abbKEkd?=)rx(ce zB2*_JAzUMQbB6Gm?l2Sdo3a)M=8HnICi2rBlN88cfP)A1kSlGxjH85uMHmO3DY|U? zwyXfI3H)Z9XR^$&J_sJrNYWI%qr;BSXXppsr_9K01U;MckF)_4#Ovl#CxE>KTJ8DQ z2Z~$NpU5<+ti>6-DNEVODF<6J20|YkG8aE#Jt}w#yu`=dhcFCLW^u(CL7l8qE-nX; z3C=@1k;dDyJ9qEaK{i6O`i}Rm=QIs{ad`J%<8y|=WZ#_{#}eLMv3Zb;LBkg$hrtK% zSay%o2tB_2;v`wF7}mF)V$oidkKnkn-f6ob2wDP|OI)vFCEESI3X_S<>!gz5IO_jF20<3)JNkXAWnG+$B7_Bh2e!{h~pftu9o4@wYQ#JIV=# zYlZYKxBlHCqD&4~dalh1im)xVC|K43q#DbDn^-u*qBZZCN!61Sz|y?8<;W1gq{UO) z3N||6R;X?vk$da9#D*$A*=rt5F=}f(;PL52{yJdVjMvLoA6s-+boeKREcRXRV-)8KCGJk1D^?^6c`i(@6Uc^kVVG zJh$7%#`d=z3{CV;lqDFJmVn;kSfaDAWO_vR&b5cNsNCU9?7BH8>&uGBA-cX5Jx5vE zdAJ%Wiq5x@NU9@_Pj92IHDqsKqU75gt_6fl^NU7&v9Bi2_n+T)7Jrx9_kmr!_0XiZ zg46p`(>HJ3O2AqmvBgEEV{xuK$gN>?j4SvN2IGnJ)wNgV$R&N1G_Q?*{;mg91uHKj zWaijM@ZuCwmyr1V9ZK=rp%ci3crI*yTsrtpV5b@9)@x-Ic9LOte0&;#`5cg3aY%m! zSyT;&7Z7~7cVt4s7l}s!0c&dWQ8FpqAZGQ5$9=2_hn&7svoWu;l^Yw5Ud!c@c=w&G z_;s@$LE#J2S#F;uT14p$JS-9?$`Czqm$q%(%r+ghSuUjd7rLx_!7Q>;;!#N zq71JbLHS1rJ+zf`2Qto&cOP!eLPY?#@YvRiwHrjtwjkzW?W#&s-#^-W$IGjRWECm8 zxrvC5NI0Lgi6aXh(MGNRr^Kuy2PbC&l11C+|G7Ns5$CWxkn1V$rM<-g z!arA~f)&F6$)8iCXAEa2f{202^YM>S$5-H6efRHSqVBMu42;n;Ae{Z6!XxXuzI1o* zg!l^QnFiF2e}S%#_+1$}(LG9$)<6h}eiZQSQRD=P2R!CTI(Cfua)c<8BzhBEb||&r zXXf|+?XEy|-URCVDGEs>JVW%zM*4vuVYqVT%8dki*A_KJ5ghK1Z?ewM z7Ln-iUK-9?6^)r&<3JF$3SCnGUA1Uo6rhl5CCM|uA_h8#Y8hPN{aZ#H%x1Xj$Ya32 z&WBG}q%N`othXn%3s&MzC2nt*Mox7fT+fP%1MFO4(T|L8vTcY^)CcNkjC*?SND$CgAk8sE?1t4t^Ya@QVgIvxMM>R56YWPGPn4dYv>O$L=z66#lKc$#(}& z7qZkF=K~+0;Hx%2)Gt1s|4muhE|9Q7K>{MPr=B%~GaNg#s2DXSM?ku_e@~EuH>)ik z7b63G)BR+Z4?%%}d=>6{b?miUPGiaE;Kzwi1SJT8QS zd&3QR8Wpv3u8P;W^<;C9NP!~HEr)M#Atcqa>Q$1mHx0;mNCL}QOK|pGPjoa7v$tmZ zmns`1Xns@0saP1NBw1zfBMBhawsPKPEBLnF|*Bi@oB2)TQs(6VccYtLMb+2Cd+i zWm>g~HbU$w`cOhzT5zHdeU=Vwj!ov^5dy!}b^Sunki$<0RF=s?#L1>`_tGhHbw}2i z;5ZIAAGlKU(Dv1Xx)(uwRR3S>y>~pi##u)nf_O-yyw%560=jz6p zZO0>_c+UQ3^G8xepgX&s_uU#P8v~NFS9PDKBhw~=+l0V*@?6Ot0Q#h~mRS~H1WDAq`FMT% z+A|EwYKiSzg_%*3YM*Nf6Gi1e56-7@Pc_@#y?55)UNW3+)WYU}5QHsdhrttgKo}7+ zDhMSY88jg3U8-saM@kX%GkA)%ymc)g6D{Op(j>hU^@7k-W|{s6`55=zuab%AR#|YM zuL&}v?|&((AuCJumpu~-F!^(9`V8IX&VVHs8PTYO{Rl)Y3I50WXcu2HpM-X8DV(63 zGUGYlpP*nq++p|LwFvL+9|Om#K{VJ(7?cEod0~gbF|g+`>q)P@U$FV(eKE^G#w9f| z-kOcc0(=R&%m-x1&E84;GRrF}q9Ym~88MQ<7J?-jK?m7Oq(7vg3ir{O(?fsJ02RSY z469{TE^tgDlqs6=VO;{ycmSXkEX5Z*@UQv^MH8#PEn@#>r$PffO*}=Uk@SoVGN#c_FLKO*3CQ@9W*EhpIVz*rFh8I>NY?Npi3T2Ga|;XhuS}AM$%2RFYuwnUT64sP zOa=k&urcv)amhgJ9i?#!5jB8)7*m-BKUYBGlPDJS{Uux!WMx&*xGS2oAnJl6(Xg5? zW##2b{Y0oY3AP|ykaOLbq^pVEl=%VzK)}h>=$ec&nM~u(eU_D#joKp3w5gGmhTuIg zL-4+%af*bFuF)dBU1U%|NGCEXXyefp*w%H}i395cc5z~>)YaznGr(u@1T^oLkgMgx#zOv48pLT0ruV(YaLw68qgbno(OTW?KQ=rz%Cs@9luO2mJE<79WA zbpj0X{@WW^9#wR!pq)p$+422G=R>vy{nezT*aw=fGLbXf*OUS$6|fQJ#=&#?F%ggHk6LFaz-vL)+#DM|eEJx%ga$7-^)h37oP-cK|$BfJA;CMb2 z{H4M=#{ztga?imZ6o!~U>PRrQ5_sA&$`$W$ zgBx9X8v2!eekG@r6Ca~ie1&L?!Y8D4n9s2QY(-NHATSZS9aN2gn`v*2%>s#g7~vks z%me#tNYp$u{4Fi|TS=GU`NJ!}yzxCb#r{A7=*94u2=U`I>(i1~dELRfI12c9+LZd0 zf-e-vNkjAy20Hn;^*pFr2pLBxASKso4ocmn3SQ|^(bfn!cnYNo&bz}907(*SN{ z3E50Amz=s)0*coDKqC{d3Sd`f>}{TgvoZiYo2K~&_`w zE~6x7*<{_ie&0asBZUcuI*5@qoi*=+=}KGTn~(q{Z_Y4 z`sg+;9K=*v&}jkvk3V`ykZ^1jWi6lX6q+p_DE9jSokYbqo94e==Wn6=0WU#*`GV#u}fD47K}JiQ{VE|mo-kUb~w*dU(O z0bS&@JpQ;nd2dndCx9-mH?Z6|>Ez^u(Md4qW62mqMM`~X?6)_^*4!m%6T#jOQpuLd zdyaw-Gxa?}0~n9$i{{{e9`j(tQR;qfQyFIn=e!F|8KsC*8&&^}iQeiaz;36F5^v*E zp7Tdk1vB9o7%i^IP^9^SX%b0vRL2bg2LTEk!07|FgxLd`zPl~{mPT=$h+;Rrb@>V;U47zrXrFz($M1lEAb1a)!5yPbI$xKCmZiFL)>nj!|9*Tro5l=OiBjQX~p z=n1VV6P*e01VWzx$+!FKL>@biCqh6JHu6b-`_D{QOwqj#d@smBuk-mf;BG;gKWMQ< zZIs9S%qVN!VTMBnuQBmc(%bxy@$lZ5&Q*He!VGBkQMu|`=tAic3D8Y(f}{rot^s^Q z9{bsYGT;(nekNBL8NKY!r!bxk&jZH^2t*I%p$E?e# zNJb|%kj5!+wQ+iC)|?*8G0Xt2T@1Ow8R3Xd=p#@A?AJZxK4STLe1!Fd(;HQ){to4L zJhFHBuwx>^BrMnPj~gR-@_>r3`_K!@HzBWLCe{Ro2ZmAxX5mf9rhG`A*yQV- zrBIK~kgbKvzT)pOJ^A$aZfph+W?Lx3lar6ssTs{sH} z1SXM6U9x>-d7d1TaR|r2MBj6~V2X z&NfC;h#P-kOyd#qeOz9PHDKxxfzrebM~6=M9+_8=YAX1_i-3S=+&L-3>N571NAhWs zrqN=b2X7Y?E&wIj$wkY~GAdYcb~3<74y@)C5z!^x6=)5IUeSeGpU6q5e{^S%HR zqEE>`!Ax`@k+k!7sddgEUYI)b)uR}kTG@m*e@)_&RQP zXRDw$cv9)BMN5v~;oKGcaCBns7-p4(!4~AmVREJ(#S(e# z;E_&%qDq9y34$Ay!Ta;5Fvw|t?EX9xu3$2sNp|6z&A0xR8i`(myW6&c)_*r@k>ijyN!hZYCZz zls0;MAh!7Ge|BC0AWuy&r$Ax}9vwuL@)fLzL_~!_M2?8r1B9-4)Z~j2VETjYni%%7 z;3i(oQqJPLJ%$>ZA~2G0w8+^)I0xD37`$A!Fbj_5`q>IH6Ce#GIkzzd+1D~9v=JQc zHR7lQ9fn)f{qazu&~~Y{eBFnmps|_(=%qj|nF7KS*t`s6ItGr0@gRojM<%)*R0Hrn00oSRRdc$>j*WmeS5L(nC#*f0cZD=BW3unh zA!lE_t>=WtuZJRH6ha?%r-v#d{|uugV{EV z#C8nbe^8Td1u{syVUe3N6a+$yZ2V5+m$xt-VXqPI#ITXzgsKUL3AJ5p?A=;t%+n@` zgg3W07nFrUya|yT)o@#dR_;f9N2N7@ud9X&rS6xAqF%Bt7#1M3cYk}hW?P`oI$+t2 zU8fYZihEF%z_E|;=O9wetL}cCQKbSa=?09X$Ost)ZZf{J;JGuz1ML{DMG5L{mHW{W zmX8sP5@`RATZaLX5Q?;Hn`3kYSrRB*y~rpKqm_KAB{$f#N@FK}?3~__(`-q|oTN!5 zW6_VDuyz{2B&-G+1a=uBA0P1csLOusn@`p54URI`zLZ0wN9nf=w&pA#L>11)!oXWErFh*UBOg`EHMe|h! z2T4>|t~f%-{UBO`Y2Z2F=DfeB!T)N4Bc}tlT*&NUY}T)^Ga?)k;1dZ?q1WPx1f?fy zwb%tcAA>3SJW)%Bv<+kLZbG#X^?lq6>QQj903^wmLMz|KnJpD z-?3=zZVU2Q-7t9222)M!3d05_&um5F9`z}ZF_Co1PHM#L1_)A;R+<#%50M~W3o7%v88jH9AFr`mHF=oiv`#_n zJAmQF!N!48fjCgk{g@EObf4rH!(U$i;R^O~PP>~foFSUH{J@DM+!Nw$UoxDfr$M-; zSTkOmg@nZ9I&?CG%V-Ybiw=ajq%kHyC*ak?;pv7j}y}H>{h+`r0uV`bke&|KD?IC*C?xTMc(Rca%i7xt%GkPLI{&o^& zX|@y~;eMC6%Z+oNeSLj35DCbzp}VIic)@N7Rngk^-JX#o@DQHhGOFfF*#zbTFNlCx z2W;AbTqq_a;Vzp8gl~zePtKpb7qD-Av|>H$P{cN_0{-#GP&~wusS|3bXvUz^7>8$F z{6zH~uoXVl927uPAo9a|v+Pep&!#=cJnQ9I8HY-N6G>BBTf2MNWwm9418)mSVc6b2 zZ31Wu2AfheQ7^5T0m{=G(|Z3jrqfs^D!sr-?CN@S`7sEt3a1eqBHY%H3dc~nuy zU1rDLVM>_>dMhUgn1D#q2wHxQk{{3z{r%Z*OkLk*UEZfCw~gG%zX9()uRT6a}dC+2Ko`2%-DR zSfytAYEJ=2?z)FHQh#Q2?G^|=rzXzB@!vlKb%EsgFEN;ylssrejpT|@ixM~#Lt)Oc_M`KODQ|_l zC0s}^iC7B)N^sXz^`qEl^Ra;LxqavXwnx;F$uwbS0bTWKtO+`e{w)i-GQyfy2299# zjwuwpjS*aRL+TAn0r@b|=JYY`|6sun0>e@#{8I$iK{WK6=FzX@5Xkez3)e523JO(+ zB}9H?e_9g7%mo86NrofD&xG`0gAnv=dS-{MNa$IZ6Y7!j|K~D*3(u~Z^FV|Nmj%a6 zcHHnuD&%=YV0C~KXWD-iUP!n{xR8VqnuTVL>gWNDldSCk@h407`I%xa#I`#iC;O8w z@BoqniQ>;B!)$T(cd%!*2llia$uq<;*?t8JV*wt;OvKx2V0TTrR|{iN z;A^1oBz-%~72*gahaA6IPqenfhA{OSNVAqc2NF;`R+&)f*!w{l{tClh?M(nd5|~#f zCEOjrhU!6$h@T&n@QJRvt% z5Spkto^V2mZwSvzeN88dM6$C=md?dG%hIEVovVtpLqQxa6EH|DXILOF_ zw0lH(;jQu>)g`Iobl|Q|hWC)Rl$&(&4wlU#>N=ow!xht~klx7971*4v^~CQvmjvCM zWJD`^fZ|vM5O?KZiexMvLdpYzp^U3t1i^U_B0DxM zbdG=hI!YQUT)eV2(G;F16~|qI*+VK~!Bcn|$J9qTJmm~1M?ZP^nkb7OLU=3`G?1JC zMycWssLA65^gxP)EU+SER3P#r6!=7>mFEp4u>4V#s%U5g6M-BOHlg{##_I1ILp%^G#^0hm_b!?bpM@*o7buLwY|09VA88f3+up|DBY%S3TizDsd`px`xeKX z@JWaW1HH**M$aGaE3V(sL_9wj^aXu02~8G|A^OK4I}XB2D=m}ZIN$&cKkz?P7!UZH|&9LWR!_$plfL0HCkmtc#pU6Mb7 z;1!Sg8qZcK6e{|lqVhI5lA-c}yQ>58d&t|0P-2*4*g+^TxVa?)bP!H3-hgUg(Sa{% zVh4j@Xpc6v@0mq%q)qC1x7p_yRl!bx$bSE;?Br77xDF*U$wY)N4N;*jfa{!GJZWMsV-NE1?_;>8T7ofS%nMz0xG^Z^oTR#_L&VVaUVHXtM*N<}a{ z0RZ;{34O`0t_I>SlHyCEc=j*aBMsp%2$ic^)*8z|tQ1AO9#IY=>{BMW>~~3SAbk zm!^o=Zi-$5BZ~yg&P=hy$X(ZRo8`TyV8ga)168Qmdv2-YZC$c0V0~$8*UVJMFl_czYC>pMj-m0B&R<}XCQ$=zc}L+MLa5?kmdW}PjuHAt#UO!q7$5{f z%)ub2sVFd{|JKDx>8ArX+XYNtq>d=4tEY-broz-FPYNSnIkx^)oNyII4bJXOL9Wm^L z9B*c3))=>*a4V>bH@c`FN2j2In`nPJ;y%7ueKDO>=^@y1Nxk)604q32qgNa+qqGY2 z#m7;tcc$dU#cIFQ*Z`yu&lvp5y!gpmc0m+4!}eKdCsSzWW+97;arLA;UoYC9g2}=9 zheUGLauu(nCPh-J+9{7#COSP1v}U6!5!~!(xrql2M3~TX>vDw`gE|2DUi!N{bM=iv zP>A3|dI!YaVV;2eWP>&2jQvE%!jBgW+Dba?Mx_q*Dhx|5|6BkTZ-xS%ZWBFW(*9fk zwL&|eATZL{7j%WpfNThcyD9%F%ITo#Ur+HOjeGvQ$b0oFP_KxB>8^(4A^rToy^&I- zRaG=Pn{EOH_HtnbBklI+2?ztAt$z3+B>H8TGk3hi5*CaA>{M8CB^e>IYa1&trC2je zy(%LLU?;=3+Y1NIKZ!sS6nx{85xii@onr5XF|8y-@dGYx0Bsp(fyhjg5t!oa6M%G; z;Sz=zgHIf`It}12hWN1-jG{pzziIb#nn+iNT-Yh6*71!9#lfZm4OJ~b=rxheD5!~a zb#HI#<+AMn0^l>l(I-faCJiJ9P23=Ps)alHryZZ!!-`8`pR^$``MH26rITJwU|Jjz zo1e2}w}9G~c5L#CgdeUJO2AA%DB&%ZQF53w8TZ@(P)qrkQcGBez!QSsh$}YYSok{W z!+19Hi@EM&!yS>|+&kJYq5Z${^Sb)-EPMfI-|YO=*-0=tLRpHnb`5y(A_?joGu$2_ zSwaK@`M@%O;+)XPT1%m%{{$7g4&gF#l?7h@{OJ?rNIN;)ZZal#y!T7sLFrI)DZt-f zb~5*lACtJt?4}&F@zl=eZ4Ge;Ne@sVKc~g9j$*mV*~OF{VkH2R_Ofa=yv6SQGCMoF zeVBO5UC!c}eJ-ccsZ>3owuO=ZXG~RDr;MzuaL*0;w})`a&KJ^J3+Xj1`z#3m7>vK5 zkFOxN)YAOMX~H(=(BeWwOiI6Mn$v{IQ9izrdnp`=7P`s?1sX#|W20$6r9&~grV$R8 z`t7VJBO}zKwR0JW?NNLJUm+8Gy@5z#c-D9hDjl%-x8>@m&e#FLh11Thcf)uVsZy0o zAaB&8?U2hH2EU;pSziQ(IUm#Kh_eo!5m#+C0j04?=rYZJ-+&mOIa4<6wOXbVNJ{H9 zQn7A9rs_*&1kLfJWo5Caq1O}JozT<{K2idRSs|ti_&0-YJ0ykTrpbsAC3^_nO)>|t zVM(X8;cPF1zWw9w-gY2HI~tt#9X_1)G12;zcB}W~vsC95=zs~IQ_ema2$mLxnt~mU za=`~-o$=z1udyt&f;JvFeub#Kk@*tkO)`mBSvm|pCCi{2Hx}ga^K%G@y zj%{>jo&x8b_y7PQBtQ^hQhfaQF~Z=jKN**85c9&>A?ABy>ZzkyF%jX|;(M+u%uR5a z^8wwVvdp<$<{wdGIPShq4E7MIuGlY1vs^N8C`>(e^3dzORdyJ)+#Z!{_3XGz{2?WK zYp}wnoF%Jpx_LSKcw9!<4;-+7s-vVKC%z_S%p&K4#nTTes;YjQ_!a5qF`5<_b4Bb- z<29C=+jU4Q6aYbBLbo(0dHOqy(*XV~Y`F7lH3I54jF!R*YC4yp|Gb=BJwQTcd&A|l zQq~jXWNO`;rxn9aSaWe3y6VP~`{LO}z%K&kOS2kz1*zNuMfmuVzfJ#zX1c^BaPdZU zq>Y?!ov5@-4}2kfTjSVxcm|*NMY5(mJgsc?w?dX9huM3hZc)WE?}c8(8=p3#YrNBW zqk8y8Np4I@q)kCEKIjvuPI#yFcwDL&j(go{#fry$tUj@ln7hQl(mJ5QG%FPeAveLH>#KgD1DhZYDz`qyvXzLAP)}l0(ia!39`CeXLUenlS@WFhW z_rryUSdg^wEv7AvuNo8jU6TOm|5Ng3+?J{aP@%?EL(FSY-L<6PpRb5ler8-YZv?g@ z5o|WUtK$EaDpF}%ZyuiEyXWhv886IHwRMW+D7~&Zn9F@^rHyOkjx7jvjnF~R*C z%*HD!Nu%ujg!Y2cBrMgYkF9XF$ze$x@?`v_pqo}aA1tB{PKQ5va^pj4 z(b(@p$=@poH*lc+F_f8-O^~5cs0Z8yonJ|ePH&SaV$Ma)jRxSfN#?*gop(!w0y{T1 zcOQ;!27+=<=lb2T{d;bvE70AOTW$>IDEvpqDZz9CdwR2uOf&w#k?-zU2Y7JM*-I7> zEh;cLu~)yTHazEW6$g;DWs(9@&P-s#4sA^Xcu0Pmu5R}HLjIrmVnW221Sx0Fgbw$& zmAsz^_DWeHnM*S4e25VjAtSJv>;6c&pWfmw)?KSck7v`A=Q}O%^GN(=HspU%^FsVib z^+amq#=eIIkMGU*`JG&h{xppI5g)5x0`!v1*<3`kZ{NPVJzD&Nd;@R6A30AJ(2px& z=_6QpYuhnjms=yHE6+(7Kp{Xl;3w%d1@G+=y4JPnR12m=+d`4e2Js{*&}MrnONKtvFd61{_a7<~MW3q))DJ z{AeIHODq|J!Qtq>I4<+Ls7V2Sn+|3}Ur|o@3|-azid5i3T{WR;&0tNL>M}PTv0Tz< z6^3Dh{Lh6}>w=^FRr62*(C1(ibM#}A4?*>M?GK!^RG>$esFf zw0d2m2p3oXJqG22ep_Gd{c==9M8q@}b3w6+B^RFu4;lz32V)A#k(;o2T80mQl)}8oE`=Bo)Fb zYv!I&YRdleO-g=O$s-UE?)EKiUc~Ing;J=NmDtwwx!{!D4of3r;2+L|yl6l4Kpe6B z`=?H}rFLG`P14#-Day(w@bg^Z`6aqJ`70}&G&zP@70#mnyQ^bsiN%CiwhkgJIWaQT zKV{H*$2Gm=;qI4c|GETOfl}_$r zWo5OO{HRJ_-V!`x5tY6;!a2K;8*#^dBZ_^(u8N=v6}fI*GYs-B^F-QkC)e!b5wv}z z^E%)VnVP;8MpX#N#8O8EmC{%0psua@U~b4A(c$PBPiWAbO1i&$pw( zbmVf0h*k`%*z%O()w6gNrW3{{WHDp^t9nfMlUJJtz%lPL4 z8ZnJhpE`%3Z_0n_l-YUVusgg**!yuH5B(O$odiJ`vws+-^8B*8;Wje!UpSeTbbi%{ zaE9;?2Ugn9uRUtCA|u#gc2p@_)9DM1S4$?1;PyRGgyY%H?hvGR_<^Ik>f)%T>>=^N zHJx`0#Hrw*K;cns2ZiQcez z>^{o{F()6Diy=Q_5gK(L*Yh|aYpac$(~Tv?qE9ut-z2Fv=>!CflduEw8oHsSj_OZd z4PS+lNGtoY4#R>BjYrIfYB+jp5udVK+=P#Uph(ju9(3}R4bQy~9oBDg3f8@C&$Ydj z_Pz?tzCc))|MJ-ft;dNzM^wdA7)3D%O`}C7vginbO_aUrT4txh>bToJ{{-y7dyN&g zHMOK8ZV-q$7&JqUHTG*t4Qs0(f>Df2fb3E(*k1ekrg4lW0T7wvv!8kEh5@z%vZDeJ zhz8_wa9!g&eZ$-9^HT3H>^@iyPKaOL=#5ARv&(=1piLApaYs$90}7^$d(auHiiOoY zK{pMDlMUZT>SBF}O6dzLJ0K!rYNr0g2|d0KFoTG4^oK_{DBq%%R4{u(zVO2wkeV)K zqbanj5tuVX(w-zt%LdN85k?-nbs`eWi6Ze zVYu(iQd&%I3Te1Ks$-pA?9{LkC-S~TJMHx~8VyJTq+33?rVnqwWBGmB&o`TkSdgU~ zPZ3-8geTa@>#`ykQDJZy)+AwiSo z9{X*%Q6JGpLjOiQBsS>^ftNY}&Va~>i=sL*E~wr?q&5~(1iv24mCf_b$YAANZ@5yN zb`Ei|c-v*YCVvISa@|&dHSZxrDV+X0TEJ_X_bV|0N3DcS2TXs3z`JO>|Ja|Z(+wFEh~e4XI_*< zy1Y=k5}Azl#*wFD)YpH}UDEjJ2?)*ikmwIiJXuZ+E1&{5ldQ_<(0HsiqT-B(MKSZH*$7d_~J@V_{V?K)i8Jhk7YMlSSJT+Ja)hQBo)F0!J z@iYoFy_wU>i+}uDq59ibA809X3d%DhBLz4FFbU}1pVror=_SuwO=EQ!8b5yi>0J9d zkN1>oFVqJ@;MA5Z3a4K#5D%dR(*TQ|#@K{-06694jnBIfE06~dpuh}7!%s)QCrL+H zIYBwv^F#5zE*rti8Lhs}5VMMySl=Tv-1zd|(7hfQT7ta$Vx+{( zNbT*l{UAAL7+5Dm-1$a4<$QR*p`;Zfhz9A+TRglxc%sg3X-w4DO`E#Z_~w(Dxx-nW z7uVf(XIZ;??mA%>g+pD=|KQS^zF#_aWck!RjK-6pz@$)r!S$-9c1NK#w!8k9*jXZSm6Q zQ2x0qFI;_fo_~cdL+pl5Tv-A++-hcjo|EGdT9bi=(YNZ?#xKUcp4Sn%KCCkT-X03I zbN-fR-D-xehISMgm!>vfE)A>}6}Tm^v?b2?nSb#Jk#v|hy-GT&lk+tQ{#S&|+a_Su zWxvjSx*E>NadnuHV^g%n$d zRGQE_yDWS6E#CYhwZik%zdCTHuiP}Jgg2#$C%pPV{iNY6z$wrCU*$ZFGd-b=!0ZWS zu*N?+H>d0M1F|!WOIArDYFuYLvOyC~be}t;D!xQy<8{GFy4_RG95M>hPo66j4AB%= zda@O#&S{V0>GG#saOafgft8Q=jens28N*+WIUIi%7$fUWGx{M{=nlp7{k zS=%OrRziPX)K9y5MQSXrM64qEY3pXIg%GJv}&Ey^P39 z5#_6#tCK;PBCru~?isE_he-Q?OnU2(_eP&b^&O8C<6Poib!O=cSb9>+P_{_QnJf?V z6)iXQ@`#oiDrZSNnx64-^z@MNj1&!#13?b6h!i!6?8qqdvjgz6Fped*EeXu4c~ouF zvMX2EI5xHoi9oK*LsSzDxnPAJ=eMLc@mHSI-w+f#)q}acK)?8-%;_-Mx;(!T> zM0c%0!+HjG?3R;3tJ?cpvK%!GLJ~c^7i-5*UT5J(MItCbD2D2Y>Uxh?^>R@4+i2Hk z9PVE%8U2mET`t{U7Fd0yymP8_aB5CdcH#Wo8)?={0YjeHIr0Jp`koy{|3p@r1i;A4 zw||T4WOn5veNSqyQ{pL_d^x(hIac)_<~EbaIyKm?I5p5TA(6BuF>N1mWbUSzM$4T~UN+co+pPhUv zKJ^OqjZJz$qKFbdwSBHi{26{UzN)5WM>yNSl&1z;ga%AJI(vPudLSJ>SXNd z-A8y>TUi+fq&mtg>T}v%UOI(W64o+I{{;t$kdX}AWIIpq8iuL~00rWs4gs032+tmNN^~_b*V_)J9k>JC< z`_InCy=a<6$@(ur)+08iPrZ(CFkKV=&}A=d%qTGDa>gs?bFI%tXVK;0-FR}IG5a6x z8vG^4SF8R)_|^A0tHxZJ9gXqYs*VNnEIGP>v>T?AT8V<%{EV!(o57NgZ|->D;58Zl z=SD`{>5>kAEpOiE3EFBmoa6H>LV6B8NfCA!j0Xk*nVS%CE}#fnRTWZjdvqo(e-F-= z_hC3-(HyeUc>8YukuJlzA=>Z>P1=Rs{40%2#T(nEoyD%@eTP*6PNFc>&iOshZa_bD z2GIA@T_3-O6!#yjxz$o*CLUfTG%EVS?K6}4x7^1c_I;SF7-$r}(f4S)%^FIRg3i8W zd6~2C=N1+eTCE(*_IrpFcl~xo8kj1HlgPaAUKHZD^ZEr2s!)BTW&ON(51%x?ZwPjt zA2tUf_)!GOyU9KLa`&lD?uE#>^Dhz%-E|L@vG#d-d6bQ$${krs440SjbkE9IsgUrj z9#pqBNCqF6y??S^L3KrUeh~ADudyNe3G-V9Dn@MRZaiP9aLn|A5-!c$wTH=Espzeq zlM`wquWJ+IQHvoxatErCD9ly!zw!-3`^lc^~8%! z$~%asO+?fm3MY5qjwvBN#(WlWdo3Q#*9~vxCME~37R?_LHqGJr(jWNUD1@uibk=e? zYg}mTp*wwgYv&;E%E@AaS?z%W9A`MlV#&|4#z5|X|Lq)WGnA;=>MT_ zv~8QP%~*uW+hrYGV4(b?)}YR@V5v__+e#tWV--$v3ulcnLH<_a(HX=XeO&o zm{bz$#}^LM&FOoFFX{X5BI`*{xth7SIqG}sA%Kn(vNPc^Zj?3dy$l5ccDgt z&j*VX`6nYR=XI}wMym|xjAx0-Uok6dm|o0&-(h#5KmE=KPp*7YpQ*mxa2C0(0Mo(A z;hFXd1V)?P-u!z}n=Wp1ysg39Q@d4f+;C%UKXm}&W_NjgSmDhqo7%mfU|XQOZ(n27 znavuaWFhPRWFHUzqVjJIX^AeI*QcUntxI27)@*lOc|l`>dwV{7cz#WA=*WZUVZJpy z;a1D^Uq08?%CC5Ap3rj|$DS2t7Umf_sBbrQ-2CQyN~)A?kc#;j~tEy%Xc z{e5;A{C`q4h2NYhhc?(M*ZA9_mB{k0`Y)qYzuJTPSAO){%Sz@mRTDa)7Mv0&e#B)s_UqRg23p)rW#A``Fpir^5=>%#rQ~U> zwa!!T&9OL8QoH%Doo`DG(>8}!M)fl9p^t^ENXI%vPDrR(=V`hui(iSmvQ#Kr!D4mA zVxqFcg`&Bf56sI!b$GRc>%(>apL`l4-1Hk0bv5NfkN2L&`8XN7Y6?xErsbh)080ER zOyO(CS9mp@=l_!N|K2kOTOppn%AX|*3*x(vxW-tX&`Y~afHkn^H zx+(O+=soR;%3r};A?KEyr|gH1HznL`Vi6wvBFJ>4>vwK$2bCuKv@7{gFs_xgBvibHE4bDNEod+yhfq;fbH0_L5(SD@4x6fB(RBeVu42s?F zo$^s?3`;z@R+!oX!{^Yn4im8Y@%r`9L3at$Q`f!?r?VDv8rgP!v&@d>iRC~&?YdCk zU2gY^?76zk`_H8{Ey+=!r~lJru+a_89HiWkho+J!@d)!~&}~T_EdX>T9Y#ji1c%d` z7yV|Q#zCdtdvqBN2$4g zgO#q}bDEKOwqkxpy|)d15S1Z~it9YZ?|3zHV#)>E>W&X=q< z!Uc|Id^+o=aw_c?FGj&`93VFw>XqAFH@WcE59{JEL)AxHx zmCD5Q)IWwFXoJE_cZUqK@?&>dduhX$67LsM&Woen?H`A5Ipg{rzT5~arOiHz>cz`p zwJ-U5_p&gHy&oY9v>$eN@{hU2uE@t^~;xyO}lV6RX4Tej6?h zT(E3Iy#8>RaXPwnZc?*-v#LNS8=9Yj?_Bl0sz}xV28u@QLInn%K8gSp;h0VB`v{?X zHyTr&CMAwgA2(}JgXuw`^_z~f$F1s4`*&R{z>YS466c=f_}=^*^-6)mMBhaE?rXxu z-8QqQCfWg8w^jEHKr02CBI^swlnW+gmv%o~l{~~VQh5}i-s0lXgvYeU{62?(^D;CA zr?BV(q5A$#maSC82}Ynmetf>f=H{YnI4*jncOTBmANS@_OHtSZkA}=RGoAYMy*Fes zs{Zk*-*Uq7tM3buED14vaAeBuddrM*%0}$xZz?Q=YyW+N#(82SwXD|;`Gh#mAdMC3 zy!fF)uG2tjGrs=KFW7&YT<#gq_y@V^=<4Y)pQ@H1_gctm2kk}gT~L`kmdf8e3rk2Mbd;g)*x22 z6daN#;$L7**S_PXjy~Va0NxFNzR_(1(%^qmj2YC@<*thM6J8?#=DLe zrZ*3nw@$k_4A-53X~Wwg-%IUlLhL`;yce(K*w(jS|3ai=;rx_+Wfq3;@}Zfot&Udh zY5Mpoj=EvbtN5AFoHI$!7_X;4Sk#nN-0=ui!?3N{!t{&z(Ylocj9k5a?SZcxV?Fj-UjGF(rh~wNrs_0 zF|z)UGJbe2y&xX?p7-dN=$wgtmjSNeU8?ahc%Nk{HC4TEfRRJIOhz0f%a!%>;tY%2 zvl)viQQ3z?6*`93QW#!DIVsR!)}D(yj^-fox}w)v2rfP6SAY`8_RhsrxdU$Td`FkuB3@r^vs zxSK8ZBcb<$gor`w!#j~v_rr7Vgk7yHeU?8oUJ;mmHN_Vn#hpi^boh7am!rm(bJ5#Co$9QOr-bjU{qd$8ku$x+;qPHhdpeJ=Y%U`NqHx z{gcxhgXS%veEF$`M5?;m`i&%1T_xY$of6e~WFPJlfT>7cOSY@mkt0VDyf@#g$-dNM z≥9|L8oW+Xz1Gvp6gSY~qQpg;nLH@;#F@@Pt? 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 X^1a5$zbW7$S+MI?d938Q?f(9s+I45n literal 0 HcmV?d00001 diff --git a/overlay/packages/apps/Settings/res/values/bools.xml b/overlay/packages/apps/Settings/res/values/bools.xml new file mode 100644 index 0000000..fdb0565 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values/bools.xml @@ -0,0 +1,21 @@ + + + + + + true + + From 19308816cdc741763ea035167ebb7ce7814e7d5b Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Wed, 7 Jun 2017 17:15:43 -0700 Subject: [PATCH 108/182] audio: add mixer path definition for mmap no irq mode Bug: 33398120 Test: build taimen-eng Change-Id: Id8c79737932d54948516a2a9178d8fdb0dc4edab --- audio_platform_info_tavil.xml | 2 ++ mixer_paths_tavil.xml | 43 +++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml index 082e83a..a75b090 100644 --- a/audio_platform_info_tavil.xml +++ b/audio_platform_info_tavil.xml @@ -50,6 +50,8 @@ + + diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index 4c6f0bc..ae5fae7 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -868,6 +868,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -908,6 +934,23 @@ + + + + + + + + + + + + + + + + + From 90a13ffb7086022239d894217421678c6912e5eb Mon Sep 17 00:00:00 2001 From: Junda Liu Date: Mon, 12 Jun 2017 14:34:19 -0700 Subject: [PATCH 109/182] Set build.hardware.revision property. Bug: b/38167472 Test: make & check property Change-Id: I5aab680dd83a04237448438d5a4d69450f89a844 --- init-taimen.rc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/init-taimen.rc b/init-taimen.rc index fb8b1ee..43461fc 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -30,6 +30,9 @@ on init && property:ro.boot.slot=* # will remove this once slot_suffix is deprecated setprop ro.boot.slot_suffix _${ro.boot.slot} +on init && property:ro.boot.revision=* + setprop ro.boot.hardware.revision ${ro.boot.revision} + on property:init.svc.fps_hal=running && property:ro.boot.revision=rev_0 stop fps_hal From beaa439942ca70ed8717841562817b8d54809b00 Mon Sep 17 00:00:00 2001 From: Haynes Mathew George Date: Fri, 19 May 2017 15:13:38 -0700 Subject: [PATCH 110/182] taimen: voip rx controls mixer path additions audio_platform info updates Bug: 62393776 Test: hangout call Change-Id: I7af811856846d8075e16ff8f540a7931d31581c9 Signed-off-by: David Lin --- audio_platform_info_tavil.xml | 10 +++--- mixer_paths_tavil.xml | 63 ++++++++++++++++++++++++++++++++--- 2 files changed, 64 insertions(+), 9 deletions(-) diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml index a75b090..0715a0c 100644 --- a/audio_platform_info_tavil.xml +++ b/audio_platform_info_tavil.xml @@ -52,6 +52,8 @@ + + @@ -71,10 +73,10 @@ - - - - + + + + diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index ae5fae7..f585d4a 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -400,7 +400,7 @@ - + @@ -606,19 +606,19 @@ - + - + - + - + @@ -1871,6 +1871,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From f791a5ddf8d7b81a0e628a0c3e54518483c36167 Mon Sep 17 00:00:00 2001 From: Glen Kuhne Date: Tue, 13 Jun 2017 13:29:59 -0700 Subject: [PATCH 111/182] Enable scan probe Information Element Whitelist This change enables the Information Element in QCMs driver, only allowing the following IE in probe requests while the device is scanning in an unassociated state: - SSID Parameter Set - DS Parameter Set - Basic Rates This improves privacy of the device, by reducing the fingerprint of its probe requests, and removing IEs which contain uniquely identifiable information. Test: Verified via wireshark Bug: 37281277 Change-Id: Icc0151c214723a3af7c112b8ea8de50d799450a1 --- WCNSS_qcom_cfg.ini | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/WCNSS_qcom_cfg.ini b/WCNSS_qcom_cfg.ini index c4c4cce..99d7cbf 100644 --- a/WCNSS_qcom_cfg.ini +++ b/WCNSS_qcom_cfg.ini @@ -299,6 +299,24 @@ adapt_dwell_lpf_weight=80 adapt_dwell_wifi_act_threshold=10 +# Enable or disable Probe Req Information Element whitelist. When enabled, IEs corresponding to bits +# set in bitmaps are allowed in probe request, all others removed while device is unassociated +# with an AP +# 1=Enable, 0=Disable (default) +g_enable_probereq_whitelist_ies=1 + +# ie bitmap examples: = [] +# g_probe_req_ie_bitmap_0=0x80000009 #[0, 3, 31] +# g_probe_req_ie_bitmap_0=0x00000000 #[] (default) +# g_probe_req_ie_bitmap_1=0x80000009 #[32, 35, 63] +g_probe_req_ie_bitmap_0=0x0000000B +# g_probe_req_ie_bitmap_1=0x00000000 +# g_probe_req_ie_bitmap_2=0x00000000 +# g_probe_req_ie_bitmap_3=0x00000000 +# g_probe_req_ie_bitmap_4=0x00000000 +# g_probe_req_ie_bitmap_5=0x00000000 +# g_probe_req_ie_bitmap_6=0x00000000 +# g_probe_req_ie_bitmap_7=0x00000000 ############################################# # Power related configurations From 30a03a405d172a1aa99f77776ac0d11f7c967a17 Mon Sep 17 00:00:00 2001 From: Kumar Anand Date: Tue, 13 Jun 2017 12:06:27 -0700 Subject: [PATCH 112/182] wifi: update INI configuration file Bug: 38017212 Bug: 38270135 Bug: 62205428 Bug: 62074680 Test: Wifi Regression Test Change-Id: I83f3430fb3192b53590ca3452f490231c55d24b5 --- WCNSS_qcom_cfg.ini | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/WCNSS_qcom_cfg.ini b/WCNSS_qcom_cfg.ini index c4c4cce..5a912fc 100644 --- a/WCNSS_qcom_cfg.ini +++ b/WCNSS_qcom_cfg.ini @@ -11,6 +11,9 @@ Intf1MacAddress=000AF58989FE Intf2MacAddress=000AF58989FD Intf3MacAddress=000AF58989FC +#Disable DBS +gDualMacFeatureDisable=1 + #Channel Bonding gChannelBondingMode5GHz=1 gChannelBondingMode24GHz=0 @@ -447,6 +450,13 @@ gActiveModeOffload=1 # Enable Active mode offload gEnableActiveModeOffload=1 +#Enable APF in Active mode +gActiveUcBpfMode=1 +gActiveMcBcBpfMode=1 + +#HW CCE Filter mode +gHwFilterMode=0 + # WOW Enable/Disable. # 0 - Disable both magic pattern match and pattern byte match. # 1 - Enable magic pattern match on all interfaces. @@ -589,10 +599,6 @@ gSapSccChanAvoidance=0 #Enable/Disable Tx beamformee in SAP mode gEnableTxBFeeSAP=1 -#Disable DBS -gDualMacFeatureDisable=1 - - END # Note: Configuration parser would not read anything past the END marker From 86a34d44a028e1d18fb6d941a6c763783f31a165 Mon Sep 17 00:00:00 2001 From: David Lin Date: Fri, 16 Jun 2017 12:11:12 -0700 Subject: [PATCH 113/182] audio: set BE name for speaker and usb combo device Bug: 35675592 Test: ringer on speaker and headset Change-Id: I02f7235eebd6d712d2c8ef33225a412e0696c642 Signed-off-by: David Lin --- audio_platform_info_tavil.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml index 0715a0c..515d314 100644 --- a/audio_platform_info_tavil.xml +++ b/audio_platform_info_tavil.xml @@ -66,6 +66,7 @@ + From 2ef40488a8d9736a0160e913d18aea3f410b4225 Mon Sep 17 00:00:00 2001 From: Jack He Date: Fri, 2 Jun 2017 19:28:53 -0700 Subject: [PATCH 114/182] Add speaker + bt-sco combo device * Add path entry for speaker + bt-sco combo device in mixer_path_tavil.xml * Add backend support for such path in audio_platform_info_tavil.xml * Add audio-ull-playback paths for Bluetooth: audio-ull-playback bt-sco audio-ull-playback bt-sco-wb Bug: 62541790 Bug: 19171297 Test: make, HFP regression, testplans/92476 Change-Id: Iafd893da6d044bc4c9679da12692d8f9eec33a79 --- audio_platform_info_tavil.xml | 4 +++ mixer_paths_tavil.xml | 59 +++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml index 0715a0c..b0c30c4 100644 --- a/audio_platform_info_tavil.xml +++ b/audio_platform_info_tavil.xml @@ -71,6 +71,10 @@ + + + + diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index f585d4a..9357848 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -681,6 +681,16 @@ + + + + + + + + + + @@ -741,6 +751,16 @@ + + + + + + + + + + @@ -775,6 +795,15 @@ + + + + + + + + + @@ -792,6 +821,16 @@ + + + + + + + + + + @@ -868,6 +907,16 @@ + + + + + + + + + + @@ -894,6 +943,16 @@ + + + + + + + + + + From dc1a7457f8b49742e6cbe39af73d279ee3bfcbe0 Mon Sep 17 00:00:00 2001 From: "taeho.youn" Date: Sun, 4 Jun 2017 18:05:28 +0900 Subject: [PATCH 115/182] taimen: audio: configuration for TTY device Bug: 62249703 Test: audio sanity test Change-Id: If5221697fd06ebdea310324434d8f063275dc259 Signed-off-by: taeho.youn Signed-off-by: David Lin --- audio_platform_info_tavil.xml | 4 ++++ mixer_paths_tavil.xml | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml index 1bdc769..c3f9ee5 100644 --- a/audio_platform_info_tavil.xml +++ b/audio_platform_info_tavil.xml @@ -76,6 +76,10 @@ + + + + diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index 9357848..277d7bd 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -761,6 +761,14 @@ + + + + + + + + @@ -1100,6 +1108,16 @@ + + + + + + + + + + @@ -1855,6 +1873,20 @@ + + + + + + + + + + + + + + From c9c0eb7264807b8af3934edb94e87698aafdadcd Mon Sep 17 00:00:00 2001 From: John Dias Date: Mon, 19 Jun 2017 17:23:00 -0700 Subject: [PATCH 116/182] Fix hwui settings Bug: 62375787 Test: boot and basic use Change-Id: I79216efdadfa929d0b60872ed5d137dbd5e62dcc --- device.mk | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/device.mk b/device.mk index 5c8bfb9..8a52bbe 100644 --- a/device.mk +++ b/device.mk @@ -88,3 +88,17 @@ PRODUCT_PROPERTY_OVERRIDES += \ PRODUCT_PROPERTY_OVERRIDES += \ ro.vibrator.hal.click.duration=10 \ ro.vibrator.hal.tick.duration=4 + +# HWUI common settings +PRODUCT_PROPERTY_OVERRIDES += \ + ro.hwui.gradient_cache_size=1 \ + ro.hwui.drop_shadow_cache_size=6 \ + ro.hwui.r_buffer_cache_size=8 \ + ro.hwui.texture_cache_flushrate=0.4 \ + ro.hwui.text_small_cache_width=1024 \ + ro.hwui.text_small_cache_height=1024 \ + ro.hwui.text_large_cache_width=2048 \ + ro.hwui.text_large_cache_height=1024 \ + ro.hwui.texture_cache_size=84 \ + ro.hwui.layer_cache_size=64 \ + ro.hwui.path_cache_size=32 From 11c3c975d3f95958928ad94ba249e952d8eb41a9 Mon Sep 17 00:00:00 2001 From: John Dias Date: Tue, 20 Jun 2017 16:44:29 -0700 Subject: [PATCH 117/182] Change i/o scheduler back to cfq With noop scheduler, I see dramatic jank with an irritant i/o thread; going back to cfq, which doesn't have nearly the same negative impact on UX. Bug: 62375787 Test: boot, scroll a lot Change-Id: I6a544075a7ae71830e8ea9cb6a594dd062941f35 --- init-taimen.rc | 2 -- 1 file changed, 2 deletions(-) diff --git a/init-taimen.rc b/init-taimen.rc index 43461fc..dd13755 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -15,11 +15,9 @@ on late-fs on property:sys.boot_completed=1 # end boot time fs tune - write /sys/block/sda/queue/scheduler noop write /sys/block/sda/queue/read_ahead_kb 512 write /sys/block/sda/queue/nr_requests 128 write /sys/block/sda/queue/iostats 1 - write /sys/block/sde/queue/scheduler noop write /sys/block/sde/queue/read_ahead_kb 512 write /sys/block/sde/queue/nr_requests 128 write /sys/block/sde/queue/iostats 1 From c5222db05d9efe9521f1a085591ebf954a6663bd Mon Sep 17 00:00:00 2001 From: Haynes Mathew George Date: Wed, 31 May 2017 12:28:07 -0700 Subject: [PATCH 118/182] audio_platform_info: Update pcm devices for MMAP usecase Use MultiMedia3 FE Bug: 33398120 Test: verified MMAP capture and playback with AAudio Change-Id: I2e1873c6b173031da8afb28530745f7419734238 --- audio_platform_info_tavil.xml | 4 ++-- mixer_paths_tavil.xml | 33 ++++++++++++++++++++++++--------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml index c3f9ee5..b065b26 100644 --- a/audio_platform_info_tavil.xml +++ b/audio_platform_info_tavil.xml @@ -50,8 +50,8 @@ - - + + diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index 277d7bd..a4a5ba4 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -95,6 +95,7 @@ + @@ -194,6 +195,7 @@ + @@ -204,6 +206,7 @@ + @@ -795,7 +798,7 @@ - + @@ -926,11 +929,11 @@ - + - + @@ -939,7 +942,7 @@ - + @@ -948,7 +951,15 @@ - + + + + + + + + + @@ -1002,11 +1013,11 @@ - + - + @@ -1015,7 +1026,11 @@ - + + + + + @@ -1933,7 +1948,7 @@ - + From b540c45ae2882952b45f291b42313489a802bd06 Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Thu, 22 Jun 2017 10:28:59 -0700 Subject: [PATCH 119/182] Define rounded corner setting for recovery. Bug: 62732748 Test: Boot into recovery; check that recovery menu and 'View recovery logs' don't have obscured text. Change-Id: I03387573a4e474bff7d823f5390acef61a9312e8 (cherry picked from commit 174e936f5293a68e48b9f1df403aacfa21caaa70) --- BoardConfig.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/BoardConfig.mk b/BoardConfig.mk index 429085c..8f43bfb 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -59,3 +59,7 @@ endif BOARD_PERFSETUP_SCRIPT := platform_testing/scripts/perf-setup/wahoo-setup.sh BOARD_LISA_TARGET_SCRIPTS := device/google/wahoo/lisa/ + +# Rounded corners recovery UI. 105px = 30dp * 3.5 density, where 30dp comes from +# rounded_corner_radius in overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml. +TARGET_RECOVERY_UI_MARGIN_HEIGHT := 105 From 4a6251e1f904a3c71de12160ffaca6a5cec18b5b Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Fri, 23 Jun 2017 10:25:08 -0700 Subject: [PATCH 120/182] wifi: Remove obsolete cfg.ini items 1. Remove obsolete cfg.ini items 2. g_enable_probereq_whitelist_ies=1 Bug: 62877729 Change-Id: Ifb02bf2f1b290e624dc455c34251fc4cf374e697 Signed-off-by: Ecco Park --- WCNSS_qcom_cfg.ini | 43 ++++++++++++++----------------------------- 1 file changed, 14 insertions(+), 29 deletions(-) diff --git a/WCNSS_qcom_cfg.ini b/WCNSS_qcom_cfg.ini index 9f3f0ad..989e3a6 100644 --- a/WCNSS_qcom_cfg.ini +++ b/WCNSS_qcom_cfg.ini @@ -11,9 +11,6 @@ Intf1MacAddress=000AF58989FE Intf2MacAddress=000AF58989FD Intf3MacAddress=000AF58989FC -#Disable DBS -gDualMacFeatureDisable=1 - #Channel Bonding gChannelBondingMode5GHz=1 gChannelBondingMode24GHz=0 @@ -257,10 +254,6 @@ gScanResultAgeCount=1 #Enable thermal mitigation gThermalMitigationEnable=0 -#List of Country codes for which 11ac needs to be disabled -#Each country code must be delimited by comma(,) -gListOfNon11acCountryCode=RU,UA,ZA - #Maximum Channel time in msec gMaxMediumTime=6000 @@ -348,20 +341,6 @@ gEnableSuspend=3 #Enable Power Save offload gEnablePowerSaveOffload=2 -# Enable Runtime PM Feature. -# Enabling this feature will put target wow and shutdown pcie link -# when inactivity is detected in WLAN Driver. -# This feature is inactive when beaconing interfaces are active with -# clients associated. -# 0 - disable -# 1 - enable -gRuntimePM=1 - -# When gRuntimePM is disabled gRuntimeAutoTime won't take effect. -# The Time is in msec. -# 100 is min, 10000 is max, 500 is default. -gRuntimePMDelay=500 - #Enable Power saving mechanism Based on Android Framework #If set to 0 Driver internally control the Power saving mechanism #If set to 1 Android Framwrok control the Power saving mechanism @@ -443,15 +422,9 @@ McastBcastFilter=3 #Flag to enable HostARPOffload feature or not hostArpOffload=1 -#Flag to enable TCPChkSumOffld feature or not -gEnableTCPChkSumOffld=1 - #Flag to enable HostNSOffload feature or not hostNSOffload=1 -#Flag to enable IPChkSumOffld feature or not -gEnableIPChecksumOffload=1 - # controlling the following offload patterns # through ini parameter. Default value is 1 # to disable set it to zero. ssdp = 0 @@ -462,10 +435,10 @@ ssdp = 0 #Enable MC address filtering offload gMCAddrListEnable=1 -# Enable Active mode offload +#Enable Active mode offload gActiveModeOffload=1 -# Enable Active mode offload +#Enable Active mode offload gEnableActiveModeOffload=1 #Enable APF in Active mode @@ -617,6 +590,18 @@ gSapSccChanAvoidance=0 #Enable/Disable Tx beamformee in SAP mode gEnableTxBFeeSAP=1 + + +#Enable/Disable dual MAC feature +# 0 - enable DBS +# 1 - disable DBS +# 2 - disable DBS for connection but keep DBS for scan +# 3 - disable DBS for connection but keep DBS scan with async +# scan policy disabled +# 4 - enable DBS for connection as well as for scan with async +# scan policy disabled +gDualMacFeatureDisable=1 + END # Note: Configuration parser would not read anything past the END marker From dcbb8b232cedf4ce65453bfee7fa39315e744011 Mon Sep 17 00:00:00 2001 From: "eunsoo.na" Date: Mon, 12 Jun 2017 22:16:45 +0900 Subject: [PATCH 121/182] taimen: Add property of demo_mode for lge_battery Bug: 37263971 Bug: 38486620 Change-Id: I2c8617c56799d752c8ca18ea8ccc6d0a3eab0620 Signed-off-by: sodam89.kim Signed-off-by: eunsoo.na --- init-taimen.rc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/init-taimen.rc b/init-taimen.rc index 43461fc..35e9c81 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -39,3 +39,6 @@ on property:init.svc.fps_hal=running && property:ro.boot.revision=rev_0 on property:sys.all.modules.ready=1 # Update touch firmware if required write /sys/devices/virtual/input/ftm4_touch/check_fw 1 + +on property:sys.retaildemo.enabled=* && property:sys.all.modules.ready=1 + write /sys/module/lge_battery/parameters/demo_mode ${sys.retaildemo.enabled} From 4e1bf7e542fc99a57c2eb734938de94cc1b833f1 Mon Sep 17 00:00:00 2001 From: Michael Wright Date: Tue, 27 Jun 2017 00:56:32 +0100 Subject: [PATCH 122/182] Fix autobrightness control points. The control points from another device were directly copied over to Taimen, but Taimen's display's display has a very different mapping between backlight value and actual produced brightness. These new values bring it inline without our ML learned curve compensating for this fact. The one difference here is that Taimen can go brighter than the devices the model was trained on so an additional point was introduced. Based on visual inspection the curve looks almost exactly linear in the last few points before it hits the ceiling, so the final point is just a linear extrapolation from Marlin's final two control points to Taimen's maximum brightness. Note also that Taimen's display can't be set above 223 in normal use. Every value about this is an "overdrive" setting and greatly increases the risk of burn-in not to mention using significantly more power. Bug: 62027049 Test: manual Change-Id: Iad725edd7adbe4505fd13237a6cb3aa2efd9bbcf --- .../base/core/res/res/values/config.xml | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml index fc6a9a5..dfae9b3 100644 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -46,6 +46,7 @@ 1250 2200 4000 + 5000 - 10 - 33 - 49 - 68 - 87 - 108 - 132 - 167 - 206 - 255 + 43 + 67 + 82 + 101 + 113 + 125 + 140 + 159 + 175 + 207 + 223 4 + + 223 + "usbradio:adb:diag,serial_cdev,rmnet_gsi,adb:diag,serial_cdev,rmnet_gsi" From e490d1eb4bc015b3e937f531b6be1d30257eeef8 Mon Sep 17 00:00:00 2001 From: "taeho.youn" Date: Sat, 17 Jun 2017 21:32:33 +0900 Subject: [PATCH 123/182] audio: Update configuration for VoIP - VOIP mixer Tx gain - set app type for VoIP - set acdb_id for VoIP speaker - set echo reference for VoIP speaker Bug: 62826294 Test: audio sanity test Change-Id: I8c05d666d3b4fe8719419d3dde7954e91201397b --- audio_platform_info_tavil.xml | 4 ++++ mixer_paths_tavil.xml | 27 ++++++++++++++++++++++----- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/audio_platform_info_tavil.xml b/audio_platform_info_tavil.xml index b065b26..a0247e8 100644 --- a/audio_platform_info_tavil.xml +++ b/audio_platform_info_tavil.xml @@ -35,6 +35,8 @@ + + @@ -84,8 +86,10 @@ + + diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index a4a5ba4..090fe20 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -604,26 +604,42 @@ + + + + + + + + + + + + + + + + @@ -1451,6 +1467,7 @@ + @@ -1493,9 +1510,9 @@ - - - + + + @@ -1531,8 +1548,8 @@ - - + + From e49af3bf4dacd1a73efe7e834147538509423e70 Mon Sep 17 00:00:00 2001 From: Glenn Kasten Date: Tue, 20 Jun 2017 15:45:15 -0700 Subject: [PATCH 124/182] Reduce USB audio latency on Walleye only No change in latency for Taimen Bug: 62375603 Test: Loopback shows reduction and no glitches on Walleye, no change on Taimen Change-Id: I6dc85ecdc825462acb4e1cda3227fb4d4f93c56e --- device.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/device.mk b/device.mk index 8a52bbe..1e62395 100644 --- a/device.mk +++ b/device.mk @@ -63,6 +63,9 @@ PRODUCT_COPY_FILES += \ device/google/taimen/mixer_paths_tavil.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_tavil_taimen.xml \ device/google/taimen/audio_platform_info_tavil.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info_tavil_taimen.xml +# Bug 62375603 +PRODUCT_PROPERTY_OVERRIDES += audio.adm.buffering.ms=4 + # Wifi configuration file PRODUCT_COPY_FILES += \ device/google/taimen/WCNSS_qcom_cfg.ini:$(TARGET_COPY_OUT_VENDOR)/firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini From 30d1312b7741ec1aa6b88374529f4561fb68a8a3 Mon Sep 17 00:00:00 2001 From: Ranjith Kagathi Ananda Date: Thu, 29 Jun 2017 16:37:03 -0700 Subject: [PATCH 125/182] Remove IMU cad calibration file Remove the cad calibration file and use only factory calibration file. Test: Tested on Taimen BUG=63146009 Change-Id: I3cf1a0084723b925eaa358830f76d48da0841b4e --- calibration_cad.xml | 58 --------------------------------------------- device.mk | 5 ---- 2 files changed, 63 deletions(-) delete mode 100644 calibration_cad.xml diff --git a/calibration_cad.xml b/calibration_cad.xml deleted file mode 100644 index 5a40d55..0000000 --- a/calibration_cad.xml +++ /dev/null @@ -1,58 +0,0 @@ - -0 - - - 640 - 480 - [512.4374; 512.4374; 320.0; 240.0; 0.0; 0.0; 0.0] - - - - - - 640 - 480 - [512.4374; 512.4374; 320.0; 240.0; 0.0; 0.0; 0.0] - - - - - - 640 - 480 - [512.4374; 512.4374; 320.0; 240.0; 0.0; 0.0; 0.0] - - - - - [0.0; 0.0; 0.0; 0.0; 0.0; 0.0] - [1; 1; 1; 0; 0; 0; 1; 1; 1; 0; 0; 0; 0; 0; 0; 1] - 5.3088444e-4 - 1.4125375e-4 - 0.004883649 - 1.2589254e-2 - - - [1, 0, 0, -0.0394227; 0, -1, 0, 0.0277431; 0, 0, -1, -0.00758045] - - - [1, 0, 0, -0.0394227; 0, -1, 0, 0.0277431; 0, 0, -1, -0.00758045] - - - [1, 0, 0, -0.0394227; 0, -1, 0, 0.0277431; 0, 0, -1, -0.00758045] - - - [0, -1, 0, 0; 1, 0, 0, 0; 0, 0, 1, 0] - - - [0, 1, 0, 0; -1, 0, 0, 0; 0, 0, 1, 0] - - - [0, 1, 0, 0; -1, 0, 0, 0; 0, 0, 1, 0] - - - 37.389444 - 122.0819 - 32 - - diff --git a/device.mk b/device.mk index 8a52bbe..98d331b 100644 --- a/device.mk +++ b/device.mk @@ -75,13 +75,8 @@ PRODUCT_PROPERTY_OVERRIDES += \ ro.radio.log_prefix="modem_log_" endif -#IMU calibration -PRODUCT_COPY_FILES += \ - device/google/taimen/calibration_cad.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/calibration_cad.xml - #IMU calibration PRODUCT_PROPERTY_OVERRIDES += \ - persist.config.calibration_cad=/vendor/etc/sensors/calibration_cad.xml \ persist.config.calibration_fac=/persist/sensors/calibration/calibration.xml # Vibrator HAL From 0e317bb3a3e644fc37ac416fa3faa2b960727872 Mon Sep 17 00:00:00 2001 From: "hyunho.koh" Date: Mon, 29 May 2017 14:20:31 +0900 Subject: [PATCH 126/182] taimen: NFC: update rf values a. DCDC outut 5V->5.25V b. Card mode config add(Mode1(28), FDT(7F->7E), TX1/TX2 = F4/F4 c. DLMA(dynamic LMA) add d. releated R/W(Hybrid LPM) e. Mode2 - > Mode1 f. DLMA(dynamic LMA) off g. Hybrid mode -> advanced LPCD mode Bug: 63146248 Test: Basic Nfc Functionality Change-Id: Iac945bb0ccc85f7711ba02a774c3e9b163e80758 --- nfc/libnfc-nxp.taimen.conf | 135 +++++++++++++++++++++++++++++++++++-- 1 file changed, 131 insertions(+), 4 deletions(-) diff --git a/nfc/libnfc-nxp.taimen.conf b/nfc/libnfc-nxp.taimen.conf index 08abdc0..98f3a1e 100644 --- a/nfc/libnfc-nxp.taimen.conf +++ b/nfc/libnfc-nxp.taimen.conf @@ -83,7 +83,8 @@ NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, ############################################################################### #config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, #monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms -NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C} +#NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 11, 00, D0, 0C} +NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 15, 00, D0, 0C} ############################################################################### # NXP RF configuration ALM/PLM settings @@ -91,24 +92,121 @@ NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, #NXP_RF_CONF_BLK_1={ #} +NXP_RF_CONF_BLK_1={ 20, 02, A8, 14, + A0, 0D, 06, 06, 37, 08, 76, 00, 00, + A0, 38, 04, 14, 0B, 0B, 00, + A0, 0D, 03, 24, 03, 7E, + A0, 0D, 06, 06, 42, 00, 00, F4, F4, + A0, 0D, 04, 32, 42, FC, 40, + A0, 0D, 04, 46, 42, 68, 40, + A0, 0D, 04, 56, 42, 78, 40, + A0, 0D, 04, 5C, 42, 80, 40, + A0, 0D, 06, 34, 44, 66, 0A, 00, 00, + A0, 0D, 06, 48, 44, 65, 0A, 00, 00, + A0, 0D, 06, 58, 44, 55, 08, 00, 00, + A0, 0D, 06, 5E, 44, 55, 08, 00, 00, + A0, 0D, 06, 34, 2D, DC, 20, 04, 00, + A0, 0D, 06, 48, 2D, 15, 34, 1F, 01, + A0, 0D, 06, 58, 2D, 0D, 48, 0C, 01, + A0, 0D, 06, 5E, 2D, 0D, 5A, 0C, 01, + A0, 0D, 06, 32, 4A, 53, 07, 00, 1B, + A0, 0D, 06, 46, 4A, 33, 07, 00, 07, + A0, 0D, 06, 56, 4A, 43, 07, 00, 07, + A0, 0D, 06, 5C, 4A, 11, 07, 01, 07 +} + ############################################################################### # NXP RF configuration ALM/PLM settings # This section needs to be updated with the correct values based on the platform #NXP_RF_CONF_BLK_2={ #} +NXP_RF_CONF_BLK_2={ 20, 02, 26, 02, + A0, 3A, 08, 2D, 00, 2D, 00, 2D, 00, 2D, 00, + A0, 29, 17, 1C, 02, 00, 1F, 00, 02, 00, 1F, 00, 02, 00, 40, F3, F3, 00, 43, F3, F3, 38, 70, 00, 00, 01 +} + ############################################################################### # NXP RF configuration ALM/PLM settings # This section needs to be updated with the correct values based on the platform #NXP_RF_CONF_BLK_3={ #} +NXP_RF_CONF_BLK_3={20, 02, D6, 01, + A0, 34, D2, 23, 04, 18, + 07, + 40, + 00, 20, 40, 00, + 2D, 20, 40, 00, + 32, 20, 40, 00, + 3B, 20, 40, 00, + 5C, 20, 40, 00, + 9A, 00, 60, 00, + AE, 00, 70, 00, + 00, 00, 08, 02, + 00, 00, 08, 02, + 00, 00, 08, 02, + 00, 00, 08, 02, + 00, 00, 08, 02, + 00, 00, 08, 02, + 00, 00, 48, 01, + 00, 00, 08, 03, + 00, 00, 08, 01, + 00, 00, C8, 02, + 00, 00, C8, 00, + 00, 00, 88, 02, + 00, 00, 48, 02, + 00, 00, B8, 00, + 00, 00, 68, 00, + 00, 00, 18, 00, + 00, 00, 08, 02, + 00, 00, 00, 00, + 00, 00, 00, 00, + 07, + 00, 20, 40, 00, + 2D, 20, 40, 00, + 32, 20, 40, 00, + 3B, 20, 40, 00, + 5C, 20, 40, 00, + 9A, 00, 60, 00, + AE, 00, 70, 00, + 00, 00, 08, 02, + 00, 00, 08, 02, + 00, 00, 08, 02, + 00, 00, 08, 02, + 00, 00, 08, 02, + 00, 00, 08, 02, + 00, 00, 48, 01, + 00, 00, 08, 03, + 00, 00, 08, 01, + 00, 00, C8, 02, + 00, 00, C8, 00, + 00, 00, 88, 02, + 00, 00, 48, 02, + 00, 00, B8, 00, + 00, 00, 68, 00, + 00, 00, 18, 00, + 00, 00, 08, 02, + 00, 00, 00, 00 +} + + ############################################################################### # NXP RF configuration ALM/PLM settings # This section needs to be updated with the correct values based on the platform #NXP_RF_CONF_BLK_4={ #} +NXP_RF_CONF_BLK_4={ 20, 02, 5B, 01, + A0, 0B, 57, 05, 85, 90, 78, 0F, 4E, 00, 3D, 95, + 00, 00, 3D, 9F, 00, 00, 50, 9F, 00, 00, 59, 9F, 00, + 00, 5A, 9F, 00, 00, 64, 9F, 00, 00, 65, 1F, 00, 00, + 6E, 1F, 00, 00, 72, 1F, 00, 00, 79, 1F, 00, 00, 7B, + 1F, 00, 00, 84, 1F, 00, 00, 86, 1F, 00, 00, 8F, 1F, + 00, 00, 91, 1F, 00, 00, 9A, 1F, 00, 00, A1, 1F, 00, + 00, A7, 1F, 00, 00, B0, 1F, 00, 00, B9, 1F, 00, 00 +} + ############################################################################### # NXP RF configuration ALM/PLM settings # This section needs to be updated with the correct values based on the platform @@ -141,17 +239,46 @@ NXP_SET_CONFIG_ALWAYS=0x00 # UICC2 bit rate A0D1 # SWP1A interface A0D4 # DWP intf behavior config, SVDD Load activated by default if set to 0x31 - A037 -NXP_CORE_CONF_EXTN={20, 02, 25, 09, + +#NXP_CORE_CONF_EXTN={20, 02, 79, 17, +# A0, 02, 01, 01, +# A0, 0E, 0B, 11, 01, C2, 82, 00, 0A, 1E, 15, 00, D0, 0C, +# A0, 11, 04, CD, 67, 22, FF, +# A0, 12, 01, 02, +# A0, 37, 01, 35, +# A0, 40, 01, 00, +# A0, 41, 01, 03, +# A0, 42, 01, 19, +# A0, 43, 01, 04, +# A0, 47, 02, 00, 27, +# A0, 62, 01, 01, +# A0, 69, 09, 02, CF, 80, 00, 00, 07, 40, 00, 00, +# A0, 80, 02, 20, 03, +# A0, 85, 04, 51, 08, A8, 7C, +# A0, 96, 01, 20, +# A0, CD, 01, 7F, +# A0, D4, 01, 00, +# A0, D8, 01, 02, +# A0, EC, 01, 01, +# A0, ED, 01, 01, +# A0, F2, 01, 01, +# A0, F3, 02, 10, 27, +# A0, B1, 02, E8, 03 +#} + +NXP_CORE_CONF_EXTN={20, 02, 2D, 0B, A0, EC, 01, 01, A0, ED, 01, 00, A0, 5E, 01, 01, A0, 12, 01, 02, - A0, 40, 01, 01, + A0, 40, 01, 05, + A0, 41, 01, 05, + A0, 43, 01, 04, A0, DD, 01, 2D, A0, D1, 01, 02, A0, D4, 01, 01, A0, 37, 01, 35 - } +} # A0, F2, 01, 01, # A0, 40, 01, 01, # A0, 41, 01, 02, From ff14c3bc9c65e8f2786889f91bf72197ac2e03c0 Mon Sep 17 00:00:00 2001 From: Ruchi Kandoi Date: Tue, 13 Jun 2017 11:44:14 -0700 Subject: [PATCH 127/182] NCI 2.0 libnfc-nxp changes Bug: 63146248 Test: Android Beam, Nfc Tag and payments Change-Id: I12a74e2fb6ef0c853575f931b9bf83cd8f8c3648 --- nfc/libnfc-nxp.taimen.conf | 125 ++++++++++++++++++------------------- 1 file changed, 62 insertions(+), 63 deletions(-) diff --git a/nfc/libnfc-nxp.taimen.conf b/nfc/libnfc-nxp.taimen.conf index 98f3a1e..76468b4 100644 --- a/nfc/libnfc-nxp.taimen.conf +++ b/nfc/libnfc-nxp.taimen.conf @@ -54,7 +54,7 @@ NXP_SYS_CLOCK_TO_CFG=0x01 ############################################################################### # NXP proprietary settings -NXP_ACT_PROP_EXTN={20, 03, 03, 01, A0, 01} +NXP_ACT_PROP_EXTN={2F, 02, 00} ############################################################################### # NFC forum profile settings @@ -83,15 +83,11 @@ NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, ############################################################################### #config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, #monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms -#NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 11, 00, D0, 0C} NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 15, 00, D0, 0C} ############################################################################### # NXP RF configuration ALM/PLM settings # This section needs to be updated with the correct values based on the platform -#NXP_RF_CONF_BLK_1={ -#} - NXP_RF_CONF_BLK_1={ 20, 02, A8, 14, A0, 0D, 06, 06, 37, 08, 76, 00, 00, A0, 38, 04, 14, 0B, 0B, 00, @@ -118,9 +114,6 @@ NXP_RF_CONF_BLK_1={ 20, 02, A8, 14, ############################################################################### # NXP RF configuration ALM/PLM settings # This section needs to be updated with the correct values based on the platform -#NXP_RF_CONF_BLK_2={ -#} - NXP_RF_CONF_BLK_2={ 20, 02, 26, 02, A0, 3A, 08, 2D, 00, 2D, 00, 2D, 00, 2D, 00, A0, 29, 17, 1C, 02, 00, 1F, 00, 02, 00, 1F, 00, 02, 00, 40, F3, F3, 00, 43, F3, F3, 38, 70, 00, 00, 01 @@ -129,9 +122,6 @@ NXP_RF_CONF_BLK_2={ 20, 02, 26, 02, ############################################################################### # NXP RF configuration ALM/PLM settings # This section needs to be updated with the correct values based on the platform -#NXP_RF_CONF_BLK_3={ -#} - NXP_RF_CONF_BLK_3={20, 02, D6, 01, A0, 34, D2, 23, 04, 18, 07, @@ -190,13 +180,9 @@ NXP_RF_CONF_BLK_3={20, 02, D6, 01, 00, 00, 00, 00 } - ############################################################################### # NXP RF configuration ALM/PLM settings # This section needs to be updated with the correct values based on the platform -#NXP_RF_CONF_BLK_4={ -#} - NXP_RF_CONF_BLK_4={ 20, 02, 5B, 01, A0, 0B, 57, 05, 85, 90, 78, 0F, 4E, 00, 3D, 95, 00, 00, 3D, 9F, 00, 00, 50, 9F, 00, 00, 59, 9F, 00, @@ -235,50 +221,25 @@ NXP_SET_CONFIG_ALWAYS=0x00 # PbF settings A008 # Clock timeout settings A004 # eSE (SVDD) PWR REQ settings A0F2 +# Window size A0D8 +# DWP Speed A0D5 # How eSE connected to PN553 A012 # UICC2 bit rate A0D1 # SWP1A interface A0D4 -# DWP intf behavior config, SVDD Load activated by default if set to 0x31 - A037 - -#NXP_CORE_CONF_EXTN={20, 02, 79, 17, -# A0, 02, 01, 01, -# A0, 0E, 0B, 11, 01, C2, 82, 00, 0A, 1E, 15, 00, D0, 0C, -# A0, 11, 04, CD, 67, 22, FF, -# A0, 12, 01, 02, -# A0, 37, 01, 35, -# A0, 40, 01, 00, -# A0, 41, 01, 03, -# A0, 42, 01, 19, -# A0, 43, 01, 04, -# A0, 47, 02, 00, 27, -# A0, 62, 01, 01, -# A0, 69, 09, 02, CF, 80, 00, 00, 07, 40, 00, 00, -# A0, 80, 02, 20, 03, -# A0, 85, 04, 51, 08, A8, 7C, -# A0, 96, 01, 20, -# A0, CD, 01, 7F, -# A0, D4, 01, 00, -# A0, D8, 01, 02, -# A0, EC, 01, 01, -# A0, ED, 01, 01, -# A0, F2, 01, 01, -# A0, F3, 02, 10, 27, -# A0, B1, 02, E8, 03 -#} - -NXP_CORE_CONF_EXTN={20, 02, 2D, 0B, +# DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037 +NXP_CORE_CONF_EXTN={20, 02, 29, 0B, A0, EC, 01, 01, - A0, ED, 01, 00, + A0, ED, 01, 01, A0, 5E, 01, 01, A0, 12, 01, 02, - A0, 40, 01, 05, + A0, 40, 01, 01, A0, 41, 01, 05, A0, 43, 01, 04, - A0, DD, 01, 2D, A0, D1, 01, 02, - A0, D4, 01, 01, - A0, 37, 01, 35 -} + A0, D4, 01, 00, + A0, DD, 01, 2D, + A0, 37, 01, 35, + } # A0, F2, 01, 01, # A0, 40, 01, 01, # A0, 41, 01, 02, @@ -301,7 +262,8 @@ NXP_I2C_FRAGMENTATION_ENABLED=0x00 ############################################################################### # Core configuration settings -NXP_CORE_CONF={ 20, 02, 2E, 0E, +NXP_CORE_CONF={ 20, 02, 31, 0F, + 85, 01, 01, 28, 01, 00, 21, 01, 00, 30, 01, 08, @@ -325,14 +287,12 @@ NXP_CORE_CONF={ 20, 02, 2E, 0E, # A0, 53, 06, FF, FF, FF, FF, FF, FF, # A0, 54, 06, 00, 00, 00, 00, 00, 00} - ############################################################################### # Default SE Options # No secure element 0x00 # eSE 0x01 # UICC 0x02 # UICC2 0x04 - NXP_DEFAULT_SE=0x07 ############################################################################### @@ -349,7 +309,7 @@ NXP_SWP_FULL_PWR_ON=0x00 #PN67T 0x06 #PN553 0x07 #PN80T 0x08 -NXP_NFC_CHIP=0x07 +NXP_NFC_CHIP=0x08 ############################################################################### # CE when Screen state is locked @@ -401,6 +361,14 @@ DEFAULT_DESFIRE_ROUTE=0x02 # UICC2 0x03 DEFAULT_MIFARE_CLT_ROUTE=0x02 +############################################################################### +#Set the Felica CLT route Location : +#This settings will be used when application does not set this parameter +# eSE 0x01 +# UICC 0x02 +# UICC2 0x03 +DEFAULT_FELICA_CLT_ROUTE=0x01 + ############################################################################### #Set the default AID Power state : #This settings will be used when application does not set this parameter @@ -431,14 +399,6 @@ DEFAULT_DESFIRE_PWR_STATE=0x1B # bit pos 4 = Screen Off DEFAULT_MIFARE_CLT_PWR_STATE=0x1B -############################################################################### -#Set the Felica CLT route Location : -#This settings will be used when application does not set this parameter -# eSE 0x01 -# UICC 0x02 -# UICC2 0x03 -DEFAULT_FELICA_CLT_ROUTE=0x01 - ############################################################################### #Set the Felica CLT Power state : #This settings will be used when application does not set this parameter @@ -530,7 +490,7 @@ NXP_ESE_WIRED_PRT_MASK=0x00 #set mask = 0 NXP_UICC_WIRED_PRT_MASK=0x00 -############################################################################### +################################################################################ #RF field true delay Wired Mode # delay wired mode = 1 # allow wired mode = 0 @@ -561,12 +521,51 @@ NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01 #Disable 0x00 NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01 +############################################################################### +# Wired mode resume timeout vaule in wired mode resume feature enable +# DWP resume time out in ms( 4 bytes hex value and LSB first) +#example 1000 = 0x03E8 +#exmaple 2000 = 0x07D0 +#example 500 = 0x01F4 +NXP_WIREDMODE_RESUME_TIMEOUT={E8,03,00,00} +############################################################################### +# Power to eSE is controlled by DH or PMU depending on following configurations +#define DH_PWR_CONTROL 1 +#define PMU_PWR_CONTROL 2 +NXP_ESE_POWER_DH_CONTROL=1 + +############################################################################### +# Timeout value in milliseconds for wired mode resume after RF field event timeout +NXP_NFCC_RF_FIELD_EVENT_TIMEOUT=3000 + +############################################################################### +# NXP PMU Support configuration is sent if PMU_PWR_CONTROL is configured +# External PMU available in phone ON and phone OFF case if NXP_ESE_POWER_EXT_PMU=1 +# External PMU available only in phone ON case if NXP_ESE_POWER_EXT_PMU=2 +NXP_ESE_POWER_EXT_PMU=2 + +############################################################################### +# Whether to allow wired mode in desfire and mifare CLT +# Disable 0x00 +# Enable 0x01 +NXP_ALLOW_WIRED_IN_MIFARE_DESFIRE_CLT=0x00 + ############################################################################### # Restrict routing to first matched rule only. # Blacklist enable 0x01 # Blacklist disable 0x00 NXP_PROP_BLACKLIST_ROUTING=0x00 +############################################################################### +# Send DWP interface reset command as part of SE open +# Disable 0x00 +# Enable 0x01 +NXP_DWP_INTF_RESET_ENABLE=0x01 + +############################################################################### +# Timeout value in milliseconds for JCOP OS download to complete +OS_DOWNLOAD_TIMEOUT_VALUE=60000 + ############################################################################### # Timeout value in milliseconds to send response for Felica command received NXP_HCEF_CMD_RSP_TIMEOUT_VALUE=5000 From 6b5c4e3b4d9a987e17766fdb5884718e28d3612b Mon Sep 17 00:00:00 2001 From: John Dias Date: Thu, 29 Jun 2017 17:54:52 -0700 Subject: [PATCH 128/182] Make thermal throttling more aggressive For normal mode, make throttling more aggressive on Taimen, in line with tuning on our other devices. For VR mode, add an aggressive throttle just before shutdown. Bug: 36458508 Bug: 37544246 Test: Booted, checked throttling with adjusted temps Change-Id: Ia192535ed305cd6e8e1fbae4c53a7b4b7e3e8c23 --- thermal-engine-vr.conf | 8 ++++++++ thermal-engine.conf | 30 +++++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/thermal-engine-vr.conf b/thermal-engine-vr.conf index 46e993b..fc1cffd 100755 --- a/thermal-engine-vr.conf +++ b/thermal-engine-vr.conf @@ -7,3 +7,11 @@ thresholds_clr 65000 actions shutdown action_info 1 +[VR-SKIN] +algo_type monitor +sensor bd_therm +sampling 1000 +thresholds 62000 +thresholds_clr 58000 +actions cluster0+cluster1+gpu +action_info 883200+902400+342000000 diff --git a/thermal-engine.conf b/thermal-engine.conf index d7fac8a..a10045b 100755 --- a/thermal-engine.conf +++ b/thermal-engine.conf @@ -5,19 +5,39 @@ sensor bd_therm device cluster1 set_point 49000 set_point_clr 48000 -device_max_limit 2035200 +device_max_limit 1804800 time_constant 0 - + [SKIN-LOW-FLOOR] algo_type ss sampling 2000 sensor bd_therm device cluster1 -set_point 53000 -set_point_clr 52000 -device_max_limit 1728000 +set_point 51000 +set_point_clr 50000 +device_max_limit 1190400 time_constant 0 +[HOT-SKIN-VIRTUAL] +algo_type virtual +trip_sensor bd_therm +sensors tsens_tz_sensor13 tsens_tz_sensor0 +list_cnt 2 +weights 1 -1 +set_point 39000 +set_point_clr 36000 +sampling 1000 +math 0 + +[VIRTUAL-SS-GPU-SKIN] +algo_type ss +sensor HOT-SKIN-VIRTUAL +device gpu +sampling 2000 +set_point 7000 +set_point_clr 2000 +device_max_limit 414000000 + [SKIN-MONITOR] algo_type monitor sampling 2000 From 833eeb51975ff1dcd52463e0f540b9c7a0877642 Mon Sep 17 00:00:00 2001 From: "taeho.youn" Date: Mon, 26 Jun 2017 17:34:08 +0900 Subject: [PATCH 129/182] audio: volume curve tuning for system sounds in call The intervals(dB) by Ringtone/Alarm/Notification are too small to be recognized. the gap between each step 3dB -> 4.3dB. Bug: 62826294 Test: notification playback at different volume steps Change-Id: I02180a71878be65d1d2a976b42ba7c768e903a80 --- audio_policy_volumes.xml | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/audio_policy_volumes.xml b/audio_policy_volumes.xml index 256b5de..57f91c0 100644 --- a/audio_policy_volumes.xml +++ b/audio_policy_volumes.xml @@ -58,9 +58,7 @@ volume index from 0 to 100. - 1,-2970 - 33,-2010 - 66,-1020 + 1,-4000 100,0 - 1,-2970 - 33,-2010 - 66,-1020 + 1,-4000 100,0 - 1,-2970 - 33,-2010 - 66,-1020 + 1,-4000 100,0 Date: Sat, 17 Jun 2017 15:21:55 -0700 Subject: [PATCH 130/182] audio: config: add mixer control for speaker-swap This inits the default speaker swap channel. Bug: 62337071 Test: audio sanity test Change-Id: Ia53afb4841060ffa3d92cee5c7eb3372a092e2ed --- mixer_paths_tavil.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index 090fe20..4e3af0c 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -608,6 +608,9 @@ + + + From 6e6c88dab1e1a9fdd7c66c86b65a6de2fa10a03f Mon Sep 17 00:00:00 2001 From: "taeho.youn" Date: Thu, 29 Jun 2017 19:54:59 +0900 Subject: [PATCH 131/182] audio: sidetone and VoIP tuning - VoIP handset spk analog gain 97->93 - enable handset sidetone Bug: 62826294 Test: audio sanity test Change-Id: Ie4a0c92a445589f4345f5a902373d21b0f52a14e Signed-off-by: David Lin --- mixer_paths_tavil.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index 090fe20..448e484 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -1432,6 +1432,7 @@ + @@ -1548,8 +1549,8 @@ - - + + From 96ce5e0f1927f0e8201845ff06eee72a5d66c4f4 Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Thu, 6 Jul 2017 14:43:20 -0700 Subject: [PATCH 132/182] wifi: enable adaptive APF mode Bug: 63351644 Change-Id: Ieb2a5a0d72fb33c6802452ec19e85abfb007cc1a Signed-off-by: Ecco Park --- WCNSS_qcom_cfg.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WCNSS_qcom_cfg.ini b/WCNSS_qcom_cfg.ini index 989e3a6..bd8db84 100644 --- a/WCNSS_qcom_cfg.ini +++ b/WCNSS_qcom_cfg.ini @@ -442,7 +442,7 @@ gActiveModeOffload=1 gEnableActiveModeOffload=1 #Enable APF in Active mode -gActiveUcBpfMode=1 +gActiveUcBpfMode=2 gActiveMcBcBpfMode=1 #HW CCE Filter mode From 4e5076133bdb1333900c644882d8a575268f35fd Mon Sep 17 00:00:00 2001 From: John Dias Date: Thu, 6 Jul 2017 16:22:53 -0700 Subject: [PATCH 133/182] thermal-engine.conf: add config for new back thermistor Newer revisions of hardware have changed the placement of the bd_therm thermistor. To allow software to work on both old and new hardware, we've renamed that thermistor to bd_therm on the new hardware, which requires a new set of throttling constraints using that thermistor. Bug: 63344220 Test: booted old and new hardware, checked configs, and verified that throttling happened at the right temps according to the thermistors Change-Id: I9639142551a8fc1dcbe65559045ae40b2ace5537 --- thermal-engine-vr.conf | 40 +++++++++++++++++++-------- thermal-engine.conf | 62 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 89 insertions(+), 13 deletions(-) diff --git a/thermal-engine-vr.conf b/thermal-engine-vr.conf index fc1cffd..8a80965 100755 --- a/thermal-engine-vr.conf +++ b/thermal-engine-vr.conf @@ -1,17 +1,35 @@ +[SKIN_SHUTDOWN2] +algo_type monitor +sampling 1000 +sensor bd_therm2 +thresholds 54000 +thresholds_clr 53000 +actions shutdown +action_info 1 + +[VR-SKIN2] +algo_type monitor +sensor bd_therm2 +sampling 1000 +thresholds 50000 +thresholds_clr 46000 +actions cluster0+cluster1+gpu +action_info 883200+902400+342000000 + [SKIN_SHUTDOWN] algo_type monitor sampling 1000 sensor bd_therm -thresholds 66000 -thresholds_clr 65000 -actions shutdown -action_info 1 +thresholds 66000 +thresholds_clr 65000 +actions shutdown +action_info 1 [VR-SKIN] -algo_type monitor -sensor bd_therm -sampling 1000 -thresholds 62000 -thresholds_clr 58000 -actions cluster0+cluster1+gpu -action_info 883200+902400+342000000 +algo_type monitor +sensor bd_therm +sampling 1000 +thresholds 62000 +thresholds_clr 58000 +actions cluster0+cluster1+gpu +action_info 883200+902400+342000000 diff --git a/thermal-engine.conf b/thermal-engine.conf index a10045b..80e4de5 100755 --- a/thermal-engine.conf +++ b/thermal-engine.conf @@ -1,4 +1,62 @@ -[SKIN-MID-FLOOR] +[SKIN-MID-FLOOR2] +algo_type ss +sampling 2000 +sensor bd_therm2 +device cluster1 +set_point 38000 +set_point_clr 37000 +device_max_limit 1804800 +time_constant 0 + +[SKIN-LOW-FLOOR2] +algo_type ss +sampling 2000 +sensor bd_therm2 +device cluster1 +set_point 40000 +set_point_clr 39000 +device_max_limit 1190400 +time_constant 0 + +[HOT-SKIN-VIRTUAL2] +algo_type virtual +trip_sensor bd_therm2 +sensors tsens_tz_sensor13 tsens_tz_sensor0 +list_cnt 2 +weights 1 -1 +set_point 39000 +set_point_clr 36000 +sampling 1000 +math 0 + +[VIRTUAL-SS-GPU-SKIN2] +algo_type ss +sensor HOT-SKIN-VIRTUAL2 +device gpu +sampling 2000 +set_point 7000 +set_point_clr 2000 +device_max_limit 414000000 + +[SKIN-MONITOR2] +algo_type monitor +sampling 2000 +sensor bd_therm2 +thresholds 48000 50000 54000 +thresholds_clr 47000 49000 53000 +actions cluster0+cluster1+gpu cluster0+cluster1+gpu cluster0+cluster1+gpu +action_info 1094400+1190400+414000000 883200+902400+342000000 300000+300000+257000000 + +[SKIN-SHUTDOWN2] +algo_type monitor +sampling 1000 +sensor bd_therm2 +thresholds 54000 +thresholds_clr 53000 +actions shutdown +action_info 1 + +[SKIN-MID-FLOOR] algo_type ss sampling 2000 sensor bd_therm @@ -8,7 +66,7 @@ set_point_clr 48000 device_max_limit 1804800 time_constant 0 -[SKIN-LOW-FLOOR] +[SKIN-LOW-FLOOR] algo_type ss sampling 2000 sensor bd_therm From 614dc65297ee1bb841ac9cabed079be6bc2bd5a5 Mon Sep 17 00:00:00 2001 From: "jiwon912.choi" Date: Tue, 27 Jun 2017 16:04:46 +0900 Subject: [PATCH 134/182] display: Change low persistence mode brightness Bug : 62663757 - Change low persistence(LP) mode brightness from 255 to 159 - If panel version is 2-1, Set LP mode brightness to 255 Change-Id: Ie3754ac9ab11347e4f4edf91a607a17fc6b776fc --- BoardConfig.mk | 2 +- init-taimen.rc | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/BoardConfig.mk b/BoardConfig.mk index 8f43bfb..b52fa40 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -15,7 +15,7 @@ # TARGET_BOOTLOADER_BOARD_NAME := taimen -DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x000000ff +DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x0000009f BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200,n8 earlycon=msm_serial_dm,0xc1b0000 diff --git a/init-taimen.rc b/init-taimen.rc index fd13e36..1a6ddb4 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -40,3 +40,6 @@ on property:sys.all.modules.ready=1 on property:sys.retaildemo.enabled=* && property:sys.all.modules.ready=1 write /sys/module/lge_battery/parameters/demo_mode ${sys.retaildemo.enabled} + +on property:ro.boot.hardware.display=2-1 + setprop sys.display.low_persistence_mode_brightness 255 From 76ae3880be6216541d4a4454c3af99faa85dafa7 Mon Sep 17 00:00:00 2001 From: Michael Wright Date: Tue, 11 Jul 2017 14:43:12 +0100 Subject: [PATCH 135/182] Add input device configuration for Taimen This also provides tuning for touch size information. Test: flash and look at touch size with pointer location enabled Bug: 62871286 Change-Id: I1dafed6b482a74d9baeac162be1dc831370a5ebc --- device.mk | 4 ++++ touchscreen.idc | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 touchscreen.idc diff --git a/device.mk b/device.mk index a539828..c050c11 100644 --- a/device.mk +++ b/device.mk @@ -70,6 +70,10 @@ PRODUCT_PROPERTY_OVERRIDES += audio.adm.buffering.ms=4 PRODUCT_COPY_FILES += \ device/google/taimen/WCNSS_qcom_cfg.ini:$(TARGET_COPY_OUT_VENDOR)/firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini +# touchscreen configuration +PRODUCT_COPY_FILES += \ + device/google/taimen/touchscreen.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/touchscreen.idc + # Enable modem logging ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT))) PRODUCT_PROPERTY_OVERRIDES += \ diff --git a/touchscreen.idc b/touchscreen.idc new file mode 100644 index 0000000..56a7f9b --- /dev/null +++ b/touchscreen.idc @@ -0,0 +1,32 @@ +# Copyright 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# Input Device Calibration File for the taimen touch screen. +# + +device.internal = 1 + +touch.deviceType = touchScreen +touch.orientationAware = 1 + +touch.size.calibration = diameter +touch.size.scale = 1.045690 +touch.size.bias = -13.924837 +touch.size.isSummed = 0 + +touch.pressure.calibration = amplitude +touch.pressure.scale = 0.0125 + +touch.orientation.calibration = none From 08cac2e4df9415c0ba66e7cea94a47561c86c8ac Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Wed, 12 Jul 2017 13:19:41 -0700 Subject: [PATCH 136/182] wifi: Ignoring bssid_hint for connection decision Bug: 62439427 Change-Id: Ib5e7aad09697a94e25b3f366c3a55b1158b22fb0 Signed-off-by: Ecco Park --- WCNSS_qcom_cfg.ini | 3 +++ 1 file changed, 3 insertions(+) diff --git a/WCNSS_qcom_cfg.ini b/WCNSS_qcom_cfg.ini index bd8db84..8b25a32 100644 --- a/WCNSS_qcom_cfg.ini +++ b/WCNSS_qcom_cfg.ini @@ -602,6 +602,9 @@ gEnableTxBFeeSAP=1 # scan policy disabled gDualMacFeatureDisable=1 +#Set priority for connection with bssid_hint +g_is_bssid_hint_priority=0 + END # Note: Configuration parser would not read anything past the END marker From 2880114ae9f98afbc8bddf5ef9290226e7bc532e Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Thu, 13 Jul 2017 14:00:34 +0200 Subject: [PATCH 137/182] Make status bar a bit larger Test: Open notification shade, observe no weirdneess Test: Open a couple of apps Change-Id: Ia39641581592ce39e3b706c57a3cf21505100e84 Fixes: 63658608 --- .../base/core/res/res/values/dimens.xml | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100755 overlay/frameworks/base/core/res/res/values/dimens.xml diff --git a/overlay/frameworks/base/core/res/res/values/dimens.xml b/overlay/frameworks/base/core/res/res/values/dimens.xml new file mode 100755 index 0000000..93e3470 --- /dev/null +++ b/overlay/frameworks/base/core/res/res/values/dimens.xml @@ -0,0 +1,23 @@ + + + + + + 28dp + From ae0774857c23a8345d18465d1d73343b38f47c5f Mon Sep 17 00:00:00 2001 From: Glenn Kasten Date: Thu, 13 Jul 2017 12:36:44 -0700 Subject: [PATCH 138/182] Reduce USB audio latency on Taimen Bug: 62375603 Bug: 63364644 Test: Loopback shows latency reduction and no glitches Change-Id: I8ab3879ebb318b96e931976a206e866fd44754e4 --- device.mk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/device.mk b/device.mk index c050c11..4cf860a 100644 --- a/device.mk +++ b/device.mk @@ -64,7 +64,9 @@ PRODUCT_COPY_FILES += \ device/google/taimen/audio_platform_info_tavil.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info_tavil_taimen.xml # Bug 62375603 -PRODUCT_PROPERTY_OVERRIDES += audio.adm.buffering.ms=4 +PRODUCT_PROPERTY_OVERRIDES += audio.adm.buffering.ms=3 +PRODUCT_PROPERTY_OVERRIDES += audio_hal.period_multiplier=2 +PRODUCT_PROPERTY_OVERRIDES += af.fast_track_multiplier=1 # Wifi configuration file PRODUCT_COPY_FILES += \ From 90247f22d4e3fc1ab0a20cd543151f62aa7d56d5 Mon Sep 17 00:00:00 2001 From: David Lin Date: Thu, 13 Jul 2017 17:57:35 -0700 Subject: [PATCH 139/182] audio: enable 24bit for MI2S path This configs AFE I2S to S24_LE formate. Bug: 63400919 Test: manual playback test Change-Id: I537ccff8fd70159905d0a9e5c7879555cda37744 --- mixer_paths_tavil.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index 2e38474..043b901 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -219,6 +219,8 @@ + + From 031f68333b837e6688be4fa4d26492b88dbdfa1e Mon Sep 17 00:00:00 2001 From: "taeho.youn" Date: Wed, 5 Jul 2017 14:43:19 +0900 Subject: [PATCH 140/182] audio: taimen: device specific configurations speaker-safe setting for Ringtone mode Bug: 35675592 Test: manual test for ringtone Change-Id: I3378b12c4b71bbe7c32d048f2b470cb26c467b6b --- mixer_paths_tavil.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index 043b901..a6e6071 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -1448,7 +1448,8 @@ - + + From a3137497d4da78d580aefa0618a343dea6011e54 Mon Sep 17 00:00:00 2001 From: "taeho.youn" Date: Wed, 12 Jul 2017 16:01:24 +0900 Subject: [PATCH 141/182] audio: update mixer_paths for usb-headphone voice call fix rx/tx mute when making call with 3-pole headset and USB dongle Bug: 63680197 Test: manual audio sanity test Change-Id: Ie8b3b6d0c5666539a794459e425570f4e5d7d447 --- mixer_paths_tavil.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index a6e6071..f8a3cb0 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -1136,7 +1136,7 @@ - + From a2ecc7543de53600d554ac866a5f470c196414ea Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 17 Jul 2017 13:27:47 -0700 Subject: [PATCH 142/182] Add AOSP support for taimen BUG:36396200 TEST: Build an aosp_taimen-userdebug and flashed a device Change-Id: If667ab366efc99b0f695134f0430a514ba13c111 --- self-extractors/Android.mk | 0 self-extractors/PART1 | 12 + self-extractors/PART2 | 22 ++ self-extractors/PART3 | 12 + self-extractors/PROLOGUE | 2 + self-extractors/extract-lists.txt | 53 ++++ self-extractors/google_devices/COPYRIGHT | 1 + self-extractors/google_devices/LICENSE | 264 ++++++++++++++++++ .../staging/BoardConfigPartial.mk | 15 + .../google_devices/staging/device-partial.mk | 13 + self-extractors/qcom/COPYRIGHT | 1 + self-extractors/qcom/LICENSE | 264 ++++++++++++++++++ .../qcom/staging/BoardConfigPartial.mk | 13 + .../qcom/staging/device-partial.mk | 60 ++++ .../root/proprietary/BoardConfigVendor.mk | 18 ++ .../root/proprietary/device-vendor.mk | 18 ++ 16 files changed, 768 insertions(+) create mode 100644 self-extractors/Android.mk create mode 100644 self-extractors/PART1 create mode 100644 self-extractors/PART2 create mode 100644 self-extractors/PART3 create mode 100644 self-extractors/PROLOGUE create mode 100644 self-extractors/extract-lists.txt create mode 100644 self-extractors/google_devices/COPYRIGHT create mode 100644 self-extractors/google_devices/LICENSE create mode 100644 self-extractors/google_devices/staging/BoardConfigPartial.mk create mode 100644 self-extractors/google_devices/staging/device-partial.mk create mode 100644 self-extractors/qcom/COPYRIGHT create mode 100644 self-extractors/qcom/LICENSE create mode 100644 self-extractors/qcom/staging/BoardConfigPartial.mk create mode 100644 self-extractors/qcom/staging/device-partial.mk create mode 100644 self-extractors/root/proprietary/BoardConfigVendor.mk create mode 100644 self-extractors/root/proprietary/device-vendor.mk diff --git a/self-extractors/Android.mk b/self-extractors/Android.mk new file mode 100644 index 0000000..e69de29 diff --git a/self-extractors/PART1 b/self-extractors/PART1 new file mode 100644 index 0000000..935267e --- /dev/null +++ b/self-extractors/PART1 @@ -0,0 +1,12 @@ +# +# Usage is subject to the enclosed license agreement + +echo +echo The license for this software will now be displayed. +echo You must agree to this license before using this software. +echo +echo -n Press Enter to view the license +read dummy +echo + +more << __EOF__ diff --git a/self-extractors/PART2 b/self-extractors/PART2 new file mode 100644 index 0000000..30e8d43 --- /dev/null +++ b/self-extractors/PART2 @@ -0,0 +1,22 @@ +__EOF__ + +if test $? != 0 +then + echo ERROR: Couldn\'t display license file 1>&2 + exit 1 +fi + +echo + +echo -n Type \"I ACCEPT\" if you agree to the terms of the license:\ +read typed + +if test "$typed" != I\ ACCEPT +then + echo + echo You didn\'t accept the license. Extraction aborted. + exit 2 +fi + +echo + diff --git a/self-extractors/PART3 b/self-extractors/PART3 new file mode 100644 index 0000000..6847be5 --- /dev/null +++ b/self-extractors/PART3 @@ -0,0 +1,12 @@ + +if test $? != 0 +then + echo + echo ERROR: Couldn\'t extract files. 1>&2 + exit 3 +else + echo + echo Files extracted successfully. +fi +exit 0 + diff --git a/self-extractors/PROLOGUE b/self-extractors/PROLOGUE new file mode 100644 index 0000000..c856ef1 --- /dev/null +++ b/self-extractors/PROLOGUE @@ -0,0 +1,2 @@ +#!/bin/bash +# diff --git a/self-extractors/extract-lists.txt b/self-extractors/extract-lists.txt new file mode 100644 index 0000000..bfe61ff --- /dev/null +++ b/self-extractors/extract-lists.txt @@ -0,0 +1,53 @@ + google_devices) + TO_EXTRACT="\ + IMAGES/vendor.img \ + " + ;; + qcom) + TO_EXTRACT="\ + system/bin/netutils-wrapper-1.0 \ + system/etc/cne/Nexus/ATT/ATT_profiles.xml \ + system/etc/cne/Nexus/ROW/ROW_profiles.xml \ + system/etc/cne/Nexus/VZW/VZW_profiles.xml \ + system/etc/firmware/dnd.descriptor \ + system/etc/firmware/dnd.sound_model \ + system/etc/firmware/music_detector.descriptor \ + system/etc/firmware/music_detector.sound_model \ + system/etc/permissions/com.android.ims.rcsmanager.xml \ + system/framework/cneapiclient.jar \ + system/framework/com.android.ims.rcsmanager.jar \ + system/framework/com.quicinc.cne.api-V1.0-java.jar \ + system/framework/com.quicinc.cne.jar \ + system/framework/embmslibrary.jar \ + system/framework/rcsimssettings.jar \ + system/framework/vendor.qti.qcril.am-V1.0-java.jar \ + system/lib64/android.hardware.biometrics.fingerprint@2.1.so \ + system/lib64/android.hardware.oemlock@1.0.so \ + system/lib64/com.qualcomm.qti.imsrtpservice@1.0.so \ + system/lib64/libaptX_encoder.so \ + system/lib64/libaptXHD_encoder.so \ + system/lib64/libdiag_system.so \ + system/lib64/libimscamera_jni.so \ + system/lib64/libimsmedia_jni.so \ + system/lib64/lib-imsvideocodec.so \ + system/lib64/lib-imsvtextutils.so \ + system/lib64/lib-imsvt.so \ + system/lib64/lib-imsvtutils.so \ + system/lib64/libion.so \ + system/lib64/libiperf.so \ + system/lib64/librcc.so \ + system/lib/com.qualcomm.qti.imsrtpservice@1.0.so \ + system/lib/libdiag_system.so \ + system/lib/libimscamera_jni.so \ + system/lib/libimsmedia_jni.so \ + system/lib/lib-imsvideocodec.so \ + system/lib/lib-imsvtextutils.so \ + system/lib/lib-imsvt.so \ + system/lib/lib-imsvtutils.so \ + system/lib/libion.so \ + system/lib/libiperf.so \ + system/lib/librcc.so \ + system/xbin/iperf3 \ + system/xbin/sanitizer-status \ + " + ;; diff --git a/self-extractors/google_devices/COPYRIGHT b/self-extractors/google_devices/COPYRIGHT new file mode 100644 index 0000000..db593ae --- /dev/null +++ b/self-extractors/google_devices/COPYRIGHT @@ -0,0 +1 @@ +# (C) Google Inc. diff --git a/self-extractors/google_devices/LICENSE b/self-extractors/google_devices/LICENSE new file mode 100644 index 0000000..6b4042b --- /dev/null +++ b/self-extractors/google_devices/LICENSE @@ -0,0 +1,264 @@ +THIS DEVELOPER SOFTWARE LICENSE AGREEMENT (THE "AGREEMENT") IS A LEGALLY +BINDING AGREEMENT BETWEEN Google Inc. ("LICENSOR") AND +YOU OR THE LEGAL ENTITY YOU REPRESENT ("You" or its possessive, "Your"). BY +TYPING "I ACCEPT" WHERE INDICATED YOU ACKNOWLEDGE THAT YOU HAVE READ THIS +AGREEMENT, UNDERSTAND IT AND AGREE TO BE BOUND BY ITS TERMS AND CONDITIONS. +IF YOU DO NOT AGREE TO THESE TERMS YOU MUST DISCONTINUE THE INSTALLATION +PROCESS AND YOU SHALL NOT USE THE SOFTWARE OR RETAIN ANY COPIES OF THE +SOFTWARE OR DOCUMENTATION. ANY USE OR POSSESSION OF THE SOFTWARE BY YOU IS +SUBJECT TO THE TERMS AND CONDITIONS SET FORTH IN THIS AGREEMENT. IF THE +SOFTWARE IS INSTALLED ON A COMPUTER OWNED BY A CORPORATION OR OTHER LEGAL +ENTITY, THEN YOU REPRESENT AND WARRANT THAT YOU HAVE THE AUTHORITY TO BIND +SUCH ENTITY TO THE TERMS AND CONDITIONS OF THIS AGREEMENT. + + 1. Special Definitions + + a. The term "Android" means the open source mobile platform, software + stack, operating system, middleware, application programming + interfaces and mobile applications under the trade-name "Android" + distributed at Android.com. + + b. The term "Android Applications" means a software application or + open-source contribution developed by You, designed to operate with + Android that does not contain or incorporate any of the Software. + + c. The term "Authorized Android Enabled Device" means only the device + identified on the site from which You downloaded the Software. + The term "Software" means the Licensor's proprietary software and + libraries in object code form, designed for use on the Authorized + Android Enabled Device. + + d. The term "Authorized Android Enabled Device Software" means a + packaged build for Authorized Android Enabled Devices, consisting + of files suitable for installation on an Authorized Android Enabled + Device using a mechanism such as fastboot mode or recovery mode. + + 2. License Grant + + a. Subject to the terms of this Agreement, Licensor hereby grants to + You, free of charge, a non-exclusive, non-sublicensable, + non-transferable, limited copyright license, during the term of + this Agreement, to download, install and use the Software + internally in machine-readable (i.e., object code) form and the + Documentation for non-commercial use on an Authorized Android + Enabled Device and non-commercial redistribution for academic + purposes only of a reasonable number of copies of the Authorized + Android Enabled Device Software (the "Limited Purpose"). You may + grant your end users the right to use the Software for + non-commercial purposes on an Authorized Android Enabled Device. + The license to the Software granted to You hereunder is solely for + the Limited Purpose set forth in this section, and the Software + shall not be used for any other purpose. + + 3. Restrictions + + a. Retention of Rights. The entire right, title and interest in the + Software shall remain with Licensor and, unless specified in + writing hereunder, no rights are granted to any of the Software. + Except for the right to use the Software for the Limited Purpose, + the delivery of the Software to You does not convey to You any + intellectual property rights in the Software, including, but not + limited to any rights under any patent, trademark, copyright, or + trade secret. Neither the delivery of the Software to You nor any + terms set forth herein shall be construed to grant to You, either + expressly, by implication or by way of estoppel, any license under + any patents or other intellectual property rights covering or + relating to any other product or invention or any combination of + the Software with any other product. Any rights not expressly + granted to You herein are reserved by Licensor. + + b. No Commercialization or Distribution of the Software and + Documentation. Except as expressly provided in Section 2 of this + Agreement, You shall have no right to (i) copy, disclose, + distribute, publically perform, publically display, transfer, + alter, modify, translate, disassemble, decompile, reverse engineer, + or adapt the Software and Documentation, or any portion thereof, or + create any derivative works based thereon; (ii) rent, lease, + assign, sublicense, resell, disclose or otherwise transfer the + Software and Documentation in whole or in part to any third party + (iii) use the Software and Documentation except for the Limited + Purpose, (iv) remove or alter any of the copyright or proprietary + notices contained in any of the Software and Documentation. For the + purposes of clarity, nothing in this Agreement prohibits You from + making and distributing Android Applications under commercial or + non-commercial terms, provided that You shall not contain, + incorporate, and/or compile the Software or any of its derivative + works, in whole or in part, into Your Android Applications and/or + any software/devices created by You or by third parties acting on + Your behalf. You and any such third party shall comply with all of + the terms and conditions of this Agreement. + + c. No Reverse Engineering. Except for any portions of the Software + provided to You in source code format and except for any third + party code distributed with the Software that is licensed under + contrary terms, You will not reverse engineer, disassemble, + decompile, or translate the Software, or otherwise attempt to + derive the source code version of the Software, except if and to + the extent expressly permitted under any applicable law. + + d. Third Party Software. You agree that Android may contain third + party software. You agree that you may not distribute such third + party software for any purpose without appropriate licenses from + the applicable third party or parties. + + e. No Transfer or Assignment. You shall not assign any of its rights + or obligations under this Agreement. Any attempted assignment in + contravention of this Section shall be void. + + f. Licensor shall retain all title, ownership and Intellectual + Property Rights in and to the Software and any derivative thereof. + "Intellectual Property Rights" shall mean all patent, copyright, + trade secret, trademark and other proprietary and intellectual + property rights, including moral rights. + + g. Neither this Agreement, nor any act by Licensor or its Affiliates + persuant to this Agreement or relating to the Software (including, + without limitation, the provision by Licensor or its Affiliates of + the Software) shall provide to You any license or any other rights + whatsoever under any patents, trademarks, trade secrets, copyrights + or any other intellectual property rights of Licensor or its + Affiliates, except for the copyrights expressly set forth in this + Agreement. You understand and agree that: + + h. Neither this Agreement, nor delivery of the Software alone or in + combination with any Licensor ASIC grants you any right to + practice, or any other right at all with respect to, any patent of + Licensor or its Affiliates, and + + i. A separating license agreement from Motorola Incorporated is needed + to use or practice any patent of Licensor or its Affiliates. + + j. You agree not to contend in any context that, as a result of the + provision or use of this software, either Licensor or Affiliate has + any obligation to extend, or Licensor or any other party has + obtained any right to, any license, whether express or implied, + with respect to any patent of Licensor or its Affiliates for any + purpose. For the purposes of this agreement, "Affiliate" means + (i) any corporation or any other legal entity that owns, directly + or indirectly, more than fifty percent (50%) of the shares, equity + interest or other securities of any entity entitled to vote for + election of directors (or other managing authority), or (ii) any + corporation or any other legal entity fifty percent (50%) or more + of whose shares, equity interest, or other securities entitled to + vote for election of directors (or other managing authority) is + owned or controlled by an entity, either directly or indirectly. + + 4. Indemnity + + a. You agree to indemnify and hold harmless Licensor, Google, and + their officers, directors, customers, employees and successors and + assigns (each an "Indemnified Party") against any and all claims, + demands, causes of action, losses, liabilities, damages, costs and + expenses, incurred by the Indemnified Party (including but not + limited to costs of defense, investigation and reasonable + attorney's fees) arising out of, resulting from or related to + (i) any software, products, documentation, content, materials or + derivative works created or developed by You using the Software + which causes an infringement of any patent, copyright, trademark, + trade secret, or other property, publicity or privacy rights of any + third parties arising in any jurisdiction anywhere in the world, + (ii) the download, distribution, installation, storage, execution, + use or transfer of such software, products, documentation, content, + materials or derivative works by any person or entity, and/or + (iii) any breach of this Agreement by You. If requested by an + Indemnified Party, You agree to defend such Indemnified Party in + connection with any third party claims, demands, or causes of + action resulting from, arising out of or in connection with any of + the foregoing. + + 5. Limitation of Liability + + a. TO THE MAXIMUM EXTENT PERMITTED UNDER APPLICABLE LAWS, UNDER NO + CIRCUMSTANCES, INCLUDING WITHOUT LIMITATION NEGLIGENCE, SHALL + LICENSOR, GOOGLE, THEIR AFFILIATES AND/OR ITS DIRECTORS, OFFICERS, + EMPLOYEES OR AGENTS BE LIABLE FOR ANY INDIRECT, INCIDENTAL, + SPECIAL, PUNITIVE OR CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT + LIMITED TO DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS + INTERRUPTION, LOSS OF BUSINESS INFORMATION AND THE LIKE) ARISING + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR ANY DOWNLOAD, + INSTALLATION OR USE OF, OR INABILITY TO USE, THE SOFTWARE, EVEN IF + LICENSOR OR GOOGLE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH + DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OR + EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES SO + THE ABOVE LIMITATION OR EXCLUSION MAY NOT APPLY OR MAY BE LIMITED. + IN NO EVENT SHALL LICENSOR'S OR GOOGLE'S TOTAL AGGREGATE LIABILITY + TO YOU FOR ANY AND ALL DAMAGES, LOSSES, CLAIMS AND CAUSES OF + ACTIONS (WHETHER IN CONTRACT, TORT, INCLUDING NEGLIGENCE, + INDEMNIFICATION OR OTHERWISE) EXCEED ONE HUNDRED U.S. DOLLARS + (US$100). THE LIMITATIONS SET FORTH IN THIS PARAGRAPH SHALL BE + DEEMED TO APPLY TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW. + THE PARTIES HAVE FULLY CONSIDERED THE FOREGOING ALLOCATION OF RISK + AND FIND IT REASONABLE, AND THAT THE FOREGOING LIMITATIONS IN THIS + PARAGRAPH ARE AN ESSENTIAL BASIS OF THE BARGAIN BETWEEN THE + PARTIES. + + 6. No Warranty + + a. LICENSOR AND GOOGLE MAKE NO WARRANTIES, EXPRESS OR IMPLIED, WITH + RESPECT TO THE SOFTWARE AND DOCUMENTATION PROVIDED UNDER THIS + AGREEMENT, INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR AGAINST + INFRINGEMENT, OR ANY EXPRESS OR IMPLIED WARRANTY ARISING OUT OF + TRADE USAGE OR OUT OF A COURSE OF DEALING OR COURSE OF PERFORMANCE. + NOTHING CONTAINED IN THIS AGREEMENT SHALL BE CONSTRUED AS A + WARRANTY OR REPRESENTATION BY LICENSOR (I) AS TO THE VALIDITY OR + SCOPE OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT + AND (II) THAT ANY MANUFACTURE OR USE WILL BE FREE FROM INFRINGEMENT + OF PATENTS, COPYRIGHTS OR OTHER INTELLECTUAL PROPERTY RIGHTS OF + OTHERS, AND IT SHALL BE THE SOLE RESPONSIBILITY OF YOU TO MAKE SUCH + DETERMINATION AS IS NECESSARY WITH RESPECT TO THE ACQUISITION OF + LICENSES UNDER PATENTS AND OTHER INTELLECTUAL PROPERTY OF THIRD + PARTIES. LICENSOR AND GOOGLE SHALL NOT HAVE ANY OBLIGATION TO + PROVIDE ANY TECHNICAL SUPPORT OF THE SOFTWARE UNDER THIS AGREEMENT. + + 7. Term and Termination + + a. This Agreement shall be effective on the date You accept this + Agreement and shall remain in effect until terminated as provided + herein. You may terminate the Agreement at any time by deleting and + destroying all copies of the Software and all related information + in Your possession or control. This Agreement terminates + immediately and automatically, with or without notice, if You fail + to comply with any provision hereof. Additionally, Licensor may at + any time terminate this Agreement, without cause, upon notice to + You. Upon termination You must delete or destroy all copies of the + Software in Your possession, and the license granted to You in this + Agreement shall terminate. Sections 3, 4, 5, 6 and 8 shall survive + the termination of this Agreement. + + 8. Miscellaneous + + a. Governing Law. This Agreement is governed and interpreted in + accordance with the laws of the State of California without giving + effect to its conflict of laws provisions. The United Nations + Convention on Contracts for the International Sale of Goods is + expressly disclaimed and shall not apply. Any claim arising out of + or related to this Agreement must be brought exclusively in a + federal or state court located in Santa Clara County, California + and You consent to the jurisdiction and venue of such courts. + + b. Waiver and Severability. The failure of either party to require + performance by the other party of any provision of this Agreement + shall not affect the full right to require such performance at any + time thereafter; nor shall the waiver by either party of a breach + of any provision of this Agreement be taken or held to be a waiver + of the provision itself. Severability. If any provision of this + Agreement is unenforceable or invalid under any applicable law or + is so held by applicable court decision, such unenforceability or + invalidity shall not render this Agreement unenforceable or invalid + as a whole, and such provision shall be changed and interpreted so + as to best accomplish the objectives of such unenforceable or + invalid provision within the limits of applicable law or + applicable court decisions. + + c. Amendment and Modification. This Agreement and any of its terms and + provisions may only be amended, modified, supplemented or waived in + a writing signed by both parties hereto. + + d. Compliance with Laws. You shall comply with all applicable laws, + rules, and regulations in connection with its activities under this + Agreement. + + e. Entire Agreement. This Agreement completely and exclusively states + the agreement between You and Licensor regarding this subject + matter. diff --git a/self-extractors/google_devices/staging/BoardConfigPartial.mk b/self-extractors/google_devices/staging/BoardConfigPartial.mk new file mode 100644 index 0000000..fc1a83b --- /dev/null +++ b/self-extractors/google_devices/staging/BoardConfigPartial.mk @@ -0,0 +1,15 @@ +# Copyright 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +BOARD_PREBUILT_VENDORIMAGE := vendor/google_devices/taimen/proprietary/vendor.img diff --git a/self-extractors/google_devices/staging/device-partial.mk b/self-extractors/google_devices/staging/device-partial.mk new file mode 100644 index 0000000..fd9a87c --- /dev/null +++ b/self-extractors/google_devices/staging/device-partial.mk @@ -0,0 +1,13 @@ +# Copyright 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/self-extractors/qcom/COPYRIGHT b/self-extractors/qcom/COPYRIGHT new file mode 100644 index 0000000..0adeb31 --- /dev/null +++ b/self-extractors/qcom/COPYRIGHT @@ -0,0 +1 @@ +# (C) Qualcomm Technologies, Inc. diff --git a/self-extractors/qcom/LICENSE b/self-extractors/qcom/LICENSE new file mode 100644 index 0000000..cef517c --- /dev/null +++ b/self-extractors/qcom/LICENSE @@ -0,0 +1,264 @@ +THIS DEVELOPER SOFTWARE LICENSE AGREEMENT (THE "AGREEMENT") IS A LEGALLY +BINDING AGREEMENT BETWEEN Qualcomm Technologies, Inc. ("LICENSOR") AND +YOU OR THE LEGAL ENTITY YOU REPRESENT ("You" or its possessive, "Your"). BY +TYPING "I ACCEPT" WHERE INDICATED YOU ACKNOWLEDGE THAT YOU HAVE READ THIS +AGREEMENT, UNDERSTAND IT AND AGREE TO BE BOUND BY ITS TERMS AND CONDITIONS. +IF YOU DO NOT AGREE TO THESE TERMS YOU MUST DISCONTINUE THE INSTALLATION +PROCESS AND YOU SHALL NOT USE THE SOFTWARE OR RETAIN ANY COPIES OF THE +SOFTWARE OR DOCUMENTATION. ANY USE OR POSSESSION OF THE SOFTWARE BY YOU IS +SUBJECT TO THE TERMS AND CONDITIONS SET FORTH IN THIS AGREEMENT. IF THE +SOFTWARE IS INSTALLED ON A COMPUTER OWNED BY A CORPORATION OR OTHER LEGAL +ENTITY, THEN YOU REPRESENT AND WARRANT THAT YOU HAVE THE AUTHORITY TO BIND +SUCH ENTITY TO THE TERMS AND CONDITIONS OF THIS AGREEMENT. + + 1. Special Definitions + + a. The term "Android" means the open source mobile platform, software + stack, operating system, middleware, application programming + interfaces and mobile applications under the trade-name "Android" + distributed at Android.com. + + b. The term "Android Applications" means a software application or + open-source contribution developed by You, designed to operate with + Android that does not contain or incorporate any of the Software. + + c. The term "Authorized Android Enabled Device" means only the device + identified on the site from which You downloaded the Software. + The term "Software" means the Licensor's proprietary software and + libraries in object code form, designed for use on the Authorized + Android Enabled Device. + + d. The term "Authorized Android Enabled Device Software" means a + packaged build for Authorized Android Enabled Devices, consisting + of files suitable for installation on an Authorized Android Enabled + Device using a mechanism such as fastboot mode or recovery mode. + + 2. License Grant + + a. Subject to the terms of this Agreement, Licensor hereby grants to + You, free of charge, a non-exclusive, non-sublicensable, + non-transferable, limited copyright license, during the term of + this Agreement, to download, install and use the Software + internally in machine-readable (i.e., object code) form and the + Documentation for non-commercial use on an Authorized Android + Enabled Device and non-commercial redistribution for academic + purposes only of a reasonable number of copies of the Authorized + Android Enabled Device Software (the "Limited Purpose"). You may + grant your end users the right to use the Software for + non-commercial purposes on an Authorized Android Enabled Device. + The license to the Software granted to You hereunder is solely for + the Limited Purpose set forth in this section, and the Software + shall not be used for any other purpose. + + 3. Restrictions + + a. Retention of Rights. The entire right, title and interest in the + Software shall remain with Licensor and, unless specified in + writing hereunder, no rights are granted to any of the Software. + Except for the right to use the Software for the Limited Purpose, + the delivery of the Software to You does not convey to You any + intellectual property rights in the Software, including, but not + limited to any rights under any patent, trademark, copyright, or + trade secret. Neither the delivery of the Software to You nor any + terms set forth herein shall be construed to grant to You, either + expressly, by implication or by way of estoppel, any license under + any patents or other intellectual property rights covering or + relating to any other product or invention or any combination of + the Software with any other product. Any rights not expressly + granted to You herein are reserved by Licensor. + + b. No Commercialization or Distribution of the Software and + Documentation. Except as expressly provided in Section 2 of this + Agreement, You shall have no right to (i) copy, disclose, + distribute, publically perform, publically display, transfer, + alter, modify, translate, disassemble, decompile, reverse engineer, + or adapt the Software and Documentation, or any portion thereof, or + create any derivative works based thereon; (ii) rent, lease, + assign, sublicense, resell, disclose or otherwise transfer the + Software and Documentation in whole or in part to any third party + (iii) use the Software and Documentation except for the Limited + Purpose, (iv) remove or alter any of the copyright or proprietary + notices contained in any of the Software and Documentation. For the + purposes of clarity, nothing in this Agreement prohibits You from + making and distributing Android Applications under commercial or + non-commercial terms, provided that You shall not contain, + incorporate, and/or compile the Software or any of its derivative + works, in whole or in part, into Your Android Applications and/or + any software/devices created by You or by third parties acting on + Your behalf. You and any such third party shall comply with all of + the terms and conditions of this Agreement. + + c. No Reverse Engineering. Except for any portions of the Software + provided to You in source code format and except for any third + party code distributed with the Software that is licensed under + contrary terms, You will not reverse engineer, disassemble, + decompile, or translate the Software, or otherwise attempt to + derive the source code version of the Software, except if and to + the extent expressly permitted under any applicable law. + + d. Third Party Software. You agree that Android may contain third + party software. You agree that you may not distribute such third + party software for any purpose without appropriate licenses from + the applicable third party or parties. + + e. No Transfer or Assignment. You shall not assign any of its rights + or obligations under this Agreement. Any attempted assignment in + contravention of this Section shall be void. + + f. Licensor shall retain all title, ownership and Intellectual + Property Rights in and to the Software and any derivative thereof. + "Intellectual Property Rights" shall mean all patent, copyright, + trade secret, trademark and other proprietary and intellectual + property rights, including moral rights. + + g. Neither this Agreement, nor any act by Licensor or its Affiliates + persuant to this Agreement or relating to the Software (including, + without limitation, the provision by Licensor or its Affiliates of + the Software) shall provide to You any license or any other rights + whatsoever under any patents, trademarks, trade secrets, copyrights + or any other intellectual property rights of Licensor or its + Affiliates, except for the copyrights expressly set forth in this + Agreement. You understand and agree that: + + h. Neither this Agreement, nor delivery of the Software alone or in + combination with any Licensor ASIC grants you any right to + practice, or any other right at all with respect to, any patent of + Licensor or its Affiliates, and + + i. A separating license agreement from Qualcomm Incorporated is needed + to use or practice any patent of Licensor or its Affiliates. + + j. You agree not to contend in any context that, as a result of the + provision or use of this software, either Licensor or Affiliate has + any obligation to extend, or Licensor or any other party has + obtained any right to, any license, whether express or implied, + with respect to any patent of Licensor or its Affiliates for any + purpose. For the purposes of this agreement, "Affiliate" means + (i) any corporation or any other legal entity that owns, directly + or indirectly, more than fifty percent (50%) of the shares, equity + interest or other securities of any entity entitled to vote for + election of directors (or other managing authority), or (ii) any + corporation or any other legal entity fifty percent (50%) or more + of whose shares, equity interest, or other securities entitled to + vote for election of directors (or other managing authority) is + owned or controlled by an entity, either directly or indirectly. + + 4. Indemnity + + a. You agree to indemnify and hold harmless Licensor, Google, and + their officers, directors, customers, employees and successors and + assigns (each an "Indemnified Party") against any and all claims, + demands, causes of action, losses, liabilities, damages, costs and + expenses, incurred by the Indemnified Party (including but not + limited to costs of defense, investigation and reasonable + attorney's fees) arising out of, resulting from or related to + (i) any software, products, documentation, content, materials or + derivative works created or developed by You using the Software + which causes an infringement of any patent, copyright, trademark, + trade secret, or other property, publicity or privacy rights of any + third parties arising in any jurisdiction anywhere in the world, + (ii) the download, distribution, installation, storage, execution, + use or transfer of such software, products, documentation, content, + materials or derivative works by any person or entity, and/or + (iii) any breach of this Agreement by You. If requested by an + Indemnified Party, You agree to defend such Indemnified Party in + connection with any third party claims, demands, or causes of + action resulting from, arising out of or in connection with any of + the foregoing. + + 5. Limitation of Liability + + a. TO THE MAXIMUM EXTENT PERMITTED UNDER APPLICABLE LAWS, UNDER NO + CIRCUMSTANCES, INCLUDING WITHOUT LIMITATION NEGLIGENCE, SHALL + LICENSOR, GOOGLE, THEIR AFFILIATES AND/OR ITS DIRECTORS, OFFICERS, + EMPLOYEES OR AGENTS BE LIABLE FOR ANY INDIRECT, INCIDENTAL, + SPECIAL, PUNITIVE OR CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT + LIMITED TO DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS + INTERRUPTION, LOSS OF BUSINESS INFORMATION AND THE LIKE) ARISING + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR ANY DOWNLOAD, + INSTALLATION OR USE OF, OR INABILITY TO USE, THE SOFTWARE, EVEN IF + LICENSOR OR GOOGLE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH + DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OR + EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES SO + THE ABOVE LIMITATION OR EXCLUSION MAY NOT APPLY OR MAY BE LIMITED. + IN NO EVENT SHALL LICENSOR'S OR GOOGLE'S TOTAL AGGREGATE LIABILITY + TO YOU FOR ANY AND ALL DAMAGES, LOSSES, CLAIMS AND CAUSES OF + ACTIONS (WHETHER IN CONTRACT, TORT, INCLUDING NEGLIGENCE, + INDEMNIFICATION OR OTHERWISE) EXCEED ONE HUNDRED U.S. DOLLARS + (US$100). THE LIMITATIONS SET FORTH IN THIS PARAGRAPH SHALL BE + DEEMED TO APPLY TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW. + THE PARTIES HAVE FULLY CONSIDERED THE FOREGOING ALLOCATION OF RISK + AND FIND IT REASONABLE, AND THAT THE FOREGOING LIMITATIONS IN THIS + PARAGRAPH ARE AN ESSENTIAL BASIS OF THE BARGAIN BETWEEN THE + PARTIES. + + 6. No Warranty + + a. LICENSOR AND GOOGLE MAKE NO WARRANTIES, EXPRESS OR IMPLIED, WITH + RESPECT TO THE SOFTWARE AND DOCUMENTATION PROVIDED UNDER THIS + AGREEMENT, INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR AGAINST + INFRINGEMENT, OR ANY EXPRESS OR IMPLIED WARRANTY ARISING OUT OF + TRADE USAGE OR OUT OF A COURSE OF DEALING OR COURSE OF PERFORMANCE. + NOTHING CONTAINED IN THIS AGREEMENT SHALL BE CONSTRUED AS A + WARRANTY OR REPRESENTATION BY LICENSOR (I) AS TO THE VALIDITY OR + SCOPE OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT + AND (II) THAT ANY MANUFACTURE OR USE WILL BE FREE FROM INFRINGEMENT + OF PATENTS, COPYRIGHTS OR OTHER INTELLECTUAL PROPERTY RIGHTS OF + OTHERS, AND IT SHALL BE THE SOLE RESPONSIBILITY OF YOU TO MAKE SUCH + DETERMINATION AS IS NECESSARY WITH RESPECT TO THE ACQUISITION OF + LICENSES UNDER PATENTS AND OTHER INTELLECTUAL PROPERTY OF THIRD + PARTIES. LICENSOR AND GOOGLE SHALL NOT HAVE ANY OBLIGATION TO + PROVIDE ANY TECHNICAL SUPPORT OF THE SOFTWARE UNDER THIS AGREEMENT. + + 7. Term and Termination + + a. This Agreement shall be effective on the date You accept this + Agreement and shall remain in effect until terminated as provided + herein. You may terminate the Agreement at any time by deleting and + destroying all copies of the Software and all related information + in Your possession or control. This Agreement terminates + immediately and automatically, with or without notice, if You fail + to comply with any provision hereof. Additionally, Licensor may at + any time terminate this Agreement, without cause, upon notice to + You. Upon termination You must delete or destroy all copies of the + Software in Your possession, and the license granted to You in this + Agreement shall terminate. Sections 3, 4, 5, 6 and 8 shall survive + the termination of this Agreement. + + 8. Miscellaneous + + a. Governing Law. This Agreement is governed and interpreted in + accordance with the laws of the State of California without giving + effect to its conflict of laws provisions. The United Nations + Convention on Contracts for the International Sale of Goods is + expressly disclaimed and shall not apply. Any claim arising out of + or related to this Agreement must be brought exclusively in a + federal or state court located in Santa Clara County, California + and You consent to the jurisdiction and venue of such courts. + + b. Waiver and Severability. The failure of either party to require + performance by the other party of any provision of this Agreement + shall not affect the full right to require such performance at any + time thereafter; nor shall the waiver by either party of a breach + of any provision of this Agreement be taken or held to be a waiver + of the provision itself. Severability. If any provision of this + Agreement is unenforceable or invalid under any applicable law or + is so held by applicable court decision, such unenforceability or + invalidity shall not render this Agreement unenforceable or invalid + as a whole, and such provision shall be changed and interpreted so + as to best accomplish the objectives of such unenforceable or + invalid provision within the limits of applicable law or + applicable court decisions. + + c. Amendment and Modification. This Agreement and any of its terms and + provisions may only be amended, modified, supplemented or waived in + a writing signed by both parties hereto. + + d. Compliance with Laws. You shall comply with all applicable laws, + rules, and regulations in connection with its activities under this + Agreement. + + e. Entire Agreement. This Agreement completely and exclusively states + the agreement between You and Licensor regarding this subject + matter. diff --git a/self-extractors/qcom/staging/BoardConfigPartial.mk b/self-extractors/qcom/staging/BoardConfigPartial.mk new file mode 100644 index 0000000..fd9a87c --- /dev/null +++ b/self-extractors/qcom/staging/BoardConfigPartial.mk @@ -0,0 +1,13 @@ +# Copyright 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/self-extractors/qcom/staging/device-partial.mk b/self-extractors/qcom/staging/device-partial.mk new file mode 100644 index 0000000..ae2684f --- /dev/null +++ b/self-extractors/qcom/staging/device-partial.mk @@ -0,0 +1,60 @@ +# Copyright 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# blob(s) necessary for Taimen hardware +PRODUCT_COPY_FILES := \ + vendor/qcom/taimen/proprietary/netutils-wrapper-1.0:system/bin/netutils-wrapper-1.0:qcom \ + vendor/qcom/taimen/proprietary/ATT_profiles.xml:system/etc/cne/Nexus/ATT/ATT_profiles.xml:qcom \ + vendor/qcom/taimen/proprietary/ROW_profiles.xml:system/etc/cne/Nexus/ROW/ROW_profiles.xml:qcom \ + vendor/qcom/taimen/proprietary/VZW_profiles.xml:system/etc/cne/Nexus/VZW/VZW_profiles.xml:qcom \ + vendor/qcom/taimen/proprietary/dnd.descriptor:system/etc/firmware/dnd.descriptor:qcom \ + vendor/qcom/taimen/proprietary/dnd.sound_model:system/etc/firmware/dnd.sound_model:qcom \ + vendor/qcom/taimen/proprietary/music_detector.descriptor:system/etc/firmware/music_detector.descriptor:qcom \ + vendor/qcom/taimen/proprietary/music_detector.sound_model:system/etc/firmware/music_detector.sound_model:qcom \ + vendor/qcom/taimen/proprietary/com.android.ims.rcsmanager.xml:system/etc/permissions/com.android.ims.rcsmanager.xml:qcom \ + vendor/qcom/taimen/proprietary/cneapiclient.jar:system/framework/cneapiclient.jar:qcom \ + vendor/qcom/taimen/proprietary/com.android.ims.rcsmanager.jar:system/framework/com.android.ims.rcsmanager.jar:qcom \ + vendor/qcom/taimen/proprietary/com.quicinc.cne.api-V1.0-java.jar:system/framework/com.quicinc.cne.api-V1.0-java.jar:qcom \ + vendor/qcom/taimen/proprietary/com.quicinc.cne.jar:system/framework/com.quicinc.cne.jar:qcom \ + vendor/qcom/taimen/proprietary/embmslibrary.jar:system/framework/embmslibrary.jar:qcom \ + vendor/qcom/taimen/proprietary/rcsimssettings.jar:system/framework/rcsimssettings.jar:qcom \ + vendor/qcom/taimen/proprietary/vendor.qti.qcril.am-V1.0-java.jar:system/framework/vendor.qti.qcril.am-V1.0-java.jar:qcom \ + vendor/qcom/taimen/proprietary/lib64/android.hardware.biometrics.fingerprint@2.1.so:system/lib64/android.hardware.biometrics.fingerprint@2.1.so:qcom \ + vendor/qcom/taimen/proprietary/lib64/android.hardware.oemlock@1.0.so:system/lib64/android.hardware.oemlock@1.0.so:qcom \ + vendor/qcom/taimen/proprietary/lib64/com.qualcomm.qti.imsrtpservice@1.0.so:system/lib64/com.qualcomm.qti.imsrtpservice@1.0.so:qcom \ + vendor/qcom/taimen/proprietary/lib64/libaptX_encoder.so:system/lib64/libaptX_encoder.so:qcom \ + vendor/qcom/taimen/proprietary/lib64/libaptXHD_encoder.so:system/lib64/libaptXHD_encoder.so:qcom \ + vendor/qcom/taimen/proprietary/lib64/libdiag_system.so:system/lib64/libdiag_system.so:qcom \ + vendor/qcom/taimen/proprietary/lib64/libimscamera_jni.so:system/lib64/libimscamera_jni.so:qcom \ + vendor/qcom/taimen/proprietary/lib64/libimsmedia_jni.so:system/lib64/libimsmedia_jni.so:qcom \ + vendor/qcom/taimen/proprietary/lib64/lib-imsvideocodec.so:system/lib64/lib-imsvideocodec.so:qcom \ + vendor/qcom/taimen/proprietary/lib64/lib-imsvtextutils.so:system/lib64/lib-imsvtextutils.so:qcom \ + vendor/qcom/taimen/proprietary/lib64/lib-imsvt.so:system/lib64/lib-imsvt.so:qcom \ + vendor/qcom/taimen/proprietary/lib64/lib-imsvtutils.so:system/lib64/lib-imsvtutils.so:qcom \ + vendor/qcom/taimen/proprietary/lib64/libion.so:system/lib64/libion.so:qcom \ + vendor/qcom/taimen/proprietary/lib64/libiperf.so:system/lib64/libiperf.so:qcom \ + vendor/qcom/taimen/proprietary/lib64/librcc.so:system/lib64/librcc.so:qcom \ + vendor/qcom/taimen/proprietary/com.qualcomm.qti.imsrtpservice@1.0.so:system/lib/com.qualcomm.qti.imsrtpservice@1.0.so:qcom \ + vendor/qcom/taimen/proprietary/libdiag_system.so:system/lib/libdiag_system.so:qcom \ + vendor/qcom/taimen/proprietary/libimscamera_jni.so:system/lib/libimscamera_jni.so:qcom \ + vendor/qcom/taimen/proprietary/libimsmedia_jni.so:system/lib/libimsmedia_jni.so:qcom \ + vendor/qcom/taimen/proprietary/lib-imsvideocodec.so:system/lib/lib-imsvideocodec.so:qcom \ + vendor/qcom/taimen/proprietary/lib-imsvtextutils.so:system/lib/lib-imsvtextutils.so:qcom \ + vendor/qcom/taimen/proprietary/lib-imsvt.so:system/lib/lib-imsvt.so:qcom \ + vendor/qcom/taimen/proprietary/lib-imsvtutils.so:system/lib/lib-imsvtutils.so:qcom \ + vendor/qcom/taimen/proprietary/libion.so:system/lib/libion.so:qcom \ + vendor/qcom/taimen/proprietary/libiperf.so:system/lib/libiperf.so:qcom \ + vendor/qcom/taimen/proprietary/librcc.so:system/lib/librcc.so:qcom \ + vendor/qcom/taimen/proprietary/iperf3:system/xbin/iperf3:qcom \ + vendor/qcom/taimen/proprietary/sanitizer-status:system/xbin/sanitizer-status:qcom \ diff --git a/self-extractors/root/proprietary/BoardConfigVendor.mk b/self-extractors/root/proprietary/BoardConfigVendor.mk new file mode 100644 index 0000000..8bab850 --- /dev/null +++ b/self-extractors/root/proprietary/BoardConfigVendor.mk @@ -0,0 +1,18 @@ +# Copyright 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +LOCAL_STEM := taimen/BoardConfigPartial.mk + +-include vendor/google_devices/$(LOCAL_STEM) +-include vendor/qcom/$(LOCAL_STEM) diff --git a/self-extractors/root/proprietary/device-vendor.mk b/self-extractors/root/proprietary/device-vendor.mk new file mode 100644 index 0000000..2d230de --- /dev/null +++ b/self-extractors/root/proprietary/device-vendor.mk @@ -0,0 +1,18 @@ +# Copyright 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +LOCAL_STEM := taimen/device-partial.mk + +$(call inherit-product-if-exists, vendor/google_devices/$(LOCAL_STEM)) +$(call inherit-product-if-exists, vendor/qcom/$(LOCAL_STEM)) From 6997a821d1aea8e7817f771481bfa20ded0f69a6 Mon Sep 17 00:00:00 2001 From: Glenn Kasten Date: Mon, 17 Jul 2017 14:57:55 -0700 Subject: [PATCH 143/182] Enable pro audio feature flag Test: adb shell pm list features Bug: 38463264 Change-Id: I3bf173bf49452288acef2f307236412bf4c59ab1 --- device.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/device.mk b/device.mk index 4cf860a..be9508d 100644 --- a/device.mk +++ b/device.mk @@ -68,6 +68,10 @@ PRODUCT_PROPERTY_OVERRIDES += audio.adm.buffering.ms=3 PRODUCT_PROPERTY_OVERRIDES += audio_hal.period_multiplier=2 PRODUCT_PROPERTY_OVERRIDES += af.fast_track_multiplier=1 +# Pro audio feature +PRODUCT_COPY_FILES += \ + frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml + # Wifi configuration file PRODUCT_COPY_FILES += \ device/google/taimen/WCNSS_qcom_cfg.ini:$(TARGET_COPY_OUT_VENDOR)/firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini From 5a0684d028cafcff78b0363af17744dcc6ff9475 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 17 Jul 2017 16:44:13 -0700 Subject: [PATCH 144/182] Add factory image support for taimen BUG:36396200 Change-Id: I7acbe08b6bc473409ad1981e6a87bf9344ac4acf --- .../generate-factory-images-package.sh | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100755 factory-images/generate-factory-images-package.sh diff --git a/factory-images/generate-factory-images-package.sh b/factory-images/generate-factory-images-package.sh new file mode 100755 index 0000000..9077c06 --- /dev/null +++ b/factory-images/generate-factory-images-package.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +# Copyright 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +source ../../../common/clear-factory-images-variables.sh +BUILD=4169385 +DEVICE=taimen +PRODUCT=taimen +VERSION=opd1.170711.001 +SRCPREFIX=signed- +BOOTLOADER=TMZ09x +RADIO=g8998-00033-1707051711 +source ../../../common/generate-factory-images-common.sh From 64cc5bd93bebaaf1574581def3867214fa689303 Mon Sep 17 00:00:00 2001 From: Thierry Strudel Date: Tue, 18 Jul 2017 11:45:59 -0700 Subject: [PATCH 145/182] enforce RESTRICT_VENDOR_FILES := owner RESTRICT_VENDOR_FILES cannot be set to also enforce "path" as some vendor specific modules related to IMS VT still needs to be installed in system. Bug: 37330627 Change-Id: Ic94a63b4a53c876553a1c48a7d7a986ac11f790e Signed-off-by: Thierry Strudel --- aosp_taimen.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/aosp_taimen.mk b/aosp_taimen.mk index a689952..5a202b8 100644 --- a/aosp_taimen.mk +++ b/aosp_taimen.mk @@ -33,6 +33,8 @@ PRODUCT_PACKAGES += \ PRODUCT_COPY_FILES += \ device/google/taimen/audio_effects.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.conf +PRODUCT_RESTRICT_VENDOR_FILES := owner + PRODUCT_MANUFACTURER := Google PRODUCT_BRAND := Android PRODUCT_NAME := aosp_taimen From d89e4ec2725d0462bc98e89e5d39c2cce82b43bd Mon Sep 17 00:00:00 2001 From: Michael Wright Date: Wed, 19 Jul 2017 14:37:35 +0100 Subject: [PATCH 146/182] Drop the minimum screen brightness. This reduces the minimum brightness to 0.009 nits from 0.09 nits (on EVT1 and 2). Bug: 63834045 Test: manual Change-Id: I7d76eae6e76de5ed3a125f8f4b42d1bba2f57ac7 --- overlay/frameworks/base/core/res/res/values/config.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml index dfae9b3..66a72c8 100644 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -88,7 +88,7 @@ 600 - 6 + 4 13 From c61eab8f4fdc3e6a84a5c5963ff719bbcfe1d4ff Mon Sep 17 00:00:00 2001 From: Glenn Kasten Date: Thu, 20 Jul 2017 02:45:30 -0700 Subject: [PATCH 147/182] Add another property to configure adm buffering Keep the original property also, to make it easier to experiment with old and new libadm.so Bug: 63810681 Test: round-trip USB latency unchanged with old or new libadm.so Change-Id: I3ba8a670f6d8498a5899c352c544cbd63d815169 --- device.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/device.mk b/device.mk index be9508d..26ccd09 100644 --- a/device.mk +++ b/device.mk @@ -65,6 +65,7 @@ PRODUCT_COPY_FILES += \ # Bug 62375603 PRODUCT_PROPERTY_OVERRIDES += audio.adm.buffering.ms=3 +PRODUCT_PROPERTY_OVERRIDES += vendor.audio.adm.buffering.ms=3 PRODUCT_PROPERTY_OVERRIDES += audio_hal.period_multiplier=2 PRODUCT_PROPERTY_OVERRIDES += af.fast_track_multiplier=1 From 928678226e12ada6c14778edef671e70d41b68cb Mon Sep 17 00:00:00 2001 From: Phil Burk Date: Fri, 7 Jul 2017 14:14:19 -0700 Subject: [PATCH 148/182] taimen: enable aaudio MMAP mode This will allow AAudio to route audio data through a new service that uses ALSA MMAP/NOIRQ mode. Bug: 63002656 Test: reboot, then "adb shell getprop aaudio.mmap_policy" should be 2 Change-Id: Id2f692ac9350e4c308f17d86ee8d5cbb858bb565 --- device.mk | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/device.mk b/device.mk index 26ccd09..c0bad93 100644 --- a/device.mk +++ b/device.mk @@ -73,6 +73,12 @@ PRODUCT_PROPERTY_OVERRIDES += af.fast_track_multiplier=1 PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml +# Enable AAudio MMAP/NOIRQ data path. +# 2 is AAUDIO_POLICY_AUTO so it will try MMAP then fallback to Legacy path. +PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_policy=2 +# Allow EXCLUSIVE then fall back to SHARED. +PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_exclusive_policy=2 + # Wifi configuration file PRODUCT_COPY_FILES += \ device/google/taimen/WCNSS_qcom_cfg.ini:$(TARGET_COPY_OUT_VENDOR)/firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini From b7e5826cafad7ac5c92667a778cc2367fc05dd24 Mon Sep 17 00:00:00 2001 From: Ruchi Kandoi Date: Fri, 21 Jul 2017 10:38:39 -0700 Subject: [PATCH 149/182] Correct syntax error in config file Test: Tag reading, HCE Bug: 63915113 Change-Id: I79d0fa5ed83c039f4e9b466b9293106864bd2c7a --- nfc/libnfc-nxp.taimen.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nfc/libnfc-nxp.taimen.conf b/nfc/libnfc-nxp.taimen.conf index 76468b4..255b24e 100644 --- a/nfc/libnfc-nxp.taimen.conf +++ b/nfc/libnfc-nxp.taimen.conf @@ -227,7 +227,7 @@ NXP_SET_CONFIG_ALWAYS=0x00 # UICC2 bit rate A0D1 # SWP1A interface A0D4 # DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037 -NXP_CORE_CONF_EXTN={20, 02, 29, 0B, +NXP_CORE_CONF_EXTN={20, 02, 2D, 0B, A0, EC, 01, 01, A0, ED, 01, 01, A0, 5E, 01, 01, @@ -238,7 +238,7 @@ NXP_CORE_CONF_EXTN={20, 02, 29, 0B, A0, D1, 01, 02, A0, D4, 01, 00, A0, DD, 01, 2D, - A0, 37, 01, 35, + A0, 37, 01, 35 } # A0, F2, 01, 01, # A0, 40, 01, 01, From ce0ecde565d22cda75cd0ddeb4b92c7c0a95ca67 Mon Sep 17 00:00:00 2001 From: Maggie White Date: Fri, 21 Jul 2017 15:33:20 -0700 Subject: [PATCH 150/182] UFS-specific runtime I/O tuning Tested 1/2x, 1x, 2x, and 4x the current readahead buffer and noop and cfq I/O schedulers for /dev/block/sda, which contains /data. The most consistent performance boost was seen across all UFS vendors and storage sizes using cfq and a readahead buffer of 1024. Note: testing was done on Walleye, not Taimen Bug: 38000161 Test: Compared 1P app launch times using app-launcher for schedulers (noop, cfq) and readahead buffer sizes (128,512,1024,2048) Change-Id: I7551a4110ad025ec7975dd39301f048f0942f585 --- init-taimen.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init-taimen.rc b/init-taimen.rc index 1a6ddb4..13ae83e 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -15,7 +15,7 @@ on late-fs on property:sys.boot_completed=1 # end boot time fs tune - write /sys/block/sda/queue/read_ahead_kb 512 + write /sys/block/sda/queue/read_ahead_kb 1024 write /sys/block/sda/queue/nr_requests 128 write /sys/block/sda/queue/iostats 1 write /sys/block/sde/queue/read_ahead_kb 512 From 13c79aa51de917370109caadc7473ea638b31421 Mon Sep 17 00:00:00 2001 From: Phil Burk Date: Mon, 24 Jul 2017 12:22:03 -0700 Subject: [PATCH 151/182] aaudio: increase burst size from 1 to 2 msec One msec is on the edge and sometimes glitches. Two msec is more stable and matches the FastMixer burst. Bug: 63934178 Test: "adb shell getprop aaudio.hw_burst_min_usec" should be 2000 Change-Id: I9687f5822d0827032b93f98779f9dd6ef9ca074c --- device.mk | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/device.mk b/device.mk index c0bad93..0df7dd4 100644 --- a/device.mk +++ b/device.mk @@ -79,6 +79,13 @@ PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_policy=2 # Allow EXCLUSIVE then fall back to SHARED. PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_exclusive_policy=2 +# Increase the apparent size of a hardware burst from 1 msec to 2 msec. +# A "burst" is the number of frames processed at one time. +# That is an increase from 48 to 96 frames at 48000 Hz. +# The DSP will still be bursting at 48 frames but AAudio will think the burst is 96 frames. +# A low number, like 48, might increase power consumption or stress the system. +PRODUCT_PROPERTY_OVERRIDES += aaudio.hw_burst_min_usec=2000 + # Wifi configuration file PRODUCT_COPY_FILES += \ device/google/taimen/WCNSS_qcom_cfg.ini:$(TARGET_COPY_OUT_VENDOR)/firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini From b7fa5f9438d897a2a2eb4d9ed9aa7426042107f7 Mon Sep 17 00:00:00 2001 From: Jia-yi Chen Date: Mon, 24 Jul 2017 13:29:53 -0700 Subject: [PATCH 152/182] thermal-engine: Update policies for taimen 1) Update applies to EVT2.2 and beyond 2) Add & Set the device_max_limit of SKIN-MID-LOW-FLOOR2 to 1497600 3) Raise SKIN-LOW-FLOOR2 set_point to 45 degreeC 4) Add charging current throttling for both normal and vr mode Bug: 63152009 Bug: 63037732 Test: Boot & check logcat message Change-Id: I0c10bb36717194aa0f0ac841d1a910eaa634e0c5 --- thermal-engine-vr.conf | 4 ++-- thermal-engine.conf | 25 ++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/thermal-engine-vr.conf b/thermal-engine-vr.conf index 8a80965..bed4c59 100755 --- a/thermal-engine-vr.conf +++ b/thermal-engine-vr.conf @@ -13,8 +13,8 @@ sensor bd_therm2 sampling 1000 thresholds 50000 thresholds_clr 46000 -actions cluster0+cluster1+gpu -action_info 883200+902400+342000000 +actions cluster0+cluster1+gpu+battery +action_info 883200+902400+342000000+3 [SKIN_SHUTDOWN] algo_type monitor diff --git a/thermal-engine.conf b/thermal-engine.conf index 80e4de5..8c810bd 100755 --- a/thermal-engine.conf +++ b/thermal-engine.conf @@ -8,13 +8,23 @@ set_point_clr 37000 device_max_limit 1804800 time_constant 0 -[SKIN-LOW-FLOOR2] +[SKIN-MID-LOW-FLOOR2] algo_type ss sampling 2000 sensor bd_therm2 device cluster1 set_point 40000 set_point_clr 39000 +device_max_limit 1497600 +time_constant 0 + +[SKIN-LOW-FLOOR2] +algo_type ss +sampling 2000 +sensor bd_therm2 +device cluster1 +set_point 45000 +set_point_clr 44000 device_max_limit 1190400 time_constant 0 @@ -42,11 +52,20 @@ device_max_limit 414000000 algo_type monitor sampling 2000 sensor bd_therm2 -thresholds 48000 50000 54000 -thresholds_clr 47000 49000 53000 +thresholds 48000 50000 52000 +thresholds_clr 47000 49000 51000 actions cluster0+cluster1+gpu cluster0+cluster1+gpu cluster0+cluster1+gpu action_info 1094400+1190400+414000000 883200+902400+342000000 300000+300000+257000000 +[BATTERY-MONITOR2] +algo_type monitor +sampling 2000 +sensor bd_therm2 +thresholds 50000 +thresholds_clr 48000 +actions battery +action_info 3 + [SKIN-SHUTDOWN2] algo_type monitor sampling 1000 From e37f2eaab03198b048a435046a8ed02b6642dd87 Mon Sep 17 00:00:00 2001 From: "taeho.youn" Date: Mon, 24 Jul 2017 11:37:00 +0900 Subject: [PATCH 153/182] audio: update mixer_path for voice call - To improve hissing noise (TI tas2557 gain -15dB, and balanced in ACDB) Bug: 38247409 Test: NA Change-Id: Ic741f5d7094ab81b29fc42af9e79a0bd2ac8877d --- mixer_paths_tavil.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mixer_paths_tavil.xml b/mixer_paths_tavil.xml index f8a3cb0..6345024 100644 --- a/mixer_paths_tavil.xml +++ b/mixer_paths_tavil.xml @@ -607,6 +607,8 @@ + + @@ -1589,6 +1591,7 @@ + From cb6bb96cddd9091812da3e05d84efe7c425955c7 Mon Sep 17 00:00:00 2001 From: John Dias Date: Tue, 25 Jul 2017 10:26:50 -0700 Subject: [PATCH 154/182] thermal: copy correct vr config The wrong thermal-config was copied for VR mode. Bug: 37544246 Test: verify that the correct VR thermal config is on-device Change-Id: I8605336c5fbdac7450036883a68f1f25f111d286 --- device.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device.mk b/device.mk index c0bad93..c97f296 100644 --- a/device.mk +++ b/device.mk @@ -56,7 +56,7 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \ device/google/taimen/thermal-engine.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine.conf \ - device/google/taimen/thermal-engine.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine-vr.conf + device/google/taimen/thermal-engine-vr.conf:$(TARGET_COPY_OUT_VENDOR)/etc/thermal-engine-vr.conf # Audio PRODUCT_COPY_FILES += \ From 0ebd325f2c265a543ed46acfc5897256705f3822 Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Wed, 26 Jul 2017 10:08:50 -0700 Subject: [PATCH 155/182] Taimen: WLAN: Enable firmware module logging levels After looking at all the issues reported and logs captured, these are the firmware logging levels (module-wise) recommended to be enabled by default. CRs-Fixed: 2081775 Bug: 63544726 Change-Id: I16a531b651836707963083fdf028874cae738bf2 Signed-off-by: Ecco Park --- WCNSS_qcom_cfg.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WCNSS_qcom_cfg.ini b/WCNSS_qcom_cfg.ini index 8b25a32..c86399b 100644 --- a/WCNSS_qcom_cfg.ini +++ b/WCNSS_qcom_cfg.ini @@ -467,8 +467,8 @@ gEnableSelfRecovery=1 #Enable firmware log gEnablefwlog=1 # Additional firmware log levels -gFwDebugLogLevel=4 -gFwDebugModuleLoglevel=1,0,2,0,4,0,5,0,6,0,7,4,8,0,9,0,11,0,13,0,17,0,18,0,19,0,27,0,29,0,31,0,35,0,36,0,38,0 +gFwDebugLogLevel=3 +gFwDebugModuleLoglevel=2,1,3,1,5,1,9,1,13,1,14,1,18,1,19,1,26,1,28,1,29,1,31,1,36,1,38,1,46,1,47,1,50,1,52,1,53,1,56,1,60,1,61,1,4,1 #Enable firmware uart print gEnablefwprint=0 From fd125c29b1d44da196ff0ddd509c6633847edc03 Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Wed, 26 Jul 2017 10:20:29 -0700 Subject: [PATCH 156/182] Taimen: WLAN: Disable LPRx Disable LPRx CRs-Fixed: 2082443 Bug: 63076243 Change-Id: I2b741de1811c29d52a441b31dff2d5610a97288f Signed-off-by: Ecco Park --- WCNSS_qcom_cfg.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/WCNSS_qcom_cfg.ini b/WCNSS_qcom_cfg.ini index c86399b..8a32b78 100644 --- a/WCNSS_qcom_cfg.ini +++ b/WCNSS_qcom_cfg.ini @@ -605,6 +605,8 @@ gDualMacFeatureDisable=1 #Set priority for connection with bssid_hint g_is_bssid_hint_priority=0 +gEnableLPRx=0 + END # Note: Configuration parser would not read anything past the END marker From c361f733a62f419eb7d3b4a41ce9e716faeca22f Mon Sep 17 00:00:00 2001 From: Michael Wright Date: Wed, 26 Jul 2017 21:53:03 +0100 Subject: [PATCH 157/182] Fix the autobrightness curve, part deux. New hardware units have a mapping that's actually linear, so we assume that the curve is linear here and have the kernel fix it up for us if it needs to. Bug: 63606090 Test: manual Change-Id: I05c98115b20e0328654ca42ac58244ea81e19940 --- .../base/core/res/res/values/config.xml | 30 +++++++------------ 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml index 66a72c8..a891cfe 100644 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -54,17 +54,17 @@ than the size of the config_autoBrightnessLevels array. This must be overridden in platform specific overlays --> - 43 - 67 - 82 - 101 - 113 - 125 - 140 - 159 - 175 - 207 - 223 + 9 + 30 + 45 + 62 + 78 + 96 + 119 + 146 + 178 + 221 + 255 86 - - 4 - - - 223 - "usbradio:adb:diag,serial_cdev,rmnet_gsi,adb:diag,serial_cdev,rmnet_gsi" From eccf8fa2c575d1c68a7d5b00e77f23f82c05c7c2 Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Wed, 26 Jul 2017 14:07:11 -0700 Subject: [PATCH 158/182] Taimen: WLAN: Enable enable_11d_in_world_mode WLAN: Enable enable_11d_in_world_mode. CRs-Fixed: 2078528 Bug: 35919398 Change-Id: I144b1161dfdc115ff05e1b5f9bb0b4bb4d480d6e Signed-off-by: Ecco Park --- WCNSS_qcom_cfg.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/WCNSS_qcom_cfg.ini b/WCNSS_qcom_cfg.ini index 8a32b78..7eac146 100644 --- a/WCNSS_qcom_cfg.ini +++ b/WCNSS_qcom_cfg.ini @@ -605,6 +605,8 @@ gDualMacFeatureDisable=1 #Set priority for connection with bssid_hint g_is_bssid_hint_priority=0 +enable_11d_in_world_mode=1 + gEnableLPRx=0 END From 28a5ca23c771dc3efd125f79b850da96bc1ee6d7 Mon Sep 17 00:00:00 2001 From: Jie Song Date: Wed, 26 Jul 2017 19:17:52 -0700 Subject: [PATCH 159/182] Disable QShrink for all subsys in mdlog Bug: 62489031 Test: Modem logging is functional Change-Id: I7159d8558ac702867dc5a4c85c34d311fa8819b9 --- device.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/device.mk b/device.mk index f54fb13..b472949 100644 --- a/device.mk +++ b/device.mk @@ -97,6 +97,7 @@ PRODUCT_COPY_FILES += \ # Enable modem logging ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT))) PRODUCT_PROPERTY_OVERRIDES += \ + persist.sys.modem.diag.qdb=0\ persist.sys.modem.diag.mdlog=true \ ro.radio.log_loc="/data/vendor/modem_dump" \ ro.radio.log_prefix="modem_log_" From 45d556e196d31dc635b46391718fe656522a4450 Mon Sep 17 00:00:00 2001 From: Marissa Wall Date: Fri, 14 Jul 2017 10:32:22 -0700 Subject: [PATCH 160/182] Power Profile: update taimen Updating all power profiles using the same scripts. Previously, every power profile was generated using different algorithims. b/62389228 Test: Run a normal android workload and verify the app blame is reasonable Change-Id: Idff05eb0fa776a3dae7bde2952ec80b031834d54 --- .../base/core/res/res/xml/power_profile.xml | 313 ++++++++++-------- 1 file changed, 168 insertions(+), 145 deletions(-) diff --git a/overlay/frameworks/base/core/res/res/xml/power_profile.xml b/overlay/frameworks/base/core/res/res/xml/power_profile.xml index 464e004..1fcf817 100644 --- a/overlay/frameworks/base/core/res/res/xml/power_profile.xml +++ b/overlay/frameworks/base/core/res/res/xml/power_profile.xml @@ -1,157 +1,180 @@ - - 6 + - 11 + + 0 - 30 + + 3520 - 50 - 5 - - 6 - 5 - 4 - 3 - 3 - + + + 4 + 4 + - 0 + + 6.957 + + 2.855 - - 4 - 4 - + + + 300000 + 364800 + 441600 + 518400 + 595200 + 672000 + 748800 + 825600 + 883200 + 960000 + 1036800 + 1094400 + 1171200 + 1248000 + 1324800 + 1401600 + 1478400 + 1555200 + 1670400 + 1747200 + 1824000 + 1900800 + + + + 300000 + 345600 + 422400 + 499200 + 576000 + 652800 + 729600 + 806400 + 902400 + 979200 + 1056000 + 1132800 + 1190400 + 1267200 + 1344000 + 1420800 + 1497600 + 1574400 + 1651200 + 1728000 + 1804800 + 1881600 + 1958400 + 2035200 + 2112000 + 2208000 + 2265600 + 2323200 + 2342400 + 2361600 + 2457600 + - - - 300000 - 364800 - 441600 - 518400 - 595200 - 672000 - 748800 - 825600 - 883200 - 960000 - 1036800 - 1094400 - 1171200 - 1248000 - 1324800 - 1401600 - 1478400 - 1555200 - 1670400 - 1747200 - 1824000 - 1900800 - + + + 92.451 + 93.158 + 93.997 + 94.915 + 95.686 + 96.295 + 97.031 + 97.804 + 99.095 + 100.005 + 101.407 + 102.484 + 104.247 + 106.340 + 107.756 + 109.728 + 110.122 + 112.570 + 117.837 + 130.354 + 133.134 + 137.809 + + + + 102.305 + 103.782 + 106.156 + 109.347 + 111.951 + 114.418 + 118.203 + 119.348 + 123.105 + 125.068 + 127.789 + 130.686 + 135.918 + 138.613 + 142.436 + 148.186 + 154.753 + 160.137 + 164.933 + 172.082 + 181.209 + 201.205 + 205.762 + 229.152 + 244.584 + 296.146 + 314.341 + 334.633 + 344.553 + 351.063 + 347.850 + - - 125.927994 - 125.343994 - 126.192001 - 127.300003 - 128.143005 - 128.007004 - 126.160995 - 127.184006 - 128.455994 - 132.464005 - 133.457001 - 136.403000 - 138.167007 - 139.893005 - 141.796005 - 143.692001 - 146.570999 - 148.878006 - 153.154007 - 157.662994 - 160.550003 - 166.753006 - + + 152.118 + + 532.322 - - - 300000 - 345600 - 422400 - 499200 - 576000 - 652800 - 729600 - 806400 - 902400 - 979200 - 1056000 - 1132800 - 1190400 - 1267200 - 1344000 - 1420800 - 1497600 - 1574400 - 1651200 - 1728000 - 1804800 - 1881600 - 1958400 - 2035200 - 2112000 - 2208000 - 2265600 - 2323200 - 2342400 - 2361600 - 2457600 - + + 275.816 + + 831.870 + + + 139.047 + + + 30 + + + 50 + + 5 + + + 6 + 5 + 4 + 3 + 3 + - - 135.47 - 134.93 - 137.16 - 140.10 - 143.30 - 146.59 - 139.80 - 137.54 - 139.42 - 140.58 - 142.38 - 143.40 - 167.40 - 159.51 - 175.65 - 181.65 - 187.83 - 195.19 - 201.31 - 208.11 - 218.77 - 230.67 - 238.13 - 258.11 - 270.27 - 296.85 - 311.92 - 336.86 - 343.08 - 351.30 - 352.63 - - 165.68 - 135 - 240.10 - 870 - 3620 From efce5fb8a0e18f0294712ee70bfeb13227d6bc72 Mon Sep 17 00:00:00 2001 From: Max Shi Date: Fri, 28 Jul 2017 20:51:48 -0700 Subject: [PATCH 161/182] Revert "Clean up init script" This reverts commit 8d0e6dca7912707bfe03d5f10647a4be72e3f94b. Change-Id: I5777501d14ed2d551dba5bb314cdfcd5476b785d reason: restore the folder if /persist/sensors is missing Test: flash on a phone without /persist/sensors folder Test: reboot and verify sensor regsitry is created Test: and sensors are available to sensor service Bug: 64065874 --- init-taimen.rc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/init-taimen.rc b/init-taimen.rc index 13ae83e..95b1623 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -31,6 +31,14 @@ on init && property:ro.boot.slot=* on init && property:ro.boot.revision=* setprop ro.boot.hardware.revision ${ro.boot.revision} +on post-fs-data + # QC Sensors + mkdir /persist/sensors + chmod 775 /persist/sensors + write /persist/sensors/sensors_settings 1 + chmod 664 /persist/sensors/sensors_settings + chown system root /persist/sensors/sensors_settings + on property:init.svc.fps_hal=running && property:ro.boot.revision=rev_0 stop fps_hal From 5a98048374117b5eca323917d048b291899f7f7e Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Fri, 28 Jul 2017 20:23:09 -0700 Subject: [PATCH 162/182] Taimen: enable SAR tx power control for wifi Bug: 62437848 Change-Id: Ibe891e2eb20e6ee9c6a67b879f327e85b572049b Signed-off-by: Ecco Park --- overlay/frameworks/base/core/res/res/values/config.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml index a891cfe..e6c7567 100644 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -111,4 +111,9 @@ 12 + + + true + From f255ec14891e9496a17c88aecfb60a47c333a0d1 Mon Sep 17 00:00:00 2001 From: Max Shi Date: Mon, 31 Jul 2017 21:06:14 +0000 Subject: [PATCH 163/182] Revert "Revert "Clean up init script"" This reverts commit efce5fb8a0e18f0294712ee70bfeb13227d6bc72. Reason for revert: moving this logic under wahoo init script Bug: 64065874 Change-Id: I531d22c92456ebe4a95408407285867a54afeda5 --- init-taimen.rc | 8 -------- 1 file changed, 8 deletions(-) diff --git a/init-taimen.rc b/init-taimen.rc index 95b1623..13ae83e 100644 --- a/init-taimen.rc +++ b/init-taimen.rc @@ -31,14 +31,6 @@ on init && property:ro.boot.slot=* on init && property:ro.boot.revision=* setprop ro.boot.hardware.revision ${ro.boot.revision} -on post-fs-data - # QC Sensors - mkdir /persist/sensors - chmod 775 /persist/sensors - write /persist/sensors/sensors_settings 1 - chmod 664 /persist/sensors/sensors_settings - chown system root /persist/sensors/sensors_settings - on property:init.svc.fps_hal=running && property:ro.boot.revision=rev_0 stop fps_hal From f4d6eeb12a1d8ed7f181d2620db60af38aa186a7 Mon Sep 17 00:00:00 2001 From: Naveen Kalla Date: Tue, 1 Aug 2017 15:21:48 -0700 Subject: [PATCH 164/182] Fix MMS UA Profile and String Bug: 64201666 Test: Manual Change-Id: I60da5669bdc82bb6ec36b447830e6605408def68 --- .../res/res/values-mcc310-mnc004/config.xml | 29 +++++++++++++++++++ .../res/res/values-mcc311-mnc480/config.xml | 29 +++++++++++++++++++ .../base/core/res/res/values/config.xml | 4 +-- 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml create mode 100644 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 new file mode 100644 index 0000000..3a07a04 --- /dev/null +++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml @@ -0,0 +1,29 @@ + + + + + + + + g011c + + http://uaprof.vtext.com/google/g011c/g011c.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 new file mode 100644 index 0000000..3a07a04 --- /dev/null +++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml @@ -0,0 +1,29 @@ + + + + + + + + g011c + + http://uaprof.vtext.com/google/g011c/g011c.xml + + diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml index e6c7567..be4b9bc 100644 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -22,9 +22,9 @@ - g2pw2100 + g011c - http://www.gstatic.com/android/sms/G_2PW2100.xml + http://www.gstatic.com/android/sms/G011C.xml - 30dp + 26dp 8dp From c2031deaf694e2182f5d43b68d7ad0476549bc18 Mon Sep 17 00:00:00 2001 From: Ruchi Kandoi Date: Tue, 8 Aug 2017 09:46:03 -0700 Subject: [PATCH 172/182] Update RF Related configuration. Test: boots, HCE, Tag reading Bug: 64463108 Change-Id: Ie73068f8b30ed23dd2abbfb84f4b5cfac15617f7 --- nfc/libnfc-nxp.taimen.conf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/nfc/libnfc-nxp.taimen.conf b/nfc/libnfc-nxp.taimen.conf index 255b24e..1374134 100644 --- a/nfc/libnfc-nxp.taimen.conf +++ b/nfc/libnfc-nxp.taimen.conf @@ -83,7 +83,7 @@ NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, ############################################################################### #config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM, #monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms -NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 15, 00, D0, 0C} +NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, BA, 00, B2, 1E, 15, 00, D0, 0C} ############################################################################### # NXP RF configuration ALM/PLM settings @@ -91,8 +91,8 @@ NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 15, NXP_RF_CONF_BLK_1={ 20, 02, A8, 14, A0, 0D, 06, 06, 37, 08, 76, 00, 00, A0, 38, 04, 14, 0B, 0B, 00, - A0, 0D, 03, 24, 03, 7E, - A0, 0D, 06, 06, 42, 00, 00, F4, F4, + A0, 0D, 03, 24, 03, 7F, + A0, 0D, 06, 06, 42, 00, 00, F2, F2, A0, 0D, 04, 32, 42, FC, 40, A0, 0D, 04, 46, 42, 68, 40, A0, 0D, 04, 56, 42, 78, 40, @@ -115,7 +115,7 @@ NXP_RF_CONF_BLK_1={ 20, 02, A8, 14, # NXP RF configuration ALM/PLM settings # This section needs to be updated with the correct values based on the platform NXP_RF_CONF_BLK_2={ 20, 02, 26, 02, - A0, 3A, 08, 2D, 00, 2D, 00, 2D, 00, 2D, 00, + A0, 3A, 08, 0E, 01, 0E, 01, 0E, 01, 0E, 01, A0, 29, 17, 1C, 02, 00, 1F, 00, 02, 00, 1F, 00, 02, 00, 40, F3, F3, 00, 43, F3, F3, 38, 70, 00, 00, 01 } @@ -232,7 +232,7 @@ NXP_CORE_CONF_EXTN={20, 02, 2D, 0B, A0, ED, 01, 01, A0, 5E, 01, 01, A0, 12, 01, 02, - A0, 40, 01, 01, + A0, 40, 01, 05, A0, 41, 01, 05, A0, 43, 01, 04, A0, D1, 01, 02, From c3f3b300aa982b8fac3ee89b0ad1eb26a771b923 Mon Sep 17 00:00:00 2001 From: Adrian Salido Date: Tue, 8 Aug 2017 16:54:59 -0700 Subject: [PATCH 173/182] display: Change low persistence mode brightness to 50nits Bug: 36660610 Change-Id: I85e4642b549b3c67f873748a3ff00cb942894ddb --- BoardConfig.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BoardConfig.mk b/BoardConfig.mk index 74fdbef..0b9f743 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -15,7 +15,7 @@ # TARGET_BOOTLOADER_BOARD_NAME := taimen -DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x0000009f +DEFAULT_LOW_PERSISTENCE_MODE_BRIGHTNESS := 0x0000008c BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200,n8 earlycon=msm_serial_dm,0xc1b0000 From 3580135436573d53a1e7a74a24dec5834a35d666 Mon Sep 17 00:00:00 2001 From: Phil Burk Date: Wed, 9 Aug 2017 14:13:36 -0700 Subject: [PATCH 174/182] aaudio: disable MMAP data path Some bugs were found late in the release cycle for DR1. It seems safer to simply disable MMAP mode for DR1 and enable it in MR1. Developers can still experiment with MMAP mode by overriding the policy using AAudio_setMmapPolicy(). Bug: 64316921 Bug: 64311216 Bug: 64494572 Test: "adb shell getprop aaudio.mmap_policy" should print 1 Change-Id: Ia8752693f4e58a27dd901148728543c8d0bb8259 --- device.mk | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/device.mk b/device.mk index b472949..e8be6ba 100644 --- a/device.mk +++ b/device.mk @@ -74,10 +74,14 @@ PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml # Enable AAudio MMAP/NOIRQ data path. -# 2 is AAUDIO_POLICY_AUTO so it will try MMAP then fallback to Legacy path. -PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_policy=2 -# Allow EXCLUSIVE then fall back to SHARED. -PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_exclusive_policy=2 +# 1 is AAUDIO_POLICY_NEVER means only use Legacy path. +# 2 is AAUDIO_POLICY_AUTO means try MMAP then fallback to Legacy path. +# 3 is AAUDIO_POLICY_ALWAYS means only use MMAP path. +PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_policy=1 +# 1 is AAUDIO_POLICY_NEVER means only use SHARED mode +# 2 is AAUDIO_POLICY_AUTO means try EXCLUSIVE then fallback to SHARED mode. +# 3 is AAUDIO_POLICY_ALWAYS means only use EXCLUSIVE mode. +PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_exclusive_policy=1 # Increase the apparent size of a hardware burst from 1 msec to 2 msec. # A "burst" is the number of frames processed at one time. From f682d609085ae616ba17e8a454fba35d105b3d8b Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Wed, 9 Aug 2017 11:20:53 -0700 Subject: [PATCH 175/182] taimen-wifi: change the configuration for performance issues 1) Disable TSO(TCP Segmentation Offload) for BT Coex (b/64039324) 2) Disable IPA for Hotspot (b/63740353) Bug: 64039324 Bug: 63740353 Change-Id: Iacdf52b3120b380eca1459966c819e1482389d7e Signed-off-by: Ecco Park --- WCNSS_qcom_cfg.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WCNSS_qcom_cfg.ini b/WCNSS_qcom_cfg.ini index 10b0032..669595f 100644 --- a/WCNSS_qcom_cfg.ini +++ b/WCNSS_qcom_cfg.ini @@ -199,7 +199,7 @@ gVhtTxMCS2x2=2 #bit5 IPA uC ENABLE #bit6 IPA uC STA ENABLE #bit8 IPA Real Time Debugging -gIPAConfig=0x7d +gIPAConfig=0 gIPADescSize=800 # Enable/Disable RX full reorder offload @@ -219,7 +219,7 @@ gEnableIpTcpUdpChecksumOffload=1 # Enable TCP Segmentation Offload # 1 - enable 0 - disable -TSOEnable=1 +TSOEnable=0 # Enable Large Recieve Offload # 1 - enable(default) 0 - disable From abcd962539e981f6f5443dd8de5ec6c0962f2186 Mon Sep 17 00:00:00 2001 From: Kumar Anand Date: Wed, 9 Aug 2017 23:21:01 +0000 Subject: [PATCH 176/182] Revert "Taimen: enable SAR tx power control for wifi" This reverts commit 5a98048374117b5eca323917d048b291899f7f7e. Change-Id: Iebb1f2c1391cfdcecdf130ccb248df00c0876cf4 --- overlay/frameworks/base/core/res/res/values/config.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml index e6c7567..a891cfe 100644 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -111,9 +111,4 @@ 12 - - - true - From 84f3707b6365b9335faf83eeed6289117d3b2cd1 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Wed, 9 Aug 2017 16:50:43 -0700 Subject: [PATCH 177/182] Updating brightness override for AOD. Bug: 63782050 Test: Verified visually Change-Id: I7e7cb9cebe61856373b171d6dd62d93abf92d596 --- .../packages/SystemUI/res/values/config.xml | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 overlay/frameworks/base/packages/SystemUI/res/values/config.xml diff --git a/overlay/frameworks/base/packages/SystemUI/res/values/config.xml b/overlay/frameworks/base/packages/SystemUI/res/values/config.xml new file mode 100644 index 0000000..2c304ad --- /dev/null +++ b/overlay/frameworks/base/packages/SystemUI/res/values/config.xml @@ -0,0 +1,28 @@ + + + + + + -1 + 2 + 7 + 27 + 28 + + \ No newline at end of file From 3601d29a83b9147d5857df4873e6618dc1da4a31 Mon Sep 17 00:00:00 2001 From: "taeho.youn" Date: Wed, 9 Aug 2017 16:58:11 +0900 Subject: [PATCH 178/182] audio: update volume curve for ringtone, in-call tones This patch updates the re-calibrated volume curve for voice stream for in-call tones. Bug: 64459913 Bug: 63908439 Test: manual audio sanity test Change-Id: I436679d935c26650fe26eddc13bc654a322707f5 --- audio_policy_volumes.xml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/audio_policy_volumes.xml b/audio_policy_volumes.xml index 3ab96c0..5e3aa26 100644 --- a/audio_policy_volumes.xml +++ b/audio_policy_volumes.xml @@ -24,22 +24,22 @@ volume index from 0 to 100. - 0,-4000 - 33,-3000 - 66,-2000 - 100,-1000 + 0,-3000 + 33,-2000 + 66,-1000 + 100,0 - 0,-4000 - 33,-3400 - 66,-2600 - 100,-1800 + 0,-3000 + 33,-2000 + 66,-1000 + 100,0 - 0,-4000 - 33,-3400 - 66,-2600 - 100,-1800 + 0,-3000 + 33,-2000 + 66,-1000 + 100,0 From be5a4af848048ef5c89bd04b675eb35a140d3fd4 Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Fri, 11 Aug 2017 14:28:44 -0700 Subject: [PATCH 179/182] taimen-wifi: re-enable TSO Bug: 64039324 Change-Id: Id4655c0721ea889f7b7bc7e5ae4cff0cd2261c8e Signed-off-by: Ecco Park --- WCNSS_qcom_cfg.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WCNSS_qcom_cfg.ini b/WCNSS_qcom_cfg.ini index 669595f..875b6c0 100644 --- a/WCNSS_qcom_cfg.ini +++ b/WCNSS_qcom_cfg.ini @@ -219,7 +219,7 @@ gEnableIpTcpUdpChecksumOffload=1 # Enable TCP Segmentation Offload # 1 - enable 0 - disable -TSOEnable=0 +TSOEnable=1 # Enable Large Recieve Offload # 1 - enable(default) 0 - disable From 6018280cdc79911acc2512207c92d6d777347b19 Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Mon, 14 Aug 2017 16:28:42 -0700 Subject: [PATCH 180/182] taimen-wifi: disable TSO Bug: 64039324 Test: In the last 1 hour: - Walleye: running speedtests (BT off) - Taimen: running speedtests (BLE + BT on) => no disconnection for wifi. Change-Id: I408528cf63858d484048cd093ef3a379cd0cfcb7 Signed-off-by: Ecco Park --- WCNSS_qcom_cfg.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WCNSS_qcom_cfg.ini b/WCNSS_qcom_cfg.ini index 875b6c0..669595f 100644 --- a/WCNSS_qcom_cfg.ini +++ b/WCNSS_qcom_cfg.ini @@ -219,7 +219,7 @@ gEnableIpTcpUdpChecksumOffload=1 # Enable TCP Segmentation Offload # 1 - enable 0 - disable -TSOEnable=1 +TSOEnable=0 # Enable Large Recieve Offload # 1 - enable(default) 0 - disable From 4c09bac0a41a4824bad59079f22136272839af14 Mon Sep 17 00:00:00 2001 From: Michael Wright Date: Tue, 15 Aug 2017 15:42:57 +0100 Subject: [PATCH 181/182] Add brightness minimum back. This was erroneously removed when updating the autobrightness curve under the assumption that the default value was 1 but it's actually 10, which is way too high. Change-Id: Ie5b81c23d9d30560f5a686d40bc090d3cbdf3c4d Fixes: 64708230 Test: manual --- overlay/frameworks/base/core/res/res/values/config.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml index 65ffc16..043809c 100644 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -100,6 +100,10 @@ 86 + + 4 + "usbradio:adb:diag,serial_cdev,rmnet_gsi,adb:diag,serial_cdev,rmnet_gsi" From f7fbda2836cab001cd17730f81de072083e652f0 Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Fri, 18 Aug 2017 08:06:34 -0700 Subject: [PATCH 182/182] taimen-wifi: DBS off Bug: 64813616 Change-Id: I49ef19e589fdb922f1e58b1894d9bb498be51af4 Signed-off-by: Ecco Park --- WCNSS_qcom_cfg.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WCNSS_qcom_cfg.ini b/WCNSS_qcom_cfg.ini index 669595f..57d76f2 100644 --- a/WCNSS_qcom_cfg.ini +++ b/WCNSS_qcom_cfg.ini @@ -600,7 +600,7 @@ gEnableTxBFeeSAP=1 # scan policy disabled # 4 - enable DBS for connection as well as for scan with async # scan policy disabled -gDualMacFeatureDisable=2 +gDualMacFeatureDisable=1 #Set priority for connection with bssid_hint g_is_bssid_hint_priority=0