Merge Android 14 QPR3 to AOSP main

Bug: 346855327
Merged-In: I7ceeb6d178b83f9029bcc4fd3e28fc33c8ce56e9
Change-Id: I3b7e1df15b00c4aa916b5bbc3497022a01f44371
This commit is contained in:
Xin Li 2024-06-13 10:48:23 -07:00
commit 635f54a299
22 changed files with 246 additions and 187 deletions

View file

@ -163,6 +163,7 @@ TARGET_COPY_OUT_SYSTEM_EXT := system_ext
# Video Codec # Video Codec
######################## ########################
# 1. Exynos C2 # 1. Exynos C2
BOARD_USE_CODEC2_HIDL_1_2 := true
BOARD_USE_CSC_FILTER := false BOARD_USE_CSC_FILTER := false
BOARD_USE_DEC_SW_CSC := true BOARD_USE_DEC_SW_CSC := true
BOARD_USE_ENC_SW_CSC := true BOARD_USE_ENC_SW_CSC := true
@ -347,6 +348,14 @@ KERNEL_MODULES := $(wildcard $(KERNEL_MODULE_DIR)/*.ko)
BOARD_VENDOR_KERNEL_MODULES_BLOCKLIST_FILE := $(KERNEL_MODULE_DIR)/vendor_dlkm.modules.blocklist BOARD_VENDOR_KERNEL_MODULES_BLOCKLIST_FILE := $(KERNEL_MODULE_DIR)/vendor_dlkm.modules.blocklist
# Since Pixel 6/6pro doesn't have a system_dlkm partition, the GKI modules are
# on the vendor_dlkm partition. In order to allow them to load properly, we
# need to retain the module signature which would normally get stripped during
# packaging. Disable stripping the vendor_dlkm modules to retain the GKI
# modules' signature. Note, the pixel kernel builds always strip the modules in
# favor of saving space via the kleaf property: strip_modules = True.
BOARD_DO_NOT_STRIP_VENDOR_MODULES := true
# Prebuilt kernel modules that are *not* listed in vendor_boot.modules.load # Prebuilt kernel modules that are *not* listed in vendor_boot.modules.load
BOARD_PREBUILT_VENDOR_RAMDISK_KERNEL_MODULES = fips140/fips140.ko BOARD_PREBUILT_VENDOR_RAMDISK_KERNEL_MODULES = fips140/fips140.ko
BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_EXTRA = $(foreach k,$(BOARD_PREBUILT_VENDOR_RAMDISK_KERNEL_MODULES),$(if $(wildcard $(KERNEL_MODULE_DIR)/$(k)), $(k))) BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_EXTRA = $(foreach k,$(BOARD_PREBUILT_VENDOR_RAMDISK_KERNEL_MODULES),$(if $(wildcard $(KERNEL_MODULE_DIR)/$(k)), $(k)))

View file

@ -16,12 +16,8 @@ on init
write /proc/vendor_sched/teo_util_threshold "1024 1024 1024" write /proc/vendor_sched/teo_util_threshold "1024 1024 1024"
# Boot time fs tuning # Boot time fs tuning
write /sys/block/sda/queue/iostats 0
write /sys/block/sda/queue/scheduler bfq write /sys/block/sda/queue/scheduler bfq
write /sys/block/sda/queue/iosched/slice_idle 0 write /sys/block/sda/queue/iosched/slice_idle 0
write /sys/block/sda/queue/nr_requests 256
write /dev/sys/fs/by-name/userdata/data_io_flag 56
write /dev/sys/fs/by-name/userdata/node_io_flag 56
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
@ -101,15 +97,6 @@ on init
chmod 0220 /proc/vendor_sched/pmu_poll_enable chmod 0220 /proc/vendor_sched/pmu_poll_enable
chmod 0220 /proc/vendor_sched/pmu_poll_time chmod 0220 /proc/vendor_sched/pmu_poll_time
wait /dev/block/platform/${ro.boot.boot_devices}
symlink /dev/block/platform/${ro.boot.boot_devices} /dev/block/bootdevice
# to access UFS/eMMC sysfs directly
symlink /sys/devices/platform/${ro.boot.boot_devices} /dev/sys/block/bootdevice
# Disable UFS powersaving
write /dev/sys/block/bootdevice/clkgate_enable 0
start vendor.keymaster-3-0 start vendor.keymaster-3-0
# ZRAM setup # ZRAM setup
@ -161,11 +148,11 @@ on init
mkdir /dev/socket/pdx/system/vr/sensors 0775 system system mkdir /dev/socket/pdx/system/vr/sensors 0775 system system
# Boot time 183626384 # Boot time 183626384
write /proc/vendor_sched/groups/ta/uclamp_min 161 write /proc/vendor_sched/groups/ta/uclamp_min 201
write /proc/vendor_sched/groups/ta/prefer_idle 1 write /proc/vendor_sched/groups/ta/prefer_idle 1
write /proc/vendor_sched/groups/fg/uclamp_min 161 write /proc/vendor_sched/groups/fg/uclamp_min 201
write /proc/vendor_sched/groups/fg/prefer_idle 1 write /proc/vendor_sched/groups/fg/prefer_idle 1
write /proc/vendor_sched/groups/sys/uclamp_min 161 write /proc/vendor_sched/groups/sys/uclamp_min 201
write /proc/vendor_sched/groups/sys/prefer_idle 1 write /proc/vendor_sched/groups/sys/prefer_idle 1
# governor setting # governor setting
@ -247,6 +234,7 @@ on init
chown system system /dev/logbuffer_pca9468 chown system system /dev/logbuffer_pca9468
chown system system /dev/logbuffer_cpm chown system system /dev/logbuffer_cpm
chown system system /dev/logbuffer_bd chown system system /dev/logbuffer_bd
chown system system /dev/logbuffer_cpif
# Dump maxfg # Dump maxfg
chown system system /sys/class/power_supply/maxfg/m5_model_state chown system system /sys/class/power_supply/maxfg/m5_model_state
@ -298,6 +286,7 @@ on init
# BatteryHealthData # BatteryHealthData
chown system system /sys/class/power_supply/battery/first_usage_date chown system system /sys/class/power_supply/battery/first_usage_date
chown system system /sys/class/power_supply/battery/swelling_data
# Battery Defender # Battery Defender
chown system system /sys/devices/platform/google,battery/power_supply/battery/bd_trickle_cnt chown system system /sys/devices/platform/google,battery/power_supply/battery/bd_trickle_cnt
@ -323,6 +312,7 @@ on init
chown system system /sys/devices/platform/google,charger/bd_trigger_time chown system system /sys/devices/platform/google,charger/bd_trigger_time
chown system system /sys/devices/platform/google,charger/bd_trigger_voltage chown system system /sys/devices/platform/google,charger/bd_trigger_voltage
chown system system /sys/devices/platform/google,charger/bd_clear chown system system /sys/devices/platform/google,charger/bd_clear
chown system system /sys/devices/platform/google,charger/bd_state
chown system system /sys/devices/platform/google,charger/charge_start_level chown system system /sys/devices/platform/google,charger/charge_start_level
chown system system /sys/devices/platform/google,charger/charge_stop_level chown system system /sys/devices/platform/google,charger/charge_stop_level
chown system system /sys/devices/platform/google,cpm/dc_ctl chown system system /sys/devices/platform/google,cpm/dc_ctl
@ -500,15 +490,6 @@ on early-boot
# Wait for insmod_sh to finish all common modules # Wait for insmod_sh to finish all common modules
wait_for_prop vendor.common.modules.ready 1 wait_for_prop vendor.common.modules.ready 1
# Permission for Health Storage HAL
chown system system /dev/sys/block/bootdevice/manual_gc
# Permission for Pixelstats
chown system system /dev/sys/block/bootdevice/slowio_read_cnt
chown system system /dev/sys/block/bootdevice/slowio_write_cnt
chown system system /dev/sys/block/bootdevice/slowio_unmap_cnt
chown system system /dev/sys/block/bootdevice/slowio_sync_cnt
on boot on boot
# Allow to access debugfs for system:system # Allow to access debugfs for system:system
@ -601,6 +582,7 @@ on fs
chown system system /sys/class/backlight/panel0-backlight/dimming_on chown system system /sys/class/backlight/panel0-backlight/dimming_on
chown system system /sys/class/backlight/panel0-backlight/hbm_mode chown system system /sys/class/backlight/panel0-backlight/hbm_mode
chown system system /sys/class/backlight/panel0-backlight/local_hbm_mode chown system system /sys/class/backlight/panel0-backlight/local_hbm_mode
chown system system /sys/class/backlight/panel0-backlight/allow_wakeup_by_state_change
chown system system /sys/devices/platform/exynos-drm/primary-panel/gamma chown system system /sys/devices/platform/exynos-drm/primary-panel/gamma
chown system system /sys/devices/platform/exynos-drm/primary-panel/min_vrefresh chown system system /sys/devices/platform/exynos-drm/primary-panel/min_vrefresh
chown system system /sys/devices/platform/exynos-drm/primary-panel/idle_delay_ms chown system system /sys/devices/platform/exynos-drm/primary-panel/idle_delay_ms
@ -696,20 +678,6 @@ on property:init.svc.vendor.charger=running
write /sys/devices/system/cpu/cpu7/online 0 write /sys/devices/system/cpu/cpu7/online 0
on property:sys.boot_completed=1 on property:sys.boot_completed=1
# Runtime fs tuning
write /sys/block/sda/queue/nr_requests 64
write /sys/block/sda/queue/iostats 1
write /dev/sys/fs/by-name/userdata/data_io_flag 8
write /dev/sys/fs/by-name/userdata/node_io_flag 8
# Permission for Pixelstats
chown system system /dev/sys/fs/by-name/userdata/compr_written_block
chown system system /dev/sys/fs/by-name/userdata/compr_saved_block
chown system system /dev/sys/fs/by-name/userdata/compr_new_inode
chown system system /dev/sys/fs/by-name/userdata/gc_segment_mode
chown system system /dev/sys/fs/by-name/userdata/gc_reclaimed_segments
# Enable ZRAM on boot_complete # Enable ZRAM on boot_complete
swapon_all /vendor/etc/fstab.${ro.board.platform} swapon_all /vendor/etc/fstab.${ro.board.platform}
write /proc/sys/vm/swappiness 60 write /proc/sys/vm/swappiness 60
@ -721,9 +689,6 @@ on property:sys.boot_completed=1
write /proc/sys/vm/dirty_expire_centisecs 3000 write /proc/sys/vm/dirty_expire_centisecs 3000
write /proc/sys/vm/dirty_background_ratio 10 write /proc/sys/vm/dirty_background_ratio 10
# Enable UFS powersaving
write /dev/sys/block/bootdevice/clkgate_enable 1
# Reset DDR frequency # Reset DDR frequency
write /sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/exynos_data/cancel_boot_freq 1 write /sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/exynos_data/cancel_boot_freq 1
write /sys/devices/platform/17000020.devfreq_int/devfreq/17000020.devfreq_int/exynos_data/cancel_boot_freq 1 write /sys/devices/platform/17000020.devfreq_int/devfreq/17000020.devfreq_int/exynos_data/cancel_boot_freq 1
@ -884,7 +849,7 @@ on property:vendor.thermal.link_ready=1
# BCL # BCL
write /sys/devices/virtual/pmic/mitigation/clock_ratio/tpu_light_clk_ratio 0x80041c3 write /sys/devices/virtual/pmic/mitigation/clock_ratio/tpu_light_clk_ratio 0x80041c3
write /sys/devices/virtual/pmic/mitigation/clock_ratio/cpu2_light_clk_ratio 0xfff041c3 write /sys/devices/virtual/pmic/mitigation/clock_ratio/cpu2_light_clk_ratio 0xfff041c3
write /sys/devices/virtual/pmic/mitigation/clock_ratio/gpu_heavy_clk_ratio 0xfff04381 write /sys/devices/virtual/pmic/mitigation/clock_ratio/gpu_heavy_clk_ratio 0xfff04385
write /sys/devices/virtual/pmic/mitigation/clock_ratio/tpu_heavy_clk_ratio 0xfff041c1 write /sys/devices/virtual/pmic/mitigation/clock_ratio/tpu_heavy_clk_ratio 0xfff041c1
write /sys/devices/virtual/pmic/mitigation/clock_ratio/cpu2_heavy_clk_ratio 0xfff041c0 write /sys/devices/virtual/pmic/mitigation/clock_ratio/cpu2_heavy_clk_ratio 0xfff041c0
write /dev/thermal/tz-by-name/smpl_gm/policy user_space write /dev/thermal/tz-by-name/smpl_gm/policy user_space
@ -974,16 +939,6 @@ on charger
mkdir /dev/thermal/cdev-by-name 0750 system system mkdir /dev/thermal/cdev-by-name 0750 system system
start vendor.thermal.symlinks start vendor.thermal.symlinks
# Runtime fs tuning
write /sys/block/sda/queue/nr_requests 64
write /sys/block/sda/queue/iostats 1
write /sys/block/sda/queue/iosched/slice_idle 0
write /dev/sys/fs/by-name/userdata/data_io_flag 8
write /dev/sys/fs/by-name/userdata/node_io_flag 8
# Enable UFS powersaving
write /dev/sys/block/bootdevice/clkgate_enable 1
# Cancel boot devfreq and uclamp # Cancel boot devfreq and uclamp
write /sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/exynos_data/cancel_boot_freq 1 write /sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/exynos_data/cancel_boot_freq 1
write /sys/devices/platform/17000020.devfreq_int/devfreq/17000020.devfreq_int/exynos_data/cancel_boot_freq 1 write /sys/devices/platform/17000020.devfreq_int/devfreq/17000020.devfreq_int/exynos_data/cancel_boot_freq 1
@ -1003,10 +958,7 @@ on property:vendor.disable.bcl.control=1
on property:vendor.disable.bcl.control=0 on property:vendor.disable.bcl.control=0
write /sys/devices/virtual/pmic/mitigation/instruction/enable_mitigation 1 write /sys/devices/virtual/pmic/mitigation/instruction/enable_mitigation 1
# UFS
on property:ro.boot.mode=charger && property:init.svc.vendor.charger=running on property:ro.boot.mode=charger && property:init.svc.vendor.charger=running
# Enable UFS powersaving in Off Mode Charger
write /dev/sys/block/bootdevice/clkgate_enable 1
# Disable dock-defend in Off Mode Charger # Disable dock-defend in Off Mode Charger
write /sys/devices/platform/google,charger/dd_state -1 write /sys/devices/platform/google,charger/dd_state -1

View file

@ -55,7 +55,6 @@
/dev/video55 0666 system graphics /dev/video55 0666 system graphics
/dev/g2d 0660 system graphics /dev/g2d 0660 system graphics
/dev/fimg2d 0666 system graphics /dev/fimg2d 0666 system graphics
/dev/i2c-2 0660 system system
/dev/HPD 0660 system system /dev/HPD 0660 system system
# wfd # wfd
@ -221,31 +220,24 @@
/sys/devices/platform/11110000.usb/11110000.dwc3/xhci-hcd-exynos.4.auto/usb2/2-1/*/*/leds/* multi_intensity 0664 system system /sys/devices/platform/11110000.usb/11110000.dwc3/xhci-hcd-exynos.4.auto/usb2/2-1/*/*/leds/* multi_intensity 0664 system system
# Dump Battery EEPROM history for pixelstats # Dump Battery EEPROM history for pixelstats
/sys/devices/platform/10970000.hsi2c/i2c-7/7-0050 eeprom 0644 system system /sys/devices/platform/10970000.hsi2c/i2c-8/8-0050 eeprom 0644 system system
/dev/battery_history 0644 system system /dev/battery_history 0644 system system
# ODPM # ODPM
/sys/bus/iio/devices/iio:device* enabled_rails 0660 system system /sys/bus/iio/devices/iio:device* enabled_rails 0660 system system
# USB # USB
/sys/class/typec/port0 power_role 664 root system /sys/class/typec/port0 power_role 664 root system
/sys/class/typec/port0 data_role 664 root system /sys/class/typec/port0 data_role 664 root system
/sys/class/typec/port0 port_type 664 root system /sys/class/typec/port0 port_type 664 root system
/sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc contaminant_detection 664 root system /sys/devices/platform/10d50000.hsi2c/i2c-12/12-0025 contaminant_detection 664 root system
/sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc usb_limit_accessory_current 664 root system /sys/devices/platform/10d50000.hsi2c/i2c-12/12-0025 usb_limit_accessory_current 664 root system
/sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc usb_limit_accessory_enable 664 root system /sys/devices/platform/10d50000.hsi2c/i2c-12/12-0025 usb_limit_accessory_enable 664 root system
/sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc usb_limit_sink_current 664 root system /sys/devices/platform/10d50000.hsi2c/i2c-12/12-0025 usb_limit_sink_current 664 root system
/sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc usb_limit_sink_enable 664 root system /sys/devices/platform/10d50000.hsi2c/i2c-12/12-0025 usb_limit_sink_enable 664 root system
/sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc usb_limit_source_enable 664 root system /sys/devices/platform/10d50000.hsi2c/i2c-12/12-0025 usb_limit_source_enable 664 root system
/sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc update_sdp_enum_timeout 664 root system /sys/devices/platform/10d50000.hsi2c/i2c-12/12-0025 update_sdp_enum_timeout 664 root system
/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025 contaminant_detection 664 root system /sys/devices/platform/11110000.usb dwc3_exynos_otg_b_sess 664 root system
/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025 usb_limit_accessory_current 664 root system /sys/devices/platform/11110000.usb dwc3_exynos_otg_id 664 root system
/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025 usb_limit_accessory_enable 664 root system /sys/devices/platform/11110000.usb usb_data_enabled 664 root system
/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025 usb_limit_sink_current 664 root system /sys/devices/platform/google,pogo move_data_to_usb 664 root system
/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025 usb_limit_sink_enable 664 root system
/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025 usb_limit_source_enable 664 root system
/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025 update_sdp_enum_timeout 664 root system
/sys/devices/platform/11110000.usb dwc3_exynos_otg_b_sess 664 root system
/sys/devices/platform/11110000.usb dwc3_exynos_otg_id 664 root system
/sys/devices/platform/11110000.usb usb_data_enabled 664 root system
/sys/devices/platform/google,pogo move_data_to_usb 664 root system

View file

@ -54,6 +54,8 @@
<exception package="com.google.android.apps.camera.services"> <exception package="com.google.android.apps.camera.services">
<!-- Camera --> <!-- Camera -->
<permission name="android.permission.CAMERA" fixed="false"/> <permission name="android.permission.CAMERA" fixed="false"/>
<!-- Camera Connectivity -->
<permission name="android.permission.ACCESS_FINE_LOCATION" fixed="false"/>
<permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/> <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
<permission name="android.permission.BLUETOOTH_CONNECT" fixed="false"/> <permission name="android.permission.BLUETOOTH_CONNECT" fixed="false"/>
<permission name="android.permission.BLUETOOTH_SCAN" fixed="false"/> <permission name="android.permission.BLUETOOTH_SCAN" fixed="false"/>

View file

@ -36,6 +36,9 @@ include device/google/gs-common/sota_app/factoryota.mk
include device/google/gs-common/misc_writer/misc_writer.mk include device/google/gs-common/misc_writer/misc_writer.mk
include device/google/gs-common/gyotaku_app/gyotaku.mk include device/google/gs-common/gyotaku_app/gyotaku.mk
include device/google/gs-common/bootctrl/bootctrl_aidl.mk include device/google/gs-common/bootctrl/bootctrl_aidl.mk
ifneq ($(filter oriole raven bluejay, $(TARGET_PRODUCT)),)
include device/google/gs-common/bcmbt/dump/dumplog.mk
endif
TARGET_BOARD_PLATFORM := gs101 TARGET_BOARD_PLATFORM := gs101
DEVICE_IS_64BIT_ONLY ?= $(if $(filter %_64,$(TARGET_PRODUCT)),true,false) DEVICE_IS_64BIT_ONLY ?= $(if $(filter %_64,$(TARGET_PRODUCT)),true,false)
@ -66,7 +69,7 @@ PRODUCT_SOONG_NAMESPACES += \
hardware/google/pixel \ hardware/google/pixel \
device/google/gs101 \ device/google/gs101 \
device/google/gs101/powerstats \ device/google/gs101/powerstats \
system/chre/host/hal_generic \ vendor/google_devices/common/chre/host/hal \
vendor/google/whitechapel/tools \ vendor/google/whitechapel/tools \
vendor/google/camera \ vendor/google/camera \
vendor/google/interfaces \ vendor/google/interfaces \
@ -236,6 +239,7 @@ PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.vulkan.version-1_3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \ frameworks/native/data/etc/android.hardware.vulkan.version-1_3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \
frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \ frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \
frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute.xml \ frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute.xml \
frameworks/native/data/etc/android.software.contextualsearch.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.contextualsearch.xml \
frameworks/native/data/etc/android.software.vulkan.deqp.level-2023-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml \ frameworks/native/data/etc/android.software.vulkan.deqp.level-2023-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml \
frameworks/native/data/etc/android.software.opengles.deqp.level-2023-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.opengles.deqp.level.xml frameworks/native/data/etc/android.software.opengles.deqp.level-2023-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.opengles.deqp.level.xml
@ -254,8 +258,7 @@ PRODUCT_VENDOR_PROPERTIES += \
PRODUCT_VENDOR_PROPERTIES += \ PRODUCT_VENDOR_PROPERTIES += \
ro.opengles.version=196610 \ ro.opengles.version=196610 \
graphics.gpu.profiler.support=true \ graphics.gpu.profiler.support=true
debug.renderengine.backend=skiaglthreaded
# b/295257834 Add HDR shaders to SurfaceFlinger's pre-warming cache # b/295257834 Add HDR shaders to SurfaceFlinger's pre-warming cache
PRODUCT_VENDOR_PROPERTIES += ro.surface_flinger.prime_shader_cache.ultrahdr=1 PRODUCT_VENDOR_PROPERTIES += ro.surface_flinger.prime_shader_cache.ultrahdr=1
@ -338,24 +341,20 @@ PRODUCT_HOST_PACKAGES += \
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
messaging messaging
# Contexthub HAL # CHRE
PRODUCT_PACKAGES += \ ## tools
android.hardware.contexthub-service.generic
# CHRE tools
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT))) ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
chre_power_test_client \ chre_power_test_client \
chre_test_client chre_test_client \
chre_aidl_hal_client
endif endif
## HAL
include device/google/gs-common/chre/hal.mk
PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.context_hub.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.context_hub.xml frameworks/native/data/etc/android.hardware.context_hub.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.context_hub.xml
# Enable the CHRE Daemon
CHRE_USF_DAEMON_ENABLED := true
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
chre \
preloaded_nanoapps.json preloaded_nanoapps.json
# Filesystem management tools # Filesystem management tools
@ -512,7 +511,7 @@ PRODUCT_PACKAGES += \
# for now include gralloc here. should come from hardware/google_devices/exynos5 # for now include gralloc here. should come from hardware/google_devices/exynos5
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
android.hardware.graphics.mapper@4.0-impl \ android.hardware.graphics.mapper@4.0-impl \
android.hardware.graphics.allocator-V2-service android.hardware.graphics.allocator-V1-service
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
android.hardware.memtrack-service.pixel \ android.hardware.memtrack-service.pixel \
@ -677,10 +676,8 @@ PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.use_color_management=tr
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.protected_contents=true PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.protected_contents=true
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.display_update_imminent_timeout_ms=50 PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.display_update_imminent_timeout_ms=50
# force to blend in P3 mode
PRODUCT_PROPERTY_OVERRIDES += \ PRODUCT_PROPERTY_OVERRIDES += \
persist.sys.sf.native_mode=2 \ persist.sys.sf.native_mode=2
persist.sys.sf.color_mode=9
PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \
device/google/gs101/display/display_colordata_cal0.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_colordata_cal0.pb device/google/gs101/display/display_colordata_cal0.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_colordata_cal0.pb
@ -728,30 +725,14 @@ endif
$(call soong_config_set,bigo,soc,gs101) $(call soong_config_set,bigo,soc,gs101)
# 1. Codec 2.0 # 1. Codec 2.0
# exynos service # for settings used by different C2 hal
PRODUCT_SOONG_NAMESPACES += vendor/samsung_slsi/codec2 include device/google/gs-common/mediacodec/common/mediacodec_common.mk
# for Exynos C2 Hal
include device/google/gs-common/mediacodec/samsung/mediacodec_samsung.mk
PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \
device/google/gs101/media_codecs_performance_c2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance_c2.xml \ device/google/gs101/media_codecs_performance_c2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance_c2.xml \
PRODUCT_PACKAGES += \
samsung.hardware.media.c2@1.0-service \
codec2.vendor.base.policy \
codec2.vendor.ext.policy \
libExynosC2ComponentStore \
libExynosC2H264Dec \
libExynosC2H264Enc \
libExynosC2HevcDec \
libExynosC2HevcEnc \
libExynosC2Mpeg4Dec \
libExynosC2Mpeg4Enc \
libExynosC2H263Dec \
libExynosC2H263Enc \
libExynosC2Vp8Dec \
libExynosC2Vp8Enc \
libExynosC2Vp9Dec \
libExynosC2Vp9Enc
PRODUCT_PROPERTY_OVERRIDES += \ PRODUCT_PROPERTY_OVERRIDES += \
debug.stagefright.c2-poolmask=458752 \ debug.stagefright.c2-poolmask=458752 \
debug.c2.use_dmabufheaps=1 \ debug.c2.use_dmabufheaps=1 \
@ -1038,6 +1019,14 @@ PRODUCT_PROPERTY_OVERRIDES += persist.vendor.enable.thermal.genl=true
include device/google/gs-common/edgetpu/edgetpu.mk include device/google/gs-common/edgetpu/edgetpu.mk
# Config variables for TPU chip on device. # Config variables for TPU chip on device.
$(call soong_config_set,edgetpu_config,chip,abrolhos) $(call soong_config_set,edgetpu_config,chip,abrolhos)
# Include the edgetpu targets defined the namespaces below into the final image.
PRODUCT_SOONG_NAMESPACES += \
vendor/google_devices/gs101/proprietary/gchips/tpu/metrics \
vendor/google_devices/gs101/proprietary/gchips/tpu/tflite_delegate \
vendor/google_devices/gs101/proprietary/gchips/tpu/darwinn_logging_service \
vendor/google_devices/gs101/proprietary/gchips/tpu/nnapi_stable_aidl \
vendor/google_devices/gs101/proprietary/gchips/tpu/aidl \
vendor/google_devices/gs101/proprietary/gchips/tpu/hal
# TPU firmware # TPU firmware
PRODUCT_PACKAGES += edgetpu-abrolhos.fw PRODUCT_PACKAGES += edgetpu-abrolhos.fw
@ -1127,3 +1116,6 @@ PRODUCT_VENDOR_PROPERTIES += ro.crypto.metadata_init_delete_all_keys.enabled=tru
# Hardware Info Collection # Hardware Info Collection
include hardware/google/pixel/HardwareInfo/HardwareInfo.mk include hardware/google/pixel/HardwareInfo/HardwareInfo.mk
# Touch service
include device/google/gs-common/touch/twoshay/aidl_gs101.mk

View file

@ -84,14 +84,6 @@
<instance>default</instance> <instance>default</instance>
</interface> </interface>
</hal> </hal>
<hal format="aidl" optional="true">
<name>com.google.input</name>
<version>2</version>
<interface>
<name>ITouchContextService</name>
<instance>default</instance>
</interface>
</hal>
<hal format="aidl" optional="true"> <hal format="aidl" optional="true">
<name>hardware.qorvo.uwb</name> <name>hardware.qorvo.uwb</name>
<version>2</version> <version>2</version>
@ -142,13 +134,6 @@
<instance>sced0</instance> <instance>sced0</instance>
</interface> </interface>
</hal> </hal>
<hal format="aidl" optional="true">
<name>com.google.pixel.modem.logmasklibrary</name>
<interface>
<name>ILiboemserviceProxy</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="true"> <hal format="hidl" optional="true">
<name>vendor.samsung_slsi.telephony.hardware.radioExternal</name> <name>vendor.samsung_slsi.telephony.hardware.radioExternal</name>
<version>1.1</version> <version>1.1</version>

View file

@ -35,11 +35,7 @@ cat "/sys/class/power_supply/main-charger/uevent"
echo "\n------ Power supply property pca9486-mains ------" echo "\n------ Power supply property pca9486-mains ------"
cat "/sys/class/power_supply/pca9468-mains/uevent" cat "/sys/class/power_supply/pca9468-mains/uevent"
echo "\n------ Power supply property tcpm ------" echo "\n------ Power supply property tcpm ------"
if [ -e "/sys/class/power_supply/tcpm-source-psy-i2c-max77759tcpc/uevent" ]; then cat /sys/class/power_supply/tcpm-source-psy-*/uevent
cat "/sys/class/power_supply/tcpm-source-psy-i2c-max77759tcpc/uevent"
elif [ -e "/sys/class/power_supply/tcpm-source-psy-8-0025/uevent" ]; then
cat "/sys/class/power_supply/tcpm-source-psy-8-0025/uevent"
fi
echo "\n------ Power supply property usb ------" echo "\n------ Power supply property usb ------"
cat "/sys/class/power_supply/usb/uevent" cat "/sys/class/power_supply/usb/uevent"
echo "\n------ Power supply property wireless ------" echo "\n------ Power supply property wireless ------"
@ -93,10 +89,7 @@ then
fi fi
echo "\n------ TCPC ------" echo "\n------ TCPC ------"
max77759tcpc_path="/sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc" max77759tcpc_path="/sys/devices/platform/10d50000.hsi2c/i2c-12/12-0025"
if [ -e "/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025" ]; then
max77759tcpc_path="/sys/devices/platform/10d50000.hsi2c/i2c-8/8-0025"
fi
echo "registers:" echo "registers:"
cat $max77759tcpc_path/registers cat $max77759tcpc_path/registers
echo "frs:" echo "frs:"
@ -123,6 +116,8 @@ cat "/dev/logbuffer_pca9468"
echo "\n------ Battery Health ------" echo "\n------ Battery Health ------"
cat "/sys/class/power_supply/battery/health_index_stats" cat "/sys/class/power_supply/battery/health_index_stats"
echo "\n------ Battery Health SoC Residency ------"
cat "/sys/class/power_supply/battery/swelling_data"
echo "\n------ BMS ------" echo "\n------ BMS ------"
cat "/dev/logbuffer_ssoc" cat "/dev/logbuffer_ssoc"
echo "\n------ TTF ------" echo "\n------ TTF ------"
@ -159,14 +154,15 @@ do
echo "$f: `cat $f`" echo "$f: `cat $f`"
done done
echo "\n------ DC_registers dump ------"
cat "/sys/class/power_supply/pca9468-mains/device/registers_dump"
echo "\n------ max77759_chg registers dump ------"
cat "/sys/class/power_supply/main-charger/device/registers_dump"
echo "\n------ max77729_pmic registers dump ------"
cat /sys/devices/platform/10d50000.hsi2c/i2c-*/*-0066/registers_dump
if [ $build_type = "userdebug" ] if [ $build_type = "userdebug" ]
then then
echo "\n------ DC_registers dump ------"
cat "/sys/class/power_supply/pca9468-mains/device/registers_dump"
echo "\n------ max77759_chg registers dump ------"
cat "/d/max77759_chg/registers"
echo "\n------ max77729_pmic registers dump ------"
cat "/d/max77729_pmic/registers"
echo "\n------ Charging table dump ------" echo "\n------ Charging table dump ------"
cat "/d/google_battery/chg_raw_profile" cat "/d/google_battery/chg_raw_profile"
@ -204,9 +200,9 @@ then
fi fi
echo "\n------ Battery EEPROM ------" echo "\n------ Battery EEPROM ------"
if [ -e "/sys/devices/platform/10970000.hsi2c/i2c-7/7-0050/eeprom" ] if [ -e "/sys/devices/platform/10970000.hsi2c/i2c-8/8-0050/eeprom" ]
then then
xxd /sys/devices/platform/10970000.hsi2c/i2c-7/7-0050/eeprom xxd /sys/devices/platform/10970000.hsi2c/i2c-8/8-0050/eeprom
fi fi
echo "\n------ Charger Stats ------" echo "\n------ Charger Stats ------"

View file

@ -159,3 +159,17 @@ Op9P1ZW2kjqv5D2+q/qtaePAyHn3B05UZrQYUmx7LaHNO7op6dZgCdoR0sVsR+Fc
Zyr0AhgiuTWrjtUEOGx2qJVwAsHkpqtlN+DaGT08dT64LvIf0bfGvmtm++/WEDWJ Zyr0AhgiuTWrjtUEOGx2qJVwAsHkpqtlN+DaGT08dT64LvIf0bfGvmtm++/WEDWJ
HInwg85pGm+sEkYbYFRBD0woPBsL3g== HInwg85pGm+sEkYbYFRBD0woPBsL3g==
-----END CERTIFICATE----- -----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQsw
CQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURp
Z2lDZXJ0IFRMUyBFQ0MgUDM4NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2
MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJ
bmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQgUm9vdCBHNTB2MBAG
ByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1TzvdlHJS
7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp
0zVozptjn4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICIS
B4CIfBFqMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49
BAMDA2gAMGUCMQCJao1H5+z8blUD2WdsJk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQ
LgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIxAJSdYsiJvRmEFOml+wG4
DXZDjC5Ty3zfDBeWUA==
-----END CERTIFICATE-----

View file

@ -34,13 +34,5 @@
<name>android.hardware.boot</name> <name>android.hardware.boot</name>
<fqname>IBootControl/default</fqname> <fqname>IBootControl/default</fqname>
</hal> </hal>
<hal format="aidl">
<name>com.google.input</name>
<version>2</version>
<interface>
<name>ITouchContextService</name>
<instance>default</instance>
</interface>
</hal>
<kernel target-level="6"/> <kernel target-level="6"/>
</manifest> </manifest>

View file

@ -26,13 +26,5 @@
<transport>hwbinder</transport> <transport>hwbinder</transport>
<fqname>@1.3::IDevice/google-edgetpu</fqname> <fqname>@1.3::IDevice/google-edgetpu</fqname>
</hal> </hal>
<hal format="aidl">
<name>com.google.input</name>
<version>2</version>
<interface>
<name>ITouchContextService</name>
<instance>default</instance>
</interface>
</hal>
<kernel target-level="6"/> <kernel target-level="6"/>
</manifest> </manifest>

View file

@ -5,8 +5,16 @@
<version>1.0</version> <version>1.0</version>
<interface> <interface>
<name>IComponentStore</name> <name>IComponentStore</name>
<instance>default</instance>
<instance>default1</instance> <instance>default1</instance>
</interface> </interface>
</hal> </hal>
<hal format="hidl">
<name>android.hardware.media.c2</name>
<transport>hwbinder</transport>
<version>1.2</version>
<interface>
<name>IComponentStore</name>
<instance>default</instance>
</interface>
</hal>
</manifest> </manifest>

View file

@ -2,7 +2,7 @@
<hal format="hidl"> <hal format="hidl">
<name>android.hardware.media.c2</name> <name>android.hardware.media.c2</name>
<transport>hwbinder</transport> <transport>hwbinder</transport>
<version>1.0</version> <version>1.2</version>
<interface> <interface>
<name>IComponentStore</name> <name>IComponentStore</name>
<instance>default</instance> <instance>default</instance>

View file

@ -175,10 +175,10 @@
<Limit name="measured-frame-rate-1280x720" range="38-40" /> <Limit name="measured-frame-rate-1280x720" range="38-40" />
</MediaCodec> </MediaCodec>
<MediaCodec name="c2.android.av1-dav1d.decoder" type="video/av01" update="true"> <MediaCodec name="c2.android.av1-dav1d.decoder" type="video/av01" update="true">
<Limit name="measured-frame-rate-352x288" range="353-362" /> <Limit name="measured-frame-rate-352x288" range="735-974" />
<Limit name="measured-frame-rate-640x360" range="178-210" /> <Limit name="measured-frame-rate-640x360" range="426-627" />
<Limit name="measured-frame-rate-720x480" range="101-129" /> <Limit name="measured-frame-rate-720x480" range="406-434" />
<Limit name="measured-frame-rate-1280x720" range="38-40" /> <Limit name="measured-frame-rate-1280x720" range="148-159" />
</MediaCodec> </MediaCodec>
</Decoders> </Decoders>

View file

@ -297,6 +297,7 @@
<item>com.zhiliaoapp.musically:0.07</item> <item>com.zhiliaoapp.musically:0.07</item>
<item>com.bilibili.app.in:0.07</item> <item>com.bilibili.app.in:0.07</item>
<item>com.twitter.android:0.07</item> <item>com.twitter.android:0.07</item>
<item>com.google.android.youtube:0.07</item>
</string-array> </string-array>
<!-- Pre-scale volume at volume step 1 for Absolute Volume --> <!-- Pre-scale volume at volume step 1 for Absolute Volume -->

View file

@ -1,4 +1,5 @@
on property:sys.boot_completed=1 on property:sys.boot_completed=1
chown system system /sys/class/power_supply/maxfg/fg_learning_events
start vendor.pixelstats_vendor start vendor.pixelstats_vendor
on post-fs-data on post-fs-data
chown system system /sys/kernel/metrics/irq/stats_reset chown system system /sys/kernel/metrics/irq/stats_reset

View file

@ -69,12 +69,23 @@ const struct SysfsCollector::SysfsPaths sysfs_paths = {
"/sys/kernel/metrics/thermal/tr_by_group/spmic/stats_reset" "/sys/kernel/metrics/thermal/tr_by_group/spmic/stats_reset"
} }
}, },
.GMSRPath = "/sys/class/power_supply/maxfg/gmsr" .GMSRPath = {
"/sys/class/power_supply/maxfg/gmsr",
"/sys/class/power_supply/maxfg_base/gmsr",
},
}; };
const struct UeventListener::UeventPaths ueventPaths = { const struct UeventListener::UeventPaths ueventPaths = {
.AudioUevent = "/devices/virtual/amcs/amcs", .AudioUevent = "/devices/virtual/amcs/amcs",
.TypeCPartnerUevent = "PRODUCT_TYPE="}; .TypeCPartnerUevent = "PRODUCT_TYPE=",
.FGLearningPath = {
"/sys/class/power_supply/maxfg/fg_learning_events"
},
.FwUpdatePath = "",
.FGModelLoadingPath = {
"/sys/class/power_supply/maxfg/m5_model_state"
}
};
int main() { int main() {
LOG(INFO) << "starting PixelStats"; LOG(INFO) << "starting PixelStats";

View file

@ -18,6 +18,7 @@
#include <Gs101CommonDataProviders.h> #include <Gs101CommonDataProviders.h>
#include "AocStateResidencyDataProvider.h" #include "AocStateResidencyDataProvider.h"
#include "DevfreqStateResidencyDataProvider.h" #include "DevfreqStateResidencyDataProvider.h"
#include <DisplayMrrStateResidencyDataProvider.h>
#include "DvfsStateResidencyDataProvider.h" #include "DvfsStateResidencyDataProvider.h"
#include "UfsStateResidencyDataProvider.h" #include "UfsStateResidencyDataProvider.h"
#include <dataproviders/GenericStateResidencyDataProvider.h> #include <dataproviders/GenericStateResidencyDataProvider.h>
@ -34,6 +35,7 @@
using aidl::android::hardware::power::stats::AocStateResidencyDataProvider; using aidl::android::hardware::power::stats::AocStateResidencyDataProvider;
using aidl::android::hardware::power::stats::DevfreqStateResidencyDataProvider; using aidl::android::hardware::power::stats::DevfreqStateResidencyDataProvider;
using aidl::android::hardware::power::stats::DisplayMrrStateResidencyDataProvider;
using aidl::android::hardware::power::stats::DvfsStateResidencyDataProvider; using aidl::android::hardware::power::stats::DvfsStateResidencyDataProvider;
using aidl::android::hardware::power::stats::UfsStateResidencyDataProvider; using aidl::android::hardware::power::stats::UfsStateResidencyDataProvider;
using aidl::android::hardware::power::stats::EnergyConsumerType; using aidl::android::hardware::power::stats::EnergyConsumerType;
@ -669,6 +671,11 @@ void addPixelStateResidencyDataProvider(std::shared_ptr<PowerStats> p) {
p->addStateResidencyDataProvider(std::move(pixelSdp)); p->addStateResidencyDataProvider(std::move(pixelSdp));
} }
void addDisplayMrr(std::shared_ptr<PowerStats> p) {
p->addStateResidencyDataProvider(std::make_unique<DisplayMrrStateResidencyDataProvider>(
"Display", "/sys/class/drm/card0/device/primary-panel/"));
}
void addGs101CommonDataProviders(std::shared_ptr<PowerStats> p) { void addGs101CommonDataProviders(std::shared_ptr<PowerStats> p) {
setEnergyMeter(p); setEnergyMeter(p);

View file

@ -22,4 +22,5 @@ using aidl::android::hardware::power::stats::PowerStats;
void addGs101CommonDataProviders(std::shared_ptr<PowerStats> p); void addGs101CommonDataProviders(std::shared_ptr<PowerStats> p);
void addDisplayMrr(std::shared_ptr<PowerStats> p);
void addNFC(std::shared_ptr<PowerStats> p, const std::string& path); void addNFC(std::shared_ptr<PowerStats> p, const std::string& path);

View file

@ -159,4 +159,12 @@
regulatory approval (for example, FCC pre-approval is required according to "594280 D01 regulatory approval (for example, FCC pre-approval is required according to "594280 D01
Software Configuration Control v02r01").--> Software Configuration Control v02r01").-->
<bool translatable="false" name ="config_wifiUpdateCountryCodeFromScanResultGeneric">true</bool> <bool translatable="false" name ="config_wifiUpdateCountryCodeFromScanResultGeneric">true</bool>
<!-- Boolean indicating performing a partial initial scan is enabled -->
<bool translatable="false" name="config_wifiEnablePartialInitialScan">true</bool>
<!-- Configure the max number of new channels to add into the initial partial scan list per network.
If equals to 0, it means there's no limit on the max number of channels to include per network.-->
<integer translatable="false" name="config_wifiInitialPartialScanMaxNewChannelsPerNetwork">3</integer>
</resources> </resources>

View file

@ -564,6 +564,11 @@ Usb::Usb()
ALOGE("pthread_condattr_destroy failed: %s", strerror(errno)); ALOGE("pthread_condattr_destroy failed: %s", strerror(errno));
abort(); abort();
} }
ALOGI("feature flag enable_usb_data_compliance_warning: %d",
usb_flags::enable_usb_data_compliance_warning());
ALOGI("feature flag enable_input_power_limited_warning: %d",
usb_flags::enable_input_power_limited_warning());
} }
ScopedAStatus Usb::switchRole(const string& in_portName, const PortRole& in_role, ScopedAStatus Usb::switchRole(const string& in_portName, const PortRole& in_role,

View file

@ -26,6 +26,7 @@
#include <pixelstats/StatsHelper.h> #include <pixelstats/StatsHelper.h>
#include <pixelusb/CommonUtils.h> #include <pixelusb/CommonUtils.h>
#include <sys/epoll.h> #include <sys/epoll.h>
#include <sys/timerfd.h>
#include <utils/Log.h> #include <utils/Log.h>
#include <regex> #include <regex>
@ -48,6 +49,9 @@ namespace usb {
#define UEVENT_MSG_LEN 2048 #define UEVENT_MSG_LEN 2048
#define USB_STATE_MAX_LEN 20 #define USB_STATE_MAX_LEN 20
#define DATA_ROLE_MAX_LEN 10 #define DATA_ROLE_MAX_LEN 10
#define WARNING_SURFACE_DELAY_SEC 5
#define ENUM_FAIL_DEFAULT_COUNT_THRESHOLD 3
#define DEVICE_FLAKY_CONNECTION_CONFIGURED_COUNT_THRESHOLD 5
constexpr char kUdcConfigfsPath[] = "/config/usb_gadget/g1/UDC"; constexpr char kUdcConfigfsPath[] = "/config/usb_gadget/g1/UDC";
constexpr char kNotAttachedState[] = "not attached\n"; constexpr char kNotAttachedState[] = "not attached\n";
@ -115,6 +119,15 @@ UsbDataSessionMonitor::UsbDataSessionMonitor(
if (addEpollFd(epollFd, ueventFd)) if (addEpollFd(epollFd, ueventFd))
abort(); abort();
unique_fd timerFd(timerfd_create(CLOCK_BOOTTIME, TFD_NONBLOCK));
if (timerFd.get() == -1) {
ALOGE("create timerFd failed");
abort();
}
if (addEpollFd(epollFd, timerFd))
abort();
if (addEpollFile(epollFd.get(), dataRolePath, mDataRoleFd) != 0) { if (addEpollFile(epollFd.get(), dataRolePath, mDataRoleFd) != 0) {
ALOGE("monitor data role failed"); ALOGE("monitor data role failed");
abort(); abort();
@ -139,6 +152,7 @@ UsbDataSessionMonitor::UsbDataSessionMonitor(
mEpollFd = std::move(epollFd); mEpollFd = std::move(epollFd);
mUeventFd = std::move(ueventFd); mUeventFd = std::move(ueventFd);
mTimerFd = std::move(timerFd);
mUpdatePortStatusCb = updatePortStatusCb; mUpdatePortStatusCb = updatePortStatusCb;
if (ReadFileToString(kUdcConfigfsPath, &udc) && !udc.empty()) if (ReadFileToString(kUdcConfigfsPath, &udc) && !udc.empty())
@ -150,6 +164,9 @@ UsbDataSessionMonitor::UsbDataSessionMonitor(
ALOGE("pthread creation failed %d", errno); ALOGE("pthread creation failed %d", errno);
abort(); abort();
} }
ALOGI("feature flag enable_report_usb_data_compliance_warning: %d",
usb_flags::enable_report_usb_data_compliance_warning());
} }
UsbDataSessionMonitor::~UsbDataSessionMonitor() {} UsbDataSessionMonitor::~UsbDataSessionMonitor() {}
@ -223,13 +240,55 @@ void UsbDataSessionMonitor::notifyComplianceWarning() {
void UsbDataSessionMonitor::evaluateComplianceWarning() { void UsbDataSessionMonitor::evaluateComplianceWarning() {
std::set<ComplianceWarning> newWarningSet; std::set<ComplianceWarning> newWarningSet;
int elapsedTimeSec;
// TODO: add heuristics and update newWarningSet elapsedTimeSec =
if (mDataRole == PortDataRole::DEVICE && mUdcBind) { std::chrono::duration_cast<std::chrono::seconds>(boot_clock::now() - mDataSessionStart)
} else if (mDataRole == PortDataRole::HOST) { .count();
if (elapsedTimeSec >= WARNING_SURFACE_DELAY_SEC) {
if (mDataRole == PortDataRole::DEVICE && mUdcBind) {
int configuredCount = std::count(mDeviceState.states.begin(),
mDeviceState.states.end(), kConfiguredState);
int defaultCount =
std::count(mDeviceState.states.begin(), mDeviceState.states.end(), kDefaultState);
if (configuredCount == 0 && defaultCount > ENUM_FAIL_DEFAULT_COUNT_THRESHOLD)
newWarningSet.insert(ComplianceWarning::ENUMERATION_FAIL);
if (configuredCount > DEVICE_FLAKY_CONNECTION_CONFIGURED_COUNT_THRESHOLD)
newWarningSet.insert(ComplianceWarning::FLAKY_CONNECTION);
} else if (mDataRole == PortDataRole::HOST) {
int host1StateCount = mHost1State.states.size();
int host1ConfiguredCount =
std::count(mHost1State.states.begin(), mHost1State.states.end(), kConfiguredState);
int host1DefaultCount =
std::count(mHost1State.states.begin(), mHost1State.states.end(), kDefaultState);
int host2StateCount = mHost2State.states.size();
int host2ConfiguredCount =
std::count(mHost2State.states.begin(), mHost2State.states.end(), kConfiguredState);
int host2DefaultCount =
std::count(mHost2State.states.begin(), mHost2State.states.end(), kDefaultState);
if (host1ConfiguredCount == 0 && host2ConfiguredCount == 0 &&
(host1DefaultCount > ENUM_FAIL_DEFAULT_COUNT_THRESHOLD ||
host2DefaultCount > ENUM_FAIL_DEFAULT_COUNT_THRESHOLD))
newWarningSet.insert(ComplianceWarning::ENUMERATION_FAIL);
if (host1StateCount == 1 && mHost1State.states.front() == kNotAttachedState &&
host2StateCount == 1 && mHost2State.states.front() == kNotAttachedState)
newWarningSet.insert(ComplianceWarning::MISSING_DATA_LINES);
}
} }
if (newWarningSet != mWarningSet) { if (newWarningSet != mWarningSet) {
std::string newWarningString;
for (auto e : newWarningSet) {
newWarningString += toString(e) + " ";
}
ALOGI("Usb data compliance warning changed to: %s", newWarningString.c_str());
mWarningSet = newWarningSet; mWarningSet = newWarningSet;
notifyComplianceWarning(); notifyComplianceWarning();
} }
@ -259,6 +318,26 @@ void UsbDataSessionMonitor::handleDeviceStateEvent(struct usbDeviceState *device
evaluateComplianceWarning(); evaluateComplianceWarning();
} }
void UsbDataSessionMonitor::setupNewSession() {
mWarningSet.clear();
mDataSessionStart = boot_clock::now();
if (mDataRole == PortDataRole::DEVICE) {
clearDeviceStateEvents(&mDeviceState);
} else if (mDataRole == PortDataRole::HOST) {
clearDeviceStateEvents(&mHost1State);
clearDeviceStateEvents(&mHost2State);
}
if (mDataRole != PortDataRole::NONE) {
struct itimerspec delay = itimerspec();
delay.it_value.tv_sec = WARNING_SURFACE_DELAY_SEC;
int ret = timerfd_settime(mTimerFd.get(), 0, &delay, NULL);
if (ret < 0)
ALOGE("timerfd_settime failed err:%d", errno);
}
}
void UsbDataSessionMonitor::handleDataRoleEvent() { void UsbDataSessionMonitor::handleDataRoleEvent() {
int n; int n;
PortDataRole newDataRole; PortDataRole newDataRole;
@ -283,17 +362,8 @@ void UsbDataSessionMonitor::handleDataRoleEvent() {
reportUsbDataSessionMetrics(); reportUsbDataSessionMetrics();
} }
// Set up for the new data session
mWarningSet.clear();
mDataRole = newDataRole; mDataRole = newDataRole;
mDataSessionStart = boot_clock::now(); setupNewSession();
if (newDataRole == PortDataRole::DEVICE) {
clearDeviceStateEvents(&mDeviceState);
} else if (newDataRole == PortDataRole::HOST) {
clearDeviceStateEvents(&mHost1State);
clearDeviceStateEvents(&mHost2State);
}
} }
} }
@ -328,8 +398,7 @@ void UsbDataSessionMonitor::updateUdcBindStatus(const std::string &devname) {
} else if (!mUdcBind && newUdcBind) { } else if (!mUdcBind && newUdcBind) {
// Gadget soft pullup: reset and start accounting for a new data session. // Gadget soft pullup: reset and start accounting for a new data session.
clearDeviceStateEvents(&mDeviceState); setupNewSession();
mDataSessionStart = boot_clock::now();
} }
} }
@ -383,6 +452,23 @@ void UsbDataSessionMonitor::handleUevent() {
} }
} }
void UsbDataSessionMonitor::handleTimerEvent() {
int byteRead;
uint64_t numExpiration;
byteRead = read(mTimerFd.get(), &numExpiration, sizeof(numExpiration));
if (byteRead != sizeof(numExpiration)) {
ALOGE("incorrect read size");
}
if (numExpiration != 1) {
ALOGE("incorrect expiration count");
}
evaluateComplianceWarning();
}
void *UsbDataSessionMonitor::monitorThread(void *param) { void *UsbDataSessionMonitor::monitorThread(void *param) {
UsbDataSessionMonitor *monitor = (UsbDataSessionMonitor *)param; UsbDataSessionMonitor *monitor = (UsbDataSessionMonitor *)param;
struct epoll_event events[64]; struct epoll_event events[64];
@ -400,6 +486,8 @@ void *UsbDataSessionMonitor::monitorThread(void *param) {
for (int n = 0; n < nevents; ++n) { for (int n = 0; n < nevents; ++n) {
if (events[n].data.fd == monitor->mUeventFd.get()) { if (events[n].data.fd == monitor->mUeventFd.get()) {
monitor->handleUevent(); monitor->handleUevent();
} else if (events[n].data.fd == monitor->mTimerFd.get()) {
monitor->handleTimerEvent();
} else if (events[n].data.fd == monitor->mDataRoleFd.get()) { } else if (events[n].data.fd == monitor->mDataRoleFd.get()) {
monitor->handleDataRoleEvent(); monitor->handleDataRoleEvent();
} else if (events[n].data.fd == monitor->mDeviceState.fd.get()) { } else if (events[n].data.fd == monitor->mDeviceState.fd.get()) {

View file

@ -75,9 +75,11 @@ class UsbDataSessionMonitor {
static void *monitorThread(void *param); static void *monitorThread(void *param);
void handleUevent(); void handleUevent();
void handleTimerEvent();
void handleDataRoleEvent(); void handleDataRoleEvent();
void handleDeviceStateEvent(struct usbDeviceState *deviceState); void handleDeviceStateEvent(struct usbDeviceState *deviceState);
void clearDeviceStateEvents(struct usbDeviceState *deviceState); void clearDeviceStateEvents(struct usbDeviceState *deviceState);
void setupNewSession();
void reportUsbDataSessionMetrics(); void reportUsbDataSessionMetrics();
void evaluateComplianceWarning(); void evaluateComplianceWarning();
void notifyComplianceWarning(); void notifyComplianceWarning();
@ -86,6 +88,7 @@ class UsbDataSessionMonitor {
pthread_t mMonitor; pthread_t mMonitor;
unique_fd mEpollFd; unique_fd mEpollFd;
unique_fd mUeventFd; unique_fd mUeventFd;
unique_fd mTimerFd;
unique_fd mDataRoleFd; unique_fd mDataRoleFd;
struct usbDeviceState mDeviceState; struct usbDeviceState mDeviceState;
struct usbDeviceState mHost1State; struct usbDeviceState mHost1State;