From b82f47926c664b92ae0b2dd6f72c8f4ea7a24bd2 Mon Sep 17 00:00:00 2001 From: chloedai Date: Wed, 15 Dec 2021 14:34:07 +0000 Subject: [PATCH 01/70] Update CFG file for C10 EVT Update init.cheetah.rc to make device able to check ro.boot.hardware.revision Bug: 210755812 Test: Test with C10 proto, pass Change-Id: Ibdbd43d2c8718d3fe6161f2bf190255daff350ae --- conf/init.cheetah.rc | 7 +++++++ device-cheetah.mk | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/conf/init.cheetah.rc b/conf/init.cheetah.rc index 10406b4..309bb0e 100644 --- a/conf/init.cheetah.rc +++ b/conf/init.cheetah.rc @@ -70,6 +70,13 @@ service wpa_supplicant /vendor/bin/hw/wpa_supplicant \ disabled oneshot +# NFC +on property:ro.boot.hardware.revision=PROTO1.0 + setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf + +on property:ro.boot.hardware.revision=PROTO1.1 + setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf + # SecureElement eSE2 cts mode on property:persist.vendor.se.ese2.mode=ctsmode write /sys/class/st33spi/st33spi/st33spi_state 33 diff --git a/device-cheetah.mk b/device-cheetah.mk index bdccead..202adcc 100644 --- a/device-cheetah.mk +++ b/device-cheetah.mk @@ -61,8 +61,9 @@ PRODUCT_COPY_FILES += \ frameworks/native/data/etc/com.nxp.mifare.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.nxp.mifare.xml \ frameworks/native/data/etc/android.hardware.nfc.uicc.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.uicc.xml \ frameworks/native/data/etc/android.hardware.nfc.ese.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.ese.xml \ - device/google/pantah/nfc/libnfc-hal-st.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-hal-st.conf \ - device/google/pantah/nfc/libnfc-nci-cheetah.conf:$(TARGET_COPY_OUT_PRODUCT)/etc/libnfc-nci.conf + device/google/pantah/nfc/libnfc-hal-st.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-hal-st.conf \ + device/google/pantah/nfc/libnfc-hal-st-proto1.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-hal-st-proto1.conf \ + device/google/pantah/nfc/libnfc-nci-cheetah.conf:$(TARGET_COPY_OUT_PRODUCT)/etc/libnfc-nci.conf PRODUCT_PACKAGES += \ NfcNci \ From 984a5c898910045d3604fb623a79e00f2c52f182 Mon Sep 17 00:00:00 2001 From: Sasha Smundak Date: Thu, 16 Dec 2021 11:29:58 -0800 Subject: [PATCH 02/70] Use soong_config_ macros to set Soong config variables. Bug: 198503843 Test: treehugger Change-Id: Ia396897ce7c93d0cfa62cac9ba5072af3f6d24d7 --- device-cheetah.mk | 4 ++-- device-cloudripper.mk | 4 ++-- device-panther.mk | 4 ++-- device-ravenclaw.mk | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/device-cheetah.mk b/device-cheetah.mk index 202adcc..40d30bd 100644 --- a/device-cheetah.mk +++ b/device-cheetah.mk @@ -30,8 +30,8 @@ include hardware/google/pixel/vibrator/cs40l26/device.mk include device/google/gs101/bluetooth/bluetooth.mk include device/google/gs201/uwb/uwb.mk -SOONG_CONFIG_lyric_tuning_product := cheetah -SOONG_CONFIG_google3a_config_target_device := cheetah +$(call soong_config_set,lyric,tuning_product,cheetah) +$(call soong_config_set,google3a_config,target_device,cheetah) # Init files PRODUCT_COPY_FILES += \ diff --git a/device-cloudripper.mk b/device-cloudripper.mk index 4ac2ed0..437a18b 100644 --- a/device-cloudripper.mk +++ b/device-cloudripper.mk @@ -27,8 +27,8 @@ include device/google/pantah/audio/cloudripper/audio-tables.mk include hardware/google/pixel/vibrator/cs40l26/device.mk include device/google/gs101/bluetooth/bluetooth.mk -SOONG_CONFIG_lyric_tuning_product := cloudripper -SOONG_CONFIG_google3a_config_target_device := cloudripper +$(call soong_config_set,lyric,tuning_product,cloudripper) +$(call soong_config_set,google3a_config,target_device,cloudripper) # Init files PRODUCT_COPY_FILES += \ diff --git a/device-panther.mk b/device-panther.mk index bd0da11..36c1c09 100644 --- a/device-panther.mk +++ b/device-panther.mk @@ -29,8 +29,8 @@ include device/google/pantah/audio/panther/audio-tables.mk include hardware/google/pixel/vibrator/cs40l26/device.mk include device/google/gs101/bluetooth/bluetooth.mk -SOONG_CONFIG_lyric_tuning_product := panther -SOONG_CONFIG_google3a_config_target_device := panther +$(call soong_config_set,lyric,tuning_product,panther) +$(call soong_config_set,google3a_config,target_device,panther) # Init files PRODUCT_COPY_FILES += \ diff --git a/device-ravenclaw.mk b/device-ravenclaw.mk index 9db0f3c..c02136a 100644 --- a/device-ravenclaw.mk +++ b/device-ravenclaw.mk @@ -28,8 +28,8 @@ include hardware/google/pixel/vibrator/cs40l26/device.mk include device/google/gs101/bluetooth/bluetooth.mk include device/google/gs201/uwb/uwb.mk -SOONG_CONFIG_lyric_tuning_product := cloudripper -SOONG_CONFIG_google3a_config_target_device := cloudripper +$(call soong_config_set,lyric,tuning_product,cloudripper) +$(call soong_config_set,google3a_config,target_device,cloudripper) # Init files PRODUCT_COPY_FILES += \ From 8e0dcbf340872cc328a73c78df83eeba35073f8b Mon Sep 17 00:00:00 2001 From: Jasmine Cha Date: Thu, 16 Dec 2021 09:22:57 +0800 Subject: [PATCH 03/70] audio: update waves tuning - sync tuning from final R4. Sha1sum: e0f4816e759af04f41b6ea4716781b831e4dd0bb Bug: 203817007 Test: manual audio test (203817007#comment5) Signed-off-by: Jasmine Cha Change-Id: Id867442555bda91b440192b7a8898c0b6457037f --- audio/cheetah/tuning/waves/waves_preset.mps | Bin 192460 -> 186955 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/audio/cheetah/tuning/waves/waves_preset.mps b/audio/cheetah/tuning/waves/waves_preset.mps index 9e463931068b7701a28ab2c212252f1e54d8aadd..bd08ee30a1ee969ddde614206486e06935e0a2d3 100644 GIT binary patch literal 186955 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 U8d?@0+c_E?Kw9FLKuz%f0jHY*L;wH) literal 192460 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 AzyJUM From a68394d3564cae4d8dee1eeefbf1e928cb417c9e Mon Sep 17 00:00:00 2001 From: Robert Lee Date: Mon, 20 Dec 2021 06:22:46 +0000 Subject: [PATCH 04/70] Correct speaker.cal permission for C10/P10 Bug: 211360517 Test: builds Change-Id: I751ac47a52a5b34afa1c64a758fcf6d900947f19 Signed-off-by: Robert Lee --- conf/init.cheetah.rc | 3 +++ conf/init.panther.rc | 3 +++ 2 files changed, 6 insertions(+) diff --git a/conf/init.cheetah.rc b/conf/init.cheetah.rc index 309bb0e..5f011c3 100644 --- a/conf/init.cheetah.rc +++ b/conf/init.cheetah.rc @@ -56,6 +56,9 @@ on post-fs-data setprop wifi.direct.interface p2p-dev-wlan0 setprop wifi.aware.interface aware_nmi0 + # Speaker amp permission + chmod 644 /mnt/vendor/persist/audio/speaker.cal + service wpa_supplicant /vendor/bin/hw/wpa_supplicant \ -O/data/vendor/wifi/wpa/sockets -puse_p2p_group_interface=1p2p_device=1 \ -m/vendor/etc/wifi/p2p_supplicant.conf \ diff --git a/conf/init.panther.rc b/conf/init.panther.rc index 414aa2e..51632dc 100644 --- a/conf/init.panther.rc +++ b/conf/init.panther.rc @@ -56,6 +56,9 @@ on post-fs-data setprop wifi.direct.interface p2p-dev-wlan0 setprop wifi.aware.interface aware_nmi0 + # Speaker amp permission + chmod 644 /mnt/vendor/persist/audio/speaker.cal + service wpa_supplicant /vendor/bin/hw/wpa_supplicant \ -O/data/vendor/wifi/wpa/sockets -puse_p2p_group_interface=1p2p_device=1 \ -m/vendor/etc/wifi/p2p_supplicant.conf \ From cfd752f77860a2bf747d4b7d55161d88f4e16af1 Mon Sep 17 00:00:00 2001 From: George Chang Date: Tue, 21 Dec 2021 10:39:31 +0800 Subject: [PATCH 05/70] Update C10 EVT NFC CFG base on CDT Loads old cfg for proto and some of the evt. The others loads default cfg. Bug: 210755812 Test: manual Change-Id: Ie892fed0d3e50ed2e1efb7f8ebc9d65bc5c5a63d --- conf/init.cheetah.rc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/conf/init.cheetah.rc b/conf/init.cheetah.rc index 5f011c3..289122f 100644 --- a/conf/init.cheetah.rc +++ b/conf/init.cheetah.rc @@ -80,6 +80,18 @@ on property:ro.boot.hardware.revision=PROTO1.0 on property:ro.boot.hardware.revision=PROTO1.1 setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf +on property:ro.boot.cdt_hwid=0x00030303000100010001000000000000 + setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf + +on property:ro.boot.cdt_hwid=0x00030303000100000000000000000000 + setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf + +on property:ro.boot.cdt_hwid=0x00030303000100000100000000000000 + setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf + +on property:ro.boot.cdt_hwid=0x00030303000100000200000000000000 + setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf + # SecureElement eSE2 cts mode on property:persist.vendor.se.ese2.mode=ctsmode write /sys/class/st33spi/st33spi/st33spi_state 33 From 45d3b655500ce8f8a00030d187513d14f449f964 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Thu, 9 Dec 2021 17:22:58 +0800 Subject: [PATCH 06/70] Create initial config.xml Create config.xml to support device suspend when screen off due to p-sensor and enable adaptive brightness. A follow up patch may be needed after tuning the auto brightness table. Bug: 208528546 Test: brightness and adaptive brightness manual test Change-Id: Ie559cbb2d656d4c5d46d28e200f44d27d2e037a6 --- .../base/core/res/res/values/config.xml | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 cheetah/overlay/frameworks/base/core/res/res/values/config.xml diff --git a/cheetah/overlay/frameworks/base/core/res/res/values/config.xml b/cheetah/overlay/frameworks/base/core/res/res/values/config.xml new file mode 100644 index 0000000..62fe42a --- /dev/null +++ b/cheetah/overlay/frameworks/base/core/res/res/values/config.xml @@ -0,0 +1,114 @@ + + + + + + true + + + true + + + 6 + + + 0.0 + + + 1.0 + + + 0.17429718 + + + + 1 + 2 + 3 + 4 + 8 + 12 + 20 + 33 + 55 + 90 + 148 + 245 + 403 + 665 + 1097 + 1808 + 2981 + 5000 + 10000 + 20000 + + + + + 5.139055 + 9.962018965 + 18.34822964 + 21.55068128 + 24.0167788 + 30.62162162 + 35.09486396 + 41.2249643 + 47.6760716 + 55.73002427 + 66.24126116 + 79.67614115 + 98.04727274 + 125.1221991 + 161.6875093 + 208.4885553 + 264.8221315 + 327.8974352 + 401.1676739 + 750.0 + 1100.0 + + From 0c6b3052132c18a13eefc216169da84f9f9c3ac7 Mon Sep 17 00:00:00 2001 From: Long Ling Date: Tue, 14 Dec 2021 12:05:56 -0800 Subject: [PATCH 07/70] display : update color data files Use per display type color data. Bug: 207034763 Change-Id: I087dde0a0253db90ea0736ad100c3273a1a24ee7 --- ...0.pb => display_colordata_boe-nt37290_cal0.pb} | Bin cheetah/display_colordata_sdc-s6e3hc3-c10_cal0.pb | Bin 0 -> 947 bytes device-cheetah.mk | 3 ++- 3 files changed, 2 insertions(+), 1 deletion(-) rename cheetah/{display_colordata_dev_cal0.pb => display_colordata_boe-nt37290_cal0.pb} (100%) create mode 100644 cheetah/display_colordata_sdc-s6e3hc3-c10_cal0.pb diff --git a/cheetah/display_colordata_dev_cal0.pb b/cheetah/display_colordata_boe-nt37290_cal0.pb similarity index 100% rename from cheetah/display_colordata_dev_cal0.pb rename to cheetah/display_colordata_boe-nt37290_cal0.pb diff --git a/cheetah/display_colordata_sdc-s6e3hc3-c10_cal0.pb b/cheetah/display_colordata_sdc-s6e3hc3-c10_cal0.pb new file mode 100644 index 0000000000000000000000000000000000000000..082bf72f68403a51fe437adcc1bdae732a65f48c GIT binary patch literal 947 zcmd7POHRT-7yw|W)AA^fmh$Qg(se^(O97)Rb>q%ER4r(NkN_^+&Dzy}gznsq@d7=< ze}p;09KeOfC2mdN24C{&Hx*)%fP}_2ecryT7NhMfOCIl&aWjqMG@2z*JdLCC$%V7X zR@o-qWe>sKYp|ZrmrtuK*sa&gYkGTn6@F5^98Z(c>}+DaQ~izTirENQ5HfOd$%!Pn zf(oOYN}8)e%{8IrB~gMhmZ5?bsA3g#)S-qosAC-(*kH|~$qa5tgPYRiEz!y?VL=<) z&?!2sTXbcY_hgUvML)NN4GucsqRYI(V?OtV4+9*04Xk6rxW|MEKd7!nqj)<0dnO52 ugaWkq8RIIdOe-|`k7u&aZE15yIJqla@X!Mvf5%{m!@aY^V)o7si}?l`OHp$G literal 0 HcmV?d00001 diff --git a/device-cheetah.mk b/device-cheetah.mk index 40d30bd..bfda766 100644 --- a/device-cheetah.mk +++ b/device-cheetah.mk @@ -51,7 +51,8 @@ PRODUCT_COPY_FILES += \ # Display Config PRODUCT_COPY_FILES += \ - device/google/pantah/cheetah/display_colordata_dev_cal0.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_colordata_dev_cal0.pb + device/google/pantah/cheetah/display_colordata_boe-nt37290_cal0.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_colordata_boe-nt37290_cal0.pb \ + device/google/pantah/cheetah/display_colordata_sdc-s6e3hc3-c10_cal0.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_colordata_sdc-s6e3hc3-c10_cal0.pb # NFC PRODUCT_COPY_FILES += \ From d5d0e9f343b0be4e7ff23e0804e2a31b0e5710a0 Mon Sep 17 00:00:00 2001 From: Carter Hsu Date: Wed, 8 Dec 2021 14:26:08 +0800 Subject: [PATCH 08/70] audio: enable SA lite/full module Bug: 209687337 Test: build pass Signed-off-by: Carter Hsu Change-Id: I6e40321524af98441c8405a640c61ff3bc0a48cd --- .../config/audio_platform_configuration.xml | 5 ++++- audio/cheetah/config/mixer_paths.xml | 6 ++++-- .../config/audio_platform_configuration.xml | 18 +++++++++--------- audio/cloudripper/config/mixer_paths.xml | 6 ++++-- .../config/audio_platform_configuration.xml | 5 ++++- audio/panther/config/mixer_paths.xml | 6 ++++-- .../config/audio_platform_configuration.xml | 2 +- audio/ravenclaw/config/mixer_paths.xml | 6 ++++-- 8 files changed, 34 insertions(+), 20 deletions(-) diff --git a/audio/cheetah/config/audio_platform_configuration.xml b/audio/cheetah/config/audio_platform_configuration.xml index e541d18..c3ebb6f 100644 --- a/audio/cheetah/config/audio_platform_configuration.xml +++ b/audio/cheetah/config/audio_platform_configuration.xml @@ -34,7 +34,7 @@ - + @@ -247,6 +247,9 @@ + + + diff --git a/audio/cheetah/config/mixer_paths.xml b/audio/cheetah/config/mixer_paths.xml index 8bbb86e..9039ed2 100644 --- a/audio/cheetah/config/mixer_paths.xml +++ b/audio/cheetah/config/mixer_paths.xml @@ -641,6 +641,7 @@ + @@ -666,6 +667,7 @@ + @@ -691,7 +693,7 @@ - + @@ -700,7 +702,7 @@ - + diff --git a/audio/cloudripper/config/audio_platform_configuration.xml b/audio/cloudripper/config/audio_platform_configuration.xml index 5d24246..0356bb9 100644 --- a/audio/cloudripper/config/audio_platform_configuration.xml +++ b/audio/cloudripper/config/audio_platform_configuration.xml @@ -34,7 +34,7 @@ - + @@ -247,14 +247,14 @@ - - - - - - - - + + + + + + + + diff --git a/audio/cloudripper/config/mixer_paths.xml b/audio/cloudripper/config/mixer_paths.xml index 22c371b..9fef955 100644 --- a/audio/cloudripper/config/mixer_paths.xml +++ b/audio/cloudripper/config/mixer_paths.xml @@ -655,6 +655,7 @@ + @@ -680,6 +681,7 @@ + @@ -705,7 +707,7 @@ - + @@ -714,7 +716,7 @@ - + diff --git a/audio/panther/config/audio_platform_configuration.xml b/audio/panther/config/audio_platform_configuration.xml index e541d18..c3ebb6f 100644 --- a/audio/panther/config/audio_platform_configuration.xml +++ b/audio/panther/config/audio_platform_configuration.xml @@ -34,7 +34,7 @@ - + @@ -247,6 +247,9 @@ + + + diff --git a/audio/panther/config/mixer_paths.xml b/audio/panther/config/mixer_paths.xml index 8bbb86e..9039ed2 100644 --- a/audio/panther/config/mixer_paths.xml +++ b/audio/panther/config/mixer_paths.xml @@ -641,6 +641,7 @@ + @@ -666,6 +667,7 @@ + @@ -691,7 +693,7 @@ - + @@ -700,7 +702,7 @@ - + diff --git a/audio/ravenclaw/config/audio_platform_configuration.xml b/audio/ravenclaw/config/audio_platform_configuration.xml index e541d18..5d2fbc8 100644 --- a/audio/ravenclaw/config/audio_platform_configuration.xml +++ b/audio/ravenclaw/config/audio_platform_configuration.xml @@ -34,7 +34,7 @@ - + diff --git a/audio/ravenclaw/config/mixer_paths.xml b/audio/ravenclaw/config/mixer_paths.xml index a61996e..2d3db43 100644 --- a/audio/ravenclaw/config/mixer_paths.xml +++ b/audio/ravenclaw/config/mixer_paths.xml @@ -639,6 +639,7 @@ + @@ -664,6 +665,7 @@ + @@ -689,7 +691,7 @@ - + @@ -698,7 +700,7 @@ - + From a1c42e96fdba7e3151f43f67f0b18e6f767207d6 Mon Sep 17 00:00:00 2001 From: Midas Chien Date: Thu, 23 Dec 2021 17:53:57 +0800 Subject: [PATCH 09/70] C10: enable idle timer with kernel support Bug: 208375625 Test: perfetto, check pane_idle Change-Id: I3b23d831fd071cb52f80775fd6468e3006ca166d --- conf/init.cheetah.rc | 8 ++++++++ device-cheetah.mk | 2 ++ 2 files changed, 10 insertions(+) diff --git a/conf/init.cheetah.rc b/conf/init.cheetah.rc index 289122f..8f47325 100644 --- a/conf/init.cheetah.rc +++ b/conf/init.cheetah.rc @@ -95,3 +95,11 @@ on property:ro.boot.cdt_hwid=0x00030303000100000200000000000000 # SecureElement eSE2 cts mode on property:persist.vendor.se.ese2.mode=ctsmode write /sys/class/st33spi/st33spi/st33spi_state 33 + +# Display +on property:graphics.display.kernel_idle_timer.enabled=true + # Enable aggressive idle mode switching + write /sys/devices/platform/exynos-drm/primary-panel/panel_idle "1" + +on property:graphics.display.kernel_idle_timer.enabled=false + write /sys/devices/platform/exynos-drm/primary-panel/panel_idle "0" diff --git a/device-cheetah.mk b/device-cheetah.mk index bfda766..ea08031 100644 --- a/device-cheetah.mk +++ b/device-cheetah.mk @@ -33,6 +33,8 @@ include device/google/gs201/uwb/uwb.mk $(call soong_config_set,lyric,tuning_product,cheetah) $(call soong_config_set,google3a_config,target_device,cheetah) +PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.support_kernel_idle_timer=true + # Init files PRODUCT_COPY_FILES += \ device/google/pantah/conf/init.cheetah.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.cheetah.rc From 225d7e4aa730a214446df0533e1b712465d9edc6 Mon Sep 17 00:00:00 2001 From: Darren Hsu Date: Fri, 24 Dec 2021 17:07:17 +0800 Subject: [PATCH 10/70] powerstats: Correct the layout of display state residency Bug: 211949266 Test: dumpsys android.hardware.power.stats.IPowerStats/default Change-Id: I5ec7d3039fa222e7d137707bc0ff3cb38c19eb11 Signed-off-by: Darren Hsu --- powerstats/cheetah/service.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/powerstats/cheetah/service.cpp b/powerstats/cheetah/service.cpp index 88afbec..a7b0824 100644 --- a/powerstats/cheetah/service.cpp +++ b/powerstats/cheetah/service.cpp @@ -37,9 +37,9 @@ void addDisplay(std::shared_ptr p) { // Add display residency stats std::vector states = { "Off", - "LP: 1440x3120@1" + "LP: 1440x3120@1", "LP: 1440x3120@10", - "LP: 1440x3120@30" + "LP: 1440x3120@30", "On: 1440x3120@60", "On: 1440x3120@90", "On: 1440x3120@120", From 186d6a9157238428f21111a4fd59d586de57e6ef Mon Sep 17 00:00:00 2001 From: Cyan_Hsieh Date: Wed, 22 Dec 2021 15:16:03 +0800 Subject: [PATCH 11/70] Add init.pantah.rc for Cheetah/Panther Bug: 211568122 Change-Id: I0819b3a7fdda22acfbd2df3cbf752713a8b6fd23 --- conf/init.cheetah.rc | 86 +------------------------------------------ conf/init.pantah.rc | 76 ++++++++++++++++++++++++++++++++++++++ conf/init.panther.rc | 87 +------------------------------------------- device-cheetah.mk | 1 + device-panther.mk | 1 + 5 files changed, 82 insertions(+), 169 deletions(-) create mode 100644 conf/init.pantah.rc diff --git a/conf/init.cheetah.rc b/conf/init.cheetah.rc index 8f47325..cac3384 100644 --- a/conf/init.cheetah.rc +++ b/conf/init.cheetah.rc @@ -1,84 +1,6 @@ -# Cloudripper specific init.rc +# Cheetah specific init.rc import /vendor/etc/init/hw/init.gs201.rc - -on init - # NFC streset tool name - setprop persist.vendor.nfc.streset libstreset21 - setprop persist.vendor.se.streset libstreset21 - -# When ro.build.flavor=factory_cheetah-userdebug, add vendor/bin/factory to default path -on init && property:ro.build.flavor=factory_cheetah-userdebug - export PATH /product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system_ext/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin:/vendor/bin/factory - -on early-boot - # Wait for insmod_sh to finish all common modules - wait_for_prop vendor.common.modules.ready 1 - start insmod_sh_cheetah - -service insmod_sh_cheetah /vendor/bin/init.insmod.sh /vendor/etc/init.insmod.cheetah.cfg - class main - user root - group root system - disabled - oneshot - -on boot && property:ro.build.flavor=factory_cheetah-userdebug - # FTM log folder - mkdir /data/ftmlog 0775 system system - - # Audio test folder - mkdir /data/AudioTest 0775 system system - -on property:vendor.mfgapi.touchpanel.permission=1 - chmod 0600 /sys/devices/virtual/sec/tsp/cmd - chown system system /sys/devices/virtual/sec/tsp/cmd - -# Fingerprint -on post-fs-data - chown system system /dev/goodix_fp - exec_background - system shell -- /vendor/bin/trusty_apploader /vendor/firmware/g7.app - -# Overrides fingerprint antispoof if following persist sysprops are set -on boot && property:ro.build.type=userdebug && \ - property:persist.vendor.fingerprint.disable.fake.override=0 - setprop vendor.fingerprint.disable.fake ${persist.vendor.fingerprint.disable.fake.override} - -on boot && property:ro.build.type=userdebug && \ - property:persist.vendor.fingerprint.disable.fake.override=1 - setprop vendor.fingerprint.disable.fake ${persist.vendor.fingerprint.disable.fake.override} - -on boot && property:ro.build.type=userdebug && \ - property:persist.vendor.fingerprint.disable.fake.override=100 - setprop vendor.fingerprint.disable.fake ${persist.vendor.fingerprint.disable.fake.override} - -# WiFi -on post-fs-data - setprop wifi.direct.interface p2p-dev-wlan0 - setprop wifi.aware.interface aware_nmi0 - - # Speaker amp permission - chmod 644 /mnt/vendor/persist/audio/speaker.cal - -service wpa_supplicant /vendor/bin/hw/wpa_supplicant \ - -O/data/vendor/wifi/wpa/sockets -puse_p2p_group_interface=1p2p_device=1 \ - -m/vendor/etc/wifi/p2p_supplicant.conf \ - -g@android:wpa_wlan0 -dd - interface android.hardware.wifi.supplicant@1.0::ISupplicant default - interface android.hardware.wifi.supplicant@1.1::ISupplicant default - interface android.hardware.wifi.supplicant@1.2::ISupplicant default - interface android.hardware.wifi.supplicant@1.3::ISupplicant default - interface android.hardware.wifi.supplicant@1.4::ISupplicant default - socket wpa_wlan0 dgram 660 wifi wifi - class main - disabled - oneshot - -# NFC -on property:ro.boot.hardware.revision=PROTO1.0 - setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf - -on property:ro.boot.hardware.revision=PROTO1.1 - setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf +import /vendor/etc/init/hw/init.pantah.rc on property:ro.boot.cdt_hwid=0x00030303000100010001000000000000 setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf @@ -92,10 +14,6 @@ on property:ro.boot.cdt_hwid=0x00030303000100000100000000000000 on property:ro.boot.cdt_hwid=0x00030303000100000200000000000000 setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf -# SecureElement eSE2 cts mode -on property:persist.vendor.se.ese2.mode=ctsmode - write /sys/class/st33spi/st33spi/st33spi_state 33 - # Display on property:graphics.display.kernel_idle_timer.enabled=true # Enable aggressive idle mode switching diff --git a/conf/init.pantah.rc b/conf/init.pantah.rc new file mode 100644 index 0000000..0977f65 --- /dev/null +++ b/conf/init.pantah.rc @@ -0,0 +1,76 @@ +# Cheetah/Panther specific init.rc + +on init + # NFC streset tool name + setprop persist.vendor.nfc.streset libstreset21 + setprop persist.vendor.se.streset libstreset21 + +on init && property:ro.vendor.factory=1 + import /vendor/etc/init/hw/init.factory.rc + +on early-boot + # Wait for insmod_sh to finish all common modules + wait_for_prop vendor.common.modules.ready 1 + start insmod_sh_pantah + +service insmod_sh_pantah /vendor/bin/init.insmod.sh /vendor/etc/init.insmod.${ro.hardware}.cfg + class main + user root + group root system + disabled + oneshot + +on property:vendor.mfgapi.touchpanel.permission=1 + chmod 0600 /sys/devices/virtual/sec/tsp/cmd + chown system system /sys/devices/virtual/sec/tsp/cmd + +# Fingerprint +on post-fs-data + chown system system /dev/goodix_fp + exec_background - system shell -- /vendor/bin/trusty_apploader /vendor/firmware/g7.app + +# Overrides fingerprint antispoof if following persist sysprops are set +on boot && property:ro.build.type=userdebug && \ + property:persist.vendor.fingerprint.disable.fake.override=0 + setprop vendor.fingerprint.disable.fake ${persist.vendor.fingerprint.disable.fake.override} + +on boot && property:ro.build.type=userdebug && \ + property:persist.vendor.fingerprint.disable.fake.override=1 + setprop vendor.fingerprint.disable.fake ${persist.vendor.fingerprint.disable.fake.override} + +on boot && property:ro.build.type=userdebug && \ + property:persist.vendor.fingerprint.disable.fake.override=100 + setprop vendor.fingerprint.disable.fake ${persist.vendor.fingerprint.disable.fake.override} + +# WiFi +on post-fs-data + setprop wifi.direct.interface p2p-dev-wlan0 + setprop wifi.aware.interface aware_nmi0 + + # Speaker amp permission + chmod 644 /mnt/vendor/persist/audio/speaker.cal + +service wpa_supplicant /vendor/bin/hw/wpa_supplicant \ + -O/data/vendor/wifi/wpa/sockets -puse_p2p_group_interface=1p2p_device=1 \ + -m/vendor/etc/wifi/p2p_supplicant.conf \ + -g@android:wpa_wlan0 -dd + interface android.hardware.wifi.supplicant@1.0::ISupplicant default + interface android.hardware.wifi.supplicant@1.1::ISupplicant default + interface android.hardware.wifi.supplicant@1.2::ISupplicant default + interface android.hardware.wifi.supplicant@1.3::ISupplicant default + interface android.hardware.wifi.supplicant@1.4::ISupplicant default + socket wpa_wlan0 dgram 660 wifi wifi + class main + disabled + oneshot + +# NFC +on property:ro.boot.hardware.revision=PROTO1.0 + setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf + +on property:ro.boot.hardware.revision=PROTO1.1 + setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf + +# SecureElement eSE2 cts mode +on property:persist.vendor.se.ese2.mode=ctsmode + write /sys/class/st33spi/st33spi/st33spi_state 33 diff --git a/conf/init.panther.rc b/conf/init.panther.rc index 51632dc..1a387b6 100644 --- a/conf/init.panther.rc +++ b/conf/init.panther.rc @@ -1,86 +1,3 @@ -# Cloudripper specific init.rc +# Panther specific init.rc import /vendor/etc/init/hw/init.gs201.rc - -on init - # NFC streset tool name - setprop persist.vendor.nfc.streset libstreset21 - setprop persist.vendor.se.streset libstreset21 - -# When ro.build.flavor=factory_panther-userdebug, add vendor/bin/factory to default path -on init && property:ro.build.flavor=factory_panther-userdebug - export PATH /product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system_ext/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin:/vendor/bin/factory - -on early-boot - # Wait for insmod_sh to finish all common modules - wait_for_prop vendor.common.modules.ready 1 - start insmod_sh_panther - -service insmod_sh_panther /vendor/bin/init.insmod.sh /vendor/etc/init.insmod.panther.cfg - class main - user root - group root system - disabled - oneshot - -on boot && property:ro.build.flavor=factory_panther-userdebug - # FTM log folder - mkdir /data/ftmlog 0775 system system - - # Audio test folder - mkdir /data/AudioTest 0775 system system - -on property:vendor.mfgapi.touchpanel.permission=1 - chmod 0600 /sys/devices/virtual/sec/tsp/cmd - chown system system /sys/devices/virtual/sec/tsp/cmd - -# Fingerprint -on post-fs-data - chown system system /dev/goodix_fp - exec_background - system shell -- /vendor/bin/trusty_apploader /vendor/firmware/g7.app - -# Overrides fingerprint antispoof if following persist sysprops are set -on boot && property:ro.build.type=userdebug && \ - property:persist.vendor.fingerprint.disable.fake.override=0 - setprop vendor.fingerprint.disable.fake ${persist.vendor.fingerprint.disable.fake.override} - -on boot && property:ro.build.type=userdebug && \ - property:persist.vendor.fingerprint.disable.fake.override=1 - setprop vendor.fingerprint.disable.fake ${persist.vendor.fingerprint.disable.fake.override} - -on boot && property:ro.build.type=userdebug && \ - property:persist.vendor.fingerprint.disable.fake.override=100 - setprop vendor.fingerprint.disable.fake ${persist.vendor.fingerprint.disable.fake.override} - -# WiFi -on post-fs-data - setprop wifi.direct.interface p2p-dev-wlan0 - setprop wifi.aware.interface aware_nmi0 - - # Speaker amp permission - chmod 644 /mnt/vendor/persist/audio/speaker.cal - -service wpa_supplicant /vendor/bin/hw/wpa_supplicant \ - -O/data/vendor/wifi/wpa/sockets -puse_p2p_group_interface=1p2p_device=1 \ - -m/vendor/etc/wifi/p2p_supplicant.conf \ - -g@android:wpa_wlan0 -dd - interface android.hardware.wifi.supplicant@1.0::ISupplicant default - interface android.hardware.wifi.supplicant@1.1::ISupplicant default - interface android.hardware.wifi.supplicant@1.2::ISupplicant default - interface android.hardware.wifi.supplicant@1.3::ISupplicant default - interface android.hardware.wifi.supplicant@1.4::ISupplicant default - socket wpa_wlan0 dgram 660 wifi wifi - class main - disabled - oneshot - -# NFC -on property:ro.boot.hardware.revision=PROTO1.0 - setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf - -on property:ro.boot.hardware.revision=PROTO1.1 - setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf - -# SecureElement eSE2 cts mode -on property:persist.vendor.se.ese2.mode=ctsmode - write /sys/class/st33spi/st33spi/st33spi_state 33 - +import /vendor/etc/init/hw/init.pantah.rc diff --git a/device-cheetah.mk b/device-cheetah.mk index ea08031..9c19cc0 100644 --- a/device-cheetah.mk +++ b/device-cheetah.mk @@ -37,6 +37,7 @@ PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.support_kernel_idle_tim # Init files PRODUCT_COPY_FILES += \ + device/google/pantah/conf/init.pantah.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.pantah.rc \ device/google/pantah/conf/init.cheetah.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.cheetah.rc # Recovery files diff --git a/device-panther.mk b/device-panther.mk index 36c1c09..329f613 100644 --- a/device-panther.mk +++ b/device-panther.mk @@ -34,6 +34,7 @@ $(call soong_config_set,google3a_config,target_device,panther) # Init files PRODUCT_COPY_FILES += \ + device/google/pantah/conf/init.pantah.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.pantah.rc \ device/google/pantah/conf/init.panther.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.panther.rc # Recovery files From 4de8ea740880632cc894e1fbac415122c82f551c Mon Sep 17 00:00:00 2001 From: Mason Wang Date: Tue, 28 Dec 2021 10:27:12 +0800 Subject: [PATCH 12/70] P10: support touch sensitivity mode switching Route a debug system property to a persist system property to control the touch driver attribute file glove_mode. 0: default sensitivity mode (default) 1: high sensitivity mode Bug: 199105017 Test: manual test Signed-off-by: Mason Wang Change-Id: I30f91ebaf4ea2bb2d2db6090f035e0ba7ea37056 --- conf/init.panther.rc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/conf/init.panther.rc b/conf/init.panther.rc index 1a387b6..7aaa2b5 100644 --- a/conf/init.panther.rc +++ b/conf/init.panther.rc @@ -1,3 +1,10 @@ # Panther specific init.rc import /vendor/etc/init/hw/init.gs201.rc import /vendor/etc/init/hw/init.pantah.rc + +# Toggle glove_mode according to touch_sensitivity_mode +on property:persist.vendor.touch_sensitivity_mode=0 && property:sys.boot_completed=1 + write /proc/focaltech_touch/high_sensitivity 0 + +on property:persist.vendor.touch_sensitivity_mode=1 && property:sys.boot_completed=1 + write /proc/focaltech_touch/high_sensitivity 1 From d60f0addce4d2410f07135fc2d41ef50c7805b48 Mon Sep 17 00:00:00 2001 From: davidycchen Date: Mon, 3 Jan 2022 14:24:20 +0800 Subject: [PATCH 13/70] C10: support touch sensitivity mode switching Write the sysfs node to set touch sensitivity mode when the property changes. Bug: 199104397 Test: toggle the touch sensitivity button in Settings and check log. Signed-off-by: davidycchen Change-Id: I1bd9258dcfa6897ee6febc5387c9504bcca1bb24 --- conf/init.cheetah.rc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/conf/init.cheetah.rc b/conf/init.cheetah.rc index cac3384..9ee3b38 100644 --- a/conf/init.cheetah.rc +++ b/conf/init.cheetah.rc @@ -21,3 +21,10 @@ on property:graphics.display.kernel_idle_timer.enabled=true on property:graphics.display.kernel_idle_timer.enabled=false write /sys/devices/platform/exynos-drm/primary-panel/panel_idle "0" + +# Toggle high_sensitivity according to touch_sensitivity_mode +on property:persist.vendor.touch_sensitivity_mode=0 && property:sys.boot_completed=1 + write /sys/class/spi_master/spi0/spi0.0/synaptics_tcm.0/sysfs/high_sensitivity 0 + +on property:persist.vendor.touch_sensitivity_mode=1 && property:sys.boot_completed=1 + write /sys/class/spi_master/spi0/spi0.0/synaptics_tcm.0/sysfs/high_sensitivity 1 From 8f600ff430eb69f1bdc7ff5d1d51e0cafd4fbbcf Mon Sep 17 00:00:00 2001 From: Darren Hsu Date: Wed, 29 Dec 2021 09:38:37 +0800 Subject: [PATCH 14/70] powerstats: use gs common library to get common data providers Bug: 206576142 Test: dumpsys android.hardware.power.stats.IPowerStats/default Change-Id: Ic2bc65ca8563ba48ec2ca3f3ac7777977103dfb5 Signed-off-by: Darren Hsu --- powerstats/cheetah/Android.bp | 2 +- powerstats/cloudripper/Android.bp | 2 +- powerstats/panther/Android.bp | 2 +- powerstats/ravenclaw/Android.bp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/powerstats/cheetah/Android.bp b/powerstats/cheetah/Android.bp index 9adc50d..8fbce2b 100644 --- a/powerstats/cheetah/Android.bp +++ b/powerstats/cheetah/Android.bp @@ -15,7 +15,7 @@ soong_namespace { imports: [ "hardware/google/pixel", - "device/google/gs201", + "device/google/gs201/powerstats", ] } diff --git a/powerstats/cloudripper/Android.bp b/powerstats/cloudripper/Android.bp index 9adc50d..8fbce2b 100644 --- a/powerstats/cloudripper/Android.bp +++ b/powerstats/cloudripper/Android.bp @@ -15,7 +15,7 @@ soong_namespace { imports: [ "hardware/google/pixel", - "device/google/gs201", + "device/google/gs201/powerstats", ] } diff --git a/powerstats/panther/Android.bp b/powerstats/panther/Android.bp index 9adc50d..8fbce2b 100644 --- a/powerstats/panther/Android.bp +++ b/powerstats/panther/Android.bp @@ -15,7 +15,7 @@ soong_namespace { imports: [ "hardware/google/pixel", - "device/google/gs201", + "device/google/gs201/powerstats", ] } diff --git a/powerstats/ravenclaw/Android.bp b/powerstats/ravenclaw/Android.bp index 9adc50d..8fbce2b 100644 --- a/powerstats/ravenclaw/Android.bp +++ b/powerstats/ravenclaw/Android.bp @@ -15,7 +15,7 @@ soong_namespace { imports: [ "hardware/google/pixel", - "device/google/gs201", + "device/google/gs201/powerstats", ] } From 95df6661908b12803c6ef4f71074947adfb01c1a Mon Sep 17 00:00:00 2001 From: Roger Wang Date: Fri, 3 Dec 2021 13:55:21 +0800 Subject: [PATCH 15/70] wifi: Update rc file to use Supplicant AIDL interface. Bug: 196235436 Test: wifi works fine on C10 device. Change-Id: I0f4376e1777fb19057d16690c12eb552f4f295ff --- conf/init.cloudripper.rc | 6 +----- conf/init.pantah.rc | 6 +----- conf/init.ravenclaw.rc | 6 +----- 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/conf/init.cloudripper.rc b/conf/init.cloudripper.rc index b443d63..76a8309 100644 --- a/conf/init.cloudripper.rc +++ b/conf/init.cloudripper.rc @@ -55,11 +55,7 @@ service wpa_supplicant /vendor/bin/hw/wpa_supplicant \ -O/data/vendor/wifi/wpa/sockets -puse_p2p_group_interface=1p2p_device=1 \ -m/vendor/etc/wifi/p2p_supplicant.conf \ -g@android:wpa_wlan0 -dd - interface android.hardware.wifi.supplicant@1.0::ISupplicant default - interface android.hardware.wifi.supplicant@1.1::ISupplicant default - interface android.hardware.wifi.supplicant@1.2::ISupplicant default - interface android.hardware.wifi.supplicant@1.3::ISupplicant default - interface android.hardware.wifi.supplicant@1.4::ISupplicant default + interface aidl android.hardware.wifi.supplicant.ISupplicant/default socket wpa_wlan0 dgram 660 wifi wifi class main disabled diff --git a/conf/init.pantah.rc b/conf/init.pantah.rc index 0977f65..f493832 100644 --- a/conf/init.pantah.rc +++ b/conf/init.pantah.rc @@ -54,11 +54,7 @@ service wpa_supplicant /vendor/bin/hw/wpa_supplicant \ -O/data/vendor/wifi/wpa/sockets -puse_p2p_group_interface=1p2p_device=1 \ -m/vendor/etc/wifi/p2p_supplicant.conf \ -g@android:wpa_wlan0 -dd - interface android.hardware.wifi.supplicant@1.0::ISupplicant default - interface android.hardware.wifi.supplicant@1.1::ISupplicant default - interface android.hardware.wifi.supplicant@1.2::ISupplicant default - interface android.hardware.wifi.supplicant@1.3::ISupplicant default - interface android.hardware.wifi.supplicant@1.4::ISupplicant default + interface aidl android.hardware.wifi.supplicant.ISupplicant/default socket wpa_wlan0 dgram 660 wifi wifi class main disabled diff --git a/conf/init.ravenclaw.rc b/conf/init.ravenclaw.rc index 27983cb..d2ce3d8 100644 --- a/conf/init.ravenclaw.rc +++ b/conf/init.ravenclaw.rc @@ -47,11 +47,7 @@ service wpa_supplicant /vendor/bin/hw/wpa_supplicant \ -O/data/vendor/wifi/wpa/sockets -puse_p2p_group_interface=1p2p_device=1 \ -m/vendor/etc/wifi/p2p_supplicant.conf \ -g@android:wpa_wlan0 -dd - interface android.hardware.wifi.supplicant@1.0::ISupplicant default - interface android.hardware.wifi.supplicant@1.1::ISupplicant default - interface android.hardware.wifi.supplicant@1.2::ISupplicant default - interface android.hardware.wifi.supplicant@1.3::ISupplicant default - interface android.hardware.wifi.supplicant@1.4::ISupplicant default + interface aidl android.hardware.wifi.supplicant.ISupplicant/default socket wpa_wlan0 dgram 660 wifi wifi class main disabled From 2e78d0e77289893054c8df199108309d0b4ad3eb Mon Sep 17 00:00:00 2001 From: Robert Lee Date: Wed, 29 Dec 2021 07:12:59 +0000 Subject: [PATCH 16/70] audio: enable default 96k Enable default 96k sample rate to fix the noise issue when enabling 96k speaker protection with 48k sample rate setting. Bug: 206060532 Test: audio normal after device boot with speaker protection enabled Change-Id: I28e58731b49b18ee14b9a1195c549e71a231d0ee Signed-off-by: Robert Lee --- audio/cheetah/config/mixer_paths.xml | 4 ++++ audio/panther/config/mixer_paths.xml | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/audio/cheetah/config/mixer_paths.xml b/audio/cheetah/config/mixer_paths.xml index 9039ed2..0e86c9c 100644 --- a/audio/cheetah/config/mixer_paths.xml +++ b/audio/cheetah/config/mixer_paths.xml @@ -46,6 +46,10 @@ + + + + diff --git a/audio/panther/config/mixer_paths.xml b/audio/panther/config/mixer_paths.xml index 9039ed2..0e86c9c 100644 --- a/audio/panther/config/mixer_paths.xml +++ b/audio/panther/config/mixer_paths.xml @@ -46,6 +46,10 @@ + + + + From 5a4b4d3903f995286c7eeefe812ba10b3f02144b Mon Sep 17 00:00:00 2001 From: Jasmine Cha Date: Wed, 5 Jan 2022 10:09:40 +0800 Subject: [PATCH 17/70] audio: enable dual sepaker in voice/voip spekaer mode - specific top speaker control doesn't merge becuase of pop sound issue during turning on/off a speaker. Bug: 207431993 Test: manual test (b/207431993#comment16) Signed-off-by: Jasmine Cha Change-Id: Ieca51d1f0ca238ff0d9112e8ede9d2eaad28ce98 --- audio/cheetah/config/mixer_paths.xml | 6 +++++- audio/panther/config/mixer_paths.xml | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/audio/cheetah/config/mixer_paths.xml b/audio/cheetah/config/mixer_paths.xml index 0e86c9c..00e252f 100644 --- a/audio/cheetah/config/mixer_paths.xml +++ b/audio/cheetah/config/mixer_paths.xml @@ -623,10 +623,14 @@ + - + + + + diff --git a/audio/panther/config/mixer_paths.xml b/audio/panther/config/mixer_paths.xml index 0e86c9c..00e252f 100644 --- a/audio/panther/config/mixer_paths.xml +++ b/audio/panther/config/mixer_paths.xml @@ -623,10 +623,14 @@ + - + + + + From be8aaf02d42b74922113d770a05e581dc4ed69d1 Mon Sep 17 00:00:00 2001 From: Carter Hsu Date: Mon, 3 Jan 2022 12:15:15 +0800 Subject: [PATCH 18/70] audio: change primary output to float Bug: 200293124 Test: build pass Change-Id: I356376d8090da006b915e8cce9a71759ebb459e6 Signed-off-by: Carter Hsu --- audio/cheetah/config/audio_policy_configuration.xml | 2 +- .../config/audio_policy_configuration_a2dp_offload_disabled.xml | 2 +- .../config/audio_policy_configuration_bluetooth_legacy_hal.xml | 2 +- audio/cloudripper/config/audio_policy_configuration.xml | 2 +- .../config/audio_policy_configuration_a2dp_offload_disabled.xml | 2 +- .../config/audio_policy_configuration_bluetooth_legacy_hal.xml | 2 +- audio/panther/config/audio_policy_configuration.xml | 2 +- .../config/audio_policy_configuration_a2dp_offload_disabled.xml | 2 +- .../config/audio_policy_configuration_bluetooth_legacy_hal.xml | 2 +- audio/ravenclaw/config/audio_policy_configuration.xml | 2 +- .../config/audio_policy_configuration_a2dp_offload_disabled.xml | 2 +- .../config/audio_policy_configuration_bluetooth_legacy_hal.xml | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/audio/cheetah/config/audio_policy_configuration.xml b/audio/cheetah/config/audio_policy_configuration.xml index 4f1fb04..7f81ec3 100644 --- a/audio/cheetah/config/audio_policy_configuration.xml +++ b/audio/cheetah/config/audio_policy_configuration.xml @@ -28,7 +28,7 @@ Speaker - diff --git a/audio/cheetah/config/audio_policy_configuration_a2dp_offload_disabled.xml b/audio/cheetah/config/audio_policy_configuration_a2dp_offload_disabled.xml index 76e6f58..b6a432b 100644 --- a/audio/cheetah/config/audio_policy_configuration_a2dp_offload_disabled.xml +++ b/audio/cheetah/config/audio_policy_configuration_a2dp_offload_disabled.xml @@ -28,7 +28,7 @@ Speaker - diff --git a/audio/cheetah/config/audio_policy_configuration_bluetooth_legacy_hal.xml b/audio/cheetah/config/audio_policy_configuration_bluetooth_legacy_hal.xml index def216f..15a918b 100644 --- a/audio/cheetah/config/audio_policy_configuration_bluetooth_legacy_hal.xml +++ b/audio/cheetah/config/audio_policy_configuration_bluetooth_legacy_hal.xml @@ -28,7 +28,7 @@ Speaker - diff --git a/audio/cloudripper/config/audio_policy_configuration.xml b/audio/cloudripper/config/audio_policy_configuration.xml index 9587c2a..d716164 100644 --- a/audio/cloudripper/config/audio_policy_configuration.xml +++ b/audio/cloudripper/config/audio_policy_configuration.xml @@ -28,7 +28,7 @@ Speaker - diff --git a/audio/cloudripper/config/audio_policy_configuration_a2dp_offload_disabled.xml b/audio/cloudripper/config/audio_policy_configuration_a2dp_offload_disabled.xml index 64b6223..d871028 100644 --- a/audio/cloudripper/config/audio_policy_configuration_a2dp_offload_disabled.xml +++ b/audio/cloudripper/config/audio_policy_configuration_a2dp_offload_disabled.xml @@ -28,7 +28,7 @@ Speaker - diff --git a/audio/cloudripper/config/audio_policy_configuration_bluetooth_legacy_hal.xml b/audio/cloudripper/config/audio_policy_configuration_bluetooth_legacy_hal.xml index a6b5c67..5b65fdd 100644 --- a/audio/cloudripper/config/audio_policy_configuration_bluetooth_legacy_hal.xml +++ b/audio/cloudripper/config/audio_policy_configuration_bluetooth_legacy_hal.xml @@ -28,7 +28,7 @@ Speaker - diff --git a/audio/panther/config/audio_policy_configuration.xml b/audio/panther/config/audio_policy_configuration.xml index 4f1fb04..7f81ec3 100644 --- a/audio/panther/config/audio_policy_configuration.xml +++ b/audio/panther/config/audio_policy_configuration.xml @@ -28,7 +28,7 @@ Speaker - diff --git a/audio/panther/config/audio_policy_configuration_a2dp_offload_disabled.xml b/audio/panther/config/audio_policy_configuration_a2dp_offload_disabled.xml index 76e6f58..b6a432b 100644 --- a/audio/panther/config/audio_policy_configuration_a2dp_offload_disabled.xml +++ b/audio/panther/config/audio_policy_configuration_a2dp_offload_disabled.xml @@ -28,7 +28,7 @@ Speaker - diff --git a/audio/panther/config/audio_policy_configuration_bluetooth_legacy_hal.xml b/audio/panther/config/audio_policy_configuration_bluetooth_legacy_hal.xml index def216f..15a918b 100644 --- a/audio/panther/config/audio_policy_configuration_bluetooth_legacy_hal.xml +++ b/audio/panther/config/audio_policy_configuration_bluetooth_legacy_hal.xml @@ -28,7 +28,7 @@ Speaker - diff --git a/audio/ravenclaw/config/audio_policy_configuration.xml b/audio/ravenclaw/config/audio_policy_configuration.xml index 4f1fb04..7f81ec3 100644 --- a/audio/ravenclaw/config/audio_policy_configuration.xml +++ b/audio/ravenclaw/config/audio_policy_configuration.xml @@ -28,7 +28,7 @@ Speaker - diff --git a/audio/ravenclaw/config/audio_policy_configuration_a2dp_offload_disabled.xml b/audio/ravenclaw/config/audio_policy_configuration_a2dp_offload_disabled.xml index 76e6f58..b6a432b 100644 --- a/audio/ravenclaw/config/audio_policy_configuration_a2dp_offload_disabled.xml +++ b/audio/ravenclaw/config/audio_policy_configuration_a2dp_offload_disabled.xml @@ -28,7 +28,7 @@ Speaker - diff --git a/audio/ravenclaw/config/audio_policy_configuration_bluetooth_legacy_hal.xml b/audio/ravenclaw/config/audio_policy_configuration_bluetooth_legacy_hal.xml index def216f..15a918b 100644 --- a/audio/ravenclaw/config/audio_policy_configuration_bluetooth_legacy_hal.xml +++ b/audio/ravenclaw/config/audio_policy_configuration_bluetooth_legacy_hal.xml @@ -28,7 +28,7 @@ Speaker - From 1fa392b4b2a4ad8b11e93a68db09b87c8438fffe Mon Sep 17 00:00:00 2001 From: Carter Hsu Date: Wed, 5 Jan 2022 01:58:53 +0000 Subject: [PATCH 19/70] Revert "audio: enable SA lite/full module" This reverts commit d5d0e9f343b0be4e7ff23e0804e2a31b0e5710a0. Reason for revert: Change-Id: I18286694da289215193c3e39ad71ea4a50392a69 --- .../config/audio_platform_configuration.xml | 5 +---- audio/cheetah/config/mixer_paths.xml | 6 ++---- .../config/audio_platform_configuration.xml | 18 +++++++++--------- audio/cloudripper/config/mixer_paths.xml | 6 ++---- .../config/audio_platform_configuration.xml | 5 +---- audio/panther/config/mixer_paths.xml | 6 ++---- .../config/audio_platform_configuration.xml | 2 +- audio/ravenclaw/config/mixer_paths.xml | 6 ++---- 8 files changed, 20 insertions(+), 34 deletions(-) diff --git a/audio/cheetah/config/audio_platform_configuration.xml b/audio/cheetah/config/audio_platform_configuration.xml index c3ebb6f..e541d18 100644 --- a/audio/cheetah/config/audio_platform_configuration.xml +++ b/audio/cheetah/config/audio_platform_configuration.xml @@ -34,7 +34,7 @@ - + @@ -247,9 +247,6 @@ - - - diff --git a/audio/cheetah/config/mixer_paths.xml b/audio/cheetah/config/mixer_paths.xml index 00e252f..0235f46 100644 --- a/audio/cheetah/config/mixer_paths.xml +++ b/audio/cheetah/config/mixer_paths.xml @@ -649,7 +649,6 @@ - @@ -675,7 +674,6 @@ - @@ -701,7 +699,7 @@ - + @@ -710,7 +708,7 @@ - + diff --git a/audio/cloudripper/config/audio_platform_configuration.xml b/audio/cloudripper/config/audio_platform_configuration.xml index 0356bb9..5d24246 100644 --- a/audio/cloudripper/config/audio_platform_configuration.xml +++ b/audio/cloudripper/config/audio_platform_configuration.xml @@ -34,7 +34,7 @@ - + @@ -247,14 +247,14 @@ - - - - - - - - + + + + + + + + diff --git a/audio/cloudripper/config/mixer_paths.xml b/audio/cloudripper/config/mixer_paths.xml index 9fef955..22c371b 100644 --- a/audio/cloudripper/config/mixer_paths.xml +++ b/audio/cloudripper/config/mixer_paths.xml @@ -655,7 +655,6 @@ - @@ -681,7 +680,6 @@ - @@ -707,7 +705,7 @@ - + @@ -716,7 +714,7 @@ - + diff --git a/audio/panther/config/audio_platform_configuration.xml b/audio/panther/config/audio_platform_configuration.xml index c3ebb6f..e541d18 100644 --- a/audio/panther/config/audio_platform_configuration.xml +++ b/audio/panther/config/audio_platform_configuration.xml @@ -34,7 +34,7 @@ - + @@ -247,9 +247,6 @@ - - - diff --git a/audio/panther/config/mixer_paths.xml b/audio/panther/config/mixer_paths.xml index 00e252f..0235f46 100644 --- a/audio/panther/config/mixer_paths.xml +++ b/audio/panther/config/mixer_paths.xml @@ -649,7 +649,6 @@ - @@ -675,7 +674,6 @@ - @@ -701,7 +699,7 @@ - + @@ -710,7 +708,7 @@ - + diff --git a/audio/ravenclaw/config/audio_platform_configuration.xml b/audio/ravenclaw/config/audio_platform_configuration.xml index 5d2fbc8..e541d18 100644 --- a/audio/ravenclaw/config/audio_platform_configuration.xml +++ b/audio/ravenclaw/config/audio_platform_configuration.xml @@ -34,7 +34,7 @@ - + diff --git a/audio/ravenclaw/config/mixer_paths.xml b/audio/ravenclaw/config/mixer_paths.xml index 2d3db43..a61996e 100644 --- a/audio/ravenclaw/config/mixer_paths.xml +++ b/audio/ravenclaw/config/mixer_paths.xml @@ -639,7 +639,6 @@ - @@ -665,7 +664,6 @@ - @@ -691,7 +689,7 @@ - + @@ -700,7 +698,7 @@ - + From 973add41d68de713528c5709d8cc0ab8283f2cb9 Mon Sep 17 00:00:00 2001 From: Wayne Lin Date: Wed, 29 Dec 2021 16:31:52 +0800 Subject: [PATCH 20/70] Fix CP LPPe DBH message missing issue Enable below configs - CpLppeCancelDbhOnAgnssProvideLoc - CpLppeUseAgnssLocForEmptyDbh Bug: 212516393 Test: build pass and confirm the configs are correct Change-Id: I36f7276d769aa340de13c6c7bc3191376a97b58f --- location/gps.xml | 2 ++ location/gps.xml.c10 | 2 ++ location/gps.xml.p10 | 2 ++ location/gps_user.xml | 2 ++ location/gps_user.xml.c10 | 2 ++ location/gps_user.xml.p10 | 2 ++ 6 files changed, 12 insertions(+) diff --git a/location/gps.xml b/location/gps.xml index 00cc8f4..567c250 100644 --- a/location/gps.xml +++ b/location/gps.xml @@ -47,6 +47,8 @@ GnssYearOfHardware="2020" CpGuardTimeSec="1" CpLppGuardTimeSec="1" + CpLppeCancelDbhOnAgnssProvideLoc="true" + CpLppeUseAgnssLocForEmptyDbh="true" IgnoreInjectedSystemTime="true" AttributionAppPkgName="com.google.android.carrierlocation" diff --git a/location/gps.xml.c10 b/location/gps.xml.c10 index cbd15f5..c4dc93f 100644 --- a/location/gps.xml.c10 +++ b/location/gps.xml.c10 @@ -47,6 +47,8 @@ GnssYearOfHardware="2020" CpGuardTimeSec="1" CpLppGuardTimeSec="1" + CpLppeCancelDbhOnAgnssProvideLoc="true" + CpLppeUseAgnssLocForEmptyDbh="true" IgnoreInjectedSystemTime="true" AttributionAppPkgName="com.google.android.carrierlocation" diff --git a/location/gps.xml.p10 b/location/gps.xml.p10 index e129351..ae357b5 100644 --- a/location/gps.xml.p10 +++ b/location/gps.xml.p10 @@ -47,6 +47,8 @@ GnssYearOfHardware="2020" CpGuardTimeSec="1" CpLppGuardTimeSec="1" + CpLppeCancelDbhOnAgnssProvideLoc="true" + CpLppeUseAgnssLocForEmptyDbh="true" IgnoreInjectedSystemTime="true" AttributionAppPkgName="com.google.android.carrierlocation" diff --git a/location/gps_user.xml b/location/gps_user.xml index f8b182e..9ab6096 100644 --- a/location/gps_user.xml +++ b/location/gps_user.xml @@ -46,6 +46,8 @@ GnssYearOfHardware="2020" CpGuardTimeSec="1" CpLppGuardTimeSec="1" + CpLppeCancelDbhOnAgnssProvideLoc="true" + CpLppeUseAgnssLocForEmptyDbh="true" IgnoreInjectedSystemTime="true" AttributionAppPkgName="com.google.android.carrierlocation" diff --git a/location/gps_user.xml.c10 b/location/gps_user.xml.c10 index 62f10d8..05ca59b 100644 --- a/location/gps_user.xml.c10 +++ b/location/gps_user.xml.c10 @@ -46,6 +46,8 @@ GnssYearOfHardware="2020" CpGuardTimeSec="1" CpLppGuardTimeSec="1" + CpLppeCancelDbhOnAgnssProvideLoc="true" + CpLppeUseAgnssLocForEmptyDbh="true" IgnoreInjectedSystemTime="true" AttributionAppPkgName="com.google.android.carrierlocation" diff --git a/location/gps_user.xml.p10 b/location/gps_user.xml.p10 index 7da1a04..c974b1b 100644 --- a/location/gps_user.xml.p10 +++ b/location/gps_user.xml.p10 @@ -46,6 +46,8 @@ GnssYearOfHardware="2020" CpGuardTimeSec="1" CpLppGuardTimeSec="1" + CpLppeCancelDbhOnAgnssProvideLoc="true" + CpLppeUseAgnssLocForEmptyDbh="true" IgnoreInjectedSystemTime="true" AttributionAppPkgName="com.google.android.carrierlocation" From b5f4b7da861c7cd44a72904456d937813b4033e4 Mon Sep 17 00:00:00 2001 From: Bill Lin Date: Thu, 6 Jan 2022 15:25:45 +0800 Subject: [PATCH 21/70] Customize Rounded Corner and punch hole for P10 Screen size : 1080x2400 Test: make and enable debug Bug: 199469413 Bug: 199469519 Change-Id: Ica99e6ce1d56f1e6eed1ccd136a566d5cd8a99e7 --- .../base/core/res/res/values/config.xml | 22 +++++ .../base/core/res/res/values/dimens.xml | 33 +++++++ .../res/drawable/rounded_corner_bottom.xml | 25 ++++++ .../res/drawable/rounded_corner_top.xml | 25 ++++++ .../SystemUI/res/values-h800dp/dimens.xml | 21 +++++ .../SystemUI/res/values-land/dimen.xml | 25 ++++++ .../packages/SystemUI/res/values/config.xml | 87 +++++++++++++++++++ .../packages/SystemUI/res/values/dimens.xml | 53 +++++++++++ 8 files changed, 291 insertions(+) create mode 100644 panther/overlay/frameworks/base/core/res/res/values/dimens.xml create mode 100644 panther/overlay/frameworks/base/packages/SystemUI/res/drawable/rounded_corner_bottom.xml create mode 100644 panther/overlay/frameworks/base/packages/SystemUI/res/drawable/rounded_corner_top.xml create mode 100644 panther/overlay/frameworks/base/packages/SystemUI/res/values-h800dp/dimens.xml create mode 100644 panther/overlay/frameworks/base/packages/SystemUI/res/values-land/dimen.xml create mode 100644 panther/overlay/frameworks/base/packages/SystemUI/res/values/config.xml create mode 100644 panther/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml diff --git a/panther/overlay/frameworks/base/core/res/res/values/config.xml b/panther/overlay/frameworks/base/core/res/res/values/config.xml index 62fe42a..5508094 100644 --- a/panther/overlay/frameworks/base/core/res/res/values/config.xml +++ b/panther/overlay/frameworks/base/core/res/res/values/config.xml @@ -44,6 +44,28 @@ Must be in the range specified by minimum and maximum. --> 0.17429718 + + true + + + + M 506,68 + a 34,34 0 1 0 68,0 34,34 0 1 0 -68,0 + Z + @left + + + + M 480,0 + h 145 + v 118 + h -145 + Z + @left + + + + + + 47px + 47px + 48px + + + 28dp + + + 5px + diff --git a/panther/overlay/frameworks/base/packages/SystemUI/res/drawable/rounded_corner_bottom.xml b/panther/overlay/frameworks/base/packages/SystemUI/res/drawable/rounded_corner_bottom.xml new file mode 100644 index 0000000..d4bd012 --- /dev/null +++ b/panther/overlay/frameworks/base/packages/SystemUI/res/drawable/rounded_corner_bottom.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/panther/overlay/frameworks/base/packages/SystemUI/res/drawable/rounded_corner_top.xml b/panther/overlay/frameworks/base/packages/SystemUI/res/drawable/rounded_corner_top.xml new file mode 100644 index 0000000..f8f46dc --- /dev/null +++ b/panther/overlay/frameworks/base/packages/SystemUI/res/drawable/rounded_corner_top.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/panther/overlay/frameworks/base/packages/SystemUI/res/values-h800dp/dimens.xml b/panther/overlay/frameworks/base/packages/SystemUI/res/values-h800dp/dimens.xml new file mode 100644 index 0000000..d062247 --- /dev/null +++ b/panther/overlay/frameworks/base/packages/SystemUI/res/values-h800dp/dimens.xml @@ -0,0 +1,21 @@ + + + + + -156dp + diff --git a/panther/overlay/frameworks/base/packages/SystemUI/res/values-land/dimen.xml b/panther/overlay/frameworks/base/packages/SystemUI/res/values-land/dimen.xml new file mode 100644 index 0000000..4c591bb --- /dev/null +++ b/panther/overlay/frameworks/base/packages/SystemUI/res/values-land/dimen.xml @@ -0,0 +1,25 @@ + + + + + 8dp + 8dp + + + 0dp + diff --git a/panther/overlay/frameworks/base/packages/SystemUI/res/values/config.xml b/panther/overlay/frameworks/base/packages/SystemUI/res/values/config.xml new file mode 100644 index 0000000..7a655ac --- /dev/null +++ b/panther/overlay/frameworks/base/packages/SystemUI/res/values/config.xml @@ -0,0 +1,87 @@ + + + + + + + com.google.sensor.binned_brightness + + + true + + + true + + + + -1 + 3 + 3 + 16 + 16 + + + + + -1 + 133 + 0 + 0 + 0 + + + + + + + + + + M 71,0 C 33,0 22,-1 10,10 -1,22 0,33 0,71 + + true + + + + M 494,66 + a 46,46 0 1 0 92,0 + a 46,46 0 1 0 -92,0 + Z + + + + 1 + + + com.google.android.as + + true + + diff --git a/panther/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml b/panther/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml new file mode 100644 index 0000000..abbe205 --- /dev/null +++ b/panther/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml @@ -0,0 +1,53 @@ + + + + + 0dp + + + 47px + + + 1px + + + @*android:dimen/status_bar_height + + + 11px + + + 6dp + + 0px + + 47px + 47px + 46px + + + 650px + + + 950px + 1110px + + + From b1b9c9c33976ad289ccb7df84243901d8a591daf Mon Sep 17 00:00:00 2001 From: Cheney Ni Date: Thu, 6 Jan 2022 19:15:25 +0800 Subject: [PATCH 22/70] Bluetooth: control A2DP capabilities by each project Bug: 194607800 Bug: 203042971 Test: pass A2DP playback manual test Change-Id: I081dc9a7c16d0c6c73d278ad6d99b2704390ed2d --- device-cheetah.mk | 4 ++++ device-cloudripper.mk | 4 ++++ device-panther.mk | 4 ++++ device-ravenclaw.mk | 4 ++++ 4 files changed, 16 insertions(+) diff --git a/device-cheetah.mk b/device-cheetah.mk index 9c19cc0..074cb44 100644 --- a/device-cheetah.mk +++ b/device-cheetah.mk @@ -103,6 +103,10 @@ PRODUCT_PACKAGES += \ bt_vendor.conf PRODUCT_COPY_FILES += \ device/google/pantah/bluetooth/bt_vendor_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth/bt_vendor_overlay.conf +PRODUCT_PROPERTY_OVERRIDES += \ + ro.bluetooth.a2dp_offload.supported=true \ + persist.bluetooth.a2dp_offload.disabled=false \ + persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac # Keymaster HAL #LOCAL_KEYMASTER_PRODUCT_PACKAGE ?= android.hardware.keymaster@4.1-service diff --git a/device-cloudripper.mk b/device-cloudripper.mk index 437a18b..1b24340 100644 --- a/device-cloudripper.mk +++ b/device-cloudripper.mk @@ -91,6 +91,10 @@ PRODUCT_PACKAGES += \ bt_vendor.conf PRODUCT_COPY_FILES += \ device/google/pantah/bluetooth/bt_vendor_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth/bt_vendor_overlay.conf +PRODUCT_PROPERTY_OVERRIDES += \ + ro.bluetooth.a2dp_offload.supported=true \ + persist.bluetooth.a2dp_offload.disabled=false \ + persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac # Keymaster HAL #LOCAL_KEYMASTER_PRODUCT_PACKAGE ?= android.hardware.keymaster@4.1-service diff --git a/device-panther.mk b/device-panther.mk index 329f613..3fe23a8 100644 --- a/device-panther.mk +++ b/device-panther.mk @@ -98,6 +98,10 @@ PRODUCT_PACKAGES += \ bt_vendor.conf PRODUCT_COPY_FILES += \ device/google/pantah/bluetooth/bt_vendor_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth/bt_vendor_overlay.conf +PRODUCT_PROPERTY_OVERRIDES += \ + ro.bluetooth.a2dp_offload.supported=true \ + persist.bluetooth.a2dp_offload.disabled=false \ + persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac # Keymaster HAL #LOCAL_KEYMASTER_PRODUCT_PACKAGE ?= android.hardware.keymaster@4.1-service diff --git a/device-ravenclaw.mk b/device-ravenclaw.mk index c02136a..0878d0b 100644 --- a/device-ravenclaw.mk +++ b/device-ravenclaw.mk @@ -92,6 +92,10 @@ PRODUCT_PACKAGES += \ bt_vendor.conf PRODUCT_COPY_FILES += \ device/google/pantah/bluetooth/bt_vendor_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth/bt_vendor_overlay.conf +PRODUCT_PROPERTY_OVERRIDES += \ + ro.bluetooth.a2dp_offload.supported=true \ + persist.bluetooth.a2dp_offload.disabled=false \ + persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac # Keymaster HAL #LOCAL_KEYMASTER_PRODUCT_PACKAGE ?= android.hardware.keymaster@4.1-service From 7b47713993f0f320f028cfe33b52523afb04882d Mon Sep 17 00:00:00 2001 From: Bill Lin Date: Thu, 6 Jan 2022 16:07:26 +0800 Subject: [PATCH 23/70] Customize Rounded Corner and punch hole for C10/G10 Screen size : 1440x3120 Test: make and flash, enable debug mode and check visual Bug: 199468172 Bug: 199467921 Bug: 203593020 Bug: 203592814 Change-Id: I0bc273452756a48608e3a7d08e9d19ee85fdcc6f --- .../base/core/res/res/values/config.xml | 23 ++++++ .../base/core/res/res/values/dimens.xml | 33 ++++++++ .../res/drawable/rounded_corner_bottom.xml | 24 ++++++ .../res/drawable/rounded_corner_top.xml | 24 ++++++ .../packages/SystemUI/res/values/config.xml | 80 +++++++++++++++++++ .../packages/SystemUI/res/values/dimens.xml | 69 ++++++++++++++++ 6 files changed, 253 insertions(+) create mode 100644 cheetah/overlay/frameworks/base/core/res/res/values/dimens.xml create mode 100644 cheetah/overlay/frameworks/base/packages/SystemUI/res/drawable/rounded_corner_bottom.xml create mode 100644 cheetah/overlay/frameworks/base/packages/SystemUI/res/drawable/rounded_corner_top.xml create mode 100644 cheetah/overlay/frameworks/base/packages/SystemUI/res/values/config.xml create mode 100644 cheetah/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml diff --git a/cheetah/overlay/frameworks/base/core/res/res/values/config.xml b/cheetah/overlay/frameworks/base/core/res/res/values/config.xml index 62fe42a..b85ea99 100644 --- a/cheetah/overlay/frameworks/base/core/res/res/values/config.xml +++ b/cheetah/overlay/frameworks/base/core/res/res/values/config.xml @@ -44,6 +44,29 @@ Must be in the range specified by minimum and maximum. --> 0.17429718 + + true + + + + M 676,72 + a 43,43 0 1 0 86,0 + a 43,43 0 1 0 -86,0 + Z + @left + + + + M 653,0 + h 145 + v 130 + h -145 + Z + @left + + + + + + 50px + 50px + 49px + + + 28dp + + + 5px + diff --git a/cheetah/overlay/frameworks/base/packages/SystemUI/res/drawable/rounded_corner_bottom.xml b/cheetah/overlay/frameworks/base/packages/SystemUI/res/drawable/rounded_corner_bottom.xml new file mode 100644 index 0000000..016390f --- /dev/null +++ b/cheetah/overlay/frameworks/base/packages/SystemUI/res/drawable/rounded_corner_bottom.xml @@ -0,0 +1,24 @@ + + + + + + diff --git a/cheetah/overlay/frameworks/base/packages/SystemUI/res/drawable/rounded_corner_top.xml b/cheetah/overlay/frameworks/base/packages/SystemUI/res/drawable/rounded_corner_top.xml new file mode 100644 index 0000000..c1ab6e1 --- /dev/null +++ b/cheetah/overlay/frameworks/base/packages/SystemUI/res/drawable/rounded_corner_top.xml @@ -0,0 +1,24 @@ + + + + + + diff --git a/cheetah/overlay/frameworks/base/packages/SystemUI/res/values/config.xml b/cheetah/overlay/frameworks/base/packages/SystemUI/res/values/config.xml new file mode 100644 index 0000000..45336e6 --- /dev/null +++ b/cheetah/overlay/frameworks/base/packages/SystemUI/res/values/config.xml @@ -0,0 +1,80 @@ + + + + + + + com.google.sensor.binned_brightness + + + true + + + true + + + true + + + + -1 + 5 + 5 + 16 + 16 + + + + + -1 + 133 + 0 + 0 + 0 + + + true + + + + M 661,72 + a 57,57 0 1 0 114,0 + a 57,57 0 1 0 -114,0 + Z + + + + 1 + + + com.google.android.as + + true + + diff --git a/cheetah/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml b/cheetah/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml new file mode 100644 index 0000000..fb6ecc9 --- /dev/null +++ b/cheetah/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml @@ -0,0 +1,69 @@ + + + + + 50px + + + 1px + + + @*android:dimen/status_bar_height + + + 26px + + + 6.5dp + + + + M 665,71 + a 57,57 0 1 0 114,0 57,57 0 1 0 -114,0 + Z + + + + 1 + + true + + + 940px + + + 1320px + 1520px + + + 68px + + + 0 + + From e8ef12e356dbf47c16dfad782d0c57793d6a828b Mon Sep 17 00:00:00 2001 From: Bill Lin Date: Mon, 10 Jan 2022 16:55:29 +0800 Subject: [PATCH 24/70] Enable One-handed mode for C10/P10 Test: check settings > system > gesture > one handed mode Test: make Bug: 213843981 Change-Id: I0004659b248dafacf903f66cb7f91f0731619581 --- device-cheetah.mk | 4 ++++ device-panther.mk | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/device-cheetah.mk b/device-cheetah.mk index 074cb44..d9d7d15 100644 --- a/device-cheetah.mk +++ b/device-cheetah.mk @@ -175,3 +175,7 @@ else PRODUCT_COPY_FILES += \ device/google/pantah/location/gps_user.xml.c10:$(TARGET_COPY_OUT_VENDOR)/etc/gnss/gps.xml endif + +# Set support one-handed mode +PRODUCT_PRODUCT_PROPERTIES += \ + ro.support_one_handed_mode=true diff --git a/device-panther.mk b/device-panther.mk index 3fe23a8..fc73f3f 100644 --- a/device-panther.mk +++ b/device-panther.mk @@ -169,3 +169,7 @@ else PRODUCT_COPY_FILES += \ device/google/pantah/location/gps_user.xml.p10:$(TARGET_COPY_OUT_VENDOR)/etc/gnss/gps.xml endif + +# Set support one-handed mode +PRODUCT_PRODUCT_PROPERTIES += \ + ro.support_one_handed_mode=true From 8214580c68b047fd3c66c8c0b8167fb7d9205e3d Mon Sep 17 00:00:00 2001 From: Midas Chien Date: Thu, 6 Jan 2022 11:15:57 +0800 Subject: [PATCH 25/70] display: override P10 set_idle_timer_ms Bug: 208375625 Test: check property Change-Id: Ifbba1ddd530499d8d2f167e6c258a19a3ff69dd1 --- device-panther.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/device-panther.mk b/device-panther.mk index fc73f3f..ee776e6 100644 --- a/device-panther.mk +++ b/device-panther.mk @@ -154,6 +154,9 @@ endif PRODUCT_VENDOR_PROPERTIES += \ ro.vendor.vibrator.hal.long.frequency.shift=15 +# Display +PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.set_idle_timer_ms=1500 + # WiFi Overlay PRODUCT_PACKAGES += \ WifiOverlay2022 From 41b1b2debbb2340a2bb462c08d1c256470d3bdb2 Mon Sep 17 00:00:00 2001 From: Darren Hsu Date: Tue, 11 Jan 2022 10:52:00 +0800 Subject: [PATCH 26/70] powerstats: add NFC state residency stats for specific device Bug: 213957442 Test: dumpsys android.hardware.power.stats.IPowerStats/default Change-Id: Ic199fb87bc4679559f96fdf93197f39846fba023 Signed-off-by: Darren Hsu --- powerstats/ravenclaw/service.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/powerstats/ravenclaw/service.cpp b/powerstats/ravenclaw/service.cpp index 375a6f6..e3196da 100644 --- a/powerstats/ravenclaw/service.cpp +++ b/powerstats/ravenclaw/service.cpp @@ -70,6 +70,7 @@ int main() { addGs201CommonDataProviders(p); addDisplay(p); + addNFC(p, "/sys/devices/platform/10970000.hsi2c/i2c-4/i2c-st21nfc/power_stats"); const std::string instance = std::string() + PowerStats::descriptor + "/default"; binder_status_t status = AServiceManager_addService(p->asBinder().get(), instance.c_str()); From c9139250db92931907cd2bba1b5253846c389711 Mon Sep 17 00:00:00 2001 From: Minchan Kim Date: Mon, 10 Jan 2022 19:21:11 -0800 Subject: [PATCH 27/70] P22: increase zram size to 3G Bug: 207572845 Signed-off-by: Minchan Kim Change-Id: Id79fe41b0714d7aa654d7f88665d18c216364047 --- device-cheetah.mk | 4 ++++ device-panther.mk | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/device-cheetah.mk b/device-cheetah.mk index d9d7d15..2a80583 100644 --- a/device-cheetah.mk +++ b/device-cheetah.mk @@ -179,3 +179,7 @@ endif # Set support one-handed mode PRODUCT_PRODUCT_PROPERTIES += \ ro.support_one_handed_mode=true + +# Set zram size +PRODUCT_VENDOR_PROPERTIES += \ + vendor.zram.size=3g diff --git a/device-panther.mk b/device-panther.mk index ee776e6..db3641a 100644 --- a/device-panther.mk +++ b/device-panther.mk @@ -176,3 +176,7 @@ endif # Set support one-handed mode PRODUCT_PRODUCT_PROPERTIES += \ ro.support_one_handed_mode=true + +# Set zram size +PRODUCT_VENDOR_PROPERTIES += \ + vendor.zram.size=3g From c3e70c164be825a6b2d2b7d06813024f08a5ba0c Mon Sep 17 00:00:00 2001 From: Carter Hsu Date: Thu, 6 Jan 2022 03:43:00 +0000 Subject: [PATCH 28/70] Revert "Revert "audio: enable SA lite/full module"" This reverts commit 1fa392b4b2a4ad8b11e93a68db09b87c8438fffe. Reason for revert: Change-Id: I4aaf967432b0254e3369608fa5a95cb2bd87079b --- .../config/audio_platform_configuration.xml | 5 ++++- audio/cheetah/config/mixer_paths.xml | 6 ++++-- .../config/audio_platform_configuration.xml | 18 +++++++++--------- audio/cloudripper/config/mixer_paths.xml | 6 ++++-- .../config/audio_platform_configuration.xml | 5 ++++- audio/panther/config/mixer_paths.xml | 6 ++++-- .../config/audio_platform_configuration.xml | 2 +- audio/ravenclaw/config/mixer_paths.xml | 6 ++++-- 8 files changed, 34 insertions(+), 20 deletions(-) diff --git a/audio/cheetah/config/audio_platform_configuration.xml b/audio/cheetah/config/audio_platform_configuration.xml index e541d18..c3ebb6f 100644 --- a/audio/cheetah/config/audio_platform_configuration.xml +++ b/audio/cheetah/config/audio_platform_configuration.xml @@ -34,7 +34,7 @@ - + @@ -247,6 +247,9 @@ + + + diff --git a/audio/cheetah/config/mixer_paths.xml b/audio/cheetah/config/mixer_paths.xml index 0235f46..00e252f 100644 --- a/audio/cheetah/config/mixer_paths.xml +++ b/audio/cheetah/config/mixer_paths.xml @@ -649,6 +649,7 @@ + @@ -674,6 +675,7 @@ + @@ -699,7 +701,7 @@ - + @@ -708,7 +710,7 @@ - + diff --git a/audio/cloudripper/config/audio_platform_configuration.xml b/audio/cloudripper/config/audio_platform_configuration.xml index 5d24246..0356bb9 100644 --- a/audio/cloudripper/config/audio_platform_configuration.xml +++ b/audio/cloudripper/config/audio_platform_configuration.xml @@ -34,7 +34,7 @@ - + @@ -247,14 +247,14 @@ - - - - - - - - + + + + + + + + diff --git a/audio/cloudripper/config/mixer_paths.xml b/audio/cloudripper/config/mixer_paths.xml index 22c371b..9fef955 100644 --- a/audio/cloudripper/config/mixer_paths.xml +++ b/audio/cloudripper/config/mixer_paths.xml @@ -655,6 +655,7 @@ + @@ -680,6 +681,7 @@ + @@ -705,7 +707,7 @@ - + @@ -714,7 +716,7 @@ - + diff --git a/audio/panther/config/audio_platform_configuration.xml b/audio/panther/config/audio_platform_configuration.xml index e541d18..c3ebb6f 100644 --- a/audio/panther/config/audio_platform_configuration.xml +++ b/audio/panther/config/audio_platform_configuration.xml @@ -34,7 +34,7 @@ - + @@ -247,6 +247,9 @@ + + + diff --git a/audio/panther/config/mixer_paths.xml b/audio/panther/config/mixer_paths.xml index 0235f46..00e252f 100644 --- a/audio/panther/config/mixer_paths.xml +++ b/audio/panther/config/mixer_paths.xml @@ -649,6 +649,7 @@ + @@ -674,6 +675,7 @@ + @@ -699,7 +701,7 @@ - + @@ -708,7 +710,7 @@ - + diff --git a/audio/ravenclaw/config/audio_platform_configuration.xml b/audio/ravenclaw/config/audio_platform_configuration.xml index e541d18..5d2fbc8 100644 --- a/audio/ravenclaw/config/audio_platform_configuration.xml +++ b/audio/ravenclaw/config/audio_platform_configuration.xml @@ -34,7 +34,7 @@ - + diff --git a/audio/ravenclaw/config/mixer_paths.xml b/audio/ravenclaw/config/mixer_paths.xml index a61996e..2d3db43 100644 --- a/audio/ravenclaw/config/mixer_paths.xml +++ b/audio/ravenclaw/config/mixer_paths.xml @@ -639,6 +639,7 @@ + @@ -664,6 +665,7 @@ + @@ -689,7 +691,7 @@ - + @@ -698,7 +700,7 @@ - + From 74d7fb110ec1a82d17441deb7cb857e3ce7178f5 Mon Sep 17 00:00:00 2001 From: Carter Hsu Date: Mon, 3 Jan 2022 15:41:23 +0800 Subject: [PATCH 29/70] audio: enable telephony input and output Bug: 213020870 Test: build pass Signed-off-by: Carter Hsu Change-Id: I9c56aa6905645f89b0aa5fe320ac57c2b06f45f1 --- .../config/audio_policy_configuration.xml | 44 +++++++++---------- ...cy_configuration_a2dp_offload_disabled.xml | 44 +++++++++---------- ...icy_configuration_bluetooth_legacy_hal.xml | 44 +++++++++---------- .../config/audio_policy_configuration.xml | 44 +++++++++---------- ...cy_configuration_a2dp_offload_disabled.xml | 44 +++++++++---------- ...icy_configuration_bluetooth_legacy_hal.xml | 44 +++++++++---------- .../config/audio_policy_configuration.xml | 44 +++++++++---------- ...cy_configuration_a2dp_offload_disabled.xml | 44 +++++++++---------- ...icy_configuration_bluetooth_legacy_hal.xml | 44 +++++++++---------- 9 files changed, 198 insertions(+), 198 deletions(-) diff --git a/audio/cheetah/config/audio_policy_configuration.xml b/audio/cheetah/config/audio_policy_configuration.xml index 7f81ec3..ae87c70 100644 --- a/audio/cheetah/config/audio_policy_configuration.xml +++ b/audio/cheetah/config/audio_policy_configuration.xml @@ -21,9 +21,9 @@ Earpiece Built-In Mic Built-In Back Mic - - - + Telephony Tx + Voice Call And Telephony Rx + Echo Ref In Speaker @@ -63,17 +63,17 @@ - - + - - + - - - + @@ -197,30 +197,30 @@ + sources="primary output,deep buffer,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> + sources="primary output,deep buffer,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> - + - - + + - - + + diff --git a/audio/cheetah/config/audio_policy_configuration_a2dp_offload_disabled.xml b/audio/cheetah/config/audio_policy_configuration_a2dp_offload_disabled.xml index b6a432b..962efd4 100644 --- a/audio/cheetah/config/audio_policy_configuration_a2dp_offload_disabled.xml +++ b/audio/cheetah/config/audio_policy_configuration_a2dp_offload_disabled.xml @@ -21,9 +21,9 @@ Earpiece Built-In Mic Built-In Back Mic - - - + Telephony Tx + Voice Call And Telephony Rx + Echo Ref In Speaker @@ -63,17 +63,17 @@ - - + - - + - - - + @@ -176,30 +176,30 @@ + sources="primary output,deep buffer,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> + sources="primary output,deep buffer,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> - + - - + + - - + + diff --git a/audio/cheetah/config/audio_policy_configuration_bluetooth_legacy_hal.xml b/audio/cheetah/config/audio_policy_configuration_bluetooth_legacy_hal.xml index 15a918b..ad0cb8b 100644 --- a/audio/cheetah/config/audio_policy_configuration_bluetooth_legacy_hal.xml +++ b/audio/cheetah/config/audio_policy_configuration_bluetooth_legacy_hal.xml @@ -21,9 +21,9 @@ Earpiece Built-In Mic Built-In Back Mic - - - + Telephony Tx + Voice Call And Telephony Rx + Echo Ref In Speaker @@ -63,17 +63,17 @@ - - + - - + - - - + @@ -176,30 +176,30 @@ + sources="primary output,deep buffer,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> + sources="primary output,deep buffer,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> - + - - + + - - + + diff --git a/audio/cloudripper/config/audio_policy_configuration.xml b/audio/cloudripper/config/audio_policy_configuration.xml index d716164..5337ab1 100644 --- a/audio/cloudripper/config/audio_policy_configuration.xml +++ b/audio/cloudripper/config/audio_policy_configuration.xml @@ -21,9 +21,9 @@ Earpiece Built-In Mic Built-In Back Mic - - - + Telephony Tx + Voice Call And Telephony Rx + Echo Ref In Speaker @@ -63,17 +63,17 @@ - - + - - + - - - + @@ -197,30 +197,30 @@ + sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> + sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> - + - - + + - - + + diff --git a/audio/cloudripper/config/audio_policy_configuration_a2dp_offload_disabled.xml b/audio/cloudripper/config/audio_policy_configuration_a2dp_offload_disabled.xml index d871028..6ee61a4 100644 --- a/audio/cloudripper/config/audio_policy_configuration_a2dp_offload_disabled.xml +++ b/audio/cloudripper/config/audio_policy_configuration_a2dp_offload_disabled.xml @@ -21,9 +21,9 @@ Earpiece Built-In Mic Built-In Back Mic - - - + Telephony Tx + Voice Call And Telephony Rx + Echo Ref In Speaker @@ -63,17 +63,17 @@ - - + - - + - - - + @@ -176,30 +176,30 @@ + sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> + sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> - + - - + + - - + + diff --git a/audio/cloudripper/config/audio_policy_configuration_bluetooth_legacy_hal.xml b/audio/cloudripper/config/audio_policy_configuration_bluetooth_legacy_hal.xml index 5b65fdd..df384c5 100644 --- a/audio/cloudripper/config/audio_policy_configuration_bluetooth_legacy_hal.xml +++ b/audio/cloudripper/config/audio_policy_configuration_bluetooth_legacy_hal.xml @@ -21,9 +21,9 @@ Earpiece Built-In Mic Built-In Back Mic - - - + Telephony Tx + Voice Call And Telephony Rx + Echo Ref In Speaker @@ -63,17 +63,17 @@ - - + - - + - - - + @@ -176,30 +176,30 @@ + sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> + sources="primary output,deep buffer,haptic,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> - + - - + + - - + + diff --git a/audio/panther/config/audio_policy_configuration.xml b/audio/panther/config/audio_policy_configuration.xml index 7f81ec3..ae87c70 100644 --- a/audio/panther/config/audio_policy_configuration.xml +++ b/audio/panther/config/audio_policy_configuration.xml @@ -21,9 +21,9 @@ Earpiece Built-In Mic Built-In Back Mic - - - + Telephony Tx + Voice Call And Telephony Rx + Echo Ref In Speaker @@ -63,17 +63,17 @@ - - + - - + - - - + @@ -197,30 +197,30 @@ + sources="primary output,deep buffer,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> + sources="primary output,deep buffer,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> - + - - + + - - + + diff --git a/audio/panther/config/audio_policy_configuration_a2dp_offload_disabled.xml b/audio/panther/config/audio_policy_configuration_a2dp_offload_disabled.xml index b6a432b..962efd4 100644 --- a/audio/panther/config/audio_policy_configuration_a2dp_offload_disabled.xml +++ b/audio/panther/config/audio_policy_configuration_a2dp_offload_disabled.xml @@ -21,9 +21,9 @@ Earpiece Built-In Mic Built-In Back Mic - - - + Telephony Tx + Voice Call And Telephony Rx + Echo Ref In Speaker @@ -63,17 +63,17 @@ - - + - - + - - - + @@ -176,30 +176,30 @@ + sources="primary output,deep buffer,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> + sources="primary output,deep buffer,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> - + - - + + - - + + diff --git a/audio/panther/config/audio_policy_configuration_bluetooth_legacy_hal.xml b/audio/panther/config/audio_policy_configuration_bluetooth_legacy_hal.xml index 15a918b..ad0cb8b 100644 --- a/audio/panther/config/audio_policy_configuration_bluetooth_legacy_hal.xml +++ b/audio/panther/config/audio_policy_configuration_bluetooth_legacy_hal.xml @@ -21,9 +21,9 @@ Earpiece Built-In Mic Built-In Back Mic - - - + Telephony Tx + Voice Call And Telephony Rx + Echo Ref In Speaker @@ -63,17 +63,17 @@ - - + - - + - - - + @@ -176,30 +176,30 @@ + sources="primary output,deep buffer,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> + sources="primary output,deep buffer,raw,mmap_no_irq_out,voip_rx,hifi_playback"/> - + - - + + - - + + From 9fe81d73de6c42ecb67e1b6c36285b1d43c330fb Mon Sep 17 00:00:00 2001 From: Patty Date: Tue, 4 Jan 2022 15:31:16 +0800 Subject: [PATCH 30/70] Add LE audio policy file Bug: 214374267 Test: connect with LE audio device and play music Change-Id: Ide900151e50634fe87c8918bf70b2ca62f46fd77 --- audio/cheetah/audio-tables.mk | 3 ++- audio/panther/audio-tables.mk | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/audio/cheetah/audio-tables.mk b/audio/cheetah/audio-tables.mk index 307afa0..6ed3802 100644 --- a/audio/cheetah/audio-tables.mk +++ b/audio/cheetah/audio-tables.mk @@ -22,7 +22,8 @@ PRODUCT_COPY_FILES += \ device/google/pantah/audio/$(AUDIO_TABLE_FOLDER)/config/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \ device/google/pantah/audio/$(AUDIO_TABLE_FOLDER)/config/audio_policy_configuration_a2dp_offload_disabled.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration_a2dp_offload_disabled.xml \ device/google/pantah/audio/$(AUDIO_TABLE_FOLDER)/config/audio_platform_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_configuration.xml \ - device/google/pantah/audio/$(AUDIO_TABLE_FOLDER)/config/sound_trigger_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_configuration.xml + device/google/pantah/audio/$(AUDIO_TABLE_FOLDER)/config/sound_trigger_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_configuration.xml \ + frameworks/av/services/audiopolicy/config/bluetooth_with_le_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_audio_policy_configuration_7_0.xml # AudioEffectHAL Configuration PRODUCT_COPY_FILES += \ diff --git a/audio/panther/audio-tables.mk b/audio/panther/audio-tables.mk index 13e9bcb..27b0f41 100644 --- a/audio/panther/audio-tables.mk +++ b/audio/panther/audio-tables.mk @@ -22,7 +22,8 @@ PRODUCT_COPY_FILES += \ device/google/pantah/audio/$(AUDIO_TABLE_FOLDER)/config/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \ device/google/pantah/audio/$(AUDIO_TABLE_FOLDER)/config/audio_policy_configuration_a2dp_offload_disabled.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration_a2dp_offload_disabled.xml \ device/google/pantah/audio/$(AUDIO_TABLE_FOLDER)/config/audio_platform_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_configuration.xml \ - device/google/pantah/audio/$(AUDIO_TABLE_FOLDER)/config/sound_trigger_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_configuration.xml + device/google/pantah/audio/$(AUDIO_TABLE_FOLDER)/config/sound_trigger_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_configuration.xml \ + frameworks/av/services/audiopolicy/config/bluetooth_with_le_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_audio_policy_configuration_7_0.xml # AudioEffectHAL Configuration PRODUCT_COPY_FILES += \ From aff23fef6529f1167cd91a9e5b21359421ba0a25 Mon Sep 17 00:00:00 2001 From: Patty Date: Fri, 14 Jan 2022 11:29:01 +0800 Subject: [PATCH 31/70] Change the makefile include order - The audio-tables.mk is a project specific makefile, the installed file should able to override the common makefile's setting. Bug: 214374267 Test: Make sure the file added in audio-tables.mk can override the common one. Change-Id: I875be3d5840aa0ebc108e15160adce305b805040 --- device-cheetah.mk | 2 +- device-panther.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/device-cheetah.mk b/device-cheetah.mk index 2a80583..f138621 100644 --- a/device-cheetah.mk +++ b/device-cheetah.mk @@ -24,8 +24,8 @@ $(call inherit-product-if-exists, vendor/google_devices/pantah/proprietary/cheet DEVICE_PACKAGE_OVERLAYS += device/google/pantah/cheetah/overlay -include device/google/gs201/device-shipping-common.mk include device/google/pantah/audio/cheetah/audio-tables.mk +include device/google/gs201/device-shipping-common.mk include hardware/google/pixel/vibrator/cs40l26/device.mk include device/google/gs101/bluetooth/bluetooth.mk include device/google/gs201/uwb/uwb.mk diff --git a/device-panther.mk b/device-panther.mk index db3641a..f191289 100644 --- a/device-panther.mk +++ b/device-panther.mk @@ -24,8 +24,8 @@ $(call inherit-product-if-exists, vendor/google_devices/pantah/proprietary/panth DEVICE_PACKAGE_OVERLAYS += device/google/pantah/panther/overlay -include device/google/gs201/device-shipping-common.mk include device/google/pantah/audio/panther/audio-tables.mk +include device/google/gs201/device-shipping-common.mk include hardware/google/pixel/vibrator/cs40l26/device.mk include device/google/gs101/bluetooth/bluetooth.mk From b68bbcddda519b1703d924104ba02a3679f35f7a Mon Sep 17 00:00:00 2001 From: Carter Hsu Date: Fri, 14 Jan 2022 06:26:57 +0000 Subject: [PATCH 32/70] Revert "Revert "Revert "audio: enable SA lite/full module""" This reverts commit c3e70c164be825a6b2d2b7d06813024f08a5ba0c. Reason for revert: Change-Id: I0e6dcd259cdb3efe7ec870bf7934da38675edb23 --- .../config/audio_platform_configuration.xml | 5 +---- audio/cheetah/config/mixer_paths.xml | 6 ++---- .../config/audio_platform_configuration.xml | 18 +++++++++--------- audio/cloudripper/config/mixer_paths.xml | 6 ++---- .../config/audio_platform_configuration.xml | 5 +---- audio/panther/config/mixer_paths.xml | 6 ++---- .../config/audio_platform_configuration.xml | 2 +- audio/ravenclaw/config/mixer_paths.xml | 6 ++---- 8 files changed, 20 insertions(+), 34 deletions(-) diff --git a/audio/cheetah/config/audio_platform_configuration.xml b/audio/cheetah/config/audio_platform_configuration.xml index c3ebb6f..e541d18 100644 --- a/audio/cheetah/config/audio_platform_configuration.xml +++ b/audio/cheetah/config/audio_platform_configuration.xml @@ -34,7 +34,7 @@ - + @@ -247,9 +247,6 @@ - - - diff --git a/audio/cheetah/config/mixer_paths.xml b/audio/cheetah/config/mixer_paths.xml index 00e252f..0235f46 100644 --- a/audio/cheetah/config/mixer_paths.xml +++ b/audio/cheetah/config/mixer_paths.xml @@ -649,7 +649,6 @@ - @@ -675,7 +674,6 @@ - @@ -701,7 +699,7 @@ - + @@ -710,7 +708,7 @@ - + diff --git a/audio/cloudripper/config/audio_platform_configuration.xml b/audio/cloudripper/config/audio_platform_configuration.xml index 0356bb9..5d24246 100644 --- a/audio/cloudripper/config/audio_platform_configuration.xml +++ b/audio/cloudripper/config/audio_platform_configuration.xml @@ -34,7 +34,7 @@ - + @@ -247,14 +247,14 @@ - - - - - - - - + + + + + + + + diff --git a/audio/cloudripper/config/mixer_paths.xml b/audio/cloudripper/config/mixer_paths.xml index 9fef955..22c371b 100644 --- a/audio/cloudripper/config/mixer_paths.xml +++ b/audio/cloudripper/config/mixer_paths.xml @@ -655,7 +655,6 @@ - @@ -681,7 +680,6 @@ - @@ -707,7 +705,7 @@ - + @@ -716,7 +714,7 @@ - + diff --git a/audio/panther/config/audio_platform_configuration.xml b/audio/panther/config/audio_platform_configuration.xml index c3ebb6f..e541d18 100644 --- a/audio/panther/config/audio_platform_configuration.xml +++ b/audio/panther/config/audio_platform_configuration.xml @@ -34,7 +34,7 @@ - + @@ -247,9 +247,6 @@ - - - diff --git a/audio/panther/config/mixer_paths.xml b/audio/panther/config/mixer_paths.xml index 00e252f..0235f46 100644 --- a/audio/panther/config/mixer_paths.xml +++ b/audio/panther/config/mixer_paths.xml @@ -649,7 +649,6 @@ - @@ -675,7 +674,6 @@ - @@ -701,7 +699,7 @@ - + @@ -710,7 +708,7 @@ - + diff --git a/audio/ravenclaw/config/audio_platform_configuration.xml b/audio/ravenclaw/config/audio_platform_configuration.xml index 5d2fbc8..e541d18 100644 --- a/audio/ravenclaw/config/audio_platform_configuration.xml +++ b/audio/ravenclaw/config/audio_platform_configuration.xml @@ -34,7 +34,7 @@ - + diff --git a/audio/ravenclaw/config/mixer_paths.xml b/audio/ravenclaw/config/mixer_paths.xml index 2d3db43..a61996e 100644 --- a/audio/ravenclaw/config/mixer_paths.xml +++ b/audio/ravenclaw/config/mixer_paths.xml @@ -639,7 +639,6 @@ - @@ -665,7 +664,6 @@ - @@ -691,7 +689,7 @@ - + @@ -700,7 +698,7 @@ - + From 3ecded645307e2ebec777b3877a8a706af90f466 Mon Sep 17 00:00:00 2001 From: Bill Lin Date: Mon, 17 Jan 2022 15:33:39 +0800 Subject: [PATCH 33/70] Revert some customization config from C10/P10 Previously ag/16573869,ag/16655971 accidently migration some config unrelated to rounded corner / display cutout. Test: make and flash, enable debug mode and check visual Bug: 199468172 Bug: 199467921 Bug: 203593020 Bug: 203592814 Change-Id: Idb5ecfd6e20293c083c3e13a926eef2c48d9605d --- .../packages/SystemUI/res/values/config.xml | 38 ------------------ .../packages/SystemUI/res/values/config.xml | 39 ------------------- 2 files changed, 77 deletions(-) diff --git a/cheetah/overlay/frameworks/base/packages/SystemUI/res/values/config.xml b/cheetah/overlay/frameworks/base/packages/SystemUI/res/values/config.xml index 45336e6..e9b9155 100644 --- a/cheetah/overlay/frameworks/base/packages/SystemUI/res/values/config.xml +++ b/cheetah/overlay/frameworks/base/packages/SystemUI/res/values/config.xml @@ -20,44 +20,6 @@ - - com.google.sensor.binned_brightness - - - true - - - true - - - true - - - - -1 - 5 - 5 - 16 - 16 - - - - - -1 - 133 - 0 - 0 - 0 - - true diff --git a/panther/overlay/frameworks/base/packages/SystemUI/res/values/config.xml b/panther/overlay/frameworks/base/packages/SystemUI/res/values/config.xml index 7a655ac..7568d21 100644 --- a/panther/overlay/frameworks/base/packages/SystemUI/res/values/config.xml +++ b/panther/overlay/frameworks/base/packages/SystemUI/res/values/config.xml @@ -20,45 +20,6 @@ - - com.google.sensor.binned_brightness - - - true - - - true - - - - -1 - 3 - 3 - 16 - 16 - - - - - -1 - 133 - 0 - 0 - 0 - - - - - - - - IA56oD@%&Z`H9(qq_U2YLkz9}Gk7Os?-n)7n@D68AvyUwD;N1qd%mLEZY=k+p<=avw<2!)5Ta_RWiJ5OlKCo(r}i?a5l@i3fQQVrGMcneGr5E5 zh^QtWj$GYBW0TICNwi);z6G-}Pb})CfTM7m6IImn8sEC7m3C1dmk==f8wR(w%~D|E zth>^K^y>o((Q1uW*IVA5Sv*f_jp6$>9D+S4cQrvDR1Ve@}r5$;l`Ka9ixZC$voX>c~=J51XwYM@fr9X6hee9 zK81@in<$0bWFBh#0|0D<-GCPb%tAP82xo4UJcM%`;hen-!5*NE2*~ZdHul@YW3x=l zw>V?4uxXLyJ-Letd<+d)+UGFkvpSA76nA@v|+9#Es5o=;)+SflanzPjoLi zKBa*En){H{4n+`8?ZjeQ0m>?9!)i10Xq{?}+yn}kjQa~vCo+>su>mXiQ73OP#RT!BWQtPU$T2~oKM4z`RON8lJ7<4~Vzhj|ic(KIsmZ3C87w^sZ7{aGpniO?bzZQEux?5Z zubZ$iY}2D@h&7oyFxlVV$-@gC$t2UF{a1cFk)?L=H zWFGgkfbNdrhmKkK*APO$^0p@CP_63YIypvb!r4WaUDR8&a+wuxGD8a|>1DLWP8J-u zyb@G^y%1Q9n`9$S0Khl7mjX}P>B&7 z0V3Kb{V-qh=bIjB-|BNV_ zzp(o{L^Cy8^vSB*fJSvrjseJ-^P8atdw+JncM3cd(a z!y2=pX1$p4RrpfGwwk>)WkU3%Iiq%w3IPkg?_`fh{UJF=Rt=|^Ze44W*ye!M*fX-3 zt{um2G2gGfM}9H7r=7pd+=H0((u{$7v(0I_Cx9YFLPeVs< zU!5=F+58Q+h#8PL=wLrLcWwBMm^riBU!9_;xn|=+;az6_pN*5*DD#tzhgk4v?9mm1 z5Y3nuAG?`}=EO~_g)<>DzUhDA=HAU!!kEv@mo^_1X8y#SwdJ?D{J%+jc^tic>t3(W zE12&^M>DV49i45~)!)Gc^N00Qn8W<{`foF*S^Ui1%w^U-Gn={1mvQYe|AMn<-rO*g YN#@puTUn0z!-gs5;Rew>*HH5R0b#ocv;Y7A diff --git a/audio/panther/cs35l41/fw/cs35l41-dsp1-spk-diag.bin b/audio/panther/cs35l41/fw/cs35l41-dsp1-spk-diag.bin index dbe3fd1df3b1719298efb5260cfdd263f90e027e..5d544d934bb0350ddcd3806c257dc435f6885812 100644 GIT binary patch delta 279 zcmdlYazdm&+}9;YfB^_}85kKDm|1|Ve;_Ul1Oge(RxzQ)sYS&xl{uNEF)pda*(Lb} zG4A>K={cz}0fq)KhDL^_@vdPZK!%Y)JVYWMC;<{PEHH=%DvwXeOiYirG|SdY%FF|r zX~HPPaF&5V6UcOw1zD!U&cMLJz?9Am;;>v{IKUv74PwH;#2L#O-8VZhN-zPbNajcu zM#ssU*;N@MC*Nexm&UXgY^e*-(#Z)N5=>^sldCu$uowWrhvPGmm+}9;YfB^_J85kKDm|1|Ve;_UlH~|^XRxzQ)sYS&xl{uNEdX6qJE~&-Y zCHVz0hK7a)@$UKg={c$K0YGL!QGQ9jVSzzBP%_@qEIU3WGcjE+DKn3O!GuwW;Vjrt zTUijL!_L6K!oVb%&J5zQTwyrCAefyx0mNZoVo(%do48^*W8vliMhPY$mB}2*!e~4B zFuN*a*yNY&`9>g%vDv7k!=;p*lbM=V5?=;%ab|v=l9hsznVzZTZ4 d8^{0yv&o-0-T2Lo%}gx}3`~ubxN3ox0|4j#MI`_L diff --git a/audio/panther/cs35l41/fw/cs35l41-dsp1-spk-diag.wmfw b/audio/panther/cs35l41/fw/cs35l41-dsp1-spk-diag.wmfw index 616262a2071837e4e2a4e1f67514e9ea88625145..bd972a4935713e2c6fd86e7f1872a4884771cf21 100644 GIT binary patch literal 33448 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 J;A4VJ|2H)TJ$C>A diff --git a/audio/panther/cs35l41/fw/cs35l41-dsp1-spk-prot.bin b/audio/panther/cs35l41/fw/cs35l41-dsp1-spk-prot.bin index bdb0fe231a8f4c93ca4e8e3db1abcedc10b63ccf..90405b31eaf301359534bc83d6372b4b31a058e7 100644 GIT binary patch delta 1392 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 W`v)e-bnt7Ye0J;C(XKguvQJz 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 YN#@puTUn0z!-gs5;Rew>*HH5R0b#ocv;Y7A From de94c5d8c587bb49a8ef775a4f8d4d4d1def0086 Mon Sep 17 00:00:00 2001 From: Sayanna Chandula Date: Thu, 6 Jan 2022 03:03:56 +0000 Subject: [PATCH 35/70] thermal: update C10 and P10 thermal configurations Add virtual-skin and virtual-skin-charge sensors. Update the coefficients. Disable thermal shutdown Bug: 211777844, 204522715 Test: build and boot on device. Check tskin mitigation Signed-off-by: Sayanna Chandula Change-Id: Ic48ef0e364ed2d6a3cd581144a7d46bac76f834e --- thermal_info_config_cheetah.json | 375 +++++++++++++++++++++++++++- thermal_info_config_panther.json | 403 ++++++++++++++++++++++++++++++- 2 files changed, 776 insertions(+), 2 deletions(-) diff --git a/thermal_info_config_cheetah.json b/thermal_info_config_cheetah.json index dba54ac..adf68b4 100644 --- a/thermal_info_config_cheetah.json +++ b/thermal_info_config_cheetah.json @@ -15,6 +15,349 @@ "VrThreshold":"NAN", "Multiplier":0.001 }, + { + "Name":"neutral_therm", + "Type":"UNKNOWN", + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "TempPath":"/dev/thermal/tz-by-name/neutral_therm/tz_temp", + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"gnss_tcxo_therm", + "Type":"UNKNOWN", + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "TempPath":"/dev/thermal/tz-by-name/gnss_tcxo_therm/tz_temp", + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"qi_therm", + "Type":"UNKNOWN", + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "TempPath":"/dev/thermal/tz-by-name/qi_therm/tz_temp", + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"quiet_therm", + "Type":"UNKNOWN", + "HotThreshold":[ + "NAN", + "32.2", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "HotHysteresis":[ + 0.0, + 0.9, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "TempPath":"/dev/thermal/tz-by-name/quiet_therm/tz_temp", + "VrThreshold":"NAN", + "Multiplier":0.001, + "PollingDelay":60000, + "PassiveDelay":7000 + }, + { + "Name":"usb_pwr_therm", + "Type":"UNKNOWN", + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "TempPath":"/dev/thermal/tz-by-name/usb_pwr_therm/tz_temp", + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"usb_pwr_therm2", + "Type":"UNKNOWN", + "HotThreshold":[ + "NAN", + "35.0", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "HotHysteresis":[ + 0.0, + 0.9, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "TempPath":"/dev/thermal/tz-by-name/usb_pwr_therm2/tz_temp", + "VrThreshold":"NAN", + "Multiplier":0.001, + "PollingDelay":60000, + "PassiveDelay":7000 + }, + { + "Name":"disp_therm", + "Type":"UNKNOWN", + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "TempPath":"/dev/thermal/tz-by-name/disp_therm/tz_temp", + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"VIRTUAL-QI-USB", + "Type":"UNKNOWN", + "VirtualSensor":true, + "Formula":"WEIGHTED_AVG", + "Combination":[ + "qi_therm", + "usb_pwr_therm" + ], + "Coefficient":[ + "0.650", + "0.350" + ], + "Offset":-1300, + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"VIRTUAL-USB2-QUIET", + "Type":"UNKNOWN", + "VirtualSensor":true, + "Formula":"WEIGHTED_AVG", + "Combination":[ + "usb_pwr_therm2", + "quiet_therm" + ], + "Coefficient":[ + "0.465", + "0.535" + ], + "Offset":-1824, + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"VIRTUAL-QUIET-USB2", + "Type":"UNKNOWN", + "VirtualSensor":true, + "Formula":"WEIGHTED_AVG", + "Combination":[ + "quiet_therm", + "usb_pwr_therm2" + ], + "Coefficient":[ + "1.208", + "-0.208" + ], + "Offset":-874, + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"VIRTUAL-NEUTRAL-QUIET", + "Type":"UNKNOWN", + "VirtualSensor":true, + "Formula":"WEIGHTED_AVG", + "Combination":[ + "neutral_therm", + "quiet_therm" + ], + "Coefficient":[ + "0.760", + "0.240" + ], + "Offset":-2100, + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"VIRTUAL-SKIN", + "Type":"SKIN", + "VirtualSensor":true, + "TriggerSensor":"quiet_therm", + "Formula":"MAXIMUM", + "Combination":[ + "VIRTUAL-QI-USB", + "VIRTUAL-USB2-QUIET", + "VIRTUAL-QUIET-USB2" + ], + "Coefficient":[ + "1.0", + "1.0", + "1.0" + ], + "HotThreshold":[ + "NAN", + "49", + "53", + "55", + "56.5", + "62.0", + "150.0" + ], + "HotHysteresis":[ + 0.0, + 1.9, + 1.9, + 1.9, + 1.4, + 1.9, + 1.9 + ], + "VrThreshold":"NAN", + "Multiplier":0.001, + "SendPowerHint":true, + "Monitor":true, + "PollingDelay":300000, + "PassiveDelay":7000, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-0", + "LimitInfo": [0, 0, 0, 0, 0, 0, 0] + }, + { + "CdevRequest": "thermal-cpufreq-1", + "LimitInfo": [0, 0, 0, 0, 0, 0, 0] + }, + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 0, 0, 0] + }, + { + "CdevRequest": "thermal-gpufreq-0", + "LimitInfo": [0, 0, 0, 0, 0, 0, 0] + }, + { + "CdevRequest": "tpu_cooling", + "LimitInfo": [0, 0, 0, 0, 0, 0, 0] + } + ] + }, + { + "Name":"VIRTUAL-SKIN-CHARGE", + "Type":"UNKNOWN", + "VirtualSensor":true, + "TriggerSensor":"quiet_therm", + "Formula":"MAXIMUM", + "Combination":[ + "VIRTUAL-NEUTRAL-QUIET" + ], + "Coefficient":[ + "1.0" + ], + "HotThreshold":[ + "NAN", + "49.0", + "51.0", + "53.0", + "55.0", + "57.0", + "150.0" + ], + "HotHysteresis":[ + 0.0, + 1.9, + 1.9, + 1.9, + 1.9, + 1.9, + 1.9 + ], + "VrThreshold":"NAN", + "Multiplier":0.001, + "Monitor":true, + "PollingDelay":300000, + "PassiveDelay":7000, + "BindedCdevInfo": [ + { + "CdevRequest": "fcc", + "LimitInfo": [0, 0, 0, 0, 0, 0, 0] + } + ] + }, { "Name":"LITTLE", "Type":"CPU", @@ -45,6 +388,21 @@ "VrThreshold":"NAN", "Multiplier":0.001 }, + { + "Name":"BIG", + "Type":"CPU", + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + 115.0 + ], + "VrThreshold":"NAN", + "Multiplier":0.001 + }, { "Name":"G3D", "Type":"GPU", @@ -98,7 +456,7 @@ "NAN", "NAN", "NAN", - 3.00, + 3.00, "NAN" ], "VrThreshold":"NAN", @@ -369,6 +727,21 @@ "Type":"CPU", "WritePath":"/dev/thermal/cdev-by-name/thermal-cpufreq-2/user_vote", "State2Power":["1450", "1400", "1350", "1300", "1250", "1200", "1150", "1100", "1050", "1000", "950", "900", "850", "800", "750"] + }, + { + "Name":"thermal-gpufreq-0", + "Type":"GPU", + "WritePath":"/dev/thermal/cdev-by-name/thermal-gpufreq-0/user_vote", + "State2Power":["4371", "3543", "3085", "2293", "1927", "1707", "1394", "1171", "967", "768", "592", "433"] + }, + { + "Name":"fcc", + "Type":"BATTERY" + }, + { + "Name":"tpu_cooling", + "Type":"NPU", + "WritePath":"/dev/thermal/cdev-by-name/tpu_cooling/user_vote" } ], "PowerRails":[ diff --git a/thermal_info_config_panther.json b/thermal_info_config_panther.json index dba54ac..d888118 100644 --- a/thermal_info_config_panther.json +++ b/thermal_info_config_panther.json @@ -15,6 +15,377 @@ "VrThreshold":"NAN", "Multiplier":0.001 }, + { + "Name":"neutral_therm", + "Type":"UNKNOWN", + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "TempPath":"/dev/thermal/tz-by-name/neutral_therm/tz_temp", + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"gnss_tcxo_therm", + "Type":"UNKNOWN", + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "TempPath":"/dev/thermal/tz-by-name/gnss_tcxo_therm/tz_temp", + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"qi_therm", + "Type":"UNKNOWN", + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "TempPath":"/dev/thermal/tz-by-name/qi_therm/tz_temp", + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"usb_pwr_therm", + "Type":"UNKNOWN", + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "TempPath":"/dev/thermal/tz-by-name/usb_pwr_therm/tz_temp", + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"usb_pwr_therm2", + "Type":"UNKNOWN", + "HotThreshold":[ + "NAN", + "35.0", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "HotHysteresis":[ + 0.0, + 0.9, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "TempPath":"/dev/thermal/tz-by-name/usb_pwr_therm2/tz_temp", + "VrThreshold":"NAN", + "Multiplier":0.001, + "PollingDelay":60000, + "PassiveDelay":7000 + }, + { + "Name":"disp_therm", + "Type":"UNKNOWN", + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "TempPath":"/dev/thermal/tz-by-name/disp_therm/tz_temp", + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"quiet_therm", + "Type":"UNKNOWN", + "HotThreshold":[ + "NAN", + "32.9", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "HotHysteresis":[ + 0.0, + 0.9, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "TempPath":"/dev/thermal/tz-by-name/quiet_therm/tz_temp", + "VrThreshold":"NAN", + "Multiplier":0.001, + "PollingDelay":60000, + "PassiveDelay":7000 + }, + { + "Name":"VIRTUAL-QI-USB", + "Type":"UNKNOWN", + "VirtualSensor":true, + "Formula":"WEIGHTED_AVG", + "Combination":[ + "qi_therm", + "usb_pwr_therm" + ], + "Coefficient":[ + "0.680", + "0.320" + ], + "Offset":-2200, + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"VIRTUAL-USB-QUIET", + "Type":"UNKNOWN", + "VirtualSensor":true, + "Formula":"WEIGHTED_AVG", + "Combination":[ + "usb_pwr_therm", + "quiet_therm" + ], + "Coefficient":[ + "0.6", + "0.4" + ], + "Offset":-2900, + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"VIRTUAL-GNSS-USB2", + "Type":"UNKNOWN", + "VirtualSensor":true, + "Formula":"WEIGHTED_AVG", + "Combination":[ + "gnss_tcxo_therm", + "usb_pwr_therm2" + ], + "Coefficient":[ + "0.668", + "0.332" + ], + "Offset":-1557, + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"VIRTUAL-NEUTRAL-QUIET", + "Type":"UNKNOWN", + "VirtualSensor":true, + "Formula":"WEIGHTED_AVG", + "Combination":[ + "neutral_therm", + "quiet_therm" + ], + "Coefficient":[ + "0.675", + "0.325" + ], + "Offset":-1900, + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"VIRTUAL-NEUTRAL-USB", + "Type":"UNKNOWN", + "VirtualSensor":true, + "Formula":"WEIGHTED_AVG", + "Combination":[ + "neutral_therm", + "usb_pwr_therm" + ], + "Coefficient":[ + "0.734", + "0.266" + ], + "Offset":-2271, + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN" + ], + "VrThreshold":"NAN", + "Multiplier":0.001 + }, + { + "Name":"VIRTUAL-SKIN", + "Type":"SKIN", + "VirtualSensor":true, + "TriggerSensor":"quiet_therm", + "Formula":"MAXIMUM", + "Combination":[ + "VIRTUAL-QI-USB", + "VIRTUAL-USB-QUIET", + "VIRTUAL-GNSS-USB2" + ], + "Coefficient":[ + "1.0", + "1.0", + "1.0" + ], + "HotThreshold":[ + "NAN", + "49.0", + "53.0", + "55.0", + "56.5", + "62.0", + "150.0" + ], + "HotHysteresis":[ + 0.0, + 1.9, + 1.9, + 1.9, + 1.4, + 1.9, + 1.9 + ], + "VrThreshold":"NAN", + "Multiplier":0.001, + "SendPowerHint":true, + "Monitor":true, + "PollingDelay":300000, + "PassiveDelay":7000, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-0", + "LimitInfo": [0, 0, 0, 0, 0, 0, 0] + }, + { + "CdevRequest": "thermal-cpufreq-1", + "LimitInfo": [0, 0, 0, 0, 0, 0, 0] + }, + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 0, 0, 0] + }, + { + "CdevRequest": "thermal-gpufreq-0", + "LimitInfo": [0, 0, 0, 0, 0, 0, 0] + }, + { + "CdevRequest": "tpu_cooling", + "LimitInfo": [0, 0, 0, 0, 0, 0, 0] + } + ] + }, + { + "Name":"VIRTUAL-SKIN-CHARGE", + "Type":"UNKNOWN", + "VirtualSensor":true, + "TriggerSensor":"quiet_therm", + "Formula":"MAXIMUM", + "Combination":[ + "VIRTUAL-NEUTRAL-QUIET", + "VIRTUAL-NEUTRAL-USB" + ], + "Coefficient":[ + "1.0", + "1.0" + ], + "HotThreshold":[ + "NAN", + "49.0", + "51.0", + "53.0", + "55.0", + "57.0", + "150.0" + ], + "HotHysteresis":[ + 0.0, + 1.9, + 1.9, + 1.9, + 1.9, + 1.9, + 1.9 + ], + "VrThreshold":"NAN", + "Multiplier":0.001, + "Monitor":true, + "PollingDelay":300000, + "PassiveDelay":7000, + "BindedCdevInfo": [ + { + "CdevRequest": "fcc", + "LimitInfo": [0, 0, 0, 0, 0, 0, 0] + } + ] + }, { "Name":"LITTLE", "Type":"CPU", @@ -45,6 +416,21 @@ "VrThreshold":"NAN", "Multiplier":0.001 }, + { + "Name":"BIG", + "Type":"CPU", + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + "NAN", + 115.0 + ], + "VrThreshold":"NAN", + "Multiplier":0.001 + }, { "Name":"G3D", "Type":"GPU", @@ -98,7 +484,7 @@ "NAN", "NAN", "NAN", - 3.00, + 3.00, "NAN" ], "VrThreshold":"NAN", @@ -369,6 +755,21 @@ "Type":"CPU", "WritePath":"/dev/thermal/cdev-by-name/thermal-cpufreq-2/user_vote", "State2Power":["1450", "1400", "1350", "1300", "1250", "1200", "1150", "1100", "1050", "1000", "950", "900", "850", "800", "750"] + }, + { + "Name":"thermal-gpufreq-0", + "Type":"GPU", + "WritePath":"/dev/thermal/cdev-by-name/thermal-gpufreq-0/user_vote", + "State2Power":["4599", "3727", "3259", "2378", "2044", "1813", "1449", "1223", "1007", "804", "633", "452"] + }, + { + "Name":"fcc", + "Type":"BATTERY" + }, + { + "Name":"tpu_cooling", + "Type":"NPU", + "WritePath":"/dev/thermal/cdev-by-name/tpu_cooling/user_vote" } ], "PowerRails":[ From fa5437f715fb0f8e26d34767c4fd22fcefbebfa4 Mon Sep 17 00:00:00 2001 From: George Lee Date: Wed, 12 Jan 2022 09:50:00 -0800 Subject: [PATCH 36/70] thermal: update BCL policy changes Bug: 197028142 Test: Boot and confirm temperature reading Signed-off-by: George Lee Change-Id: If63882cd7335e002a6df51cd6bd1d37f5d8d24e3 --- thermal_info_config_cheetah.json | 164 ++++++++++++++++++++++++-- thermal_info_config_cloudripper.json | 166 +++++++++++++++++++++++++-- thermal_info_config_panther.json | 164 ++++++++++++++++++++++++-- thermal_info_config_ravenclaw.json | 166 +++++++++++++++++++++++++-- 4 files changed, 626 insertions(+), 34 deletions(-) diff --git a/thermal_info_config_cheetah.json b/thermal_info_config_cheetah.json index adf68b4..20e3f88 100644 --- a/thermal_info_config_cheetah.json +++ b/thermal_info_config_cheetah.json @@ -448,7 +448,7 @@ "Coefficient":[ "-10000", "400", - "1150" + "1000" ], "HotThreshold":[ "NAN", @@ -477,7 +477,7 @@ "Coefficient":[ "-10000", "400", - "1150" + "1000" ], "HotThreshold":[ "NAN", @@ -517,6 +517,37 @@ } ] }, + { + "Name":"batoilo", + "Type":"BCL_CURRENT", + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + 5000, + "NAN", + "NAN" + ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], + "VrThreshold":"NAN", + "Multiplier":1, + "Monitor":true, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 7, 10, 10] + } + ] + }, { "Name":"vdroop1", "Type":"BCL_VOLTAGE", @@ -525,13 +556,28 @@ "NAN", "NAN", "NAN", - 1150, + 1000, "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, - "Monitor":true + "Monitor":true, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 7, 10, 10] + } + ] }, { "Name":"vdroop2", @@ -541,13 +587,28 @@ "NAN", "NAN", "NAN", - 1350, + 1200, "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, - "Monitor":true + "Monitor":true, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 7, 10, 10] + } + ] }, { "Name":"smpl_gm", @@ -557,13 +618,28 @@ "NAN", "NAN", "NAN", - 1400, + 1100, "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, - "Monitor":true + "Monitor":true, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 7, 10, 10] + } + ] }, { "Name":"ocp_cpu1", @@ -577,6 +653,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -593,6 +678,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -609,6 +703,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -625,6 +728,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -641,6 +753,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -657,6 +778,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -673,6 +803,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -689,6 +828,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true diff --git a/thermal_info_config_cloudripper.json b/thermal_info_config_cloudripper.json index dba54ac..207916c 100644 --- a/thermal_info_config_cloudripper.json +++ b/thermal_info_config_cloudripper.json @@ -90,7 +90,7 @@ "Coefficient":[ "-10000", "400", - "1150" + "1000" ], "HotThreshold":[ "NAN", @@ -98,7 +98,7 @@ "NAN", "NAN", "NAN", - 3.00, + 3.00, "NAN" ], "VrThreshold":"NAN", @@ -119,7 +119,7 @@ "Coefficient":[ "-10000", "400", - "1150" + "1000" ], "HotThreshold":[ "NAN", @@ -159,6 +159,37 @@ } ] }, + { + "Name":"batoilo", + "Type":"BCL_CURRENT", + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + 5000, + "NAN", + "NAN" + ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], + "VrThreshold":"NAN", + "Multiplier":1, + "Monitor":true, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 7, 10, 10] + } + ] + }, { "Name":"vdroop1", "Type":"BCL_VOLTAGE", @@ -167,13 +198,28 @@ "NAN", "NAN", "NAN", - 1150, + 1000, "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, - "Monitor":true + "Monitor":true, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 7, 10, 10] + } + ] }, { "Name":"vdroop2", @@ -183,13 +229,28 @@ "NAN", "NAN", "NAN", - 1350, + 1200, "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, - "Monitor":true + "Monitor":true, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 7, 10, 10] + } + ] }, { "Name":"smpl_gm", @@ -199,13 +260,28 @@ "NAN", "NAN", "NAN", - 1400, + 1100, "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, - "Monitor":true + "Monitor":true, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 7, 10, 10] + } + ] }, { "Name":"ocp_cpu1", @@ -219,6 +295,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -235,6 +320,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -251,6 +345,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -267,6 +370,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -283,6 +395,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -299,6 +420,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -315,6 +445,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -331,6 +470,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true diff --git a/thermal_info_config_panther.json b/thermal_info_config_panther.json index d888118..a9d6b4a 100644 --- a/thermal_info_config_panther.json +++ b/thermal_info_config_panther.json @@ -476,7 +476,7 @@ "Coefficient":[ "-10000", "400", - "1150" + "1000" ], "HotThreshold":[ "NAN", @@ -505,7 +505,7 @@ "Coefficient":[ "-10000", "400", - "1150" + "1000" ], "HotThreshold":[ "NAN", @@ -545,6 +545,37 @@ } ] }, + { + "Name":"batoilo", + "Type":"BCL_CURRENT", + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + 5000, + "NAN", + "NAN" + ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], + "VrThreshold":"NAN", + "Multiplier":1, + "Monitor":true, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 7, 10, 10] + } + ] + }, { "Name":"vdroop1", "Type":"BCL_VOLTAGE", @@ -553,13 +584,28 @@ "NAN", "NAN", "NAN", - 1150, + 1000, "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, - "Monitor":true + "Monitor":true, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 7, 10, 10] + } + ] }, { "Name":"vdroop2", @@ -569,13 +615,28 @@ "NAN", "NAN", "NAN", - 1350, + 1200, "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, - "Monitor":true + "Monitor":true, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 7, 10, 10] + } + ] }, { "Name":"smpl_gm", @@ -585,13 +646,28 @@ "NAN", "NAN", "NAN", - 1400, + 1100, "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, - "Monitor":true + "Monitor":true, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 7, 10, 10] + } + ] }, { "Name":"ocp_cpu1", @@ -605,6 +681,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -621,6 +706,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -637,6 +731,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -653,6 +756,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -669,6 +781,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -685,6 +806,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -701,6 +831,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -717,6 +856,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true diff --git a/thermal_info_config_ravenclaw.json b/thermal_info_config_ravenclaw.json index dba54ac..207916c 100644 --- a/thermal_info_config_ravenclaw.json +++ b/thermal_info_config_ravenclaw.json @@ -90,7 +90,7 @@ "Coefficient":[ "-10000", "400", - "1150" + "1000" ], "HotThreshold":[ "NAN", @@ -98,7 +98,7 @@ "NAN", "NAN", "NAN", - 3.00, + 3.00, "NAN" ], "VrThreshold":"NAN", @@ -119,7 +119,7 @@ "Coefficient":[ "-10000", "400", - "1150" + "1000" ], "HotThreshold":[ "NAN", @@ -159,6 +159,37 @@ } ] }, + { + "Name":"batoilo", + "Type":"BCL_CURRENT", + "HotThreshold":[ + "NAN", + "NAN", + "NAN", + "NAN", + 5000, + "NAN", + "NAN" + ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], + "VrThreshold":"NAN", + "Multiplier":1, + "Monitor":true, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 7, 10, 10] + } + ] + }, { "Name":"vdroop1", "Type":"BCL_VOLTAGE", @@ -167,13 +198,28 @@ "NAN", "NAN", "NAN", - 1150, + 1000, "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, - "Monitor":true + "Monitor":true, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 7, 10, 10] + } + ] }, { "Name":"vdroop2", @@ -183,13 +229,28 @@ "NAN", "NAN", "NAN", - 1350, + 1200, "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, - "Monitor":true + "Monitor":true, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 7, 10, 10] + } + ] }, { "Name":"smpl_gm", @@ -199,13 +260,28 @@ "NAN", "NAN", "NAN", - 1400, + 1100, "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, - "Monitor":true + "Monitor":true, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-2", + "LimitInfo": [0, 0, 0, 0, 7, 10, 10] + } + ] }, { "Name":"ocp_cpu1", @@ -219,6 +295,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -235,6 +320,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -251,6 +345,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -267,6 +370,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -283,6 +395,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -299,6 +420,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -315,6 +445,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true @@ -331,6 +470,15 @@ "NAN", "NAN" ], + "HotHysteresis":[ + 0.0, + 0.0, + 0.0, + 0.0, + 100, + 0.0, + 0.0 + ], "VrThreshold":"NAN", "Multiplier":1, "Monitor":true From dc37150dbff23696e360870cce7511fba83eb7a8 Mon Sep 17 00:00:00 2001 From: Robert Lee Date: Wed, 19 Jan 2022 08:40:07 +0000 Subject: [PATCH 37/70] audio: update speaker protection firmware and bin files Change list: 1.Update the firmware to v6.63(comment#6) 2.Re-Characterize speaker model with EVT samples. Bug: 198765357 Test: Builds Change-Id: I2b0462c56361b5841893118d0e45871a27783817 Signed-off-by: Robert Lee --- .../cs35l41/fw/R-cs35l41-dsp1-spk-cali.bin | Bin 2624 -> 2628 bytes .../cs35l41/fw/R-cs35l41-dsp1-spk-diag.bin | Bin 2624 -> 2628 bytes .../cs35l41/fw/R-cs35l41-dsp1-spk-prot.bin | Bin 3976 -> 4744 bytes .../cs35l41/fw/cs35l41-dsp1-spk-cali.bin | Bin 2624 -> 2624 bytes .../cs35l41/fw/cs35l41-dsp1-spk-cali.wmfw | Bin 33764 -> 34060 bytes .../cs35l41/fw/cs35l41-dsp1-spk-diag.bin | Bin 2624 -> 2624 bytes .../cs35l41/fw/cs35l41-dsp1-spk-diag.wmfw | Bin 33152 -> 33448 bytes .../cs35l41/fw/cs35l41-dsp1-spk-prot.bin | Bin 3964 -> 4728 bytes .../cs35l41/fw/cs35l41-dsp1-spk-prot.wmfw | Bin 33764 -> 34060 bytes 9 files changed, 0 insertions(+), 0 deletions(-) diff --git a/audio/cheetah/cs35l41/fw/R-cs35l41-dsp1-spk-cali.bin b/audio/cheetah/cs35l41/fw/R-cs35l41-dsp1-spk-cali.bin index dec08464ca1a1f8732562e1e0af10d041a90d15c..20816e2d36f293191ce0caee2465a877bdcb74bb 100644 GIT binary patch delta 190 zcmX>gazvy)+}9;YfB^_}85kKDm|1|Ve;_Ul_yQTuRxzQ)sYS&xl{uNEF)pda*(Lb} zG4A>K={cz}&V~jthDL_wK*Go%9wHbI6pVKb3o$G(h)>EdiBC?<$&9x&%hpTE%mbQd z!YIUW7Homz#$tPRM#ssU*;N@MC*Nexm&P;%Y=TQ>V*2D94hbeRiazLa$+}9;YfB^_J85kKDm|1|Ve;_UlH~|^XRxzQ)sYS&xl{uNEdX6qJE~&-Y zCHVz0hK7a)@$UKg={c$K&Ol~CQGQ9jVSzz>QhrIirCD}-a$-)VUQ%Wr1A_^p5W`up zp|-LhN{5|+frWu-W4AFoqwVDV?5d1Olb^EZtKc)yB{MM{WbEX84hbex%gvn}yBGmD CMl+oN diff --git a/audio/cheetah/cs35l41/fw/R-cs35l41-dsp1-spk-diag.bin b/audio/cheetah/cs35l41/fw/R-cs35l41-dsp1-spk-diag.bin index 8ff39e806b0258287e0ed95648dc47fdbf881669..0b125169dced85a8435d1f403b63ea733e2bdcfc 100644 GIT binary patch delta 190 zcmX>gazvy)+}9;YfB^_}85kKDm|1|Ve;_Ul_yQTuRxzQ)sYS&xl{uNEF)pda*(Lb} zG4A>K={cz}&V~jthDL_wK*Go%9wHbI6pVKb3o$G(h)>EdiBHK)OpmuT%hpTE%mbQd z!YIUW7Homz#$tPRM#ssU*;N@MC*Nexm&P;%Y=R5WgvmJ^5=>^so7*^cF)}g$0DZJF Aw*UYD delta 197 zcmX>iazLa$+}9;YfB^_J85kKDm|1|Ve;_UlH~|^XRxzQ)sYS&xl{uNEdX6qJE~&-Y zCHVz0hK7a)@$UKg={c$K&Ol~CQGQ9jVSzz>QhrIirCD}-N@ilZUQ%Wr1A_^p5W`up zp|-LhN{5|+frWu-W4AFoqwVDV?5d1Olb^EZtKc)y1!x+`*va`E5=^F+n>#snF#-TK C(leO= diff --git a/audio/cheetah/cs35l41/fw/R-cs35l41-dsp1-spk-prot.bin b/audio/cheetah/cs35l41/fw/R-cs35l41-dsp1-spk-prot.bin index a9373b5c907447a021115c5bfe7f9a36273c5d06..796822a9cbaf34b2bab6077deb75de0abf0577d7 100644 GIT binary patch literal 4744 zcmb7I4RBP|6+XLfla0ylX2D2IBH<-eqPT?p3E@WzF(EQe1IB=g8rg1=mttZ9ZCK-*j zE{R6FB1UV2&)e$r`{ttadxIu32xhSH>J`42H`o?U2Ak_^YXd=_&tH@5>ouy|!o5;s znJfp@B9~6((BTrXiS2cb54J;6Cxw@Gdd1>)iXiv)vqP=9BPx@u~M6{2!k4XPhj*9jVZ5Qc-@>|h% zYJUW6n<-7A4QY4Lq*B=}+LPLY#2k}fiuP;UxukbUzi7XbD7K~jNw$mjfcA6pACg0& zJ#H%^{kps%+CEz`XxkK6FOQm*C>KnUJU&g5vjnby5Q;eD(*Ys{6z5VXpg?OTEiy`$ zq|^ZMxAE=7*8!>HC$rfJS=X8C=1Gd&DT`K9KXT|SDI-E{${{se;T3U+T)>W83>v#< z_m4Jn6=&n<6*H~CNIhp32+}c^6up+DExLS2>ve70pUu5lxKF)hr-_-x zNxJt5ddDswCQbLjTXjkWI;ZHxJG zZvb6o+ERecBc|xmmpm%*)TYA{Cq7P=ogL#2|MLmWA&+d{dX>|&Hf(WvEOvBe+!6dS zphNBgaL=o^bwIq{Lkxf_dsIi@LQZqsS0U1~z2x>`%kJUb=%B;`zMVo7rIu9PZ5z8w zcMsp>0@RX+F1sHSF|KnOeB1xds!drPimZN+j@>f(zDN>Q&(TS$-egTNo~2$ z|9-YV=jj}6S&qZ@#pEBHBT^XXE*Wyy9v*(rwbDNQSl&!+&C8EHqLo^syRAdk)`&Q) zE4eec!NS7Bl2OG&d^zbYg0;TXIv_(s<&&H@MgPEetK2B((1$s;!4sHe`5=vlY7ltn z0I5P_kWiM-<4|hS77U1~s-UFBU;r~>RpcnXgfrEu27(Kkh0|meK%Aw|lj}*BQr%oR zkMvZchRic)XS(3A0fQfe6zq6IWW$q%X(M&*{ny@~-T^-A_G$Qf3T6HK5M>cK|-xeP_`njBoc!35zjrtWmoBU}wa%dLWC*p0|*WYCA`)U7|WaXru;SeBJ z#j%Edu3*pvFK67dDpg&8>e5?h{A;lJmOTUW-rk^X7%b1)^;vqyioxa$&kfACgTFr~ z%ioiparaY0K0e+T~$2Ti_14h%g0#pr1N@W9Ekl-A#Q4IQA|all`1TDh`a-S0B| zBOBk{?Ax*~0aH;S&?$d9RZ4w6m2=BdcffPq8U{Nh-?YsNR_@~QOE#2yRLj3Vh$&aBs z{Nvj_;K!D2b?wgbzZ>2~{SNAv!H-vcj1KD#a$C^vpnkAo6Z!u)-e&6I88`1I1%a2ZLB)&c;JqeJ{TsJqA4@00LP6@^4#Q1_5JJfSq$vV2fHPH6nJ03Ly5T|$jr zL<%k~Lb6y_Z(`1PX4UcR z7-gtJE@f&WH!SN!4)cCkTZh+Ag)~q<&OZ60lvkVz`IY@%7Dst$vi=E~+RmUNpw z$4YRjSu+cH4~J;cWg;b1SE%Y+@l2e@qG3cB*Udt?0^N1x=|dvBHUPhi@#8d1EM&5f z#*jk>ui(m8vqsBBmsnA23_tFMH(JrXv0lfm9lk3msWsBL*)IB84};e$Bb z+ck#ZH}b@f=vX|OjAlQhYv!#9HecS*G-3LU_$&`cxuMG1>e@iHm$FVHlS+*Ep*MuiypB>s6oV1&O&amuP$bya*V&2u zNx)EqB;bcE76~Og5fFx`I~0i$pXCL^9bo(Xfm$--(be#m$*c6<_dlC7*7}CZ_a=D4f;Dl`QdCgo(^oC-IZu|{L zZ3j#HeLk;u9;aqfH!JXYAy9kjFk+GD`e0W)+83i~oqZAIiuP^;`Piq-_06sE2mFCR MV18x(k8s%j3s#kb+5i9m literal 3976 zcmb7H4RBP|75?77-E7?5gb*NsAn_4|V2EKin?yi`Od@ui28vKBmJI7Ac}W&FyJ3HT zC}kI=0j9%9rOwo%we*KkhcZrsqE!pEv_TvCH|S6uXPC}(pff5mVhSa&{my;6Au@{X zg`7R_obQ}_e(t$%_kkt%EH47rZO{PSPVTBa=GNV0nisULjGM7|YhO5&Y`w>fuS-OG zTfY{Kc7@H>W}mm!=k?ADSkD1I2il^EKq472YuZ8)+Sh5tIH4TgJxxCT;s)%{Kh@>I zev+i1&)m)Zi=d~c7v;miYd|5KK%PVe5}Odk=Yw`xUcx1B$cI|SSMhZqqJmg`J6?v~ zuOFm4{RDmq{eb>Q^7bmUKp)a~GemnC2B06(pApPC{1o~x?30DxkIm43j;Q$g6ZS!W zTK}=gpT$Y&FWM)HpHlS0UV`yfVEoAD;*?y*BVXj>aT7gI!{wBG^Mwd+kw$(PI4l^W zv`4CD;D`T#18~3eiI^E1RJRQMO))ZTPl^izj*a4Y8qHnAl9xy!* z)9awR?^+$k0vC#zhv|Xo?Ua}$M<%6F?iA%{dRa53SH|=Tr4CGQSehX5T-)68$@IYV zwlTe7X24}!B}yr;&wavZ?jD>5X7b2#7(MXIVVNnmx5}9r$6g!2EZik{<+DO|9>CS)RqSilk(IqTJ`3Tma=q2~}C0tdjtdF1Z&YJkILz8f) z7R_iE&~d=?0d9t?3he}*4840{^@o37=bawCGGk8R>vruO*Dn2;-@STV&$I2b**vzV z*Q|dB2!C8xP~X;bwm&_0=J>{@(%(AQ-}iD`-fNDzwT@zkz7!t&kyp;|KSAZVL z*Sz0@1L>0Ut+P{^MO}3%)E|Ew&PIhv3lMW&$?dym2gSfL`q$;&c)PXRH+i&Q=5V6yP)MeD?;jPpp@qqDXQE_%4cNZyA)(`Fe1@`dNBEx-#OX7dAEFHMEMnU!{(nBzvKx&u?0Fa2&XRO`mZ#ckXMe6v@EWCHm_xIUL}dD50y?qWHI(e;wcz4f?d^+=ZfEvL|zSE zffMAFBI9P`%R9ppbNkx<6lbRza|PqTQzfqt{id_@jVVX`lO1J86{atKF1615^BW8Q zy?6r9P)ca23?A8D66JPO&C^_RYLw66`TW)e>x5kqjlwF)IH22t~R^5!e4h>5WAbQD3k6sWQfD z1Apa&q7p|%Lrwks8n5U&&0r!KGXrhmX#2Xj3MCpLGGW|r+#8Mc1QSLgYOIh{Oryo@ zOjH}qUk+Fv>gv8R;#<*hBG_f#&`WbN7GnjfjU}N?)y6VrW40%Z7S`aJSvDfZHX7&W zqx%BDbRJJgazLa$+}9;YfB^_}85kKDm|1|Ve;_Ul_yQTuRxzQ)sYS&xl{uNEF)pda*(Lb} zG4A>K={cz}&V~jthDL_wK*Go%9wHbI6pVKb3o$G(hzBZ-PfpCqjJGt))=SFF1Da>T xD8z6UY=Ps(VtaN*$H|-7RT(2D-(=61#xw+Mf=gy%`s5rA2_`e+&21dp837zSGR^=1 delta 201 zcmX>gazLa$+}9;YfB^_J85kKDm|1|Ve;_UlH~|^XRxzQ)sYS&xl{uNEdX6qJE~&-Y zCHVz0hK7a)@$UKg={c$K&Ol~CQGQ9jVSzzBP%_@qEIU3qF(*?mDKn3O!GuwW;Vjrt zTUijL!_L6K!oak#+nAlvcJh99RmQ~0PucTT@R{h6nV1eTc5*(41e2-d=1z|7jLbl@ E01E*#v;Y7A diff --git a/audio/cheetah/cs35l41/fw/cs35l41-dsp1-spk-cali.wmfw b/audio/cheetah/cs35l41/fw/cs35l41-dsp1-spk-cali.wmfw index 5530a4d53cac293e616ace4a4ea48e1829c02bdf..19ed6b03e1a19019403eb0cdee394eb0b84c02d8 100644 GIT binary patch delta 13123 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 W`v)e-bnt7Ye0J;C(XKguvQJz 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 YN#@puTUn0z!-gs5;Rew>*HH5R0b#ocv;Y7A diff --git a/audio/cheetah/cs35l41/fw/cs35l41-dsp1-spk-diag.bin b/audio/cheetah/cs35l41/fw/cs35l41-dsp1-spk-diag.bin index 83272c5f1eb3a6fec0708027f5186a9a342df090..c41fc262a1c1e96839bf60e8edd2bc5595363006 100644 GIT binary patch delta 188 zcmX>gazLa$+}9;YfB^_}85kKDm|1|Ve;_Ul_yQTuRxzQ)sYS&xl{uNEF)pda*(Lb} zG4A>K={cz}&V~jthDL_wK*Go%9wHbI6pVKb3o$G(hzBZ-PsvP7kGC|-)=SFF1Da>T xD8z6UY=Ps(VtaN*$H|-7RT(2D-(=61#xw+Mf(y`u$vGSnOlHQL+c>r}0stEaGRgn| delta 201 zcmX>gazLa$+}9;YfB^_J85kKDm|1|Ve;_UlH~|^XRxzQ)sYS&xl{uNEdX6qJE~&-Y zCHVz0hK7a)@$UKg={c$K&Ol~CQGQ9jVSzzBP%_@qEIU3WGcjE+DKn3O!GuwW;Vjrt zTUijL!_L6K!oak#+nAlvcJh99RmQ~0PucTT@R{fWG!10z?+Mx#`%Mda(Z<^LCO~blwnan)49WMi z&m<5i-h2OhpZ9q@3^QleUVH7e*Is+Awb$Nfa_5rLI|~Vy*p&AoN*SL8cykV_tU_*;$l%L~KbUj5)V z>etED4>sJ7Dy}kK-GcunGd_CgKDwT03Na2g@wZda*f!^Xt#y$BB!oXRT{yvH;efK%Wjgz# zmwDNX-t%5_Jrlj;WwLjnm)%Ui;qVWaek94my#fjWK}ccY^M|K7ym7x9e}4hHn<_cF>R_7-3HH8uV5fBE}G zIba0GyOKpThjO4!CYg&Q>trVGvqid#PEH{+?z48#4x+hqJ7tk+9=%1BM>p{M3OY@6 z8)f4@YajI!LJX{4lkpy4Au zubTMWnjiZgz}zLr!B97}xBJbN?F#E`OV=@H)(V7mI#e0O`0Ym^<$+R>;)I1KtrM#%L0! znZ7_1mo-psd|fIVAD7h<~h)qZc@s&#ciAuGRju zb-#q2u661ATmZ7+bQ}-UJ6?xO7O%rQsgr)i@yy;yUR#`g<+ZJ%xnA4F``dA!v5+)x zhDep(49dRMV2T2ulwD7ocwHA|d#!h+#VmTQUh8x+-0JnX7mt(QD;}UZUY9p#3N7|} z4pWXd$15c1h*wxgH+TiF>vuHI>uRJtZa*S$Gy zauM3~JW46A=bL2ndc4l6^bDAdwsKCJ?zbTimJWY zH0=yIXxaxDk36rllMgjK1L}IK=#O5n<)rBKdapT3h2Cp)3VQRsQ-`S5J9R%eki5>{ zqegAbIhcvpz~fLUU9$&RU*f3zvNfhZxzfu#CYqo~MhRw! zY}{N@k@2rz;+A?Gf2^2M8fxHNEF^~FaRQbJ_u_oVX?=zgj#e2JR(#3nHbMnReDbCD`_bzAF#rtfh z`{KRFIW>I`QF1TN?a`PCG5m;Tyr<`&aVsLu$`nnRH2ISFY?-1(rc4wWP!b{cOwj=x z1)%gbB~x_PO~e6qrkDjBZ5)MiGDUZCB96pyrU6I4h?AcwdIu)pj1_43Oj`|Z4=+lT zWZaMS#~7h;o5{yhG!5b1yp~4DypG@D|CJZVGYH}%YZXGn^CYov`q@jjJUmZ)e($#y z+;-c|VIHe4P>8|++y(#-UN6?-1irZbM-spQ<{N`xIl>3-`teE{zme(R_)wx8zAs&Z z4>^5j)Ec|z%PC-RZNvvxQ=)f{7$0A}eIbD_B=Cg2Y`)%{UNS8PgQ>aTLyaQ(I=ddY- zm%)C=Vb0%8giXGU!zORJ4E8e)%d$;`W$`_Mt|@=K4Cdgl#|8lFBn|JlL}MQzcrK=# z^^&hkCov6{VnEficy*m75euHczA_ye$s;AEFfTnAU+)W^EVo$gA@W>USpC_~yNNc6 zns+jYuI7~M+~+7k!g8JngeXRZciHcGvlTeJ)MNEkVQ0Qx08$S9X~~ikd2*x zJ43Omy)>V0O?CB9r^52cZmr4f8wNd>I@oJZnpPB`f%trOjL<06 zRCZc+b#hse|10)BK|$jJBXz((?~S|3l|RoF4CJN+lc^}Ke&nCI#y`{5g$96zUdyrT zeF@qPdNjZ=>NDdxy3(l*xX%;Q!VqCfrmSAd`g_9tZ=$cNZSBds_9YiOF-NOl* z8$J|bhlYK@b7cBgFG_UYJsL?IB;TPCw>oAQTR`$y!}~TdP^`#`F^I3 zCX!UHlUq$uMx4GB2I@?iym=t8#;)Vt=vQwWTr#s{k}=M)3?R~Y<_tiz+NL5%n?f|c_uEGxFs1=L^PVm%-A$BK^Zvm z8VpT-9Y!bqtMWb?ObIllhb$Ed3!!y_s6`6C9wPuG0J!We01yBvxl3;W0H{HrRA2EX7d~?93EO>HZKHaA@}2aTyTFW|p#(=JE_D z1s}(=_?UVarv+sBFo;35Jj0lQX;{8j>(Whtp#*zDs%~l$s1Lov^s-Y%dCzNrvE#%h z!rtSsKV1%cEu!jV>1G3wPP*0~vaJzm)m+}jHM&geI+Z#!aN}SkDC7*%N2BW1i793b@pTYaua^!aQsDM1rPo4=}5u8jJQ!0 z5@lCJaM4DL88*VjPNs-15{mfr#ui%-lQoiq=g`B=jPW_mtSLhEO{hMC>P+@WQZ74F zP+droz!X`G2$goerw(l;!JHd=*607oQ7ry{yZ)Y$CcyADl<5dyt0wREV1W>-Oj z)`3GNf{ELWFNJ5O&^ARiALeh-bVahmHVON(Sn!QrE8Tsuzf>NFrYl~vW~=_l-kj^c z(4lhs@=(gsDF|_8ItIg^r95wE>PM8}lbYvtk|0PzR&VH`sPAMc6PLEIKqyrk`LACe1p;AK~&N_bSpI z&A(ul=^TNU@AN4VGP6zZ1`8;X zv(*xEpAALb-Rkz;+Eey8u{c;-#VX2K=z;#5NV2Yo)9M{is>v)^&M?DGi8w8~-M(gE zIxCabIBaWM#BZNLM;MHAk7C*l0pLVb?m*E`d;YmS3Akx=)JgYbKLuH3`y(!yA1os{ z8K(Ks-yLNl3=_}}opEC}hu|CM#NW!@ff6$9Ao?b;AKKX~_8lnz@M3uFd6>OwXZwVj z(L^6SDY=6uSYh0B&;==Gz&?*eQbfVHmqPB(nEO-69vvg!*WeOC&pnzTUm~952WEYh z7?)`xcT+4L!Bm}ORoa}6s7}p z9hnNdt^ok3#Ong}EL~H75dc(^(S2BYTX*|HxGrw)xczP9^hQAsbDx_rFQ;c3#nGOj zm@-aJF^x!cjTYk#h-d()Bk*rK4PN9fJ%tAFvYi(-QY4cbI$6NE5SU13A%n7h-F^BE z+F)rEYk0eLFTUy4B~umf=5jp0OTl|ak0MP*@#XrDWf@MV>h{E1=C6wQ8w3AWygEH~UtH zG)Y7^a@qu069t(X8fo?^O{>f4S4gJtLG%g^z)p9!zDkkiY*+AI@9P%9Z}NPWOV#!J z&lNQdlh@=4Hm(yN^L)an&SaWp7i_)iTtBOO`XhTRVv1=8U!tAoPEG%gloxTq9Xg6+ zZYOaKE2wkH_QqucMMi2p@#`X@3`JA%IU3eB7@Oqsrvl4oW@AX&W>WjY(%0)SruEG;n8qax|IrpM+hwPB!h#KL-0c5} zNOd{?*{7ggtwivw5?YkC_x-l0qgO3AsZ)z-k>Eb>iYvFI zz@N{T5*gYcMO$Ylv6ZV_zNviH6 zNhqX^cDkeO;7OO!?u~GJbkb-yO|NX1@=VH-Clu#d%0Y71g+$8!>0G5c7^lpNwT0a7 z!dV87mLvWPrrI*(tq0~rwSWfQ_mkzNP96o&*5+pSa2!?|@wje+YPIULPK0@nQypvi zeJ%z(MR_I@%j<<_k!a0o(-*oPJc$k){2#p4pX4;80g=uPS5`gg2!x|%eM zwuyW=(1+r&^&9%J+~~)kcA+S^*QGYPn-$NWvpt`L-5+TV`{idKYe3wjH)1?hkU<_U;O< zS{mwGtcY~;wcMHuu4XKb2JC$-F)X?N!u0%N_XpyXGkjt?nI}!}kQ;)+n4cnh z9g3m2m_0DjDGMjkb3T`zJ190 zn6}8&lhe?+{-8zr@UU=5d*V=Yf5pLEzp&!wnV;*;o78*Y9~lwM}1l&!6wK9sHm_Xa5@+_iyNr>yH;4ULQJVdTDB3fwgfJ+ZK6z z&l_7mQvPM@)9O7LKX%f!y<#qug&wn@!{EhYP0G0WGHt)MH{lfE04S94(sEvi3(M2x zIMW-UI(uJ%2EeosV(U(HMT-cc*mfa3e?2|KY$o@xo&9jc|T#n4yJZbB_CWGh8i4sdA!HeWamB%=wbJ;Aj_`cXRc$= zHNPignIOuTu3Ym@gC#UQRb!ry75a9a=M-zwC&5&GIntW(R>C;|yiO213!}T~jNslc z-c35&W{WX~@u(l9`U449R)UhigD~oK%5qYDr0YR^%K+fw`qx!KqRnX3&<)J#+rdDW z>)M#Yc>(H!tH$Rve8gd6PKTR5gE#Kgm^(mh2E6uEScN7Y>67?P+GXj|;p(kxMe?0P zcUZ7;s#xXzw9aUT1&3KM;7K{BrcP})HMW(tM(^ql)@_!_-jngz+f*O7P_k5F_S8S0 zL}(=5ss&*WxKK>~I;cL@-Ayn5BnCJSb+&=muqc&()-Kq07V2$#(iq;XNbbbSp$t zE!MhEo$b=7Rrm3n%-JxMUf2Xxgjl&f(8>0DwA=M%J*Fs_A92OCI|M!e>$DU{o2n9% zk3J#Hnx|zX+cR#re~W1CK++OKP2@|mM#(hdijTNJDcWRmW5Qg+OM*JP9ZSrQzokuG zI}i_?1TpY(BhqegDIsR^`7suQZ7(963p=2VYhMBeMr+fcOOh3*%mFYVhsgv*oe1h z`MALTiJ}-6r`ScOdqi-L#PO0yM1imY4Lr+(N|Q+$~ZS5rWk<(1> z&+KgW08)0E&>ifF4#-T)klO4NUD2a}D$~R*x){B$8TV)=D-9E3W2oIg9oYKq9+(y6 zbj2+iQ2BW2Kz$6KU79_nfGT4MXcX3_DZ(G1f8eaM3^DqnKMcDx7uLQ}O^UA6!49TU z5U$@8#}HsDjSL(5#|}|MJ%y|d9_;X3*x~s!_bC{)&maI-lh+Lye0)iVvYOFSm)eWg zdAl2Rnw#5`aiS+9e}J}-V+*^5o_y)7rMxFY-X-S=w{J0$z<$5D(KN5wSG`N#r0t2; z6mM&1xqfL^h?=ec-eRpCrA?N`XQ=EMEDs(1eIMtha+crp*Mnk#h8WPgA~kwaoB7V$ zKN>}};UH;}ELcSfE$=@p)lC=n&J~)oR-^<6vNlA?d%ziGHK*+w*H9SZumWyj+c#2v zRxT+I4m@3dcFGEfb)%eT(YBDhT(BMCf+dY4!UE^^XN>U>ESBa1YWB75s@%5K3STBP z+f#_pcgmxrN%m*h@Fo)hmHb!Lgwg40-N>vwm?%aya)@vjBX>Y179|7H>L(Sx9cD}UFI-_ES8*JMn8g# zwk>6CrE_uRnwT~ibi&>z+vIgW4?&y_o8DnDjSt<}9s$v?VebP?7nqtFv-jtcY<4on z*8xI^z0s4AcTk)<^7Ab^&npL&%3wPP#Jwhr4x9qN>Zr{$>&O<|Ew`VLtdQxPACC@r zO|mw(sejel!oN_xZFQ98IOFtXU^V0kz3pni5ks zMZ>Sw2R7eSLlRcE>AenO11Awp1jd@?lAxS;V{U>SJ&f2sf^C)rV92=`_M7{j5$JR5 z?ULof$t}IM&PAgi*LbuPIfbaU8@Z8a4TG`LOyxaIFYT3uRMx11#K4@)lY+*OzW6P41`6 zH#_MuXb4_Y%os~w>RcZ9`+uNA9q?j3P3=67?jqzZYIv@mb{hV2K)G>4 zT;NQ{*wN#KPxm|*H|ny(_|Ou*qxi7N&_-O_tb9gpQ;c~Dvv>~6Kkp5!OAo*|;&lVI z4)X9I%VTl9Q&GUPX=rLPQr^SsvKxB8goJ{VN1u{ny-!9=*qKyNU^+b&;2V`m`)R5y zcmCc2j84V6dK34Chu~r0<@R@mG|YXD=Y-_|AaSFP+%*7r`E>xuuXGi$gcIozZhEZ- z__{#iy1InyNXQ%}DAV5JVG=}6b$)t9gV3(m$%$1S_VaE)-++|1IaB!Bqif26OE6eS zog@)e)>y7ZA*NRfk0tffly7%tzST)Xpvv1oN~egNwpN=0{(uK|ie$R3nDbl&n4abt zu#iHbx=X`F@Z+7lBu_lFVUv)G~f~)))Qd(Ic#bXs=91pXdw1{qD!FOXx1R%0| z)J}hlzw}vdAKU_Y5X-kh4+PKooR6@mJ&6<^-X7$4$j~A2R_{W{MM=wLA>y^S zSW4*1KoYYSI*uMQ$c(8(A}h{%0G!B}E>s%sG}_A|~hD=Ior zF^|PX#juIB@bSi82SM6AX?B93Z-+*@v~(^b5JWS(Xknx)3p#{~wkIsMdFURNGp2T`|`N_MAVngQ#-45k|}eIl%s4A|i@ z7!@Hij@KkCaE80IOXHSt*30F53-HG0Lb@N1&|wTvCpyL_TR2tt$dpIvISd^hPPg}= z%YMiJ`)ZwZNd{9MHR}2wq5TjFNKQgmAV}n?F>btLkU?o$H>j&riz!&@p@cHfH$1?p z$N1Wh12`{ET0~GI*n8AP@(Lx3G%T24PO!ljQv^&7_h`o+4u)?`q)hO?v?1cg1{JqC zzFY*3Fb`6%#Eu^ts^P7fC$L8~7n zRAk6Tf#gw;On_u7zT5(meIRM)>RT4*(nr7!`f;evjy_m5pg@d}AG)lg%QBT|Zgkm+ zE+^3C)cBqpy399DeCRTv%OmKr8(nThm-%>zPAb#Mu0bagG6$fUawfGj=VUqZlG@!! z%Ud#-_U#@pigq`Uv0%?*Nv@NS)drSwbOi@MEFn`T50GeHV0`~_kb?n`bNiSN2{)&v zkBuetnKCq(lg?CD9-d3Sa}Z5qev}6~4vi%G(Nhfx3f>}`fjQ}qT{&(L6s0iQ8|d4d zZ9WGb6q2D=5VA?E|`~YwmL|sL9P}iixkT7`R z{PDWb(<@|f$LGl4T#PxD>Pa*MrawbPOcH3odLXXZ~v^#R2HV#wTR84>kgO!Z^nOlIR|{ z?frZbK@7$uqDFgsr~P$PST_-d%s6 zpZ!o z;h8B67+x5U$)`}*CEkpY0CVZ_keCf;Nnm#^#9rfdd%n#OtU>Qn*i(ldFcePaleZW4 z&$^4AkDxAZ*NN0D
W)7*h(>bL;r1v-@jmH`5W7v+$JkfKD7IFo)n0{(1Di?W4wHwY+3Mcmb|Ykh`E4- ze)L)Dcr1W$9{cQLCgGAkTaZIB^f}RY*POWS*~O?SZu$2%_XSrcloaf2@HIuc7Gt(> zdXHJ``dOVzR;Q!_@|GhRY%>}FAR`%|I9dA3*!S%0x|{(gEz!l?5{wae!G-D-2o?F< zevE(Dkv|2!_(@Ux77#4fUE7m^v`i~lPL`d#EAuLPFZJUU4VA9<6YT&=;PG)o4A-kk zOA{3l8fNJxDDzAx^S(|4HSK$_8gbgvLcUb@YYFT$T5bU^xI~$*uR~%!5#qBM zs7zZCH@kjHYPG*W(m`Pj1|BOEQ@QE4qSTbYUbL}sXN8g;B1MdFf5+u|wTd1x(TPff!sI(fR_r>5cZj{Tfk`s>7F=cq#My5XVlP zs{rf|o-ol_z_<=sa1Lq^hup5ysD>X+!;oZBGV>Ug8gecOj={-q{E$M^T8ip4#<=S2#rxD#)x8Ia5IO%E*-h^)7JX!m^kz$6?TMfo+u3X?MwX>|fe=yW{J; ztJIzPxplM0>hk^$fLkPJF&+M;u05_#?Xf?$YMSkbJf!3ozyX$WC$#}J20 zerK80FP6u<-{^VNrFBRa%VWr&7QXu)0|}D z2Ks&kL@SiYn{P(38< z7f8mBEno*RBhM`K^SD^pow_Gu63V6Q_G%o8{0}xn8Hx#VhoZ3oppy-IHuuSLMi)$E z`~(1Oz!&6m5GH|M+(e;yc~1y=!u(ePGh5%HwHq7P;VcASEX2&zZJN^phF`-kQyJBvEL4VlaSYSs@fb zhDdUW><9ysk@30~1+h0|z}*USQ4!_u5s9Y{^T@&SUw(mH%}ZzN%_Nz{dGwf|p(`|N z(M=eiseXPBhG2P)TAZ}5I1$$qdh-)PRz}(EmCE;S2EDl$b8+IB12u$x7-Mc|_i|+T zI3Zk!^_Jh3j`gw#32qrMr1fV>XnxQ>rN(O^9eDKvVPBsUmdEl|U7 z94C8`T9tS}vAPYKhkk65%yfwhV3iSLI2|`&Tu5L#dCPX{bHhooUN*S#)t{@Wl3nhD|z<QF2vuUzQ+l!AZcztbmItS$i}{DOsXz+Oj3G zbxY(Au1yiwzxl0%B;_}441)JV-?JjkF7}g?a+4sqT>fk<>u_M(%>1M=K@w)4jIYsj zeEP_Ad>}69sQ!pNR-OT@x$>5K=!_K5nPEvHh z>9CZ$vf9~=%vGW#sohnmxyoBwrnR)ZtCd7t=rSKmatJt|Xq*)y0O1PTL?I$#=Lj;u zD-8nx;54j=Hu}Vf2+Jff1^a_}^af6J(sOGZOpE$rFUc{@68ru_Y|&6eLz59L_Ocv% z&MoXwyf|;NQQvYKwfP07D9tFEz2`|`qqqfb-v1;35x<CRc>>;3XL^giLGleE7QX)<-bCnZj|uy}Kp=Yq{MTm;3&G0v2Acd*@|4zyC1=e#Qq zQS$Xg%|}@C+mh{@>D)*w{pe8A-^~gjtE4qvcfZ4=JWEP8s?(zDX5!s0kv%Vj*$yKf zr%E)cqEQKr#?j~nG+Km435{COr~{1>8g-%3)HKieBWP4Yqd1fQHlfi&NXRfW8bzZb z1}N8NaU{uMqB|@ymlc|RR>7Ee_>hm4G_t#G2Q)w6qKRQ=55AdEKDHY8fQQwGV(MF7 zI_E~7@Emq2afl+4igc;^je`^wd~9=)ieQU#4md%CfkW}G1ohQ6H{MM%k8y9eKi7<-8M{e6P`5CW$9P;kX{N8ajHz$QX3gP=OD=oO zd6&wVdH^R>^5QrI<)3|g4(-oo7jW=H)D#b3=M~Q|hh;#+kvV6QrZ}(#cV6@i`^G7`weDV3#)Zeo#%%#RXeP~f~nC*Ig@r4oOK@{Xq zo3r%HhdgIpj%=T5jE6edMW=6kGt3u=#8jW$Jr}6b13viou7;#Qx@RiyGsu3=h7VAuSTPt0rD$Og@325U6CJ0OI};Us##;2 zGxps5sbyg`q-bwD)W_u+Nzcat$h1wlkNMlQaNJWL)3EfWR+_&h{A#!P=UQGgxiT6S z^EdhJZlQ6XUu&e7&G|!IGr^X_=BIsrz0quu^Ep6)ZU{EpYujZMB5;C{0?a4R9yGHg z<_^w~M#~$# z^Y?5j8fx(;Tk`wJfpdMIu3&d+kOd;iU>G{-WJq6&o|8mzac&i4?{5@6e{%~}f-t?X zk^1+ErN6CuW*$y+6hxQLZ|p1`s{5-ty+dn@56F^vp=Y?AEv-})raoWLT@o95AsRON z=BT5tI_>pP$0O)l{T+XH6g1{!{;NVG8w|;|zYdu0h>3PHzUMS7Xpy zSkQg{Rp`}>(VO)T^rnLzP7fw^zqTApV4UCZFHrm)BK%P*9p{{Je@8|@xW2Fr_Ae4q zBpCOyHJ){_8`yp~t`M;jy&SQ{a-4f8;{KPqeY)GHrlM2-x97sgT~N+*9ct4Yt{hh4SrdsNEb@mf4QIse7V z6Bp(T2oKfHYq<9m;|WXV`NIm!d#obI*SyTr)-5G~6%k&CGfG727)ktUR{Zg~?cj*p5VG#Dzz;2(Kjtp;Ty} z#kO_V600rn-TQMIZ1Mcj9b1H`CHrM|SV;DhFE%_jx>nFSrNj z*{*QD+c&twbz)_pc3FN!v*%b1Kc_V`YiLKfVi&9EWju|3YqV;nXT+tQDf){X_`v5$ zvHX22<4R2{1wMePu7s*a_dbWF+f0wPZLA|<{ck^Q1S4<1Cv1iitQR7F5^jF`*#{2z zIDhTLo=x(36kegO>Q)D$-A-w;)qPsXf2rsL)?Lv%r=m{M?v5^dF}lJUoibA$_SFuC zKPdM6h4OzG%HQS6-(Q~br=p7854`j6cc;$q{CQlagMoWbe)rzD4Vg}LAFGq*gqv}i zK{I4pe5FjM|JO3LT}7t0oFkhJnLZ%YE@0mu;4&Qu-23~=!Ifh&J=(%$is$5>@}2M% z)vnL4c+vBx|4w&Ls4KbdF8T-E-4(rS(FENsPwVcT{}bJn(z;7yy8Gh0YB&Z_hwp># zx<8cmo))^D^M7*csnoIjU3b?emrJZ$gPf0tYk%zdpaoG%evgmq?jF|%zkr;d9S}T! zrH0ly>~TMOU0Z3#^1Wic=h)4j!AimDYxXs^G5BN&D%ebHS*ZYDyR0lk{5dSos)JKL zS9d>O&dKiDUkJ6&vu!e$^Kn=0z?htCf9!tW(A{a3gITT<#ev#)-~;k^p7#7zbDu8! z$&j=!%eRp|C7Ruz;IT))`)r)>B6jFQx1L3zozW+XHZzYF{ByJX;%Dy8ww=+Y{%Ciq zv+QfKDeJ=2k2k)sdC4c8i*6QTkxu3Ipa1>A9`l<)kNaQqKXaKo7oBqtKG^emW$-J* zzt0)z0iecx?7`99mBB?L4Sxe_r?%7mr>4;l-*kVvqUT%TiuIK#>&MSDGal@!n~D{e08o{#L{wk(eCW@$?>L+mmel ztxu_oSwqSEz1j2kiJ{1wWx?Z;_)ieWv&gg)E{|S@cfnRAOvQAask z+JVF`c0_``>`&OPT!;gX(oC1&5hEpNF=wbu$ekrv-h>bJoJIU+wjz_fiPX9-okB&HGp|}~354q2~f;>kNQ18o|evNk&k6nl|A~)G&y6cv>vTb8Xn)ze;ndte{r{ahw zcthMyy2Xz*qUX#E({Zdn@Vv%sbr0=V5b(>2sGWxznOVp)P_|RX@xcr%Y2vSny8<#Q zn>EjcJ)RHjWi1#Z9EkR%h??+}s_6f&NeEB`#=s0TA*Hlop-#Pwx>MNLQNmbm;051F z0l1YE4rTDOV0nj50~<=}rS>=;Qu?V63(gc49}K*BKF+cXWAOpDJtKm{JaG--!s0{i z@SHu4#Ru25frvWj#o|MS=FNpZBQ);*6pN2y9Pj8uMa=zNJyW5xSbQ*;pcK#Sv1Qa^`T1xB&wx>L{D%!SKLUyEtxxUwl0DR*d< zJoYOq*Y4i&7sS~Xf%)u{lt_HmYuE=uAmC>jwBOv&n%c5#*=uFp+P^iNJH@v1iCrrT zXQ}jUuY&s)tI%N)G&y?LOWhCuQs~jOry3%b#yICWuB_9lYczA|Yjshe-h4mPK-%`( z@amUWvF1mjKRN4|^^&luEOkfO-bpX*%iX^(Z|7fVr&XwZDZt~Yt;)vr)>)Qq83pQM zvU?U7yJw{b1_nUv+*!5_Z3wlc)J~eBD@J;uI4I3N2skFJ%hZEyy&Pb5qcLGdk1r8Ma*mMs5T- z3JKf(da{+anLHg_pL=tKjWodg{&kI6LY@=(Sj>gpsmXc$RqsvOx!m^7TKD@0%wpgi zsILiD;T?9jJ_K7*-@OaR~@tf%wW8JCA zrqsVZN)331Esu~uTU1oKX`rY9x=}=yFYz6HYAO#tJTq7w&DyjjONRb!@mgC>yHc+g z1;cLm?t8kU_srblvZ^kTXogw#_v@bFfL|{2yKV0j;y^-ud9$hxutL-FV)R!E`M@fK z;>X!2C?P*eQO@UE!o}yCA41{t4GErMBzSx&yGQLtCc=HT!!u$(*gbe?IMi*y!@81h zk{~Lp=f-oP<1Hk84SGPd2S51$mo$yvD@XxLMR>*?mpo0Q1*4-EG_rNlgb@8O_w##H7{?{^irTfq@QfEv<>I{;obC_}mcKgvp zhu>)FBSWU$wWBWeEf!3;*>TTjy)Z5}z8O);#BO2gL&S~?*>GnDY#8}OJX;0ZBu|$- zpXBnq${CC$@H`wZJYJVt{4it0b0~E{!ZBg>yx7KOn+rUuKiY(2)*aihve&(qXITsK zVe+P(;Z}{cAW_9k-vPbG&Fr}U$xHM!Km0WDXSMub4m!zr{>6kRqk=f-l8mC08^h{w zmc{fHb&p4FjJJ_I19)ROvY?;T-kS4uU{#V`>M8T2BDfHD?SL$5^s39hr`-IpPs8&w z;Tj9%GmwXE8)R9KFOjD=3Gqo0c*O*q&?xd;NPOj5$RqeYr)j5b#-re=5s1_d7@og$ zQJV|dDH@B{&bZ@H+@Hcx5ESRjLoJ-^f+H%yx&Pa41Gj8V*I8yj9cIwCI9p4Gq6BAnw)z zum_Ag9@@60FjC<8xYQrR?n&0Bd;ceee=Y z)}*WtEqOay;fW?|-2YkWK2}*VInwk`;US9@oaO%Xk$ByM(WdWIgwUy%2ZYXjxec3% z{ZhCQPplm7O~|bItEK_STbJfM$bO+m6p9=bB1dBpecKk__FvKF-?9^c?f+=WS7J*Z zi6(Dyzg;O!iKrjhZRWux-}QVZ-A!%o_o|Sp@zUXlsr0F6hiO2oxPoqtr;I{-Sw2y*44+ekA&Wq6vNy*a8>!J-)={YB!)ZMlnb^Et%M_pX? z5I|k7`^>MOI$h@ew0`d=GdJ!-eEQvBq)UIlb$Rb5yS;*bp0X657h3a%-G6n$X1CI^ zbM$h>UW|F`PllyAKV|>>;BtB-1Q`&fE39Fc{^It&f>zB{VJjV)cjv82XvnpuIkVxe zS!)L|1TPT z3kNTxztxAF0Xzd3{6+O&-6ofhQ!-+U9+{~tO3${HHJ+-|aIWg*?`p6= z??O-GaK6p#&~a;X_EwQ%&8FD1&pYB-O*5&j7)NEKWWgGHhL@BzE{qYbmw7mj!-)@{ z{H2^n&pQ!16_W;34qsiU^U|g#oe#+x%aiJnhg^Q`dUV9m!*FazCiU3I6C$ z_jjq?t>iOh2f&}uqDePE3~Pcv&!buLO$<9<*SbW_Wfpvbsu4vtF(2&Yr1>@r&%wtL zLSH~k?egCw65n&c_K6425bYmqY_42xi>Pw8r3lYZO4y;GnWz|_pCJr;w0iLDLERDP zuFJnv#5ObEhj@x3R6CdNKQo3Zy~y}0*;&}0~)2{O(dDnb+dCeg5G zLkoKkTjR$5<(sX$pRoPbzC{!s^HEF^a0)A>{9u<@NAxc+dfKO$2&?6E?1<*bluIG2 zm!|W5am0Gg`j8{9d%-i4R`$=3A=V+C^4&kDx~}d8t+cY0ULS}3zku~D*m@c40$@Xy ztvG^a-o%jS!b0OF>b{?bU?(+4PC#@BKWYo$xF>1($(2MaxAa3p*^te)56gqQMFGFH z(AUsDWA%0TQ4$R@Ba-+zHy2_HSqV3ba<_Sb$?DK84spQYuasSl-J@YVlGFXZM>y`! zKR)~KA4kJ&+N8#0F~T!R{jJ01bT}&ApXFNO*ou(qvZekW|51OrR47eq`;L2g|B?CM znQQNVzdUDN`Lz0HwMV}*<*R$%=%A0{L%)2y@YuF!$+qn;)8g-*e(UKUSE?&_KYra0 z#LTIi|6`_FfZv^YG*$fg9;J4BhB#%am`UE@wNo(W1Mtak7<_>pAiae&Jlp(h__Eb9 zUzDROhm?TULCNWUhQFG(Kw`~U?G5>0$~&4D%Ic5h8F6VA-#%6Y?ZFiV}8xBL(l@+P}v#6!|eZrb`!m9!vc)Jb{y@y zj_$O?xBqhT2AZ7;SWz*lO&t)Y{^_gi5Zgd3BKunKr^ue2I;0?8+j3-PM6;4IIy#&y z!WJV`q^KOh{s&F~q%1L&wzvnQ_psP=toFGdSS=l@9P1FH;iRxpahO~|Q`tUA(TarN zyyddSf9{~YS2f`|^{frT2F>CbG5hz>YMiw?-J$9m@i$`*oy=?Ey5SGOu8}6|_|rjV z*J^n#e#p(6GN-RBa0?+@TyvpUFv?Rb9Q zbDob|DtR)wpbjge0WbJ+*luAw;YJ;eIe$Kg^BewGO)N49nOlxOFEX31%szKoz&X|4 z`FTxvB2?Zehdy0Fp8E|2dYcxnt#Mk*Gv~1wRk>;yDhdKe!J29!`C_Gu`lw!kav7aT zpu;n^*$Wq_!P3&DCDm$K5QEDJ&bkV%tDs#*&p9SHPf10f7z0sSvv{#uvs5i!5eh6_ zdiC-69MsF`P9E!T=90j2b#c`K=m#3gm)a?*stQ(BVDUGxol8KYowOeF`rHPk`%zu8Bvb-ruBj>k%yX%| z%L^vdw~n=IuL&)zRzp=wForosy|Tbk6+k}GLV>CPFPKn|&v6;wtqU+IF|pJA9Q$J6 zaapA2Z(8QS3oI!vhc=JN{1O0o{2G@XpPOmf@d*#JTCB(>G{H+{N{X5O4Bg(Jn!oDC(MC#pK+vbV%-J7nu_YrscV!?Y}bvt+%r!}w_94Z zBvf^0c?F&{<#YWXcrS%Qmn_9xSr7>E*#gvsLAVp+8t;o|Odex2mj$ZIxy_^etJAz# z&WUguT$Tl6eR8Dv!gLDIw5!)Q%F=bM^eArd(5>M|rxY*buMMQ&-v}_lQ(VBdTR>|@OIB)Skpk*LVptTUR;EKqTrWITUwcw1YW217ze?#*h zDomhVGDh1yfi~J7Cr#J?PiRl9FoAX{Xov7UJ54)KToJ5Vf?2+#rn)4pC!a6V%aB2X zU*q#_(dBfPEeTc_^R;wwV9|d^_cG)(*^6|`K-aKqRV52+7QhS#?=)hlv|YObXz-Js zgXO5lZLV!W8KRlRl(rcQ$^sP?C5t&EP_cmf2Y!v~`W<6+CIzaiODbvt)#bs8w4I&+ zNLRU7=j*6r_@1Squd9eoLN)LpV?3sP&s7SHHq*Xq@p%2f;zdE#n38Fy51e%Us}vaZ z(>lEb^$kA}stVo#)2)^-9P<+s02A7)7{j+$*Hn~OEaK>}{oFoG08GFS0^jgmODh5) zOf}v>S|$?!z~|SvABWV9cq`YSdzt@)4p)?xFT&{qqwK#xFzDe~8NO;kJaZe?B9l(R zE~f*%^n5ppxS!xx+HOuMSyoZKc-(L=B={SB8`rq*^7w|^sm!su)l1c-W#y&S z-plIpXc6WbQ`{)Lf(DOuxE?s~M98qPd?`1Qyq(<3Xk1Z<@^P8**oTj!t+=MN6dIm= zS-mmf1bkl4@GPoo;e`6*@sy*qs-#3+x;R+9 xl%`(R{)B=F^>{qR$KQIV8mdMtnRQv6G2jGz9!DAak{0j7PR)kFny6_)SX_nb4H<*N%*B>=Z27*a;*lvh%B?i>VU` zPnyzrWQ?&T; z+>s3?rMvt7`Mz%kc{Fq8oOACz_uO;NJ@<~dbw$Ok^9hGVw7hE}8qOk0=5PSfGrP|> zm=~GTxF6pY58S6Nx?zV5!S ztlg;A-Pd#vNL-biUc{eZ!B-!xp#?iD z{ox1Z*H0IN-?KLJn*1hXpfbOffzaLKn!`_d-}ee4rM;ZqJC*U~%#Br_1Tt;%3f~&(6L+8g zyhcwy{mkb{y;REzgd+|xO@&fP<|(dp@A;nyk`$|CwA<&v4M|`M~-nWR4vmO9bdQypoNbnmXWu4 z7Wh5>%ws)~+PH2-BW@lv0hgX!mp1QB#a`&lT$2k@ojj(YPbLqMkKapU`74uPTBPx^ znB_Ji3I8%D{)I}2{KTz?i=Rxs)3}M5;HvXVUaAc)w8=a0oOm+v_$q)&+LeJ7v@3(p z`1KQ<694#h4=;D(x|f$bas3Rhn|ZzT(wOHgti*N%mYU2~;vC^u01-e|5>^I?Yheb2 zvz06>fxX29(GLCv1{~Cuv83jM%RGtm%pBl}!y2eEZ&#}3*X2_N&Nv*+ynJNf!b)wz zBu_rcz%3kqLbjPF8Mw&d5W9Iye)AhHgWYNd0%@qG5d&N!9cS}k5a6ZbAHXff6x%3s zp47`ewR#2IAi9Jz^_nJzGLZp&GYQSAbKTR-TSoAG8y8MI8o~9F%(Wf8gJTu` zc)KPKflI_c(Z=zM9Lz_}_!u84{*1L|%}~*ez`0Du4UBnkFSh6bqCAJ{b$A_bc)QIC zd8c`&{gUF4x9x7P&1?Im7uSm>ugi$Om?e9&yji;U2vH4qz;3-m=ZJVMb1Baao5zQR z*Xp(EG?Tal`E@0oAo`Si*eiQoelOhY0?#pTzBhllH%XK)ZS+cB={4_v5?$wN_PV^e zi@oPzBd7fV^>JS3T?5|IDX-mY-|zh?(TY4jET(%d{Toqr!LLc7LXm*)&VJXM?VbKb z@9*Hn?LYV0DfbgzFZ#Xk`*5{0{Pb<2`S~5Z+?Tu$ky_&Us@LQ7q`b96kcZdlb+*!3 zqItN^r`)d+Y>YSii{P34tamo4*XKU&&GY6x;B6zSoAD6mxtqF8@p4*&YGLoaq8G;> zyl>HI`5MD}jkkEdcZeuhaL8NWRo3vj&2au2_}MnzmO^Ws%jaG13?jrU-a>C-DV-wK zKYgutx>sJ}tsqhhmVmZky>}DQ4Zy+m^91=9yPxs8y&lQC2;s|&KKK;xv$T_Fed&6-Gw0H^%b9!WI?w68bnS5#WUd>aV`y{67EKrs(=+LS;xMsHnE~1|PC^dU zpUhJ>E|`q5m?PVAC|kvC=5XZ5l6Dz~WO%F`c{*?!CQ&FiN0#-eIH*OAoDZDjC7c;K zvSLidf#T=L#lT5l!XX`(sDpWEI8XMNit9;($g2#UFc1Em-{aUo!jNSn+HM)k0H&TN z`IsI@TF$1Osa`%K1~9K+0Tr)q7uFF5#wP3KR$gd zfsZBdu>?Mrz{e8!SOOnQ;A07VEP;tJszz`mrnP&?*JF@uf^(jU0o5=#xj_zM!IN0yrlVs; zq{TGmrTgNWe8JOIqSYQE&&9I33%hS8+9K=TY%pENIXAdRC_&^{!ovLvk`xc>o)7O7 zRx|gQE8NHto+yhdL%>)!li$(#IFjr~&%5yz;wzSvB&Wt&T{I^i(^)sAx6%S&+YNit z#GexvR`+!iUtbhuA+M8Md>#97(xf~r&)8XJ5vo}#1jcW@RO%ULLBmT+=<`ZXA9ZW2 zi0sz-!huonbA<={?MY$vY!nb*!rmqnO7%6};@)m9EAoHZK7d6ivP+D@Y5(GvZzosr zVplLwn34pcBpyEFpR?XS$JK)ZfQDA9v4y<}+6R7=W?zdLu-bQYp8e za{rcy$O%=B=}EtfBK?sRUuBpVJ}pHyOMdXcta-H;={=MKwE?x+6 z4SMNtB8A!xLw=}s779HQmuK_@PZrsx!dR-YN9>JhNeI9{(-j8lF|t;6Goi=$D8JxI zRIUi^#~v9C#(~P>UZTF^bEpz*m@?D$ z^P?%)lHdp%04F}q4X3J)b)`%l$D@#}x+0Q`wxG|jFfVsAO?Ht~!iP7O`TCfulNuaB z3%4=G$27C12;}V;B3RrFG1VVQx$H~>xs)P_X{sENYV3TCAKFTir7*U~=RYI(mkR7` z#1Lei%?tk4p&Kwl;CF3XS9s9kn%$&#VZ)0gaJzAB0mAk zzT9u6+b^}3s^ZXe&1=!cQ)le0h3<=8VQydUPl?@<6xU{=GyJ*QQ+5_ULs>qhbx}7- zk{FO`^ZSiRtIq=MMK!UZBh9~H?9-JU+{%QcrfaGneF6K zgbl-vrlX@I{0L((X)z%F2$vtZ?ws6yV$Ql8562-+*#$Q_~J z%L(;mMkSZ!cMf}p;8eY|K=@_huCLm65kA<*#=cMNc{}XIuKgJptABvKK z#=uYK{KmjJ8ZBA}}UkCzsyT_E-W)oHqY3XGS^{TLXrr&0>*Ru%W4t2P5nC(1tV& z3)v%_-(g-lwdb=q9|$RXA@l$iGSExARkPf99j97nZ^Ib{@X9@EmLX9}qMb4`d?>@p z%PmCZ42|N)Xt#~&{Xw#}0{>pJ8Bc2WCY;n`kX42GB)i;*qDcfZ;Z@sE>-{O<5%V=) z?hkZlCE3;Pls!RNg1K)^Mx8Z$AOqB_Nwm|qIGMeSKIKa&82hx&&+P%^17BjjH<5)B zHI$2L+o7cX&H*awqwCWc-c^Faf;#$5heY@`Uvj@k?z8szw-F%uQUPkySp?f7rP~*^ z9|Au;KUYZDjLqU?JLY!LM0stDL1t`Q-)4}gM;{q7O_KxLAsKd4jiWWnfc_jwmD zBcek3aT4Zp9TJ=x&NSZD@;g^B?iTmDFASi=!Kr1K1$z;?yM1@ZG+uzPrGXP_ku4%@ zgrHDUdzDaFmC6~3Q&lS0go$Js;jnSQ%G)RgaplLG#;T~jV?altnl2ZEwjd2of@1&S z#nV0og|(;#(eHQ}bbkv>7H^vyvxb`~u6?>-)Ib~-Jb6vaK+Nak{id3-Y6Cy=3QeGL zHGm1Ng>JBv1aQ)^P6cwogbCY|N`%}(xV(x+)I3q7D3mCqZt~dmr^0~)vhMXZT7X%NmUS!h+I>~qC z0Wj(F^i}XtUK(^?ED8R}6>e^9)jZ)m&j&I0dtIKtRY`xT33dgBwE8tE*xk5R18I}t zWhWxx#vXeA`hE-tFNa}-FnOjm(W-ieG)EqDpY2LPchBa(BvEzTeF|=>7v+XWb!>bT zt)5mY*3byyQCTK5Gsv#H=B%Yty+%=#cCg zl}WWr0Tsg{rM&)Ea#+z06ZI@$&>_!X?{T;b=>=E#Zz`ztq$e2gyz`2CjIApp$3Yp`+(DzBIRJ7aWL0C_P+a^ z;vRJcRbBa;GIDNRu+wv%R@o!4MrPazeT*TT3ca}V*S?)Q0x2EiJb%dg@R4Og&#|WF zO`ApK-D>HmE*)(>{=tz#KU;m{oE^K)JZ7`WH+^OQ((v7zH-7o24|i_cRCDV+w$BW7 z{%QZq;Zrj=-tqFSwj;-n=O3D#boRokvW#iOz_Mp`|+F{qi z`uhTIKfF)SUV_H&Z$kbHa4U^@n5 zjG?3N#pf`|$;7?M9-|uobF9+65&8-xlq>)+Y2=4N^6wCK_3-Nf=mzj)jo-+JVqZ}a zivpGIo*dJ|)N%|+UTSn-NDO#;byg67!88=e!0-XnhP|T0*1ckn&yKqdG8K#%^dSq@ zP)^z%Z0Iopz$_SLLBW%9ZcUxt8Eo#Tr08wE4>xR65G$Qt|^kkQQ}pSls2eXK`BK9n*c51aobWIUed4&y&3ZEVSQB?sMl+GjqNL zql*@7OhW)7HP~3ZelM_%xGW@Yphu4vZ;-Q?u^^reBs9g3^V(5U)RC5pzTiIA5^@g^ zl0)wI5`@{*`_PR*P%nUPG?%&0V}3+gqplVWF@yUK=%ke%lIq6fnJ_Wfu=}q2=x~od zycK=KW8g+8y|frg-(zgg^tnv~8huiW?Lz><;+m^FM0i1q=q<4{y0|ux-MLws`!zi) zna=tmf*RV8N{X=a1k~JdO&D|G6C0pt3(St4<*TH_FBE){qJj6mrqhOW{QA?#m!K{@ zR|UFIhv4%=T?WNx(w)@kKuojYSqC1hcef8ZpZKhf5No}avSfgew?K1r^Mk>Lk0}@5 zAGyCY+L-%zoE~vYvVw$$>Q{a$*wV-_F$Y51W3PZ5%85fN#%Yh45V5;tc`PnZkIPQC zB4KWdV5kUQPatU_N0QM~CncBc9_yO$Wn&aTp}&I@gqpXE!wFKZ=pKgr&=?zwxG<^E zrH7J?q)@k(+#{ftH64wg))zger=mtE+9*fwEK{tqVX<{WgJF)yeL-TX5lu5)?+y0Z z(<FU-ViZ;6RyCQm=bR`-zoCwRw$E^|XBZA^$%DVQf z>Gvbyi-@@jv&a+N<@t~v|A4tK#BJ}nTD)8ayhKb^&2r&CG^8!TAezo%Ta4mGg?)6g zFYBf>Z69`QXIZqfqe#SjP~D4=_TBAUd_9KG@0Z(!#jW*qd(o=>(Y>WRI<19%Wle}$ z#eZwFR*q9UH9tx3J;{bwIgSs=g{k~yH~i&DYPOC9l6Cd?_-Wno#_K;&O>?eHJ0@9W zDYWW%tI{x2ICi+kbQUyfT$%)Q*rKe((a>OmBZrd zzASZ%TJ)N}9b6?F>^X7{Suq4lv+#iynF}4A=kSd&S#R2n1!tVy7HK*B<)51krRKP^DaVN2}sKH~%2Br>tj!5#=Q*XS`oxbMaPJ z3;L3L!RLs_bugP4v9KF3_9|=`kG(~Jx-}Bz{C-C>w+Bv^go|TqVZ=2}wpw*hhwG=``p*IL#C^Kcv7(nlCYpWgg0@7|#N8Ag0v zEy^{;FbXl?*obNvDlTk-E5*ltdk7i5`AwlCiakqxiF9$^_}HU2(3Ah9Gh-fdWH#Oc zq_t=eZLsbj`&P22w35`cAEU9Yi?-6MI|OdW?HYBcFX&qAhW2RVdus#R*41Zh*lEzi z-KOycU!mg5MuiB|kLAakBMJ6a0g^x5`$`KtF$Z|_faFB^~6 zdvuMQ64Uo}>vFUnDbpHBsOr<6J)kZ~<&Nteup~LBCAi=|tuj^ma_UA(*&SpZA0NpX zKkePl^iGDHa{^-@ADKIf=X@&uOvyGkui3igIeYv(I;%xrZW)ec&0E z8o^W)Z%i`-)w5Ge=fHBL1rxhWvokh^x0HCD*;}o1$ljJ1_H}DBo5m{8yw-GkKktMM z^Jj@M(3*!l;a5|i<}ZjfFyI|q%pPN%yS$s8rp5+?<`-gw#}BC{y3oh_?i=%;VBd}7 z!YjOW3{un+KK^uvN>+_uSPA@hXjtAssN)M7WDU`$B0Zn#PdJMZJ|c`$G`xY5h#TEW z4gNz&7hv|?XVP95xK_zdI8`3&Y1TUt4j2WnJl92pcL}uJ+O$JrfvQ@6CqB$a(Ac_m zQ>maE@N)NdUk^))Vkn`~C-F&B)}h3!+`4vaGZ3ND*SW-`}fxIJ75$>6OkflCB*_fA&bemn0jgGD*>D%3@k{)C4RtkXSG)P3F z>m&5Z!wIK39fts%bUk23qPijB)KNKns-08~=~3d7X_SaEn%Wk`PmxcePo72o008u_ z@NWwSrW+XTXx}GaWI3fEL>Uf1PH_ajhNdB2>xM!SW#0#1*1ZrtVSrqcE014rweWU$ zrVV;7YM7$%yt2$%#Z|+Sf`BmI45tM@&F6#XVaE}pd(Lb0^WBbC*5azNeMZ}=NGZ&J zVRQo%Igj(aTo|y>Z(};_CxMXM$@6;9-IPXIW-d3iy2pU1SvMM{!|C^?=5Jh>q&-|T z2$Rgd%r`WQE%)d!5}=SlR%SiG!Pf)W5zvCAsPPIm_g8bW-J zx`4cb<>%Tb^<~C{zCZ|dZ}QQ-iV6LO27`gMU!U6ze?9UVgp-DqJ08iIbqX`&J65*=LEKncicpL)(BljkCl`GUi*|T5b^) zqMK4^N{E*AUscY*RUQl6e;gswo3>+DBwi`440;Ld=QwAjh34rW*O|JhWu}LWbsm>(_K$!8)C0 zPm53j@egkLZ8M&CwH$dti_4ax>JWS_@FwgybYldIKqgBrE*xSn_+OK`did3Ts@4-& zH&9V^yZ8>NzyWpxRbxcz36=Lpw#H#OSZBu_208B!MYO@8AVz|Az3Afc)z=xWhx^*#xdv>K2S6adBh-RW}naD#}DG8e8(q$=%UhzoH6+Hp~% z$+c*h1k=!cN1xPZk^Amu1B-rCZ;$tQ_A*yXT+HflU#x^sP#r7zS|Z4*7nwDCShUlb zB)GEY!#*#WrZS8 z6OYMqQUt&n+POT?V{p787+8_KchU0x%k7v9;Aj`RAF*C$EaZy1vXYiZkOxUPdwE}? zQV?q;)*ySPO(-+KP=sn9P22lX+Rvfu*2_0_htjA5`fVXh2Lr09LnBOIE&kE_;O#xraFt2A&lTSvewA#fg-x0DfoYs9e;N*!32a)Ij;zhS3kbVmue5k?f&`XJXZA zg1jgIGIeTTL%D}zxq}IM+2m(?TdsPVuqJ0kI8V94uNSa|$S1OvF1k4q!`hBh%jm|< z5G&WU#LY&g&&@J8p7q{X6<~vqA6VjtR+eiVuLZi%QLkRIR||su@MY~C5H;7370|WO zzq7mWTXu`?4Zniv25cRdA6WLIe_^#Y%_gD0llB8xg8dsQyTG4nexK}D3l?F3a?>Fo zk|RE_io^tuhsL;Ma}ayqj}A)WSEaDzDI=HmNa_=a^*{n}Ha>7rwcQA-31KxMtWJ%= zxI|I`H^QlwNq?^EvV-#aV;!@*$)e1nb(qZXI`Ct`2S_bTg2t~Q0R9#8iQw+{^J`Sk z@oj*6_%*kusN&{I+MK3o$GRO$AUS-%fxo7&11}Mwj$?4Q3~A6z8AwN7CsTu-Fy~>W z-v;OJAi~W_f*;RqPR^~o7NTOfv)fdA+(kAWoc$mV@ti6@8pvxwUKCGmQ_1f!%e@+H z!T(4LcYr$c_P$N&*nODI8GO7objBYo=(E$^Gf>YB=>WB8!F@MpU_#LQUMp_r$`})r042y*2o!fYod0pcE-lYw) zh240gB-Tn9()57#!#VaKFr+Ufbl zMVntOl9n_F=4^G+{V&o3rHNiR#z4$MF=0WQlOC|lPEz7@JZ6z)%Y2q@$4I`m?RQp4OB&zth-#DN#g7A5t;o86Lsu0HPg}epCBA#QPkbG1=!J51A?5RpuEX^a#0r3Dbo} zAX*FbzNm$;*GB0TjYA)eUuyV ztz`AmJgkeOa;Qr#s>ICt*@n9!x&uq{JUAq4M(D&R(tBd{UG?q!FR+m4|kLjf3var(-vY|-x^!R%H4u5lC4{5pRXkyq; zXvH@w0y~K>)DK$)RkMCbo))!qvinhh+ROaCLbS!VjbZPbGbyS`>P$Nwt}0h9v3Y}f zxt?t6bj|;*tE$a4qpgkf@(8$^eR^rXRN{U5v{kv5WU3*TA>27KN=e?v# zTa4|qsKfu5Q&zT@%-in=SGf6(JOC)-R~b`gmCS3+lZ1edZenwfH@Z_~I5CyatlJ|n zs|hB&;nREr!39@*i6?b&rpQWKb3J79j9R;~!6D0+qJ6jmFqeG8s_54r%GC} z2mEzpW@AWu=xi(fAe!{|Hq1_vmbAum-*X7aLP5%i`<5-71Np<`+aVPmR#(Ljp->kJ zO(~uW42617=qL)sfb*nKXeSEYibBt$(5}=BPb&(29fe}ZwdyGJ2Pm``g%S#N$ZAq3 zwDE3&f4o^-2w9=%JdKy$ zCp;qs5}VaVlmy@`}jv}@hsyPDdy zb?!{;^R~@R*qSj%N4x1zp{2})Mf>pKhG`Mx1u%%zIlfj83%`ok(GiX-uEX``T}6zA zhh43NkkZ5a^G+~2l;^pqPRDjSjl;4uzAO1qp2Dzg zLf8B*fUzHBLHtmj#FYwQg=r2fuz}gAuNAJ}@0k|yxADBK=X@SZgBfcj3isY2M!*l? zY2N~s)zJLm!xE-SD)XF2jyum00xE?MQ(Cw~WQuAR4{#Bt$j`T@;1j?yUrOXw(@I5H zE=N?!Qv=V%54nOr_VGS{$a4{WZuR^vR~&VPCQV}%1b8n^nnM)-cu z@CiqrkN3wbk?^1w8+Nd5$5;f}D?YXNLrf6)Uef`-?*@bh2+tM9iJtO%f_{4bgy#cS zhBoMPg$F@P=`?83Hiw!gl%QPYqJj;YDA#>Xo<1h?F#WJ6S?YOzP*M4A{WS%cryy?k zhjn%XwnCMFJmu0OvK*0B=2v{IsAbE%L5n3Mz%=&;qycic$ssOa52`@L;ue>|IT#1X zK=I`Y@+>BlvS|)IPKN7D12AN=APR&YD?Mr;9yZO5K%%T`(vZG54(@n?FGKY3TQSuSpG zw!5X`gMOXpISU)Qi}=y(u=xQq@Y}U2*Nqo7tUgLM8{4U(&To?ntHm_MM`&0yspt#> zP%9sb{!!g9c-nKu#rnI}kaWb6^`}AV+_(Ib$(ViwY_|T3+?$l2+bi|;IcBsuX84QS zONMOzWZP;81zPr@g@qbC=iuhC*#e?Q^V}C}J*UYZmlypN0I6B_G`po*S(-WjNjiRT zxZ*dpOBVawL$jl+W;SC@y z?rG3(4s|`)j9@VNC&%nR74O6)J2`!A@4|T3V~8P+TlO+`I^NK9ncpnWXc?=X0>*;Bi<|O^IOkl)H&u$zruh!ozx5GKA*NT7 zhbJQU2n_Xp5}}A#Zd5^E5RGgoal=7Hdws@5UpPetD?H)%dT73Tq$}F8K-YcYjcl+j z7M6?i?d}hJp1-+Le}PbX!;3u#2R1frCD%5#Ak02p9S>CRZ*TP!>u;ehTvl4mP-B&T zD6Y@i#{LwoCrMm;Kx*jt4C&uH((we*vZfX^lk_jAI#!bYR8z-6qCYpSPUBS|h0AwN z5Niq3qm6yh-kR-lf0%XYpRHL_uY_k8?|z^->GO=bs&~28yptWK;*&4N8>QlBYML%C zNUyG0vzUGPEEDb61Md0#YR{Xj+UaY(rMaUQV@CO8Kx(tI;M~`Q1p_o6vr_#|7Cd`o zI!}MWqU!w;Jj{Vj(c7PIx<{$Z$$wq4y}@Ha>9tlV8_T^mDWZ~u_0_pACZ#nMQs->8 zqZfU?<`2Fv{|vJ79Q1hplica~dwLoNXVeUqx=!9zyylkTU9FzCxxK0$nmhD(p!!~S z^}d<*-V%BUdi` zeG~l0XYW;P*yg~h8-E*a=ncOWJyot`FDy<5-0#oteOEbfXRrRb$E)|Qvi{t2zA-wz z{M27d!u^3Yw|KH@Ja7AoQ}*H)e5and@s0g@{(@rY6}^fAJpaYMtbOat2O9Ll@zz`2 zg9tVnr8c<(RXi)}Gke@;o5}`JVMOn+>iV4k$Mk-4oz5G*UDVe;dtlSt*Pm~CL+;4I z>j*YTn;f>+0y3BVb}8B`N%>Oe+!w#owWfltna#d@n5fP32j=i#+U?WBJ;TB~}-T%L0!e?AyE<*QGz z;!}6UwY!kqfU4@W_Q0PWI`Ccedx!90$Cd_3+Vq=k(AG__zX_N`d!&e8l5Tvx^WMY0 zBnJ@N!?)K)8&`+3d&6m|*QuPcy5H|Fezrtmz16oYsBW<8w@1UzL{|?+r_X`gTl4+K zQ>CsyQ*luw`N9X)WTlI?WAt33X` z)Vp`dkIt@2yARzw)oskv9sE;k%QF|;sgB)I^?0POEtk|qrc0) z4}f63`|ZDu@2lxvHrDh<0AA5|yZc(k-`(W?aP@m%Ypm95Qr7V&TZ%dD6OwE7_=U#m zyqe&*$A9$;iNk&*d9atMvHC(|@XUR-Y`4BmnIk?)x-|X1KJvA?wSpg0tA7t=DZY|* zGc`p-4|Kitv?8)-%d3)O!JBmB8%ws`b#m+b#-@ny4gW3}s~s^l^4TZ$YuFC4>A>UR z<#JQ`lFGa#2jx)Y6&5_96#O3ym_6LX@yOn&#Fu2$N(C65b0n8a;-`(<{eT_)tK`{d z&JFt4TyTXSUm9bb2%5}4FLyv_iTEH_rYe%QW z>bDt^s_ZXB0>G?qk(6guI}INHt<$SmbQEFSy4e{&Xh+TiHX9kg?P>568xlVg4Ja;j zayuT_nJ>^b%))oNf+0_?+aC&W8@pknRt% zirx_4`Dx6n-AT?4D3a;4LR=*--&k` zn2r~DTt&!Hj0eJZ$}_L=5&*ZU9_*YDggH0GHF--&3IC9O$~+(X_#S4=i4eDA$<>cN z+n#f?=AFR&0~N7`_mi&0myoK-p7RStynPwUN>}d2l;&aplN5SE-g{An&@8$qyx(&w zS=oj@!d`n{3j4Uo6OsMjvPc2Kdwe3-r2drFF)`QZWypAA@}UI);4rMm`-(96Kvxkv z`abb@x_<1XPQv5^vD9fRCLbauA92rnxrkN5*e=9M$0WzpIRxflxxR3hhhg#o-{`$Q z9l<_$zEwZc(>pQw@L=*$3_?sn40G&b^5GdSj6cs>8Q%3EcEX<*$&^7j+fd@9?wj=={p2t*NG4Zh3KMul^Hhs=c3z0E51 zijv+Jz3thi2Yw;N4gGP7h|N0cY>8_dqjmNAjTJ98fTi@CdzgMV8WwF__uO38`e5ac zh8+iuDCR7b{LKHq!l|%OvT|H zX)qfZW}PTQUQ@wg{r$~6zpi4#Dp4sWlF>U>iZ$xiTs2~CQXqI*_X(YFeDx`5(H2(P z)Zu>Q5xMEBTHH;5TlphOLa)m4vOT0SI9?Nel?4-?)Ev(Rq$vVCH)0@1u_NW^2`8~S zAb7gCKKl!$EmE5KgBzQ3smSRoq6Ol#eW~m>j@Q0n(DC^Y04QVx2hJ zvUhC=wxqIGW5Gb>fy1i~>@9N2kDpWUa!Bu(g_U6If4xNocZg7+w;477WoM^;@{ryX z*D8vrys3RzNlAOU1bw{@mhjpKcs$fn70jIztb+;M-UcJ|(snPRB3J5;l3?Q;`0j9T z^bXqYvie;zjn1;Dcx}(~M!>I<-)#%eFNDphYGvUx3kj=AF~?E-J|eh1jJM2h1SF8) z;o}W<9OKPzj<;MScsxk(AeChA3impWz*&xZ#_X)S|EMq2D{8t`DV!$BZR-}rO&urY za~k9@L*r8<;+IsY$%{!T!3=`vqB=wGUOGO$R7X~nvb$$I*iFO0Q+&$ECmTALsxzhQ z#jUGK+u3ZTv|#^Y>6gs*A73w|e?MZOO+6oMdUB+T=KucrCBJ{3e*b)@_qtB+k`7w( zpXx&gHm%j%sUbT4Nn1zFjSp;HvR__u`~}asH#@o>JMN>}#uVIC3RSSxq_VqP|D)K= z`y4~q%uDUi_x8kL)vuI+{NKyqdy%6^ov{X;qG=I!*C7mWy(jy-b&#Ro1=@MRJ zkKs3IsckZc5^gYxv7gn4{7^^BJj?8^upjg3c5%;+PJ$T|ceAz#3#;wn#;rQFF}95f z-+YXPn^CTx=VT`M>876sfB|p^YtpJkrx&{X`>X2T^XV8$jTX^Q!E_O+ zP`fztC8IO3!*p82gY*|^o^hVjlHM=G8*`H1lcL=!;r(tzXymesn03jpOdZ%)D)Nwx z$7|<0p}#>m3Zy|@9yp36)>J$fjv@?4!Qdzya1>Xy_tfim1)E{-JtGhU_Z1WNK0=N( zdN6_c5(JOeoVcHvct`A<>_M^#?t(z>35IyC>O(VE1@eHItBOp`RWUPH1@aLyS2cV^ zuIijmLG#8~nCGej$W;ZOWB)>MCP>S{I$6dh>yusJp7sPmTd9fZyg?f;=sH%@{IlQiN|57@xt&8_oD)}G}7Sspp)*^9gG(E{~Y^twsdSugYzPRm+ zEM4JPr>}1QPiwTL#yz5$Ifbh=3V z!m<7YvDVMrmqt3=P!_z!{yhm37}+jG-U499N#D+29@_RBo z!sD*~Fxt`=P3~j*ncyS$1%KRnUXFUNQ$$Y7%h*{l;ygYMy0|B`VtP9&z><2e#5JTj{y#1?cl< ze>AFue#{ObbMzpW0fy_I*$85*pV>LEc&qLT*(!!wZ~d$`cgVFqkkfPz~b(A8wddt-IP-CpNzycwY!Ys+JY3!?D<#EOWn%eF}ZEDydhC-{|5 zhs(Ex#kSo;J7PcEu_Jp<-$b=_jFW#>uiG#J$R1vPSSrH(@wzoKHAET zwpv^Bo+!#Ppcq~q^vH7}w+%(k2TuQ@w1}PpD2ahz zYGBa~u5kYSI2W}%=ER%5Ojp*z$*kY}Fw&qgz14D}H+~KHGW#6ovMzO0y(U(MP%A<`8r4CKg@gI|9&6EyH{&s4*C!fV+1R%rH zVUZ~^OUkYF=aQN?^P6R%NW~W0Y)N-XZ9gt{mv}}>f(8}sVPU=J1ZQ4EuC1hQg>jSb z5B``bIgCMs@P<-I!~i^oCCi+<*ee~dvC)-_yBg={huDw+Ipfy_B&+T}ryRKOSkC>= zj-09+Rvr;CUy$m@Wda|n=&t5p2@%43vfzEN zYjk-X0&7pMiM6K=bM47Gx%Pz6#DmZz3r?X6p~;cg_(tr_FJUYsoSQMQw!gAkyJ$mtg-FV0}v;y#jWT8rp}%N0Gg^+`uA!khj8l+!Gjj zntq@=@>8-yD((mXjQ&jCMMHOOKTfip$u`@;EZgzhXGwTHXP~K*)-A+OY)t;n#F)F) zMIno-HDV2|S6(VuYYfrRn|Am~bv1j&8&kz{?>p~FC;a+}d4DU7Hg+h}nv*=IUlaa~ zLv%VEn)^bb5@#K6DGhn^kN5e%>90~=Q>Jy;-K&o0FZt%8wa4G7`sU)Q887eAABs=^ z%>MaZbf$dh7vG?_cSK*^vGcj`@^8Jr@QEMR6x_A%8{zNCIl0^ZW6n2bO9yv8ltR>| zt?_2b(@W$WsPBg9=<_t60rD5(1_uIo7l3qCSAGRiuR~7}U(obx0i98DW-DXfp`{8t zgQX_b7YWbmYAs{oAF5buo4Xpy91nB`zx#Cf{^YYltO4t_Go-kL-?7o-C8tVD!q_uK z#m}hdbJ;e3NL22Fn0#`FxMr^!Z#cfAb55iqd(G)5p3-)t=o<@nvDOj@{t>z}QYg9*AQz!y|O77})s>EJV&rr9t?aq+ald zT<}K~ucm-sWXRXXV9E<38uqhpe{D{oZY9{_QIe(ZFlK^MRE>aT%8eZWEKJ+i3`Xw| zW8Y=5?|#qP*cDc_E;$-ZN?Q~MUcweC52~78!h(xeh4rYrfpzxdeS`2=?jsUjBl37H z{{6-}89%qt6>iy*BeSEYi*)FQ>JOnVkh9_Slv-TtS{He#EcRU}8g9{ClixcUu7o-v4jcd#!bgbhUL4<_K)c73l_pgKap}Ps%lr<8mKJ~R|b{`!%J6& zmZKWxq883p{FoVPXFgh47pN$`yPplYC0+tCp9AZw{7*s{<>p&gUa2 z6MQUuu@8>HN@e(#ry$j@C@rrAY}QrUb`>t5tIo&nReq1Ia4>X%Wo;Kt_#;yttb!H*Ac0gh%V`4_#-G+@RH5<%ft06!=i7|qEBN5%>=9T3?kvPhqm^j3iDl(mZfP2a zhcmU3&Fd)u6OZdjrXTni^#kV2;00H#fO_EGb(wDIB_QCFbbL(C$GyYE%jiJPWtvOY zVA2-wv3I$g^4i*9Z8egcQ_HywG|S1@5Khl+P^KMqx z=M#N&C2$HIA7h+ux>@b;%JSvqOY6$ZC@&*7(A8cBnsixaoA{WzM8`+eL>({FO#x1! z<70>GVOCjHU|G1rpV6s_8^HM?!s2nc@$s-2-#O;v+rrC(w}#8ADk|J&-97^3gg7Q? zr%%>zg7ua4`v`CfT@L6zk9%ir-SXhFi2;IpuURHQ%gSrRt5$$rZT-@^%g=#=vNPj_ zzl6=}JuSn-)bpaN(@z-#nKttcms4n$2J5Tq{sFD|Y-+h~&~nc_JyUK)?TS$CtyR^u z@akn(K%vW5Vyr9;g!pIyYFQBO#5^Y3;+c@g1kYOnwN>2aQSsGzUV6@%a2{NivnSf* z$kYqNDL^x>PH#TT(Bc<2a8U|cZfmBOmht}JW{;0!nrG72Ro0fT)Ir%e=~0EhU=!zu;vePT^GsUT{U^$?yu^0=3{33s3aQb^im;zayB!yL^JTdkSxq zKgpUt^}pdgm0$|*3h)l$J}<*NP+A?VU4c=)qQ0&?qbL7ZrdJ??2R|ldyX;E7x2yTf#u7BVRJ}koIY?e^jCRc(r4_&3ecN=B2*i^ z8Kyg2RW{)#rU0gtS3QAmudA=Fs$Ry?Vf%S3FaWZpmm~ooV{u>07pM~O>;NUnrEWn}MYTXt>Y4OrNn)kinI8 zxeCG*K74+|`MBz8t4#k|Rb7WbuRa6=TYN=*u7WUy509D5ew>i&q=US&A3ySN3jJgZ z<*2AFFAuL=9;{nQ1y__m<-rs>9z*dlXuUNYszV%@dj-t|a0)(;ojAVD#9R3heVG7G J;A4VJ|2H)TJ$C>A diff --git a/audio/cheetah/cs35l41/fw/cs35l41-dsp1-spk-prot.bin b/audio/cheetah/cs35l41/fw/cs35l41-dsp1-spk-prot.bin index eab6457cda9c3c4ed2895bfd8b8b421b30876749..13ff89afbb3d8a750556be543d791b0a88361af3 100644 GIT binary patch literal 4728 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 W`v)e-bnt7Ye0J;C(XKguvQJz zFm1aVuy|c@gq`gyw1uc83s$Hbg@o&gr%{efh-DDVmS9X6a0&BmSVF&hiAJ|X`JybwubH@XUtX-C7HiF9AU(M|7! zncW&85NJl}Nc)g|by|^82CTgw4sq?MA0N{iEOr)5N&|CyLuc#9ZphqkF%+UkCwBxY z`6f;%vp8KVvn+k{*-jss%woaEZ(_AI&3j9VU&g+Y%~7$>bXw(KB`>sv<3!&J3hX6* zZ-vfwBLBM$(8jS_MdGL3+E6(T;U$6lSdcQv9w?PFz1Vaof55teuG0p0U^?zBN@>_! zMS*A0=r^(@RYS{_>sq01ivvj`H1cv$3S%=P-Xu#^6Pk0IvnZjtK5PUdDm4(SCvM`v5_k?+15StpbF+GXs3G{yqrpkw%im6~zA}5icsUWh0!f8;& zn=HPN+UV`Y2!M056V9YqFgFVZly5ABGvM0_8%cY({hq}Ip;_2N(kyR=6ZX<9$a0qB z%>o_=;4@p*XZCq;gT@WAegGAN~H z#9viWCK&4Y7c!+%%7A$MO5vwkRivjNa*D<1XzDBJFr5FgtR zX*g6`$MCks!rL0HDmx*Av#t}?wsB4bZ7f#RxL8+NgOQPL;UvcN2OPynH67q*GE0Y& zihoEDolEkQP`Z=~>L5viN&ujrM$t*qJC-5CdBLvDZbUU~HiRzMQOfI+zv$ znAXDnayBB+mz;)TgB=4e8iLXvr8;J73_g=TA+}sg+Q)`y!%WMgg?W;76Fi7*ce;6I zMb;Zl9%CCcqoKjFXk8}F{YXa+u}UN?INXOcz}udHY7B_yG3bwZFmr%fxi1_>8-WF1TowDN76 z0R`fi-@B(kpD^TK`Ch8lkX}jC#mmCIs zAqrox;R`wN1$a&xg5Z7i;e>&)8kZO(^%LlwU?QMl$yV*wDcZ=a3JE z+x>$UYW^E7^u^eXkZ5=;=F~KQKIYzNgg^}!WrpGRRK&GMyPN@->wrXqGM=<5Cy$|C zI0AYl7NndRedwj;fbue$Ol&)@CG^5__^Ac#sZRIPl|{enEIPxAy4lm%?O1>uS%fX4 zJ{hWFkrh`^%a}1-rBj$5{ABYFISo=J_bKfPRDRS>Dh?l z#-uta{-N}?P-_d0Hew^P?+~=&_DlwGxVDmX>I%;VSZYh z{zn*oztD+1WjR?uN3O|IKpzm-pb>#I_eF?686%%PWYGQem7C64Z}bO%QI%p%OtcDh$U>yqA7%C?x~GoAKFO)wHW)TNEi9@ zsMbiXt3~MmcNmUns{N;a#Pi;&BdISF-->IA56oD@%&Z`H9(qq_U2YLkz9}Gk7Os?-n)7n@D68AvyUwD;N1qd%mLEZY=k+p<=avw<2!)5Ta_RWiJ5OlKCo(r}i?a5l@i3fQQVrGMcneGr5E5 zh^QtWj$GYBW0TICNwi);z6G-}Pb})CfTM7m6IImn8sEC7m3C1dmk==f8wR(w%~D|E zth>^K^y>o((Q1uW*IVA5Sv*f_jp6$>9D+S4cQrvDR1Ve@}r5$;l`Ka9ixZC$voX>c~=J51XwYM@fr9X6hee9 zK81@in<$0bWFBh#0|0D<-GCPb%tAP82xo4UJcM%`;hen-!5*NE2*~ZdHul@YW3x=l zw>V?4uxXLyJ-Letd<+d)+UGFkvpSA76nA@v|+9#Es5o=;)+SflanzPjoLi zKBa*En){H{4n+`8?ZjeQ0m>?9!)i10Xq{?}+yn}kjQa~vCo+>su>mXiQ73OP#RT!BWQtPU$T2~oKM4z`RON8lJ7<4~Vzhj|ic(KIsmZ3C87w^sZ7{aGpniO?bzZQEux?5Z zubZ$iY}2D@h&7oyFxlVV$-@gC$t2UF{a1cFk)?L=H zWFGgkfbNdrhmKkK*APO$^0p@CP_63YIypvb!r4WaUDR8&a+wuxGD8a|>1DLWP8J-u zyb@G^y%1Q9n`9$S0Khl7mjX}P>B&7 z0V3Kb{V-qh=bIjB-|BNV_ zzp(o{L^Cy8^vSB*fJSvrjseJ-^P8atdw+JncM3cd(a z!y2=pX1$p4RrpfGwwk>)WkU3%Iiq%w3IPkg?_`fh{UJF=Rt=|^Ze44W*ye!M*fX-3 zt{um2G2gGfM}9H7r=7pd+=H0((u{$7v(0I_Cx9YFLPeVs< zU!5=F+58Q+h#8PL=wLrLcWwBMm^riBU!9_;xn|=+;az6_pN*5*DD#tzhgk4v?9mm1 z5Y3nuAG?`}=EO~_g)<>DzUhDA=HAU!!kEv@mo^_1X8y#SwdJ?D{J%+jc^tic>t3(W zE12&^M>DV49i45~)!)Gc^N00Qn8W<{`foF*S^Ui1%w^U-Gn={1mvQYe|AMn<-rO*g YN#@puTUn0z!-gs5;Rew>*HH5R0b#ocv;Y7A From 73c42734d101bf513d759b9ec981332640d176a7 Mon Sep 17 00:00:00 2001 From: Andrew Chant Date: Thu, 20 Jan 2022 14:16:44 -0800 Subject: [PATCH 38/70] Remove DEVICE_USES_NO_TRUSTY for targets. Remove DEVICE_USES_NO_TRUSTY. Can't find this referenced anywhere, might just be confusion-causing. Bug: 215592080 Change-Id: I0ff62461fd2e7cd6436cdf1f17b9ffefd1afb9c9 --- aosp_cheetah.mk | 1 - aosp_cloudripper.mk | 1 - aosp_panther.mk | 1 - aosp_ravenclaw.mk | 1 - 4 files changed, 4 deletions(-) diff --git a/aosp_cheetah.mk b/aosp_cheetah.mk index 484f80a..76ccfe7 100644 --- a/aosp_cheetah.mk +++ b/aosp_cheetah.mk @@ -16,7 +16,6 @@ TARGET_LINUX_KERNEL_VERSION := 5.10 -DEVICE_USES_NO_TRUSTY := true USE_SWIFTSHADER := true BOARD_USES_SWIFTSHADER := true BOARD_WITHOUT_RADIO := true diff --git a/aosp_cloudripper.mk b/aosp_cloudripper.mk index 8bdb9d0..ba4a156 100644 --- a/aosp_cloudripper.mk +++ b/aosp_cloudripper.mk @@ -16,7 +16,6 @@ TARGET_LINUX_KERNEL_VERSION := 5.10 -DEVICE_USES_NO_TRUSTY := true USE_SWIFTSHADER := true BOARD_USES_SWIFTSHADER := true diff --git a/aosp_panther.mk b/aosp_panther.mk index cc62567..a52a40b 100644 --- a/aosp_panther.mk +++ b/aosp_panther.mk @@ -16,7 +16,6 @@ TARGET_LINUX_KERNEL_VERSION := 5.10 -DEVICE_USES_NO_TRUSTY := true USE_SWIFTSHADER := true BOARD_USES_SWIFTSHADER := true BOARD_WITHOUT_RADIO := true diff --git a/aosp_ravenclaw.mk b/aosp_ravenclaw.mk index 1ed93dd..55e1ce9 100644 --- a/aosp_ravenclaw.mk +++ b/aosp_ravenclaw.mk @@ -16,7 +16,6 @@ TARGET_LINUX_KERNEL_VERSION := 5.10 -DEVICE_USES_NO_TRUSTY := true USE_SWIFTSHADER := true BOARD_USES_SWIFTSHADER := true BOARD_WITHOUT_RADIO := true From 5f9502677f0ee2681217feb5c7ac63b22e2ecc1e Mon Sep 17 00:00:00 2001 From: William Tai Date: Fri, 21 Jan 2022 14:37:55 +0800 Subject: [PATCH 39/70] display: update rr regamma table Update rr regamma table Bug: 199469302 Test: convert to .txt and check Change-Id: I31cf710568d61b61c998710e0997f9421b5245a2 --- panther/display_colordata_dev_cal0.pb | Bin 969 -> 988 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/panther/display_colordata_dev_cal0.pb b/panther/display_colordata_dev_cal0.pb index ebbd46edcd2463fa8111f252f8b08f7ba11960cf..a1600ae31d490f4e00e135ca9399597545751334 100644 GIT binary patch delta 51 zcmX@feusU6mxj6)J4cj&i^Nn$Ee;@K8lyxT6PVS`B(aba%v!`L@t=QVd=@hRI)@A{ delta 32 kcmcb^ev*BHm#Byq2S=2^Oh$=LCNQguNn$bQ#-c1{0E#yV8~^|S From c620c823709fd392014d4f2a5cb507ade65674d8 Mon Sep 17 00:00:00 2001 From: Andrew Chant Date: Thu, 20 Jan 2022 14:04:26 -0800 Subject: [PATCH 40/70] Enable radio on aosp_panther/cheetah Enable radio on aosp_panther/cheetah. Prevents gpsd crashloops. Bug: 215418492 Change-Id: I24398e745e38a9e082c362bdccb30e6078d583be --- aosp_cheetah.mk | 1 - aosp_panther.mk | 1 - 2 files changed, 2 deletions(-) diff --git a/aosp_cheetah.mk b/aosp_cheetah.mk index 76ccfe7..b81dfd6 100644 --- a/aosp_cheetah.mk +++ b/aosp_cheetah.mk @@ -18,7 +18,6 @@ TARGET_LINUX_KERNEL_VERSION := 5.10 USE_SWIFTSHADER := true BOARD_USES_SWIFTSHADER := true -BOARD_WITHOUT_RADIO := true $(call inherit-product, device/google/gs201/aosp_common.mk) $(call inherit-product, device/google/pantah/device-cheetah.mk) diff --git a/aosp_panther.mk b/aosp_panther.mk index a52a40b..a4b5617 100644 --- a/aosp_panther.mk +++ b/aosp_panther.mk @@ -18,7 +18,6 @@ TARGET_LINUX_KERNEL_VERSION := 5.10 USE_SWIFTSHADER := true BOARD_USES_SWIFTSHADER := true -BOARD_WITHOUT_RADIO := true $(call inherit-product, device/google/gs201/aosp_common.mk) $(call inherit-product, device/google/pantah/device-panther.mk) From 2325e3deb5172ed432f0c20461e367614b4d1ab5 Mon Sep 17 00:00:00 2001 From: Firman Hadi Prayoga Date: Wed, 19 Jan 2022 22:36:43 +0800 Subject: [PATCH 41/70] media_profiles: Fix camcorder profile mappings. Media profiles were initially a 1:1 copy of previous project. Bug: 215340698 Test: GCA Change-Id: Ib82393ac0df5b879cf9321bc74ac26d4b21bdc91 --- media_profiles_cheetah.xml | 186 ++++++++++++++++++++++++++++++- media_profiles_cloudripper.xml | 184 +++++++++++++++++++++++++++++++ media_profiles_panther.xml | 194 +-------------------------------- 3 files changed, 374 insertions(+), 190 deletions(-) diff --git a/media_profiles_cheetah.xml b/media_profiles_cheetah.xml index 9a94b6e..a28b7c4 100644 --- a/media_profiles_cheetah.xml +++ b/media_profiles_cheetah.xml @@ -1198,6 +1198,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +