Android 15.0.0 Release 20 (BP1A.250305.019)

-----BEGIN PGP SIGNATURE-----
 
 iF0EABECAB0WIQRDQNE1cO+UXoOBCWTorT+BmrEOeAUCZ8eo7QAKCRDorT+BmrEO
 eL2HAJ9GJqXQ084waJriZMG+pKW+8L7hAgCeLGKh/diCM8fFbNP6nFkjxriBLTQ=
 =zXv6
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN SSH SIGNATURE-----
 U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgPpdpjxPACTIhnlvYz0GM4BR7FJ
 +rYv3jMbfxNKD3JvcAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5
 AAAAQORceteeIyBdxvcJWIK/oycyapBYr5lWfd9211NCnQrRQ7c3svxenPoZdoLVtsRLXY
 q/7oUUYD4pQfpBB2PF9wA=
 -----END SSH SIGNATURE-----

Merge tag 'android-15.0.0_r20' into staging/lineage-22.2_merge-android-15.0.0_r20

Android 15.0.0 Release 20 (BP1A.250305.019)

# -----BEGIN PGP SIGNATURE-----
#
# iF0EABECAB0WIQRDQNE1cO+UXoOBCWTorT+BmrEOeAUCZ8eo7QAKCRDorT+BmrEO
# eL2HAJ9GJqXQ084waJriZMG+pKW+8L7hAgCeLGKh/diCM8fFbNP6nFkjxriBLTQ=
# =zXv6
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed Mar  5 03:29:17 2025 EET
# gpg:                using DSA key 4340D13570EF945E83810964E8AD3F819AB10E78
# gpg: Good signature from "The Android Open Source Project <initial-contribution@android.com>" [ultimate]

# By Herbert Xue (3) and others
# Via Android Build Coastguard Worker (32) and others
* tag 'android-15.0.0_r20': (36 commits)
  Enable WIFI_FEATURE_HOSTAPD_11AX
  dump_power: add battery caretaker dump into bugreport
  [Pixel VPN] Apply reviewed default permissions
  update health HAL dependency
  Add sched qos support
  Change TARGET_RECOVERY_UI_LIB to use fully qualified names in gs201
  Change TARGET_RECOVERY_UI_LIB to use fully qualified names in gs201
  Clean up unnecessary data_connection_5g_plus overlay
  init: gs201: move sched rate limit to late init
  Add soong config use_google_qns to device/google/gs201/device.mk
  Set soong config variables for libExynosC2H263Dec and libExynosC2H263Enc
  init: make pmu_poll_enable node readable
  Set soong config variable "board_use_dec_sw_csc" for libExynosVideoCodec
  Update ldaf sensor device filename
  dump_power: gs201: correct dump path
  Move video_codec soong config variables into board config
  Use full namespace path for BOARD_WPA_SUPPLICANT_PRIVATE_LIB
  dumpstate: gs201: fix dump path
  Revert "Add IGoodixFingerprintDaemon aidl interface"
  Add IGoodixFingerprintDaemon aidl interface
  ...

Change-Id: I10f7876808a08741e1f15c8182f82ce6fb8af513
This commit is contained in:
Michael Bestas 2025-03-09 11:05:56 +02:00
commit 29d946776c
14 changed files with 609 additions and 154 deletions

View file

@ -22,6 +22,7 @@ TARGET_SOC := gs201
TARGET_SOC_NAME := google TARGET_SOC_NAME := google
USES_DEVICE_GOOGLE_GS201 := true USES_DEVICE_GOOGLE_GS201 := true
$(call soong_config_set,CitadelProvision,target_soc,gs201)
TARGET_ARCH := arm64 TARGET_ARCH := arm64
TARGET_ARCH_VARIANT := armv8-2a TARGET_ARCH_VARIANT := armv8-2a
@ -49,6 +50,7 @@ BOARD_KERNEL_CMDLINE += cgroup_disable=memory
BOARD_KERNEL_CMDLINE += rcupdate.rcu_expedited=1 rcu_nocbs=all rcutree.enable_rcu_lazy BOARD_KERNEL_CMDLINE += rcupdate.rcu_expedited=1 rcu_nocbs=all rcutree.enable_rcu_lazy
BOARD_KERNEL_CMDLINE += stack_depot_disable=off page_pinner=on BOARD_KERNEL_CMDLINE += stack_depot_disable=off page_pinner=on
BOARD_KERNEL_CMDLINE += swiotlb=1024 BOARD_KERNEL_CMDLINE += swiotlb=1024
BOARD_KERNEL_CMDLINE += cgroup.memory=nokmem
BOARD_KERNEL_CMDLINE += disable_dma32=on BOARD_KERNEL_CMDLINE += disable_dma32=on
BOARD_BOOTCONFIG += androidboot.boot_devices=14700000.ufs BOARD_BOOTCONFIG += androidboot.boot_devices=14700000.ufs
@ -73,7 +75,7 @@ TARGET_RECOVERY_FSTAB_GENRULE := gen_fstab.gs201
TARGET_RECOVERY_PIXEL_FORMAT := ABGR_8888 TARGET_RECOVERY_PIXEL_FORMAT := ABGR_8888
TARGET_RECOVERY_UI_MARGIN_HEIGHT := 165 TARGET_RECOVERY_UI_MARGIN_HEIGHT := 165
TARGET_RECOVERY_UI_LIB := \ TARGET_RECOVERY_UI_LIB := \
librecovery_ui_pixel \ //hardware/google/pixel/recovery:librecovery_ui_pixel \
libfstab libfstab
AB_OTA_UPDATER := true AB_OTA_UPDATER := true
@ -193,7 +195,16 @@ BOARD_SUPPORT_MFC_ENC_RGB := true
BOARD_USE_BLOB_ALLOCATOR := false BOARD_USE_BLOB_ALLOCATOR := false
BOARD_SUPPORT_MFC_ENC_BT2020 := true BOARD_SUPPORT_MFC_ENC_BT2020 := true
BOARD_SUPPORT_FLEXIBLE_P010 := true BOARD_SUPPORT_FLEXIBLE_P010 := true
$(call soong_config_set,video_codec,target_soc_name,$(TARGET_SOC_NAME))
$(call soong_config_set_bool,video_codec,board_use_codec2_hidl_1_2,$(BOARD_USE_CODEC2_HIDL_1_2))
$(call soong_config_set_bool,video_codec,board_use_csc_filter,$(BOARD_USE_CSC_FILTER))
$(call soong_config_set_bool,video_codec,board_use_dec_sw_csc,$(BOARD_USE_DEC_SW_CSC))
$(call soong_config_set_bool,video_codec,board_use_enc_sw_csc,$(BOARD_USE_ENC_SW_CSC))
$(call soong_config_set_bool,video_codec,board_support_mfc_enc_rgb,$(BOARD_SUPPORT_MFC_ENC_RGB))
$(call soong_config_set_bool,video_codec,board_use_blob_allocator,$(BOARD_USE_BLOB_ALLOCATOR))
$(call soong_config_set_bool,video_codec,board_support_mfc_enc_bt2020,$(BOARD_SUPPORT_MFC_ENC_BT2020))
$(call soong_config_set_bool,video_codec,board_support_flexible_p010,$(BOARD_SUPPORT_FLEXIBLE_P010))
$(call soong_config_set_bool,video_codec,board_use_codec2_aidl,$(if $(BOARD_USE_CODEC2_AIDL),true,false))
######################## ########################
BOARD_SUPER_PARTITION_SIZE := 8531214336 BOARD_SUPER_PARTITION_SIZE := 8531214336

View file

@ -15,6 +15,15 @@ on init
chown system system /sys/devices/platform/sjtag_gsa/interface/end chown system system /sys/devices/platform/sjtag_gsa/interface/end
chown system system /sys/devices/platform/sjtag_gsa/interface/pubkey chown system system /sys/devices/platform/sjtag_gsa/interface/pubkey
# HSUM separated main user from the SYSTEM user, granting write permissions
# for write only SJTAG sysfs files
chmod 220 /sys/devices/platform/sjtag_ap/interface/auth
chmod 220 /sys/devices/platform/sjtag_ap/interface/begin
chmod 220 /sys/devices/platform/sjtag_ap/interface/end
chmod 220 /sys/devices/platform/sjtag_gsa/interface/auth
chmod 220 /sys/devices/platform/sjtag_gsa/interface/begin
chmod 220 /sys/devices/platform/sjtag_gsa/interface/end
on property:vendor.debug.ramdump.force_crash=true on property:vendor.debug.ramdump.force_crash=true
write /sys/kernel/pixel_debug/trigger "null" write /sys/kernel/pixel_debug/trigger "null"

View file

@ -19,10 +19,6 @@ on init
# Disable util-awareness # Disable util-awareness
write /proc/vendor_sched/teo_util_threshold "1024 1024 1024" write /proc/vendor_sched/teo_util_threshold "1024 1024 1024"
# Boot time fs tuning
write /sys/block/sda/queue/scheduler bfq
write /sys/block/sda/queue/iosched/slice_idle 0
chown system system /proc/vendor_sched/groups/bg/set_task_group chown system system /proc/vendor_sched/groups/bg/set_task_group
chown system system /proc/vendor_sched/groups/cam/set_task_group chown system system /proc/vendor_sched/groups/cam/set_task_group
chown system system /proc/vendor_sched/groups/fg/set_task_group chown system system /proc/vendor_sched/groups/fg/set_task_group
@ -100,13 +96,90 @@ on init
chmod 0220 /proc/vendor_sched/groups/ota/set_proc_group chmod 0220 /proc/vendor_sched/groups/ota/set_proc_group
chmod 0220 /proc/vendor_sched/prefer_idle_set chmod 0220 /proc/vendor_sched/prefer_idle_set
chmod 0220 /proc/vendor_sched/prefer_idle_clear chmod 0220 /proc/vendor_sched/prefer_idle_clear
chmod 0220 /proc/vendor_sched/pmu_poll_enable chmod 0660 /proc/vendor_sched/pmu_poll_enable
chmod 0220 /proc/vendor_sched/pmu_poll_time chmod 0220 /proc/vendor_sched/pmu_poll_time
chmod 0220 /proc/vendor_sched/uclamp_fork_reset_clear chmod 0220 /proc/vendor_sched/uclamp_fork_reset_clear
chmod 0220 /proc/vendor_sched/uclamp_fork_reset_set chmod 0220 /proc/vendor_sched/uclamp_fork_reset_set
start vendor.keymaster-4-0 start vendor.keymaster-4-0
# Change permission of sched qos nodes
chown system system /proc/vendor_sched/sched_qos/adpf_set
chown system system /proc/vendor_sched/sched_qos/adpf_clear
chown system system /proc/vendor_sched/sched_qos/auto_uclamp_max_set
chown system system /proc/vendor_sched/sched_qos/auto_uclamp_max_clear
chown system system /proc/vendor_sched/sched_qos/boost_prio_set
chown system system /proc/vendor_sched/sched_qos/boost_prio_clear
chown system system /proc/vendor_sched/sched_qos/preempt_wakeup_set
chown system system /proc/vendor_sched/sched_qos/preempt_wakeup_clear
chown system system /proc/vendor_sched/sched_qos/prefer_fit_set
chown system system /proc/vendor_sched/sched_qos/prefer_fit_clear
chown system system /proc/vendor_sched/sched_qos/prefer_high_cap_set
chown system system /proc/vendor_sched/sched_qos/prefer_high_cap_clear
chown system system /proc/vendor_sched/sched_qos/prefer_idle_set
chown system system /proc/vendor_sched/sched_qos/prefer_idle_clear
chown system system /proc/vendor_sched/sched_qos/rampup_multiplier_set
chown system system /proc/vendor_sched/sched_qos/rampup_multiplier_clear
chmod 0220 /proc/vendor_sched/sched_qos/adpf_set
chmod 0220 /proc/vendor_sched/sched_qos/adpf_clear
chmod 0220 /proc/vendor_sched/sched_qos/auto_uclamp_max_set
chmod 0220 /proc/vendor_sched/sched_qos/auto_uclamp_max_clear
chmod 0220 /proc/vendor_sched/sched_qos/boost_prio_set
chmod 0220 /proc/vendor_sched/sched_qos/boost_prio_clear
chmod 0220 /proc/vendor_sched/sched_qos/preempt_wakeup_set
chmod 0220 /proc/vendor_sched/sched_qos/preempt_wakeup_clear
chmod 0220 /proc/vendor_sched/sched_qos/prefer_fit_set
chmod 0220 /proc/vendor_sched/sched_qos/prefer_fit_clear
chmod 0220 /proc/vendor_sched/sched_qos/prefer_high_cap_set
chmod 0220 /proc/vendor_sched/sched_qos/prefer_high_cap_clear
chmod 0220 /proc/vendor_sched/sched_qos/prefer_idle_set
chmod 0220 /proc/vendor_sched/sched_qos/prefer_idle_clear
chmod 0220 /proc/vendor_sched/sched_qos/rampup_multiplier_set
chmod 0220 /proc/vendor_sched/sched_qos/rampup_multiplier_clear
# Enable sched_qos for some groups
write /proc/vendor_sched/groups/ta/qos_adpf_enable 1
write /proc/vendor_sched/groups/ta/qos_auto_uclamp_max_enable 1
write /proc/vendor_sched/groups/ta/qos_boost_prio_enable 1
write /proc/vendor_sched/groups/ta/qos_preempt_wakeup_enable 1
write /proc/vendor_sched/groups/ta/qos_prefer_fit_enable 1
write /proc/vendor_sched/groups/ta/qos_prefer_high_cap_enable 1
write /proc/vendor_sched/groups/ta/qos_prefer_idle_enable 1
write /proc/vendor_sched/groups/ta/qos_rampup_multiplier_enable 1
write /proc/vendor_sched/groups/fg/qos_adpf_enable 1
write /proc/vendor_sched/groups/fg/qos_auto_uclamp_max_enable 1
write /proc/vendor_sched/groups/fg/qos_boost_prio_enable 1
write /proc/vendor_sched/groups/fg/qos_preempt_wakeup_enable 1
write /proc/vendor_sched/groups/fg/qos_prefer_fit_enable 1
write /proc/vendor_sched/groups/fg/qos_prefer_high_cap_enable 1
write /proc/vendor_sched/groups/fg/qos_prefer_idle_enable 1
write /proc/vendor_sched/groups/fg/qos_rampup_multiplier_enable 1
write /proc/vendor_sched/groups/fg_wi/qos_adpf_enable 1
write /proc/vendor_sched/groups/fg_wi/qos_auto_uclamp_max_enable 1
write /proc/vendor_sched/groups/fg_wi/qos_boost_prio_enable 1
write /proc/vendor_sched/groups/fg_wi/qos_preempt_wakeup_enable 1
write /proc/vendor_sched/groups/fg_wi/qos_prefer_fit_enable 1
write /proc/vendor_sched/groups/fg_wi/qos_prefer_high_cap_enable 1
write /proc/vendor_sched/groups/fg_wi/qos_prefer_idle_enable 1
write /proc/vendor_sched/groups/fg_wi/qos_rampup_multiplier_enable 1
write /proc/vendor_sched/groups/cam/qos_adpf_enable 1
write /proc/vendor_sched/groups/cam/qos_auto_uclamp_max_enable 1
write /proc/vendor_sched/groups/cam/qos_prefer_fit_enable 1
write /proc/vendor_sched/groups/cam/qos_prefer_high_cap_enable 1
write /proc/vendor_sched/groups/cam/qos_prefer_idle_enable 1
write /proc/vendor_sched/groups/cam/qos_rampup_multiplier_enable 1
write /proc/vendor_sched/groups/cam_power/qos_adpf_enable 1
write /proc/vendor_sched/groups/cam_power/qos_auto_uclamp_max_enable 1
write /proc/vendor_sched/groups/cam_power/qos_prefer_fit_enable 1
write /proc/vendor_sched/groups/cam_power/qos_prefer_high_cap_enable 1
write /proc/vendor_sched/groups/cam_power/qos_prefer_idle_enable 1
write /proc/vendor_sched/groups/cam_power/qos_rampup_multiplier_enable 1
write /proc/vendor_sched/groups/rt/qos_adpf_enable 1
write /proc/vendor_sched/groups/rt/qos_rampup_multiplier_enable 1
write /proc/vendor_sched/groups/sf/qos_adpf_enable 1
write /proc/vendor_sched/groups/sf/qos_rampup_multiplier_enable 1
# ZRAM setup # ZRAM setup
write /sys/block/zram0/comp_algorithm lz77eh write /sys/block/zram0/comp_algorithm lz77eh
write /proc/sys/vm/page-cluster 0 write /proc/sys/vm/page-cluster 0
@ -156,14 +229,11 @@ on init
# governor setting # governor setting
write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor sched_pixel write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor sched_pixel
write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/up_rate_limit_us 500 write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/up_rate_limit_us 500
write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/down_rate_limit_us 5000
write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/down_rate_limit_scale_pow 2 write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/down_rate_limit_scale_pow 2
write /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor sched_pixel write /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor sched_pixel
write /sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/up_rate_limit_us 500 write /sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/up_rate_limit_us 500
write /sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/down_rate_limit_us 20000
write /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor sched_pixel write /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor sched_pixel
write /sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/up_rate_limit_us 500 write /sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/up_rate_limit_us 500
write /sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/down_rate_limit_us 20000
# memlat cpuidle awareness setting # memlat cpuidle awareness setting
write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu0_memlat@17000010/memlat_cpuidle_state_aware 2 write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu0_memlat@17000010/memlat_cpuidle_state_aware 2
@ -335,6 +405,11 @@ on late-fs
# Mount RW partitions which need run fsck # Mount RW partitions which need run fsck
mount_all --late mount_all --late
on late-init
write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/down_rate_limit_us 5000
write /sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/down_rate_limit_us 20000
write /sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/down_rate_limit_us 20000
on post-fs-data on post-fs-data
# Log data folder # Log data folder
mkdir /data/vendor 0771 radio system mkdir /data/vendor 0771 radio system
@ -373,8 +448,8 @@ on post-fs-data
restorecon /sys/kernel/debug/tracing/trace_marker restorecon /sys/kernel/debug/tracing/trace_marker
# ranging sensor # ranging sensor
chown system system /dev/stmvl53l1_ranging chown system system /dev/ispolin_ranging
chmod 0660 /dev/stmvl53l1_ranging chmod 0660 /dev/ispolin_ranging
# Factory calibration files # Factory calibration files
chmod 0771 /mnt/vendor/persist/camera chmod 0771 /mnt/vendor/persist/camera

View file

@ -180,10 +180,14 @@
</exception> </exception>
<exception package="com.google.android.apps.pixel.relationships"> <exception package="com.google.android.apps.pixel.relationships">
<!-- Contacts --> <permission name="android.permission.CALL_PHONE" fixed="false"/>
<permission name="android.permission.READ_CALL_LOG" fixed="false"/> <permission name="android.permission.READ_CALL_LOG" fixed="false"/>
<permission name="android.permission.READ_CONTACTS" fixed="false"/> <permission name="android.permission.READ_CONTACTS" fixed="false"/>
<permission name="android.permission.WRITE_CONTACTS" fixed="false"/> <permission name="android.permission.WRITE_CONTACTS" fixed="false"/>
</exception> </exception>
<exception
package="com.google.android.apps.privacy.wildlife">
<permission name="android.permission.READ_PHONE_STATE" fixed="false"/>
</exception>
</exceptions> </exceptions>

View file

@ -219,6 +219,9 @@ endif
# Use for GRIL # Use for GRIL
USES_LASSEN_MODEM := true USES_LASSEN_MODEM := true
$(call soong_config_set, vendor_ril_google_feature, use_lassen_modem, true) $(call soong_config_set, vendor_ril_google_feature, use_lassen_modem, true)
ifneq ($(BOARD_WITHOUT_RADIO),true)
$(call soong_config_set_bool,grilservice,use_google_qns,true)
endif
ifeq ($(USES_GOOGLE_DIALER_CARRIER_SETTINGS),true) ifeq ($(USES_GOOGLE_DIALER_CARRIER_SETTINGS),true)
USE_GOOGLE_DIALER := true USE_GOOGLE_DIALER := true
@ -393,6 +396,10 @@ PRODUCT_COPY_FILES += \
include device/google/gs-common/insmod/insmod.mk include device/google/gs-common/insmod/insmod.mk
# Insmod config files
PRODUCT_COPY_FILES += \
$(call find-copy-subdir-files,init.insmod.*.cfg,$(TARGET_KERNEL_DIR),$(TARGET_COPY_OUT_VENDOR_DLKM)/etc)
# For creating dtbo image # For creating dtbo image
PRODUCT_HOST_PACKAGES += \ PRODUCT_HOST_PACKAGES += \
mkdtimg mkdtimg
@ -959,9 +966,6 @@ USE_EARLY_SEND_DEVICE_INFO := true
ifneq ($(BOARD_WITHOUT_RADIO),true) ifneq ($(BOARD_WITHOUT_RADIO),true)
$(call inherit-product-if-exists, vendor/samsung_slsi/telephony/$(BOARD_USES_SHARED_VENDOR_TELEPHONY)/common/device-vendor.mk) $(call inherit-product-if-exists, vendor/samsung_slsi/telephony/$(BOARD_USES_SHARED_VENDOR_TELEPHONY)/common/device-vendor.mk)
# modem_svc_sit daemon
PRODUCT_PACKAGES += modem_svc_sit
# modem logging binary/configs # modem logging binary/configs
PRODUCT_PACKAGES += modem_logging_control PRODUCT_PACKAGES += modem_logging_control
@ -1104,7 +1108,7 @@ PRODUCT_SOONG_NAMESPACES += \
vendor/google_devices/gs201/proprietary/gchips/tpu/nnapi_stable_aidl \ vendor/google_devices/gs201/proprietary/gchips/tpu/nnapi_stable_aidl \
vendor/google_devices/gs201/proprietary/gchips/tpu/aidl \ vendor/google_devices/gs201/proprietary/gchips/tpu/aidl \
vendor/google_devices/gs201/proprietary/gchips/tpu/hal \ vendor/google_devices/gs201/proprietary/gchips/tpu/hal \
vendor/google_devices/gs201/proprietary/gchips/tpu/tachyon/api \ vendor/google_devices/gs201/proprietary/gchips/tpu/tachyon/tachyon_apis \
vendor/google_devices/gs201/proprietary/gchips/tpu/tachyon/service vendor/google_devices/gs201/proprietary/gchips/tpu/tachyon/service
# TPU firmware # TPU firmware
PRODUCT_PACKAGES += edgetpu-janeiro.fw PRODUCT_PACKAGES += edgetpu-janeiro.fw
@ -1169,12 +1173,19 @@ include device/google/gs201/dumpstate/item.mk
DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE += device/google/gs201/device_framework_matrix_product.xml DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE += device/google/gs201/device_framework_matrix_product.xml
# Preopt SystemUI # Preopt SystemUI
ifneq ($(RELEASE_SYSTEMUI_USE_SPEED_PROFILE), true)
PRODUCT_DEXPREOPT_SPEED_APPS += SystemUIGoogle # For internal PRODUCT_DEXPREOPT_SPEED_APPS += SystemUIGoogle # For internal
PRODUCT_DEXPREOPT_SPEED_APPS += SystemUI # For AOSP PRODUCT_DEXPREOPT_SPEED_APPS += SystemUI # For AOSP
endif
# Compile SystemUI on device with `speed`. # Set on-device compilation mode for SystemUI.
ifeq ($(RELEASE_SYSTEMUI_USE_SPEED_PROFILE), true)
PRODUCT_PROPERTY_OVERRIDES += \
dalvik.vm.systemuicompilerfilter=speed-profile
else
PRODUCT_PROPERTY_OVERRIDES += \ PRODUCT_PROPERTY_OVERRIDES += \
dalvik.vm.systemuicompilerfilter=speed dalvik.vm.systemuicompilerfilter=speed
endif
# Keymint configuration # Keymint configuration
PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \

