diff --git a/Android.bp b/Android.bp index 7156389..b79b895 100644 --- a/Android.bp +++ b/Android.bp @@ -41,3 +41,13 @@ sh_binary { vendor: true, sub_dir: "hw", } + +// Filesystem: Copy the content of the efs/efs_backup/modem_userdata/persist +// partitions to /data partition so that they can be accessed by 16kb kernels. +// By default, these partitions are F2FS formatted with 4kb block size, +// which can't be mounted by 16kb kernels. +sh_binary { + name: "copy_efs_files_to_data", + src: "copy_efs_files_to_data.sh", + vendor: true, +} diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk index 4258778..a39229e 100644 --- a/BoardConfig-common.mk +++ b/BoardConfig-common.mk @@ -40,9 +40,23 @@ BOARD_KERNEL_CMDLINE += rcupdate.rcu_expedited=1 rcu_nocbs=all rcutree.enable_rc BOARD_KERNEL_CMDLINE += swiotlb=noforce BOARD_KERNEL_CMDLINE += disable_dma32=on BOARD_KERNEL_CMDLINE += sysctl.kernel.sched_pelt_multiplier=4 + +# Normal (non-_fullmte) builds should disable kasan ifeq (,$(filter %_fullmte,$(TARGET_PRODUCT))) BOARD_KERNEL_CMDLINE += kasan=off endif + +# Enable a limited subset of MTE for "normal" (non-_fullmte) eng builds. +# Don't touch any settings for _fullmte builds. They are set somewhere else. +ifeq (,$(filter %_fullmte,$(TARGET_PRODUCT))) +ifeq ($(TARGET_BUILD_VARIANT),eng) +BOARD_KERNEL_CMDLINE += bootloader.pixel.MTE_FORCE_ON +ifeq ($(filter memtag_heap,$(SANITIZE_TARGET)),) +SANITIZE_TARGET := $(strip $(SANITIZE_TARGET) memtag_heap) +endif +endif +endif + BOARD_BOOTCONFIG += androidboot.boot_devices=13200000.ufs # Enable KUnit for eng builds @@ -71,7 +85,7 @@ TARGET_RECOVERY_FSTAB_GENRULE := gen_fstab.zumapro-sw-encrypt TARGET_RECOVERY_PIXEL_FORMAT := ABGR_8888 TARGET_RECOVERY_UI_MARGIN_HEIGHT := 165 TARGET_RECOVERY_UI_LIB := \ - librecovery_ui_pixel \ + //hardware/google/pixel/recovery:librecovery_ui_pixel \ libfstab AB_OTA_UPDATER := true @@ -208,6 +222,17 @@ BOARD_USE_BLOB_ALLOCATOR := false BOARD_SUPPORT_MFC_ENC_BT2020 := true BOARD_SUPPORT_FLEXIBLE_P010 := true BOARD_SUPPORT_MFC_VERSION := 1660 +$(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)) +$(call soong_config_set,video_codec,board_support_mfc_version,$(BOARD_SUPPORT_MFC_VERSION)) ######################## BOARD_SUPER_PARTITION_SIZE := 8531214336 @@ -230,6 +255,9 @@ BOARD_USES_SYSTEM_DLKMIMAGE := true BOARD_SYSTEM_DLKMIMAGE_FILE_SYSTEM_TYPE := ext4 TARGET_COPY_OUT_SYSTEM_DLKM := system_dlkm +# Testing related defines +BOARD_PERFSETUP_SCRIPT := platform_testing/scripts/perf-setup/p24-setup.sh + # # AUDIO & VOICE # diff --git a/compatibility_matrix_202404.xml b/compatibility_matrix_202404.xml new file mode 100644 index 0000000..6e4ca99 --- /dev/null +++ b/compatibility_matrix_202404.xml @@ -0,0 +1,76 @@ + + + + android.frameworks.displayservice + 1.0 + + IDisplayService + default + + + + android.frameworks.schedulerservice + 1.0 + + ISchedulingPolicyService + default + + + + android.frameworks.sensorservice + 1.0 + + ISensorManager + default + + + + android.hardware.graphics.composer + 2.1 + + IComposer + vr + + + + android.hidl.manager + 1.0 + + IServiceManager + default + + + + android.hidl.memory + 1.0 + + IMapper + ashmem + + + + android.hidl.token + 1.0 + + ITokenManager + default + + + + android.system.wifi.keystore + 1.0 + + IKeystore + default + + + + 0.0.0 + + diff --git a/conf/ext4/fstab.rw.zumapro.ext4 b/conf/ext4/fstab.rw.zumapro.ext4 index b548c13..de8f7b8 100644 --- a/conf/ext4/fstab.rw.zumapro.ext4 +++ b/conf/ext4/fstab.rw.zumapro.ext4 @@ -1,5 +1,8 @@ # Android fstab file for /data and /metadata partitions. # # -/dev/block/platform/13200000.ufs/by-name/metadata /metadata ext4 noatime,nosuid,nodev,sync wait,check,formattable,first_stage_mount -/dev/block/platform/13200000.ufs/by-name/userdata /data ext4 noatime,nosuid,nodev latemount,wait,check,quota,formattable,sysfs_path=/dev/sys/block/bootdevice,reservedsize=128M,readahead_size_kb=128 +/dev/block/platform/13200000.ufs/by-name/userdata /data ext4 noatime,nosuid,nodev,@inlinecrypt@ latemount,wait,check,quota,formattable,reservedsize=128M,readahead_size_kb=128,@fileencryption@,@metadata_encryption@,keydirectory=/metadata/vold/metadata_encryption +/dev/block/platform/13200000.ufs/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier,compress_extension=apk,compress_extension=so,compress_extension=vdex,compress_extension=odex,@inlinecrypt@,atgc,checkpoint_merge,compress_cache latemount,wait,check,quota,sysfs_path=/dev/sys/block/bootdevice,checkpoint=fs,reservedsize=128M,fscompress,readahead_size_kb=128,@fileencryption@,@metadata_encryption@,keydirectory=/metadata/vold/metadata_encryption,device=zoned:/dev/block/by-name/zoned_device +/dev/block/platform/13200000.ufs/by-name/metadata /metadata ext4 noatime,nosuid,nodev,data=journal,commit=1 wait,check,formattable,first_stage_mount,metadata_csum +/dev/block/platform/13200000.ufs/by-name/metadata /metadata f2fs noatime,nosuid,nodev,sync wait,check,first_stage_mount + diff --git a/conf/f2fs/fstab.rw.zumapro.f2fs b/conf/f2fs/fstab.rw.zumapro.f2fs index 77ec4d5..73026da 100644 --- a/conf/f2fs/fstab.rw.zumapro.f2fs +++ b/conf/f2fs/fstab.rw.zumapro.f2fs @@ -1,5 +1,8 @@ # Android fstab file for /data and /metadata partitions. # # -/dev/block/platform/13200000.ufs/by-name/metadata /metadata f2fs noatime,nosuid,nodev,sync wait,check,formattable,first_stage_mount /dev/block/platform/13200000.ufs/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier,compress_extension=apk,compress_extension=so,compress_extension=vdex,compress_extension=odex,@inlinecrypt@,atgc,checkpoint_merge,compress_cache latemount,wait,check,quota,formattable,sysfs_path=/dev/sys/block/bootdevice,checkpoint=fs,reservedsize=128M,fscompress,readahead_size_kb=128,@fileencryption@,@metadata_encryption@,keydirectory=/metadata/vold/metadata_encryption,device=zoned:/dev/block/by-name/zoned_device +/dev/block/platform/13200000.ufs/by-name/userdata /data ext4 noatime,nosuid,nodev,@inlinecrypt@ latemount,wait,check,quota,formattable,reservedsize=128M,readahead_size_kb=128,@fileencryption@,@metadata_encryption@,keydirectory=/metadata/vold/metadata_encryption +/dev/block/platform/13200000.ufs/by-name/metadata /metadata f2fs noatime,nosuid,nodev,sync wait,check,formattable,first_stage_mount +/dev/block/platform/13200000.ufs/by-name/metadata /metadata ext4 noatime,nosuid,nodev,data=journal,commit=1 wait,check,formattable,first_stage_mount,metadata_csum + diff --git a/conf/fstab.efs.from_data b/conf/fstab.efs.from_data new file mode 100644 index 0000000..57aac9c --- /dev/null +++ b/conf/fstab.efs.from_data @@ -0,0 +1,10 @@ +# Android fstab file. +# +# Create the specific fstab file for efs/modem_userdata/persist partitions for flexibility +/data/vendor/copied/efs /mnt/vendor/efs none bind latemount + +/data/vendor/copied/efs_backup /mnt/vendor/efs_backup none bind latemount + +/data/vendor/copied/modem_userdata /mnt/vendor/modem_userdata none bind latemount + +/data/vendor/copied/persist /mnt/vendor/persist none bind latemount diff --git a/conf/init.debug.rc b/conf/init.debug.rc index 019a514..9b536b4 100644 --- a/conf/init.debug.rc +++ b/conf/init.debug.rc @@ -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/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 write /sys/kernel/pixel_debug/trigger "null" diff --git a/conf/init.efs.16k.rc b/conf/init.efs.16k.rc new file mode 100644 index 0000000..e52ff78 --- /dev/null +++ b/conf/init.efs.16k.rc @@ -0,0 +1,22 @@ +# This RC file is used for: +# - 16kb Developer option which can boot with 4kb/16kb page size. +# - 16kb targets only + +service copy_efs_files_to_data /vendor/bin/copy_efs_files_to_data + user root + group root radio system audio media graphics camera + stdio_to_kmsg + oneshot + disabled + +on post-fs-data && property:ro.boot.hardware.cpu.pagesize=16384 + mkdir /data/vendor/copied 0775 radio system + restorecon_recursive /data/vendor/copied + exec_start copy_efs_files_to_data + mount_all /vendor/etc/fstab.efs.from_data + restorecon_recursive /mnt/vendor/persist + restorecon_recursive /data/vendor/ss + setprop ro.vendor.persist.status mounted + +on late-fs && property:ro.boot.hardware.cpu.pagesize=4096 + mount_all /vendor/etc/fstab.efs --early diff --git a/conf/init.efs.4k.rc b/conf/init.efs.4k.rc new file mode 100644 index 0000000..5393e67 --- /dev/null +++ b/conf/init.efs.4k.rc @@ -0,0 +1,2 @@ +on late-fs + mount_all /vendor/etc/fstab.efs --early diff --git a/conf/init.efs.rc b/conf/init.efs.rc deleted file mode 100644 index a3664d9..0000000 --- a/conf/init.efs.rc +++ /dev/null @@ -1,11 +0,0 @@ -on early-init - mount_all /vendor/etc/fstab.persist --early - -on late-fs - mount_all /vendor/etc/fstab.efs --early - restorecon_recursive /mnt/vendor/efs - chown radio system /mnt/vendor/efs - restorecon_recursive /mnt/vendor/efs_backup - chown radio system /mnt/vendor/efs_backup - restorecon_recursive /mnt/vendor/modem_userdata - chown radio system /mnt/vendor/modem_userdata diff --git a/conf/init.eng.memtag.rc b/conf/init.eng.memtag.rc new file mode 100644 index 0000000..e0e13f0 --- /dev/null +++ b/conf/init.eng.memtag.rc @@ -0,0 +1,14 @@ +# MTE in -eng build: all cores in Sync mode +on init + # Per-core mode overrides. + # Little Cores: sync + write /sys/devices/system/cpu/cpu0/mte_tcf_preferred sync + write /sys/devices/system/cpu/cpu1/mte_tcf_preferred sync + write /sys/devices/system/cpu/cpu2/mte_tcf_preferred sync + write /sys/devices/system/cpu/cpu3/mte_tcf_preferred sync + # Mid Cores: sync + write /sys/devices/system/cpu/cpu4/mte_tcf_preferred sync + write /sys/devices/system/cpu/cpu5/mte_tcf_preferred sync + write /sys/devices/system/cpu/cpu6/mte_tcf_preferred sync + # Big Core: sync + write /sys/devices/system/cpu/cpu7/mte_tcf_preferred sync diff --git a/conf/init.persist.rc b/conf/init.persist.rc new file mode 100644 index 0000000..624eb79 --- /dev/null +++ b/conf/init.persist.rc @@ -0,0 +1,52 @@ +on early-init && property:ro.boot.hardware.cpu.pagesize=4096 + mount_all /vendor/etc/fstab.persist --early + setprop ro.vendor.persist.status mounted + +on property:ro.vendor.persist.status=mounted + # for modem related functions + restorecon_recursive /mnt/vendor/efs + chown radio system /mnt/vendor/efs + restorecon_recursive /mnt/vendor/efs_backup + chown radio system /mnt/vendor/efs_backup + restorecon_recursive /mnt/vendor/modem_userdata + chown radio system /mnt/vendor/modem_userdata + + # for battery defender + mkdir /mnt/vendor/persist/battery 0700 system system + + # Camera factory calibration files + chmod 0771 /mnt/vendor/persist/camera + chmod 0771 /mnt/vendor/persist/camera/OTP_calibration + chmod 0771 /mnt/vendor/persist/camera/pdaf_calibration_data + mkdir /mnt/vendor/persist/camera/rear 0771 system camera + chmod 0771 /mnt/vendor/persist/camera/rear + + restorecon_recursive /mnt/vendor/persist + restorecon_recursive /mnt/vendor/persist/aoc + restorecon_recursive /mnt/vendor/persist/audio + restorecon_recursive /mnt/vendor/persist/sensors + restorecon_recursive /mnt/vendor/persist/battery + restorecon_recursive /mnt/vendor/persist/camera + restorecon_recursive /mnt/vendor/persist/modem + # Set up display-related directories and permissions + # Add restorecon_recursive command to make sure the restorecon label is persist_display_file. + restorecon_recursive /mnt/vendor/persist/display + mkdir /mnt/vendor/persist/data/sfs 0700 system system + mkdir /mnt/vendor/persist/data/tz 0700 system system + mkdir /mnt/vendor/persist/touch 0770 system system + +on property:ro.fstype.data=* && property:ro.vendor.persist.status=mounted + # Proxy for Secure Storage + mkdir /data/vendor/rebootescrow 0770 hsm hsm + mkdir /data/vendor/ss 0770 root system + mkdir /mnt/vendor/persist/ss 0770 root system + restorecon_recursive /mnt/vendor/persist/ss + symlink /mnt/vendor/persist/ss /data/vendor/ss/persist + chown root system /data/vendor/ss/persist + chmod 0770 /data/vendor/ss/persist + symlink /dev/block/platform/13200000\.ufs/by-name/trusty_persist /data/vendor/ss/persist/0 + chown system system /data/vendor/ss/0 + chown system system /data/vendor/ss/persist/0 + chown system system /data/vendor/ss/persist/nsp + + restart storageproxyd diff --git a/conf/init.zuma.soc.rc b/conf/init.zuma.soc.rc index a2b27b1..b16d81f 100644 --- a/conf/init.zuma.soc.rc +++ b/conf/init.zuma.soc.rc @@ -34,14 +34,11 @@ on init # governor setting 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/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/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/down_rate_limit_us 20000 write /sys/devices/system/cpu/cpu8/cpufreq/scaling_governor sched_pixel write /sys/devices/system/cpu/cpu8/cpufreq/sched_pixel/up_rate_limit_us 500 - write /sys/devices/system/cpu/cpu8/cpufreq/sched_pixel/down_rate_limit_us 20000 # memlat cpuidle awareness setting write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu0_memlat@17000010/memlat_cpuidle_state_aware 2 @@ -107,6 +104,11 @@ on init write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu7_memlat@17000010/mem_latency/stall_floor 2400 write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu8_memlat@17000010/mem_latency/stall_floor 500 +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/cpu8/cpufreq/sched_pixel/down_rate_limit_us 20000 + on zygote-start # For PixelLogger configuration file. chmod 0771 /data/vendor/wifi diff --git a/conf/init.zumapro.board.rc b/conf/init.zumapro.board.rc index ee56958..b40e29c 100644 --- a/conf/init.zumapro.board.rc +++ b/conf/init.zumapro.board.rc @@ -1,5 +1,6 @@ import /vendor/etc/init/hw/init.zumapro.usb.rc import /vendor/etc/init/hw/init.efs.rc +import /vendor/etc/init/hw/init.persist.rc import android.hardware.drm@1.2-service.widevine.rc import init.exynos.sensorhub.rc import /vendor/etc/init/hw/init.${ro.boot.hardware.platform}.soc.rc @@ -268,13 +269,6 @@ on post-fs-data chown system system /dev/ispolin_ranging chmod 0660 /dev/ispolin_ranging - # Factory calibration files - chmod 0771 /mnt/vendor/persist/camera - chmod 0771 /mnt/vendor/persist/camera/OTP_calibration - chmod 0771 /mnt/vendor/persist/camera/pdaf_calibration_data - mkdir /mnt/vendor/persist/camera/rear 0771 system camera - chmod 0771 /mnt/vendor/persist/camera/rear - # Audio dump and debug mkdir /data/vendor/audio 0770 audio audio @@ -369,27 +363,10 @@ on property:persist.vendor.radio.no_modem_board=1 on fs mount_all --early - # for battery defender - mkdir /mnt/vendor/persist/battery 0700 system system - # Mount modem partition mount_all /vendor/etc/fstab.modem --early restorecon_recursive /mnt/vendor/modem_img - restorecon_recursive /mnt/vendor/persist - restorecon_recursive /mnt/vendor/persist/aoc - restorecon_recursive /mnt/vendor/persist/audio - restorecon_recursive /mnt/vendor/persist/sensors - restorecon_recursive /mnt/vendor/persist/battery - restorecon_recursive /mnt/vendor/persist/camera - restorecon_recursive /mnt/vendor/persist/modem - # Set up display-related directories and permissions - # Add restorecon_recursive command to make sure the restorecon label is persist_display_file. - restorecon_recursive /mnt/vendor/persist/display - mkdir /mnt/vendor/persist/data/sfs 0700 system system - mkdir /mnt/vendor/persist/data/tz 0700 system system - mkdir /mnt/vendor/persist/touch 0770 system system - # Permissions for ION chmod 0660 /sys/class/ion_cma/ion_video_ext/isolated chown system system /sys/class/ion_cma/ion_video_ext/isolated @@ -412,8 +389,8 @@ on fs chown system system /sys/devices/platform/exynos-drm/primary-panel/te2_option chown system system /sys/devices/platform/exynos-drm/primary-panel/power_state chown system system /sys/devices/platform/exynos-drm/primary-panel/frame_rate - chown system system /sys/devices/platform/exynos-drm/primary-panel/frame_interval - chown system system /sys/devices/platform/exynos-drm/primary-panel/expected_present_time + chown system system /sys/devices/platform/exynos-drm/primary-panel/frame_interval_ns + chown system system /sys/devices/platform/exynos-drm/primary-panel/expected_present_time_ns chown system system /sys/module/drm/parameters/vblankoffdelay chown system system /sys/module/drm/parameters/debug chown system system /sys/class/dqe0/atc/ambient_light @@ -635,21 +612,6 @@ service bugreport /system/bin/dumpstate -d -p -z oneshot keycodes 114 115 116 -# Proxy for Secure Storage -on post-fs-data - mkdir /data/vendor/rebootescrow 0770 hsm hsm - mkdir /data/vendor/ss 0770 root system - mkdir /mnt/vendor/persist/ss 0770 root system - restorecon_recursive /mnt/vendor/persist/ss - symlink /mnt/vendor/persist/ss /data/vendor/ss/persist - chown root system /data/vendor/ss/persist - chmod 0770 /data/vendor/ss/persist - chown system system /data/vendor/ss/0 - chown system system /data/vendor/ss/persist/0 - chown system system /data/vendor/ss/persist/nsp - - restart storageproxyd - service storageproxyd /vendor/bin/storageproxyd \ -d /dev/trusty-ipc-dev0 \ -r /dev/sg1 \ @@ -677,6 +639,7 @@ on post-fs-data chown bluetooth system /proc/bluetooth/sleep/btwake chown bluetooth system /proc/bluetooth/sleep/lpm chown bluetooth system /proc/bluetooth/sleep/btwrite + chown bluetooth system /sys/devices/platform/155d0000.serial/uart_dbg mkdir /data/vendor/bluetooth 0770 bluetooth system # ODPM diff --git a/conf/init.zumapro.soc.rc b/conf/init.zumapro.soc.rc index 6bd32f8..f4cd377 100644 --- a/conf/init.zumapro.soc.rc +++ b/conf/init.zumapro.soc.rc @@ -9,7 +9,6 @@ on init chown system system /sys/devices/system/cpu/cpufreq/policy7/sched_pixel/limit_frequency chown system system /sys/devices/system/cpu/cpufreq/policy7/sched_pixel/pmu_limit_enable - chown system system /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu0_memlat@17000010/memlat_cpuidle_state_aware chown system system /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu1_memlat@17000010/memlat_cpuidle_state_aware chown system system /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu2_memlat@17000010/memlat_cpuidle_state_aware @@ -60,17 +59,6 @@ on init write /proc/vendor_sched/groups/sys_bg/disable_util_est 1 write /proc/vendor_sched/groups/ta/disable_util_est 0 - # governor setting - 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/down_rate_limit_us 500 - 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/down_rate_limit_us 500 - write /sys/devices/system/cpu/cpu7/cpufreq/scaling_governor sched_pixel - write /sys/devices/system/cpu/cpu7/cpufreq/sched_pixel/up_rate_limit_us 500 - write /sys/devices/system/cpu/cpu7/cpufreq/sched_pixel/down_rate_limit_us 500 - # memlat cpuidle awareness setting # FIXME(b/301212469) these nodes missing on zuma pro # TODO(b/308973423) these values need to be tuned @@ -143,6 +131,83 @@ on init write /sys/devices/system/cpu/cpu6/mte_tcf_preferred asymm write /sys/devices/system/cpu/cpu7/mte_tcf_preferred asymm + # 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 + on zygote-start # For PixelLogger configuration file. chmod 0771 /data/vendor/wifi diff --git a/conf/ueventd.zumapro.rc b/conf/ueventd.zumapro.rc index 809b596..609f2b7 100644 --- a/conf/ueventd.zumapro.rc +++ b/conf/ueventd.zumapro.rc @@ -153,6 +153,11 @@ /dev/acd-com.google.chre 0660 system system /dev/acd-com.google.chre.non_wake_up 0660 system system +# CHRE (EFW transport) +/dev/acd-chre_ctl 0660 system system +/dev/acd-chre_data_tx 0220 system system +/dev/acd-chre_data_rx 0440 system system + # BT /dev/acd-com.google.bt 0660 system system /dev/acd-com.google.bt.non_wake_up 0660 system system diff --git a/copy_efs_files_to_data.sh b/copy_efs_files_to_data.sh new file mode 100644 index 0000000..b6b7a9d --- /dev/null +++ b/copy_efs_files_to_data.sh @@ -0,0 +1,39 @@ +#!/vendor/bin/sh + +CHECKPOINT_DIR=/data/vendor/copied + +export BIN_DIR=/vendor/bin + +$BIN_DIR/mkdir -p $CHECKPOINT_DIR + +function copy_files_to_data() +{ + block_device=$1 + partition_name=$(basename $1) + mount_point=$2 + tmpdir=$CHECKPOINT_DIR/$partition_name.img + build_checkpoint=$CHECKPOINT_DIR/$partition_name + if [ ! -e $build_checkpoint ]; then + $BIN_DIR/rm -rf $tmpdir + $BIN_DIR/mkdir -p $tmpdir + $BIN_DIR/dump.f2fs -rfPo $tmpdir $block_device + if [ $? -ne 0 ]; then + echo "Failed to $BIN_DIR/dump.f2fs -rfPo $tmpdir $block_device" + return + fi + $BIN_DIR/mv $tmpdir $build_checkpoint + if [ $? -ne 0 ]; then + echo "mv $tmpdir $build_checkpoint" + return + fi + $BIN_DIR/fsync `dirname $build_checkpoint` + fi + echo "Successfully copied $mount_point to $build_checkpoint" +} + +copy_files_to_data "/dev/block/by-name/efs" "/mnt/vendor/efs" +copy_files_to_data "/dev/block/by-name/efs_backup" "/mnt/vendor/efs_backup" +copy_files_to_data "/dev/block/by-name/modem_userdata" "/mnt/vendor/modem_userdata" +copy_files_to_data "/dev/block/by-name/persist" "/mnt/vendor/persist" + +$BIN_DIR/fsync /data/vendor/copied diff --git a/default-permissions.xml b/default-permissions.xml index 2f6f13f..687cff4 100644 --- a/default-permissions.xml +++ b/default-permissions.xml @@ -69,7 +69,7 @@ - + @@ -173,5 +173,9 @@ + + + diff --git a/device-common.mk b/device-common.mk index 1e4691a..54e363d 100644 --- a/device-common.mk +++ b/device-common.mk @@ -51,12 +51,21 @@ PRODUCT_VENDOR_PROPERTIES += \ vendor.zram.size?=50p # Indicate that the bootloader supports the MTE developer option switch -# (MISC_MEMTAG_MODE_MEMTAG_ONCE), with the exception of _fullmte products that -# force enable MTE. +# (MISC_MEMTAG_MODE_MEMTAG_ONCE), with the exception of _fullmte products and +# eng products that force enable MTE ifeq (,$(filter %_fullmte,$(TARGET_PRODUCT))) +ifeq (,$(filter eng,$(TARGET_BUILD_VARIANT))) PRODUCT_PRODUCT_PROPERTIES += ro.arm64.memtag.bootctl_supported=1 PRODUCT_PRODUCT_PROPERTIES += persist.arm64.memtag.app.com.android.se=off PRODUCT_PRODUCT_PROPERTIES += persist.arm64.memtag.app.com.google.android.bluetooth=off PRODUCT_PRODUCT_PROPERTIES += persist.arm64.memtag.app.com.android.nfc=off PRODUCT_PRODUCT_PROPERTIES += persist.arm64.memtag.system_server=off endif +endif + +ifeq (,$(filter %_fullmte,$(TARGET_PRODUCT))) +ifneq (,$(filter eng,$(TARGET_BUILD_VARIANT))) +PRODUCT_COPY_FILES += \ + device/google/zumapro/conf/init.eng.memtag.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.eng.memtag.rc +endif +endif diff --git a/device.mk b/device.mk index 3dc3767..d8a6f0b 100644 --- a/device.mk +++ b/device.mk @@ -75,6 +75,7 @@ PRODUCT_SOONG_NAMESPACES += \ hardware/google/gchips/gralloc4 \ hardware/google/graphics/common \ hardware/google/graphics/zuma \ + hardware/google/graphics/zumapro/libhwc2.1 \ hardware/google/interfaces \ hardware/google/pixel \ device/google/zumapro \ @@ -183,7 +184,7 @@ PRODUCT_PRODUCT_PROPERTIES += \ bluetooth.profile.asha.central.enabled=true \ bluetooth.profile.a2dp.source.enabled=true \ bluetooth.profile.avrcp.target.enabled=true \ - bluetooth.profile.bap.unicast.server.enabled=true \ + bluetooth.profile.bap.unicast.client.enabled=true \ bluetooth.profile.bas.client.enabled=true \ bluetooth.profile.csip.set_coordinator.enabled=true \ bluetooth.profile.gatt.enabled=true \ @@ -198,8 +199,12 @@ PRODUCT_PRODUCT_PROPERTIES += \ bluetooth.profile.pan.panu.enabled=true \ bluetooth.profile.pbap.server.enabled=true \ bluetooth.profile.sap.server.enabled=true \ - bluetooth.profile.tbs.server.enabled=true \ - bluetooth.profile.vc.server.enabled=true + bluetooth.profile.ccp.server.enabled=true \ + bluetooth.profile.vcp.controller.enabled=true + +# Override default HCI command timeout value for BT stack +PRODUCT_PRODUCT_PROPERTIES += \ + bluetooth.hci.timeout_milliseconds=5000 # Carrier configuration default location PRODUCT_PROPERTY_OVERRIDES += \ @@ -290,10 +295,13 @@ BOARD_SEPOLICY_DIRS += hardware/google/pixel-sepolicy/logger_app endif # ifneq ($(BOARD_WITHOUT_RADIO),true) # Shared Modem Platform -include device/google/gs-common/modem/shared_modem_platform/shared_modem_platform.mk +include device/google/gs-common/modem/modem_svc_sit/shared_modem_platform.mk # Use for GRIL USES_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) USE_GOOGLE_DIALER := true @@ -374,6 +382,14 @@ PRODUCT_VENDOR_PROPERTIES += \ ro.hardware.vulkan=mali endif +# SurfaceFlinger / RenderEngine +ifeq ($(TARGET_USES_VULKAN),true) +# b/293371537 Opt in to RE-Graphite's aconfig-based preview rollout +PRODUCT_VENDOR_PROPERTIES += debug.renderengine.graphite_preview_optin=true +else +$(warning TARGET_USES_VULKAN == false, cannot opt in to RE-Graphite rollout in SurfaceFlinger) +PRODUCT_VENDOR_PROPERTIES += debug.renderengine.graphite_preview_optin=false +endif # b/295257834 Add HDR shaders to SurfaceFlinger's pre-warming cache PRODUCT_VENDOR_PROPERTIES += ro.surface_flinger.prime_shader_cache.ultrahdr=1 @@ -410,13 +426,33 @@ PRODUCT_VENDOR_PROPERTIES += \ PRODUCT_SHIPPING_API_LEVEL := $(SHIPPING_API_LEVEL) # Device Manifest, Device Compatibility Matrix for Treble +# +# Install product specific framework compatibility matrix +# (TODO: b/169535506) This includes the FCM for system_ext and product partition. +# It must be split into the FCM of each partition. +ifeq ($(PRODUCT_SHIPPING_API_LEVEL),35) +DEVICE_MANIFEST_FILE := \ + device/google/zumapro/manifest_202404.xml +DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE += device/google/zumapro/device_framework_matrix_product_202404.xml +DEVICE_MATRIX_FILE := \ + device/google/zumapro/compatibility_matrix_202404.xml +else DEVICE_MANIFEST_FILE := \ device/google/zumapro/manifest.xml +DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE += device/google/zumapro/device_framework_matrix_product_8.xml +DEVICE_MATRIX_FILE := \ + device/google/zumapro/compatibility_matrix.xml +endif BOARD_USE_CODEC2_AIDL := V1 ifneq (,$(filter aosp_%,$(TARGET_PRODUCT))) +ifeq ($(PRODUCT_SHIPPING_API_LEVEL),35) +DEVICE_MANIFEST_FILE += \ + device/google/zumapro/manifest_media_aosp_202404.xml +else DEVICE_MANIFEST_FILE += \ device/google/zumapro/manifest_media_aosp.xml +endif PRODUCT_COPY_FILES += \ device/google/zumapro/media_codecs_aosp_c2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_c2.xml @@ -429,9 +465,6 @@ PRODUCT_COPY_FILES += \ device/google/zumapro/media_codecs_aosp_c2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_aosp_c2.xml endif -DEVICE_MATRIX_FILE := \ - device/google/zumapro/compatibility_matrix.xml - DEVICE_PACKAGE_OVERLAYS += device/google/zumapro/overlay # RKP VINTF @@ -451,7 +484,19 @@ PRODUCT_COPY_FILES += \ device/google/zumapro/conf/init.zumapro.soc.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.zumapro.soc.rc \ device/google/zumapro/conf/init.zuma.soc.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.zuma.soc.rc \ device/google/zumapro/conf/init.zumapro.board.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.zumapro.board.rc \ - device/google/zumapro/conf/init.efs.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.efs.rc + device/google/zumapro/conf/init.persist.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.persist.rc + +ifeq (true,$(filter $(TARGET_BOOTS_16K) $(PRODUCT_16K_DEVELOPER_OPTION),true)) +PRODUCT_COPY_FILES += \ + device/google/zumapro/conf/init.efs.16k.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.efs.rc \ + device/google/zumapro/conf/fstab.efs.from_data:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.efs.from_data + +PRODUCT_PACKAGES += copy_efs_files_to_data +PRODUCT_PACKAGES += fsck.f2fs.vendor +else +PRODUCT_COPY_FILES += \ + device/google/zumapro/conf/init.efs.4k.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.efs.rc +endif ifneq (,$(filter eng, $(TARGET_BUILD_VARIANT))) PRODUCT_COPY_FILES += \ @@ -584,6 +629,10 @@ PRODUCT_PACKAGES += \ PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml +ifneq (,$(filter ripcurrentpro, $(TARGET_PRODUCT))) + include device/google/gs-common/touch/gti/gti.mk +endif + # Sensors PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.accelerometer.xml \ @@ -772,6 +821,12 @@ PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml \ frameworks/native/data/etc/android.hardware.wifi.rtt.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.rtt.xml +# Bluetooth channel sounding +ifneq (,$(RELEASE_RANGING_STACK)) +PRODUCT_COPY_FILES += \ + frameworks/native/data/etc/android.hardware.bluetooth_le.channel_sounding.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth_le.channel_sounding.xml +endif + PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.usb.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.host.xml \ frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml @@ -1178,7 +1233,7 @@ PRODUCT_SOONG_NAMESPACES += \ vendor/google_devices/zumapro/proprietary/gchips/tpu/nnapi_stable_aidl \ vendor/google_devices/zumapro/proprietary/gchips/tpu/aidl \ vendor/google_devices/zumapro/proprietary/gchips/tpu/hal \ - vendor/google_devices/zumapro/proprietary/gchips/tpu/tachyon/api \ + vendor/google_devices/zumapro/proprietary/gchips/tpu/tachyon/tachyon_apis \ vendor/google_devices/zumapro/proprietary/gchips/tpu/tachyon/service # TPU firmware PRODUCT_PACKAGES += edgetpu-rio.fw @@ -1198,6 +1253,10 @@ PRODUCT_PACKAGES += \ # pKVM $(call inherit-product, packages/modules/Virtualization/apex/product_packages.mk) PRODUCT_BUILD_PVMFW_IMAGE := true +ifeq ($(RELEASE_AVF_ENABLE_LLPVM_CHANGES),true) + # Set the environment variable to enable the Secretkeeper HAL service. + SECRETKEEPER_ENABLED := true +endif # Enable to build standalone vendor_kernel_boot image. PRODUCT_BUILD_VENDOR_KERNEL_BOOT_IMAGE := true @@ -1231,11 +1290,6 @@ include hardware/google/pixel/wifi_ext/device.mk # Battery Stats Viewer PRODUCT_PACKAGES_ENG += BatteryStatsViewer -# Install product specific framework compatibility matrix -# (TODO: b/169535506) This includes the FCM for system_ext and product partition. -# It must be split into the FCM of each partition. -DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE += device/google/zumapro/device_framework_matrix_product.xml - # Keymint configuration PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.software.device_id_attestation.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.device_id_attestation.xml \ @@ -1261,16 +1315,19 @@ include device/google/gs-common/pixel_ril/ril.mk endif endif -SUPPORT_VENDOR_SATELLITE_SERVICE := true - # Telephony satellite geofence data file PRODUCT_COPY_FILES += \ - device/google/zumapro/telephony/sats2.dat:$(TARGET_COPY_OUT_VENDOR)/etc/telephony/sats2.dat + device/google/zumapro/telephony/sats2.dat:$(TARGET_COPY_OUT_VENDOR)/etc/telephony/sats2.dat \ + device/google/zumapro/telephony/satellite_access_config.json:$(TARGET_COPY_OUT_VENDOR)/etc/telephony/satellite_access_config.json # Touch service include device/google/gs-common/touch/twoshay/aidl_zuma.mk include device/google/gs-common/touch/twoshay/twoshay.mk +ifeq ($(RELEASE_PIXEL_GIA_ENABLED),true) +include device/google/gs-common/input/gia/gia.mk +endif + PRODUCT_CHECK_VENDOR_SEAPP_VIOLATIONS := true PRODUCT_CHECK_DEV_TYPE_VIOLATIONS := true @@ -1287,3 +1344,4 @@ PRODUCT_PRODUCT_PROPERTIES += \ dumpstate.strict_run=false PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true +PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true diff --git a/device_framework_matrix_product_202404.xml b/device_framework_matrix_product_202404.xml new file mode 100644 index 0000000..6d16f9e --- /dev/null +++ b/device_framework_matrix_product_202404.xml @@ -0,0 +1,198 @@ + + + android.hardware.boot + IBootControl/default + + + android.hardware.graphics.composer3 + 2 + + IComposer + default + + + + android.hardware.radio + 1.2 + + ISap + slot2 + + + + android.hardware.vibrator + 2-3 + + IVibrator + dual + + + + android.hardware.wifi.hostapd + 1 + + IHostapd + default + + + + android.vendor.samsung_slsi.telephony.hardware.radio + 1.1 + + IOemSamsungslsi + slot1 + slot2 + + + + com.fingerprints33.extension + 1.0 + + IFingerprintAuthenticator + default + + + IFingerprintCalibration + default + + + IFingerprintEngineering + default + + + IFingerprintNavigation + default + + + IFingerprintRecalibration + default + + + IFingerprintSenseTouch + default + + + IFingerprintSensorTest + default + + + + com.google.face.debug + 3-4 + + IDebugHost + default + + + IDebugManager + default + + + + com.google.edgetpu + 2 + + IEdgeTpuVendorService + default + + + + com.google.edgetpu.dba + 1 + + IDevice + default + + + + com.google.edgetpu.tachyon + 1 + + IComputeService + default + + + + com.google.hardware.pixel.display + 13 + + IDisplay + default + + + + hardware.qorvo.uwb + + IUwbVendor + default + + + + vendor.goodix.hardware.biometrics.fingerprint + 2.1 + + IGoodixFingerprintDaemon + default + + + + vendor.google.google_battery + 2-3 + + IGoogleBattery + default + + + + vendor.google.wifi_ext + 2-4 + + IWifiExt + default + + + + vendor.samsung_slsi.telephony.hardware.oemservice + 1.0 + + IOemService + dm0 + dm1 + sced0 + + + + com.google.pixel.modem.logmasklibrary + 1 + + ILiboemserviceProxy + default + + + + vendor.samsung_slsi.telephony.hardware.radioExternal + 1.1 + + IOemSlsiRadioExternal + rilExternal + + + + vendor.samsung_slsi.telephony.hardware.radioExternal + 1 + + IOemSlsiRadioExternal + default + + + + vendor.samsung_slsi.telephony.hardware.oemservice + 1 + + IOemService + dm0 + dm1 + sced0 + + + diff --git a/device_framework_matrix_product.xml b/device_framework_matrix_product_8.xml similarity index 99% rename from device_framework_matrix_product.xml rename to device_framework_matrix_product_8.xml index bbd11d3..1294b8c 100644 --- a/device_framework_matrix_product.xml +++ b/device_framework_matrix_product_8.xml @@ -21,7 +21,7 @@ android.hardware.vibrator - 2 + 2-3 IVibrator dual @@ -145,7 +145,7 @@ vendor.google.wifi_ext - 2-3 + 2-4 IWifiExt default diff --git a/dumpstate/dump_power.cpp b/dumpstate/dump_power.cpp index 2e955cf..7316b27 100644 --- a/dumpstate/dump_power.cpp +++ b/dumpstate/dump_power.cpp @@ -177,7 +177,7 @@ void dumpPowerSupplyStats() { void dumpMaxFg() { const char *maxfgLoc = "/sys/class/power_supply/maxfg"; const char *max77779fgDir = "/sys/class/power_supply/max77779fg"; - + const char *maxfgDualLoc = "/sys/class/power_supply/maxfg_base"; const char *maxfg [][2] = { {"Power supply property maxfg", "/sys/class/power_supply/maxfg/uevent"}, {"maxfg registers", "/sys/class/power_supply/maxfg/registers_dump"}, @@ -194,16 +194,17 @@ void dumpMaxFg() { {"max77779fg_monitor logbuffer", "/dev/logbuffer_max77779fg_monitor"}, }; - const char *maxfgSecondary [][2] = { + const char *maxfgDual [][2] = { {"Power supply property maxfg_base", "/sys/class/power_supply/maxfg_base/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"}, {"model_state", "/sys/class/power_supply/maxfg_base/model_state"}, - {"maxfg_base", "/dev/logbuffer_maxfg_base"}, - {"maxfg_secondary", "/dev/logbuffer_maxfg_secondary"}, + {"maxfg_base logbuffer", "/dev/logbuffer_maxfg_base"}, + {"maxfg_secondary logbuffer", "/dev/logbuffer_maxfg_secondary"}, {"maxfg_base_monitor logbuffer", "/dev/logbuffer_maxfg_base_monitor"}, {"maxfg_secondary_monitor logbuffer", "/dev/logbuffer_maxfg_secondary_monitor"}, + {"dual_batt logbuffer", "/dev/logbuffer_dual_batt"}, }; const char *maxfgHistoryName = "Maxim FG History"; @@ -220,14 +221,13 @@ void dumpMaxFg() { for (const auto &row : max77779fgFiles) { dumpFileContent(row[0], row[1]); } - } else { - for (const auto &row : maxfgSecondary) { + } else if (isValidDir(maxfgDualLoc)){ + for (const auto &row : maxfgDual) { dumpFileContent(row[0], row[1]); } - } - - if (isValidFile(maxfgHistoryDir)) { - dumpFileContent(maxfgHistoryName, maxfgHistoryDir); + if (isValidFile(maxfgHistoryDir)) { + dumpFileContent(maxfgHistoryName, maxfgHistoryDir); + } } } @@ -317,19 +317,14 @@ void dumpPdEngine() { {"TCPC logbuffer", "/dev/logbuffer_usbpd"}, {"pogo_transport logbuffer", "/dev/logbuffer_pogo_transport"}, {"PPS-google_cpm logbuffer", "/dev/logbuffer_cpm"}, + {"PPS-pca9468 logbuffer", "/dev/logbuffer_pca9468"}, + {"PPS-ln8411 logbuffer", "/dev/logbuffer_ln8411"}, + {"PPS-dc_mains logbuffer", "/dev/logbuffer_dc_mains"} }; - const char* ppsDcMsg = "PPS-dc logbuffer"; - const char* pca9468dir = "/dev/logbuffer_pca9468"; - const char* ln8411dir = "/dev/logbuffer_ln8411"; for (const auto &row : pdEngine) { dumpFileContent(row[0], row[1]); } - if (isValidFile(pca9468dir)) { - dumpFileContent(ppsDcMsg, pca9468dir); - } else { - dumpFileContent(ppsDcMsg, ln8411dir); - } } void dumpBatteryHealth() { @@ -361,7 +356,7 @@ void dumpBatteryHealth() { } void dumpBatteryDefend() { - const char* defendConfig [][4] { + const char* defendConfig [][3] { {"TRICKLE-DEFEND Config", "/sys/devices/platform/google,battery/power_supply/battery/", "bd_"}, {"DWELL-DEFEND Config", "/sys/devices/platform/google,charger/", "charge_s"}, @@ -406,6 +401,57 @@ void dumpBatteryDefend() { } } +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 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 files; auto info = directory; @@ -440,11 +486,8 @@ void printValuesOfDirectory(const char *directory, std::string debugfs, const ch void dumpChg() { const std::string pmic_bus = "/sys/devices/platform/108d0000.hsi2c/i2c-6/6-0066"; - const std::string pmic_bus_dev = "/sys/devices/platform/10cb0000.hsi2c/i2c-11/11-0066"; const char* chg_reg_dump_file = "/sys/class/power_supply/main-charger/device/registers_dump"; const std::string chg_name_file = "/sys/class/power_supply/main-charger/device/name"; - const std::string pmic_name_file_dev = pmic_bus_dev + "/name"; - const std::string pmic_reg_dump_dev_file = pmic_bus_dev + "/registers_dump"; const std::string pmic_name_file = pmic_bus + "/name"; const std::string pmic_reg_dump_file = pmic_bus + "/registers_dump"; const std::string reg_dump_str = " registers dump"; @@ -469,10 +512,6 @@ void dumpChg() { if (isValidDir(pmic_bus.c_str())) { ret = android::base::ReadFileToString(pmic_name_file, &pmic_name); pmic_reg_dump = pmic_reg_dump_file; - } else { - /* DEV device */ - ret = android::base::ReadFileToString(pmic_name_file_dev, &pmic_name); - pmic_reg_dump = pmic_reg_dump_dev_file; } if (ret && !pmic_name.empty()) { @@ -490,36 +529,16 @@ void dumpChg() { 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 *maxSecFgDir = "/d/maxfg_secondary"; - const char *maxSecFgStrMatch = "maxfg_secondary"; const char *max77779FgDir = "/d/max77779fg"; const char *maxFg77779StrMatch = "max77779fg"; const char *chgTblName = "Charging table dump"; const char *chgTblDir = "/d/google_battery/chg_raw_profile"; - const char *maxFgInfo [] { - "fg_model", - "algo_ver", - "model_ok", - "registers", - "nv_registers", - }; - const char *max77779FgInfo [] { "fg_model", - "algo_ver", "model_ok", - "registers", - "debug_registers", - }; - - const char *max1720xFgInfo [] { - "registers", - "nv_registers", }; if (isUserBuild()) @@ -527,11 +546,7 @@ void dumpChgUserDebug() { dumpFileContent(chgTblName, chgTblDir); - if (isValidDir(maxFgDir)) { - for (auto & directory : maxFgInfo) { - printValuesOfDirectory(directory, debugfs, maxFgStrMatch); - } - } else if (isValidDir(max77779FgDir)) { + if (isValidDir(max77779FgDir)) { for (auto & directory : max77779FgInfo) { printValuesOfDirectory(directory, debugfs, maxFg77779StrMatch); } @@ -539,11 +554,6 @@ void dumpChgUserDebug() { for (auto & directory : max77779FgInfo) { printValuesOfDirectory(directory, debugfs, maxBaseFgStrMatch); } - if (isValidDir(maxSecFgDir)) { - for (auto & directory : max1720xFgInfo) { - printValuesOfDirectory(directory, debugfs, maxSecFgStrMatch); - } - } } } @@ -1113,6 +1123,7 @@ int main() { dumpPdEngine(); dumpBatteryHealth(); dumpBatteryDefend(); + dumpBatteryCaretaker(); dumpChg(); dumpChgUserDebug(); dumpScratchpad(); diff --git a/dumpstate/dump_power.rc b/dumpstate/dump_power.rc index 3ccc2f3..5a01b3d 100644 --- a/dumpstate/dump_power.rc +++ b/dumpstate/dump_power.rc @@ -97,6 +97,7 @@ on early-boot chown system system /dev/logbuffer_maxfg_secondary chown system system /dev/logbuffer_maxfg_base_monitor chown system system /dev/logbuffer_maxfg_secondary_monitor + chown system system /dev/logbuffer_dual_batt chown system system /dev/logbuffer_maxq chown system system /dev/logbuffer_rtx chown system system /dev/logbuffer_ssoc @@ -107,6 +108,7 @@ on early-boot chown system system /dev/logbuffer_wireless chown system system /dev/logbuffer_pca9468 chown system system /dev/logbuffer_ln8411 + chown system system /dev/logbuffer_dc_mains chown system system /dev/logbuffer_cpm chown system system /dev/logbuffer_wc68 chown system system /dev/logbuffer_max77779_fwupdate diff --git a/health/android.hardware.health-service.zumapro.xml b/health/android.hardware.health-service.zumapro.xml index 2acaaba..8ddfbda 100644 --- a/health/android.hardware.health-service.zumapro.xml +++ b/health/android.hardware.health-service.zumapro.xml @@ -1,7 +1,7 @@ android.hardware.health - 3 + 4 IHealth/default diff --git a/manifest_202404.xml b/manifest_202404.xml new file mode 100644 index 0000000..f1ed5b9 --- /dev/null +++ b/manifest_202404.xml @@ -0,0 +1,6 @@ + + + android.hardware.boot + IBootControl/default + + diff --git a/manifest_media_aosp_202404.xml b/manifest_media_aosp_202404.xml new file mode 100644 index 0000000..57f073f --- /dev/null +++ b/manifest_media_aosp_202404.xml @@ -0,0 +1,8 @@ + + + + android.hardware.media.c2 + 1 + IComponentStore/default + + diff --git a/media_codecs_aosp_c2.xml b/media_codecs_aosp_c2.xml index ab61ca9..550b4c8 100644 --- a/media_codecs_aosp_c2.xml +++ b/media_codecs_aosp_c2.xml @@ -33,6 +33,7 @@ + @@ -48,6 +49,7 @@ + @@ -63,6 +65,7 @@ + @@ -78,6 +81,7 @@ + @@ -119,6 +123,7 @@ + @@ -134,6 +139,7 @@ + @@ -149,6 +155,7 @@ + @@ -188,6 +195,7 @@ + diff --git a/media_codecs_bo_c2.xml b/media_codecs_bo_c2.xml index 06e0447..799a117 100644 --- a/media_codecs_bo_c2.xml +++ b/media_codecs_bo_c2.xml @@ -31,6 +31,7 @@ + @@ -47,15 +48,16 @@ + - + - - + + @@ -66,6 +68,7 @@ + diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml index 3391340..143b681 100644 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -275,6 +275,9 @@ true + + 1024 + false @@ -481,10 +484,44 @@ com.google.android.apps.stargate + + com.google.android.apps.stargate.registration.RegistrationReceiver_Receiver + - US + US + PR + CA + AT + BE + BG + HR + CY + CZ + DK + EE + FI + FR + DE + GR + HU + IE + IT + LV + LT + LU + NL + NO + PL + PT + RO + SK + SI + ES + SE + CH + GB com.google.android.apps.stargate.ACTION_ESOS_DEMO - - 20000 + + com.google.android.apps.stargate.sessionmanager.SessionManagerReceiver_Receiver - - 33% + + false + + + /vendor/etc/telephony/satellite_access_config.json + + + true + + + false + + + pixel.ntn + + + + 1001 + diff --git a/overlay/frameworks/base/packages/SettingsLib/res/values-mcc310-mnc004/strings.xml b/overlay/frameworks/base/packages/SettingsLib/res/values-mcc310-mnc004/strings.xml deleted file mode 100644 index f8ed0c0..0000000 --- a/overlay/frameworks/base/packages/SettingsLib/res/values-mcc310-mnc004/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - 5G UW - diff --git a/overlay/frameworks/base/packages/SettingsLib/res/values-mcc311-mnc480/strings.xml b/overlay/frameworks/base/packages/SettingsLib/res/values-mcc311-mnc480/strings.xml deleted file mode 100644 index f8ed0c0..0000000 --- a/overlay/frameworks/base/packages/SettingsLib/res/values-mcc311-mnc480/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - 5G UW - diff --git a/overlay/packages/services/Telephony/res/values/config.xml b/overlay/packages/services/Telephony/res/values/config.xml index 2a0cf01..030b476 100644 --- a/overlay/packages/services/Telephony/res/values/config.xml +++ b/overlay/packages/services/Telephony/res/values/config.xml @@ -31,4 +31,7 @@ com.shannon.rcsservice + + + false diff --git a/task_profiles.json b/task_profiles.json index 236014b..6b9b1ee 100644 --- a/task_profiles.json +++ b/task_profiles.json @@ -265,6 +265,202 @@ } ] }, + { + "Name": "AdpfSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/adpf_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "AdpfClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/adpf_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "BoostPrioSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/boost_prio_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "BoostPrioClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/boost_prio_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreemptWakeupSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/preempt_wakeup_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreemptWakeupClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/preempt_wakeup_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferFitSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_fit_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferFitClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_fit_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferIdleSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_idle_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferIdleClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_idle_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "AutoUclampMaxSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/auto_uclamp_max_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "AutoUclampMaxClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/auto_uclamp_max_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferHighCapSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_high_cap_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferHighCapClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_high_cap_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, { "Name": "ResetUclampGrp", "Actions": [ @@ -304,9 +500,33 @@ "Name": "OtaProfiles", "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", - "Profiles": [ "ResetUclampGrp" ] + "Profiles": [ "MaxPerformance", "SCHED_QOS_SENSITIVE_EXTREME_SET" ] } ] } diff --git a/telephony/satellite_access_config.json b/telephony/satellite_access_config.json new file mode 100644 index 0000000..fd5257e --- /dev/null +++ b/telephony/satellite_access_config.json @@ -0,0 +1,195 @@ +{ + "access_control_configs": [ + { + "config_id": 0, + "satellite_infos": [ + { + "satellite_id": "967f8e86-fc27-4673-9343-a820280a14dd", + "satellite_position": { + "longitude": 10.25, + "altitude": 35793.1 + }, + "bands": [ + 256 + ], + "earfcn_ranges": [ + { + "start_earfcn": 229360, + "end_earfcn": 229360 + }, + { + "start_earfcn": 229362, + "end_earfcn": 229362 + }, + { + "start_earfcn": 229364, + "end_earfcn": 229364 + }, + { + "start_earfcn": 229366, + "end_earfcn": 229366 + } + ] + } + ], + "tag_ids": [ + 101 + ] + }, + { + "config_id": 1, + "satellite_infos": [ + { + "satellite_id": "c9d78ffa-ffa5-4d41-a81b-34693b33b496", + "satellite_position": { + "longitude": -101.3, + "altitude": 35786.0 + }, + "bands": [ + 255 + ], + "earfcn_ranges": [ + { + "start_earfcn": 229011, + "end_earfcn": 229011 + }, + { + "start_earfcn": 229013, + "end_earfcn": 229013 + }, + { + "start_earfcn": 229015, + "end_earfcn": 229015 + }, + { + "start_earfcn": 229017, + "end_earfcn": 229017 + } + ] + } + ], + "tag_ids": [ + 11, + 1001 + ] + }, + { + "config_id": 2, + "satellite_infos": [ + { + "satellite_id": "62de127d-ead1-481f-8524-b58e2664103a", + "satellite_position": { + "longitude": -98.0, + "altitude": 35775.1 + }, + "bands": [ + 255 + ], + "earfcn_ranges": [ + { + "start_earfcn": 228837, + "end_earfcn": 228837 + } + ] + } + ], + "tag_ids": [ + 11, + 1001 + ] + }, + { + "config_id": 3, + "satellite_infos": [ + { + "satellite_id": "62de127d-ead1-481f-8524-b58e2664103a", + "satellite_position": { + "longitude": -98.0, + "altitude": 35775.1 + }, + "bands": [ + 255 + ], + "earfcn_ranges": [ + { + "start_earfcn": 228909, + "end_earfcn": 228909 + }, + { + "start_earfcn": 228919, + "end_earfcn": 228919 + } + ] + } + ], + "tag_ids": [ + 11 + ] + }, + { + "config_id": 4, + "satellite_infos": [ + { + "satellite_id": "c9d78ffa-ffa5-4d41-a81b-34693b33b496", + "satellite_position": { + "longitude": -101.3, + "altitude": 35786.0 + }, + "bands": [ + 255 + ], + "earfcn_ranges": [ + { + "start_earfcn": 229011, + "end_earfcn": 229011 + }, + { + "start_earfcn": 229013, + "end_earfcn": 229013 + }, + { + "start_earfcn": 229015, + "end_earfcn": 229015 + }, + { + "start_earfcn": 229017, + "end_earfcn": 229017 + } + ] + } + ], + "tag_ids": [ + 12 + ] + }, + { + "config_id": 5, + "satellite_infos": [ + { + "satellite_id": "62de127d-ead1-481f-8524-b58e2664103a", + "satellite_position": { + "longitude": -98.0, + "altitude": 35775.1 + }, + "bands": [ + 255 + ], + "earfcn_ranges": [ + { + "start_earfcn": 228919, + "end_earfcn": 228919 + }, + { + "start_earfcn": 228909, + "end_earfcn": 228909 + } + ] + } + ], + "tag_ids": [ + 11, + 1001 + ] + } + ] +} \ No newline at end of file diff --git a/telephony/sats2.dat b/telephony/sats2.dat index ec9a7f4..b06872f 100644 Binary files a/telephony/sats2.dat and b/telephony/sats2.dat differ diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp index 4202407..a879c67 100644 --- a/usb/usb/Usb.cpp +++ b/usb/usb/Usb.cpp @@ -117,6 +117,12 @@ constexpr char kHost1StatePath[] = "/sys/bus/usb/devices/usb1/1-0:1.0/usb1-port1 constexpr char kHost2UeventRegex[] = "/devices/platform/11210000.usb/11210000.dwc3/xhci-hcd-exynos.[0-9].auto/usb2/2-0:1.0"; constexpr char kHost2StatePath[] = "/sys/bus/usb/devices/usb2/2-0:1.0/usb2-port1/state"; +constexpr char kHubHost1UeventRegex[] = + "/devices/platform/11210000.usb/11210000.dwc3/xhci-hcd-exynos.[0-9].auto/usb1/1-1/1-1:1.0"; +constexpr char kHubHost1StatePath[] = "/sys/bus/usb/devices/usb1/1-1/1-1:1.0/1-1-port1/state"; +constexpr char kHubHost2UeventRegex[] = + "/devices/platform/11210000.usb/11210000.dwc3/xhci-hcd-exynos.[0-9].auto/usb1/1-1/1-1:1.0"; +constexpr char kHubHost2StatePath[] = "/sys/bus/usb/devices/usb1/1-1/1-1:1.0/1-1-port2/state"; constexpr char kDataRolePath[] = "/sys/devices/platform/11210000.usb/new_data_role"; constexpr int kSamplingIntervalSec = 5; void queryVersionHelper(android::hardware::usb::Usb *usb, @@ -536,10 +542,9 @@ static int getInternalHubUniqueId() { return internalHubUniqueId; } -static Status tuneInternalHub(const char *devname, void* client_data) { +static Status tuneInternalHub(const char *devname, android::hardware::usb::Usb *usb) { uint16_t vendorId, productId; struct usb_device *device; - ::aidl::android::hardware::usb::Usb *usb; int value, index; device = usb_device_open(devname); @@ -548,7 +553,6 @@ static Status tuneInternalHub(const char *devname, void* client_data) { return Status::ERROR; } - usb = (::aidl::android::hardware::usb::Usb *)client_data; value = usb->mUsbHubVendorCmdValue; index = usb->mUsbHubVendorCmdIndex; @@ -571,20 +575,46 @@ static Status tuneInternalHub(const char *devname, void* client_data) { } static int usbDeviceRemoved(const char *devname, void* client_data) { + string pogoEnableHub; + ::aidl::android::hardware::usb::Usb *usb; + + usb = (::aidl::android::hardware::usb::Usb *)client_data; + + if (usb->mIntHubEnabled == true && ReadFileToString(kPogoEnableHub, &pogoEnableHub) + && Trim(pogoEnableHub) == "0") { + ALOGI("Internal hub disabled"); + usb->mIntHubEnabled = false; + usb->mUsbDataSessionMonitor.reset(new UsbDataSessionMonitor(kUdcUeventRegex, kUdcStatePath, + kHost1UeventRegex, kHost1StatePath, kHost2UeventRegex, + kHost2StatePath, kDataRolePath, + std::bind(&updatePortStatus, usb))); + } + return 0; } static int usbDeviceAdded(const char *devname, void* client_data) { string pogoEnableHub; int uniqueId = 0; + ::aidl::android::hardware::usb::Usb *usb; + + usb = (::aidl::android::hardware::usb::Usb *)client_data; // Enable hub tuning when the pogo dock is connected. if (ReadFileToString(kPogoEnableHub, &pogoEnableHub) && Trim(pogoEnableHub) == "1") { // If enable_hub is set to 1, the internal hub is the first enumearted device on bus 1 and // port 1. uniqueId = usb_device_get_unique_id_from_name(devname); - if (uniqueId == getInternalHubUniqueId()) - tuneInternalHub(devname, client_data); + if (uniqueId == getInternalHubUniqueId()) { + ALOGI("Internal hub enabled"); + usb->mIntHubEnabled = true; + tuneInternalHub(devname, usb); + usb->mUsbDataSessionMonitor.reset(new UsbDataSessionMonitor(kUdcUeventRegex, + kUdcStatePath, kHubHost1UeventRegex, + kHubHost1StatePath, kHubHost2UeventRegex, + kHubHost2StatePath, kDataRolePath, + std::bind(&updatePortStatus, usb))); + } } return 0; @@ -612,9 +642,9 @@ Usb::Usb() mRoleSwitchLock(PTHREAD_MUTEX_INITIALIZER), mPartnerLock(PTHREAD_MUTEX_INITIALIZER), mPartnerUp(false), - mUsbDataSessionMonitor(kUdcUeventRegex, kUdcStatePath, kHost1UeventRegex, kHost1StatePath, - kHost2UeventRegex, kHost2StatePath, kDataRolePath, - std::bind(&updatePortStatus, this)), + mUsbDataSessionMonitor(new UsbDataSessionMonitor(kUdcUeventRegex, kUdcStatePath, + kHost1UeventRegex, kHost1StatePath, kHost2UeventRegex, + kHost2StatePath, kDataRolePath, std::bind(&updatePortStatus, this))), mOverheat(ZoneInfo(TemperatureType::USB_PORT, kThermalZoneForTrip, ThrottlingSeverity::CRITICAL), {ZoneInfo(TemperatureType::UNKNOWN, kThermalZoneForTempReadPrimary, @@ -1200,7 +1230,7 @@ void queryUsbDataSession(android::hardware::usb::Usb *usb, std::vector *currentPortStatus) { std::vector warnings; - usb->mUsbDataSessionMonitor.getComplianceWarnings( + usb->mUsbDataSessionMonitor->getComplianceWarnings( (*currentPortStatus)[0].currentDataRole, &warnings); (*currentPortStatus)[0].complianceWarnings.insert( (*currentPortStatus)[0].complianceWarnings.end(), @@ -1215,25 +1245,30 @@ void queryVersionHelper(android::hardware::usb::Usb *usb, pthread_mutex_lock(&usb->mLock); status = getPortStatusHelper(usb, currentPortStatus); - queryMoistureDetectionStatus(usb, currentPortStatus); - queryPowerTransferStatus(usb, currentPortStatus); - queryNonCompliantChargerStatus(currentPortStatus); - pthread_mutex_lock(&usb->mDisplayPortLock); - if (!usb->mDisplayPortFirstSetupDone && - usb->getDisplayPortUsbPathHelper(&displayPortUsbPath) == Status::SUCCESS) { + if (status == Status::SUCCESS && currentPortStatus->size() > 0) { + queryMoistureDetectionStatus(usb, currentPortStatus); + queryPowerTransferStatus(usb, currentPortStatus); + queryNonCompliantChargerStatus(currentPortStatus); + queryUsbDataSession(usb, currentPortStatus); + pthread_mutex_lock(&usb->mDisplayPortLock); + if (!usb->mDisplayPortFirstSetupDone && + usb->getDisplayPortUsbPathHelper(&displayPortUsbPath) == Status::SUCCESS) { - ALOGI("usbdp: boot with display connected or usb hal restarted"); - usb->setupDisplayPortPoll(); - } - pthread_mutex_unlock(&usb->mDisplayPortLock); - queryDisplayPortStatus(usb, currentPortStatus); - if (usb->mCallback != NULL) { - ScopedAStatus ret = usb->mCallback->notifyPortStatusChange(*currentPortStatus, - status); - if (!ret.isOk()) - ALOGE("queryPortStatus error %s", ret.getDescription().c_str()); + ALOGI("usbdp: boot with display connected or usb hal restarted"); + usb->setupDisplayPortPoll(); + } + pthread_mutex_unlock(&usb->mDisplayPortLock); + queryDisplayPortStatus(usb, currentPortStatus); + if (usb->mCallback != NULL) { + ScopedAStatus ret = usb->mCallback->notifyPortStatusChange(*currentPortStatus, + status); + if (!ret.isOk()) + ALOGE("queryPortStatus error %s", ret.getDescription().c_str()); + } else { + ALOGI("Notifying userspace skipped. Callback is NULL"); + } } else { - ALOGI("Notifying userspace skipped. Callback is NULL"); + ALOGI("%s skipped. currentPortStatus is empty", __func__); } pthread_mutex_unlock(&usb->mLock); } diff --git a/usb/usb/Usb.h b/usb/usb/Usb.h index 8f0c3a0..eb37d38 100644 --- a/usb/usb/Usb.h +++ b/usb/usb/Usb.h @@ -126,7 +126,8 @@ struct Usb : public BnUsb { bool mPartnerUp; // Report usb data session event and data incompliance warnings - UsbDataSessionMonitor mUsbDataSessionMonitor; + std::unique_ptr mUsbDataSessionMonitor; + bool mIntHubEnabled; // Usb Overheat object for push suez event UsbOverheatEvent mOverheat; // Temperature when connected diff --git a/usb/usb/UsbDataSessionMonitor.cpp b/usb/usb/UsbDataSessionMonitor.cpp index bff52f0..197b368 100644 --- a/usb/usb/UsbDataSessionMonitor.cpp +++ b/usb/usb/UsbDataSessionMonitor.cpp @@ -102,6 +102,7 @@ UsbDataSessionMonitor::UsbDataSessionMonitor( const std::string &dataRolePath, std::function updatePortStatusCb) { struct epoll_event ev; std::string udc; + int pipefds[2]; unique_fd epollFd(epoll_create(8)); if (epollFd.get() == -1) { @@ -133,19 +134,28 @@ UsbDataSessionMonitor::UsbDataSessionMonitor( abort(); } + pipe(pipefds); + mPipefd0.reset(pipefds[0]); + mPipefd1.reset(pipefds[1]); + if (addEpollFd(epollFd, mPipefd0)) + abort(); + /* * The device state file could be absent depending on the current data role * and driver architecture. It's ok for addEpollFile to fail here, the file * will be monitored later when its presence is detected by uevent. */ + mDeviceState.name = "udc"; mDeviceState.filePath = deviceStatePath; mDeviceState.ueventRegex = deviceUeventRegex; addEpollFile(epollFd.get(), mDeviceState.filePath, mDeviceState.fd); + mHost1State.name = "host1"; mHost1State.filePath = host1StatePath; mHost1State.ueventRegex = host1UeventRegex; addEpollFile(epollFd.get(), mHost1State.filePath, mHost1State.fd); + mHost2State.name = "host2"; mHost2State.filePath = host2StatePath; mHost2State.ueventRegex = host2UeventRegex; addEpollFile(epollFd.get(), mHost2State.filePath, mHost2State.fd); @@ -169,7 +179,15 @@ UsbDataSessionMonitor::UsbDataSessionMonitor( usb_flags::enable_report_usb_data_compliance_warning()); } -UsbDataSessionMonitor::~UsbDataSessionMonitor() {} +UsbDataSessionMonitor::~UsbDataSessionMonitor() { + /* + * Write a character to the pipe to signal the monitor thread to exit. + * The character is not important, it can be any value. + */ + int c = 'q'; + write(mPipefd1, &c, 1); + pthread_join(mMonitor, NULL); +} void UsbDataSessionMonitor::reportUsbDataSessionMetrics() { std::vector events; @@ -307,11 +325,11 @@ void UsbDataSessionMonitor::handleDeviceStateEvent(struct usbDeviceState *device n = read(deviceState->fd.get(), &state, USB_STATE_MAX_LEN); if (kValidStates.find(state) == kValidStates.end()) { - ALOGE("Invalid state %s", state); + ALOGE("Invalid state %s: %s", deviceState->name.c_str(), state); return; } - ALOGI("Update USB device state: %s", state); + ALOGI("Update device state %s: %s", deviceState->name.c_str(), state); deviceState->states.push_back(state); deviceState->timestamps.push_back(boot_clock::now()); @@ -484,7 +502,9 @@ void *UsbDataSessionMonitor::monitorThread(void *param) { } for (int n = 0; n < nevents; ++n) { - if (events[n].data.fd == monitor->mUeventFd.get()) { + if (events[n].data.fd == monitor->mPipefd0.get()) { + return NULL; + } else if (events[n].data.fd == monitor->mUeventFd.get()) { monitor->handleUevent(); } else if (events[n].data.fd == monitor->mTimerFd.get()) { monitor->handleTimerEvent(); diff --git a/usb/usb/UsbDataSessionMonitor.h b/usb/usb/UsbDataSessionMonitor.h index aced8a4..e1cfd10 100644 --- a/usb/usb/UsbDataSessionMonitor.h +++ b/usb/usb/UsbDataSessionMonitor.h @@ -64,6 +64,8 @@ class UsbDataSessionMonitor { private: struct usbDeviceState { + // The name of the usb device, e.g. udc, host1, host2. + std::string name; unique_fd fd; std::string filePath; std::string ueventRegex; @@ -86,6 +88,8 @@ class UsbDataSessionMonitor { void updateUdcBindStatus(const std::string &devname); pthread_t mMonitor; + unique_fd mPipefd0; + unique_fd mPipefd1; unique_fd mEpollFd; unique_fd mUeventFd; unique_fd mTimerFd; diff --git a/usb/usb/android.hardware.usb-service-i2c11.rc b/usb/usb/android.hardware.usb-service-i2c11.rc index dd4b86b..84a810e 100644 --- a/usb/usb/android.hardware.usb-service-i2c11.rc +++ b/usb/usb/android.hardware.usb-service-i2c11.rc @@ -26,7 +26,6 @@ on post-fs chown root system /sys/devices/platform/11110000.usb/dwc3_exynos_otg_b_sess chown root system /sys/devices/platform/11110000.usb/dwc3_exynos_otg_id chown root system /sys/devices/platform/11110000.usb/usb_data_enabled - chown root system /sys/devices/platform/google,pogo/enable_usb chmod 664 /sys/class/typec/port0/power_role chmod 664 /sys/class/typec/port0/data_role chmod 664 /sys/class/typec/port0/port_type @@ -48,4 +47,3 @@ on post-fs chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/pin_assignment chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/link_status chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/usbc_cable_disconnect - chmod 664 /sys/devices/platform/google,pogo/enable_usb diff --git a/usb/usb/android.hardware.usb-service-i2c6.rc b/usb/usb/android.hardware.usb-service-i2c6.rc index fac08b3..d160a22 100644 --- a/usb/usb/android.hardware.usb-service-i2c6.rc +++ b/usb/usb/android.hardware.usb-service-i2c6.rc @@ -26,7 +26,6 @@ on post-fs chown root system /sys/devices/platform/11110000.usb/dwc3_exynos_otg_b_sess chown root system /sys/devices/platform/11110000.usb/dwc3_exynos_otg_id chown root system /sys/devices/platform/11110000.usb/usb_data_enabled - chown root system /sys/devices/platform/google,pogo/enable_usb chmod 664 /sys/class/typec/port0/power_role chmod 664 /sys/class/typec/port0/data_role chmod 664 /sys/class/typec/port0/port_type @@ -48,4 +47,3 @@ on post-fs chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/pin_assignment chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/link_status chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/usbc_cable_disconnect - chmod 664 /sys/devices/platform/google,pogo/enable_usb