View file

@ -118,7 +118,7 @@
</hal> </hal>
<hal format="aidl" optional="true"> <hal format="aidl" optional="true">
<name>vendor.google.wifi_ext</name> <name>vendor.google.wifi_ext</name>
<version>2-3</version> <version>2-4</version>
<interface> <interface>
<name>IWifiExt</name> <name>IWifiExt</name>
<instance>default</instance> <instance>default</instance>

View file

@ -43,9 +43,19 @@ int getCommandOutput(const char *cmd, std::string *output) {
return 0; return 0;
} }
bool isValidFile(const char *file) { bool isValidFile(const char *file) {
if (!access(file, R_OK)) { FILE *fp = fopen(file, "r");
return false; if (fp != NULL) {
fclose(fp);
return true;
} }
return false;
}
bool isValidDir(const char *directory) {
DIR *dir = opendir(directory);
if (dir == NULL)
return false;
closedir(dir);
return true; return true;
} }
bool isUserBuild() { bool isUserBuild() {
@ -122,8 +132,8 @@ void dumpPowerSupplyStats() {
{"Power supply property gcpm", "/sys/class/power_supply/gcpm/uevent"}, {"Power supply property gcpm", "/sys/class/power_supply/gcpm/uevent"},
{"Power supply property gcpm_pps", "/sys/class/power_supply/gcpm_pps/uevent"}, {"Power supply property gcpm_pps", "/sys/class/power_supply/gcpm_pps/uevent"},
{"Power supply property main-charger", "/sys/class/power_supply/main-charger/uevent"}, {"Power supply property main-charger", "/sys/class/power_supply/main-charger/uevent"},
{"Power supply property dc-mains", "/sys/class/power_supply/dc-mains/uevent"}, {"Power supply property pca94xx-mains", "/sys/class/power_supply/pca94xx-mains/uevent"},
{"Power supply property tcpm", "/sys/class/power_supply/tcpm-source-psy-8-0025/uevent"}, {"Power supply property tcpm", "/sys/class/power_supply/tcpm-source-psy-i2c-max77759tcpc/uevent"},
{"Power supply property usb", "/sys/class/power_supply/usb/uevent"}, {"Power supply property usb", "/sys/class/power_supply/usb/uevent"},
{"Power supply property wireless", "/sys/class/power_supply/wireless/uevent"}, {"Power supply property wireless", "/sys/class/power_supply/wireless/uevent"},
}; };
@ -133,36 +143,41 @@ void dumpPowerSupplyStats() {
} }
void dumpMaxFg() { void dumpMaxFg() {
const char *maxfgLoc = "/sys/class/power_supply/maxfg"; const char *maxfgLoc = "/sys/class/power_supply/maxfg";
const char *maxfgDualLoc = "/sys/class/power_supply/maxfg_base";
const char *maxfg [][2] = { const char *maxfg [][2] = {
{"Power supply property maxfg", "/sys/class/power_supply/maxfg/uevent"}, {"Power supply property maxfg", "/sys/class/power_supply/maxfg/uevent"},
{"m5_state", "/sys/class/power_supply/maxfg/m5_model_state"}, {"m5_state", "/sys/class/power_supply/maxfg/m5_model_state"},
{"maxfg", "/dev/logbuffer_maxfg"}, {"maxfg registers", "/sys/class/power_supply/maxfg/registers_dump"},
{"maxfg", "/dev/logbuffer_maxfg_monitor"}, {"maxfg logbuffer", "/dev/logbuffer_maxfg"},
{"maxfg_monitor logbuffer", "/dev/logbuffer_maxfg_monitor"},
}; };
const char *maxfgFlip [][2] = { const char *maxfgDual [][2] = {
{"Power supply property maxfg_base", "/sys/class/power_supply/maxfg_base/uevent"}, {"Power supply property maxfg_base", "/sys/class/power_supply/maxfg_base/uevent"},
{"Power supply property maxfg_flip", "/sys/class/power_supply/maxfg_flip/uevent"}, {"Power supply property maxfg_secondary", "/sys/class/power_supply/maxfg_secondary/uevent"},
{"maxfg_base registers", "/sys/class/power_supply/maxfg_base/registers_dump"},
{"maxfg_secondary registers", "/sys/class/power_supply/maxfg_secondary/registers_dump"},
{"m5_state", "/sys/class/power_supply/maxfg_base/m5_model_state"}, {"m5_state", "/sys/class/power_supply/maxfg_base/m5_model_state"},
{"maxfg_base", "/dev/logbuffer_maxfg_base"}, {"maxfg_base logbuffer", "/dev/logbuffer_maxfg_base"},
{"maxfg_flip", "/dev/logbuffer_maxfg_flip"}, {"maxfg_secondary logbuffer", "/dev/logbuffer_maxfg_secondary"},
{"maxfg_base", "/dev/logbuffer_maxfg_base_monitor"}, {"maxfg_base logbuffer", "/dev/logbuffer_maxfg_base_monitor"},
{"maxfg_flip", "/dev/logbuffer_maxfg_flip_monitor"}, {"maxfg_secondary logbuffer", "/dev/logbuffer_maxfg_secondary_monitor"},
{"dual_batt logbuffer", "/dev/logbuffer_dual_batt"},
}; };
const char *maxfgHistoryName = "Maxim FG History"; const char *maxfgHistoryName = "Maxim FG History";
const char *maxfgHistoryDir = "/dev/maxfg_history"; const char *maxfgHistoryDir = "/dev/maxfg_history";
std::string content; std::string content;
if (isValidFile(maxfgLoc)) { if (isValidDir(maxfgLoc)) {
for (const auto &row : maxfg) { for (const auto &row : maxfg) {
dumpFileContent(row[0], row[1]); dumpFileContent(row[0], row[1]);
} }
} else { } else if (isValidDir(maxfgDualLoc)){
for (const auto &row : maxfgFlip) { for (const auto &row : maxfgDual) {
dumpFileContent(row[0], row[1]); dumpFileContent(row[0], row[1]);
} }
}
if (isValidFile(maxfgHistoryDir)) { if (isValidFile(maxfgHistoryDir)) {
dumpFileContent(maxfgHistoryName, maxfgHistoryDir); dumpFileContent(maxfgHistoryName, maxfgHistoryDir);
} }
}
} }
void dumpPowerSupplyDock() { void dumpPowerSupplyDock() {
const char* powerSupplyPropertyDockTitle = "Power supply property dock"; const char* powerSupplyPropertyDockTitle = "Power supply property dock";
@ -184,65 +199,60 @@ void dumpLogBufferTcpm() {
printTitle(tcpmLogTitle); printTitle(tcpmLogTitle);
} }
void dumpTcpc() { void dumpTcpc() {
int ret; const char* max77759TcpcHead = "TCPC Device Attributes";
const char* max77759TcpcHead = "TCPC"; const char* directory = "/sys/class/typec/port0/device";
const char* i2cSubDirMatch = "i2c-"; const char* max77759Tcpc [] {
const char* directory = "/sys/devices/platform/10d60000.hsi2c/"; "auto_discharge",
const char* max77759Tcpc [][2] { "bc12_enabled",
{"registers:", "/i2c-max77759tcpc/registers"}, "cc_toggle_enable",
{"frs:", "/i2c-max77759tcpc/frs"}, "contaminant_detection",
{"auto_discharge:", "/i2c-max77759tcpc/auto_discharge"}, "contaminant_detection_status",
{"bcl2_enabled:", "/i2c-max77759tcpc/bcl2_enabled"}, "frs",
{"cc_toggle_enable:", "/i2c-max77759tcpc/cc_toggle_enable"}, "irq_hpd_count",
{"containment_detection:", "/i2c-max77759tcpc/containment_detection"}, "manual_disable_vbus",
{"containment_detection_status:", "/i2c-max77759tcpc/containment_detection_status"}, "non_compliant_reasons",
"sbu_pullup",
"update_sdp_enum_timeout",
"usb_limit_accessory_current",
"usb_limit_accessory_enable",
"usb_limit_sink_current",
"usb_limit_sink_enable",
"usb_limit_source_enable",
}; };
std::vector<std::string> files;
std::string content; std::string content;
std::string tcpcRegistersPath(std::string(directory) + "/registers");
dumpFileContent("TCPC Registers", tcpcRegistersPath.c_str());
printTitle(max77759TcpcHead); printTitle(max77759TcpcHead);
ret = getFilesInDir(directory, &files);
if (ret < 0) { for (auto& tcpcVal : max77759Tcpc) {
for (auto &tcpcVal : max77759Tcpc) std::string filename = std::string(directory) + "/" + std::string(tcpcVal);
printf("%s\n", tcpcVal[0]); printf("%s: ", tcpcVal);
return; android::base::ReadFileToString(filename, &content);
} if (!content.empty() && (content.back() == '\n' || content.back() == '\r'))
for (auto &file : files) { content.pop_back();
for (auto &tcpcVal : max77759Tcpc) {
printf("%s ", tcpcVal[0]);
if (std::string::npos == std::string(file).find(i2cSubDirMatch)) {
continue;
}
std::string fileName = directory + file + "/" + std::string(tcpcVal[1]);
if (!android::base::ReadFileToString(fileName, &content)) {
continue;
}
printf("%s\n", content.c_str()); printf("%s\n", content.c_str());
} }
} printf("\n");
} }
void dumpPdEngine() { void dumpPdEngine() {
const char* pdEngine [][2] { const char* pdEngine [][3] {
{"PD Engine", "/dev/logbuffer_usbpd"}, {"TCPC logbuffer", "/dev/logbuffer_usbpd"},
{"PPS-google_cpm", "/dev/logbuffer_cpm"}, {"pogo_transport logbuffer", "/dev/logbuffer_pogo_transport"},
{"PPS-dc", "/dev/logbuffer_pca9468"}, {"PPS-google_cpm logbuffer", "/dev/logbuffer_cpm"},
{"PPS-pca9468 logbuffer", "/dev/logbuffer_pca9468"},
}; };
for (const auto &row : pdEngine) { for (const auto &row : pdEngine) {
dumpFileContent(row[0], row[1]); dumpFileContent(row[0], row[1]);
} }
} }
void dumpWc68() {
const char* wc68Title = "WC68";
const char* wc68File = "/dev/logbuffer_wc68";
dumpFileContent(wc68Title, wc68File);
}
void dumpLn8411() {
const char* ln8411Title = "LN8411";
const char* ln8411File = "/dev/logbuffer_ln8411";
dumpFileContent(ln8411Title, ln8411File);
}
void dumpBatteryHealth() { void dumpBatteryHealth() {
const char* batteryHealth [][2] { const char* batteryHealth [][2] {
{"Battery Health", "/sys/class/power_supply/battery/health_index_stats"}, {"Battery Health", "/sys/class/power_supply/battery/health_index_stats"},
{"Battery Health SoC Residency", "/sys/class/power_supply/battery/swelling_data"},
{"BMS", "/dev/logbuffer_ssoc"}, {"BMS", "/dev/logbuffer_ssoc"},
{"TTF", "/dev/logbuffer_ttf"}, {"TTF", "/dev/logbuffer_ttf"},
{"TTF details", "/sys/class/power_supply/battery/ttf_details"}, {"TTF details", "/sys/class/power_supply/battery/ttf_details"},
@ -281,7 +291,7 @@ void dumpBatteryDefend() {
sort(files.begin(), files.end()); sort(files.begin(), files.end());
for (auto &file : files) { for (auto &file : files) {
fileLocation = std::string(config[1]) + std::string(file); fileLocation = std::string(config[1]) + std::string(file);
if (!android::base::ReadFileToString(fileLocation, &content)) { if (!android::base::ReadFileToString(fileLocation, &content) || content.empty()) {
content = "\n"; content = "\n";
} }
printf("%s: %s", file.c_str(), content.c_str()); printf("%s: %s", file.c_str(), content.c_str());
@ -291,15 +301,150 @@ void dumpBatteryDefend() {
files.clear(); files.clear();
} }
} }
void dumpBatteryCaretaker() {
const char* aacpConfig [][3] {
{"AACP Version",
"/sys/devices/platform/google,battery/power_supply/battery/", "aacp_"},
{"AACR Config",
"/sys/devices/platform/google,battery/power_supply/battery/", "aacr_"},
{"AAFV Config",
"/sys/devices/platform/google,battery/power_supply/battery/", "aafv_"},
{"AACT Config",
"/sys/devices/platform/google,battery/power_supply/battery/", "aact_"},
{"AACC",
"/sys/devices/platform/google,battery/power_supply/battery/", "aacc"},
};
std::vector<std::string> files;
struct dirent *entry;
std::string content;
std::string fileLocation;
for (auto &config : aacpConfig) {
DIR *dir = opendir(config[1]);
if (dir == NULL)
continue;
printTitle(config[0]);
while ((entry = readdir(dir)) != NULL) {
if (std::string(entry->d_name).find(config[2]) != std::string::npos &&
strncmp(config[2], entry->d_name, strlen(config[2])) == 0) {
files.push_back(entry->d_name);
}
}
closedir(dir);
sort(files.begin(), files.end());
for (auto &file : files) {
fileLocation = std::string(config[1]) + std::string(file);
if (!android::base::ReadFileToString(fileLocation, &content) || content.empty()) {
content = "\n";
}
printf("%s: %s", file.c_str(), content.c_str());
if (content.back() != '\n')
printf("\n");
}
files.clear();
}
}
void printValuesOfDirectory(const char *directory, std::string debugfs, const char *strMatch) {
std::vector<std::string> files;
auto info = directory;
std::string content;
struct dirent *entry;
DIR *dir = opendir(debugfs.c_str());
if (dir == NULL)
return;
printTitle((debugfs + std::string(strMatch) + "/" + std::string(info)).c_str());
while ((entry = readdir(dir)) != NULL)
if (std::string(entry->d_name).find(strMatch) != std::string::npos)
files.push_back(entry->d_name);
closedir(dir);
sort(files.begin(), files.end());
for (auto &file : files) {
std::string fileDirectory = debugfs + file;
std::string fileLocation = fileDirectory + "/" + std::string(info);
if (!android::base::ReadFileToString(fileLocation, &content)) {
content = "\n";
}
printf("%s:\n%s", fileDirectory.c_str(), content.c_str());
if (content.back() != '\n')
printf("\n");
}
files.clear();
}
void dumpChg() {
const std::string pmic_bus = "/sys/devices/platform/10d60000.hsi2c/i2c-13/13-0066";
const char* chg_reg_dump_file = "/sys/class/power_supply/main-charger/device/registers_dump";
const std::string chg_name_cmd = "/sys/class/power_supply/main-charger/device/name";
const std::string pmic_name_cmd = pmic_bus + "/name";
const std::string pmic_reg_dump_file = pmic_bus + "/registers_dump";
const std::string reg_dump_str = " registers dump";
const char* chgConfig [][2] {
{"DC_registers dump", "/sys/class/power_supply/pca94xx-mains/device/registers_dump"},
};
std::string chg_name;
std::string pmic_name;
printf("\n");
int ret = android::base::ReadFileToString(chg_name_cmd, &chg_name);
if (ret && !chg_name.empty()) {
chg_name.erase(chg_name.length() - 1); // remove new line
const std::string chg_reg_dump_title = chg_name + reg_dump_str;
/* CHG reg dump */
dumpFileContent(chg_reg_dump_title.c_str(), chg_reg_dump_file);
}
ret = android::base::ReadFileToString(pmic_name_cmd, &pmic_name);
if (ret && !pmic_name.empty()) {
pmic_name.erase(pmic_name.length() - 1); // remove new line
const std::string pmic_reg_dump_title = pmic_name + reg_dump_str;
/* PMIC reg dump */
dumpFileContent(pmic_reg_dump_title.c_str(), pmic_reg_dump_file.c_str());
}
for (auto &config : chgConfig) {
dumpFileContent(config[0], config[1]);
}
}
void dumpChgUserDebug() {
const std::string debugfs = "/d/";
const char *maxFgDir = "/d/maxfg";
const char *maxFgStrMatch = "maxfg";
const char *maxBaseFgDir = "/d/maxfg_base";
const char *maxBaseFgStrMatch = "maxfg_base";
const char *chgTblName = "Charging table dump";
const char *chgTblDir = "/d/google_battery/chg_raw_profile";
const char *maxFgInfo [] {
"fg_model",
"algo_ver",
"model_ok",
};
if (isUserBuild())
return;
dumpFileContent(chgTblName, chgTblDir);
if (isValidDir(maxFgDir)) {
for (auto & directory : maxFgInfo) {
printValuesOfDirectory(directory, debugfs, maxFgStrMatch);
}
} else if (isValidDir(maxBaseFgDir)) {
for (auto & directory : maxFgInfo) {
printValuesOfDirectory(directory, debugfs, maxBaseFgStrMatch);
}
}
}
void dumpBatteryEeprom() { void dumpBatteryEeprom() {
const char *title = "Battery EEPROM"; const char *title = "Battery EEPROM";
const char *files[] { const char *files[] {
"/sys/devices/platform/10970000.hsi2c/i2c-4/4-0050/eeprom", "/sys/devices/platform/10da0000.hsi2c/i2c-15/15-0050/eeprom",
"/sys/devices/platform/10970000.hsi2c/i2c-5/5-0050/eeprom",
"/sys/devices/platform/10da0000.hsi2c/i2c-6/6-0050/eeprom",
"/sys/devices/platform/10da0000.hsi2c/i2c-7/7-0050/eeprom",
"/sys/devices/platform/10c90000.hsi2c/i2c-7/7-0050/eeprom",
"/sys/devices/platform/10c90000.hsi2c/i2c-6/6-0050/eeprom",
}; };
std::string result; std::string result;
std::string xxdCmd; std::string xxdCmd;
@ -325,7 +470,7 @@ void dumpChargerStats() {
std::string content; std::string content;
struct dirent *entry; struct dirent *entry;
dumpFileContent(chgStatsTitle, chgStatsLocation); dumpFileContent(chgStatsTitle, chgStatsLocation);
if (!isUserBuild()) if (isUserBuild())
return; return;
for (auto &stat : chargerStats) { for (auto &stat : chargerStats) {
DIR *dir = opendir(stat[1]); DIR *dir = opendir(stat[1]);
@ -370,7 +515,7 @@ void dumpGvoteables() {
std::string content; std::string content;
std::vector<std::string> files; std::vector<std::string> files;
int ret; int ret;
if (!isUserBuild()) if (isUserBuild())
return; return;
ret = getFilesInDir(directory, &files); ret = getFilesInDir(directory, &files);
if (ret < 0) if (ret < 0)
@ -658,10 +803,11 @@ int main() {
dumpLogBufferTcpm(); dumpLogBufferTcpm();
dumpTcpc(); dumpTcpc();
dumpPdEngine(); dumpPdEngine();
dumpWc68();
dumpLn8411();
dumpBatteryHealth(); dumpBatteryHealth();
dumpBatteryDefend(); dumpBatteryDefend();
dumpBatteryCaretaker();
dumpChg();
dumpChgUserDebug();
dumpBatteryEeprom(); dumpBatteryEeprom();
dumpChargerStats(); dumpChargerStats();
dumpWlcLogs(); dumpWlcLogs();

View file

@ -1,7 +1,7 @@
<manifest version="1.0" type="device"> <manifest version="1.0" type="device">
<hal format="aidl"> <hal format="aidl">
<name>android.hardware.health</name> <name>android.hardware.health</name>
<version>3</version> <version>4</version>
<fqname>IHealth/default</fqname> <fqname>IHealth/default</fqname>
</hal> </hal>
</manifest> </manifest>

View file

@ -276,6 +276,9 @@
<!-- Enable Zram writeback feature to allow unused pages in zram be written to flash. --> <!-- Enable Zram writeback feature to allow unused pages in zram be written to flash. -->
<bool name="config_zramWriteback">true</bool> <bool name="config_zramWriteback">true</bool>
<!-- the number of the max cached processes in the system. -->
<integer name="config_customizedMaxCachedProcesses">1024</integer>
<!-- List of system components which are allowed to receive ServiceState entries in an <!-- List of system components which are allowed to receive ServiceState entries in an
un-sanitized form, even if the location toggle is off. This is intended ONLY for system un-sanitized form, even if the location toggle is off. This is intended ONLY for system
components, such as the telephony stack, which require access to the full ServiceState for components, such as the telephony stack, which require access to the full ServiceState for

View file

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/**
* Copyright (c) 2020, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Content description of the data connection type 5G UW. [CHAR LIMIT=NONE] -->
<string name="data_connection_5g_plus" translatable="false">5G UW</string>
</resources>

View file

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/**
* Copyright (c) 2020, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Content description of the data connection type 5G UW. [CHAR LIMIT=NONE] -->
<string name="data_connection_5g_plus" translatable="false">5G UW</string>
</resources>

View file

@ -159,6 +159,21 @@
} }
] ]
}, },
{
"Name": "HighPerformanceWI",
"Actions": [
{
"Name": "WriteFile",
"Params":
{
"FilePath": "/proc/vendor_sched/groups/fg_wi/set_task_group",
"ProcFilePath": "/proc/vendor_sched/groups/fg_wi/set_proc_group",
"Value": "<pid>",
"LogFailures": "false"
}
}
]
},
{ {
"Name": "RealtimePerformance", "Name": "RealtimePerformance",
"Actions": [ "Actions": [
@ -250,6 +265,202 @@
} }
] ]
}, },
{
"Name": "AdpfSet",
"Actions": [
{
"Name": "WriteFile",
"Params":
{
"FilePath": "/proc/vendor_sched/sched_qos/adpf_set",
"Value": "<pid>",
"LogFailures": "false"
}
}
]
},
{
"Name": "AdpfClear",
"Actions": [
{
"Name": "WriteFile",
"Params":
{
"FilePath": "/proc/vendor_sched/sched_qos/adpf_clear",
"Value": "<pid>",
"LogFailures": "false"
}
}
]
},
{
"Name": "BoostPrioSet",
"Actions": [
{
"Name": "WriteFile",
"Params":
{
"FilePath": "/proc/vendor_sched/sched_qos/boost_prio_set",
"Value": "<pid>",
"LogFailures": "false"
}
}
]
},
{
"Name": "BoostPrioClear",
"Actions": [
{
"Name": "WriteFile",
"Params":
{
"FilePath": "/proc/vendor_sched/sched_qos/boost_prio_clear",
"Value": "<pid>",
"LogFailures": "false"
}
}
]
},
{
"Name": "PreemptWakeupSet",
"Actions": [
{
"Name": "WriteFile",
"Params":
{
"FilePath": "/proc/vendor_sched/sched_qos/preempt_wakeup_set",
"Value": "<pid>",
"LogFailures": "false"
}
}
]
},
{
"Name": "PreemptWakeupClear",
"Actions": [
{
"Name": "WriteFile",
"Params":
{
"FilePath": "/proc/vendor_sched/sched_qos/preempt_wakeup_clear",
"Value": "<pid>",
"LogFailures": "false"
}
}
]
},
{
"Name": "PreferFitSet",
"Actions": [
{
"Name": "WriteFile",
"Params":
{
"FilePath": "/proc/vendor_sched/sched_qos/prefer_fit_set",
"Value": "<pid>",
"LogFailures": "false"
}
}
]
},
{
"Name": "PreferFitClear",
"Actions": [
{
"Name": "WriteFile",
"Params":
{
"FilePath": "/proc/vendor_sched/sched_qos/prefer_fit_clear",
"Value": "<pid>",
"LogFailures": "false"
}
}
]
},
{
"Name": "PreferIdleSet",
"Actions": [
{
"Name": "WriteFile",
"Params":
{
"FilePath": "/proc/vendor_sched/sched_qos/prefer_idle_set",
"Value": "<pid>",
"LogFailures": "false"
}
}
]
},
{
"Name": "PreferIdleClear",
"Actions": [
{
"Name": "WriteFile",
"Params":
{
"FilePath": "/proc/vendor_sched/sched_qos/prefer_idle_clear",
"Value": "<pid>",
"LogFailures": "false"
}
}
]
},
{
"Name": "AutoUclampMaxSet",
"Actions": [
{
"Name": "WriteFile",
"Params":
{
"FilePath": "/proc/vendor_sched/sched_qos/auto_uclamp_max_set",
"Value": "<pid>",
"LogFailures": "false"
}
}
]
},
{
"Name": "AutoUclampMaxClear",
"Actions": [
{
"Name": "WriteFile",
"Params":
{
"FilePath": "/proc/vendor_sched/sched_qos/auto_uclamp_max_clear",
"Value": "<pid>",
"LogFailures": "false"
}
}
]
},
{
"Name": "PreferHighCapSet",
"Actions": [
{
"Name": "WriteFile",
"Params":
{
"FilePath": "/proc/vendor_sched/sched_qos/prefer_high_cap_set",
"Value": "<pid>",
"LogFailures": "false"
}
}
]
},
{
"Name": "PreferHighCapClear",
"Actions": [
{
"Name": "WriteFile",
"Params":
{
"FilePath": "/proc/vendor_sched/sched_qos/prefer_high_cap_clear",
"Value": "<pid>",
"LogFailures": "false"
}
}
]
},
{ {
"Name": "ResetUclampGrp", "Name": "ResetUclampGrp",
"Actions": [ "Actions": [
@ -287,11 +498,35 @@
}, },
{ {
"Name": "OtaProfiles", "Name": "OtaProfiles",
"Profiles": [ "OtaPerformance", "ProcessCapacityNormal", "LowIoPriority", "TimerSlackHigh" ] "Profiles": [ "OtaPerformance", "ServiceCapacityLow", "LowIoPriority", "TimerSlackHigh" ]
},
{
"Name": "SCHED_QOS_SENSITIVE_EXTREME_SET",
"Profiles": [ "AdpfSet", "PreferIdleSet", "PreferFitSet", "BoostPrioSet", "PreemptWakeupSet" ]
},
{
"Name": "SCHED_QOS_SENSITIVE_EXTREME_CLEAR",
"Profiles": [ "AdpfClear", "PreferIdleClear", "PreferFitClear", "BoostPrioClear", "PreemptWakeupClear" ]
},
{
"Name": "SCHED_QOS_SENSITIVE_STANDARD_SET",
"Profiles": [ "AdpfSet", "PreferIdleSet", "PreferFitSet" ]
},
{
"Name": "SCHED_QOS_SENSITIVE_STANDARD_CLEAR",
"Profiles": [ "AdpfClear", "PreferIdleClear", "PreferFitClear" ]
},
{
"Name": "SCHED_QOS_POWER_EFFICIENCY_SET",
"Profiles": [ "AutoUclampMaxSet" ]
},
{
"Name": "SCHED_QOS_POWER_EFFICIENCY_CLEAR",
"Profiles": [ "AutoUclampMaxClear" ]
}, },
{ {
"Name": "InputPolicy", "Name": "InputPolicy",
"Profiles": [ "ResetUclampGrp" ] "Profiles": [ "MaxPerformance", "SCHED_QOS_SENSITIVE_EXTREME_SET" ]
} }
] ]
} }

View file

@ -990,6 +990,7 @@ void queryVersionHelper(android::hardware::usb::Usb *usb,
Status status; Status status;
pthread_mutex_lock(&usb->mLock); pthread_mutex_lock(&usb->mLock);
status = getPortStatusHelper(usb, currentPortStatus); status = getPortStatusHelper(usb, currentPortStatus);
if (status == Status::SUCCESS && currentPortStatus->size() > 0) {
queryMoistureDetectionStatus(usb, currentPortStatus); queryMoistureDetectionStatus(usb, currentPortStatus);
queryPowerTransferStatus(usb, currentPortStatus); queryPowerTransferStatus(usb, currentPortStatus);
queryNonCompliantChargerStatus(currentPortStatus); queryNonCompliantChargerStatus(currentPortStatus);
@ -1002,6 +1003,9 @@ void queryVersionHelper(android::hardware::usb::Usb *usb,
} else { } else {
ALOGI("Notifying userspace skipped. Callback is NULL"); ALOGI("Notifying userspace skipped. Callback is NULL");
} }
} else {
ALOGI("%s skipped. currentPortStatus is empty", __func__);
}
pthread_mutex_unlock(&usb->mLock); pthread_mutex_unlock(&usb->mLock);
} }

View file

@ -19,8 +19,9 @@ LOCAL_WIFI_PATH := device/google/gs201/wifi/qcom
# wlan flags # wlan flags
BOARD_WLAN_DEVICE := qcwcn BOARD_WLAN_DEVICE := qcwcn
BOARD_WLAN_CHIP := wcn6740 BOARD_WLAN_CHIP := wcn6740
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE) # Use full namespace path for both BOARD_WPA_SUPPLICANT_PRIVATE_LIB and BOARD_HOSTAPD_PRIVATE_LIB due to wlan module for sw5100 has its own namespace.
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE) BOARD_WPA_SUPPLICANT_PRIVATE_LIB := //hardware/qcom/wlan/wcn6740/qcwcn/wpa_supplicant_8_lib:lib_driver_cmd_$(BOARD_WLAN_DEVICE)
BOARD_HOSTAPD_PRIVATE_LIB := //hardware/qcom/wlan/wcn6740/qcwcn/wpa_supplicant_8_lib:lib_driver_cmd_$(BOARD_WLAN_DEVICE)
BOARD_WPA_SUPPLICANT_DRIVER := NL80211 BOARD_WPA_SUPPLICANT_DRIVER := NL80211
BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_DRIVER := NL80211
WPA_SUPPLICANT_VERSION := VER_0_8_X WPA_SUPPLICANT_VERSION := VER_0_8_X
@ -36,7 +37,7 @@ WIFI_FEATURE_IMU_DETECTION := true
WIFI_HIDL_UNIFIED_SUPPLICANT_SERVICE_RC_ENTRY := true WIFI_HIDL_UNIFIED_SUPPLICANT_SERVICE_RC_ENTRY := true
# Avoid Wifi reset on MAC Address change # Avoid Wifi reset on MAC Address change
# WIFI_AVOID_IFACE_RESET_MAC_CHANGE := true # WIFI_AVOID_IFACE_RESET_MAC_CHANGE := true
# WIFI_FEATURE_HOSTAPD_11AX := true WIFI_FEATURE_HOSTAPD_11AX := true
WIFI_DRIVER_STATE_CTRL_PARAM := "/dev/wlan" WIFI_DRIVER_STATE_CTRL_PARAM := "/dev/wlan"
WIFI_DRIVER_STATE_ON := "ON" WIFI_DRIVER_STATE_ON := "ON"
WIFI_DRIVER_STATE_OFF := "OFF" WIFI_DRIVER_STATE_OFF := "OFF"