diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk index 56e4be11..c599bf68 100644 --- a/BoardConfig-common.mk +++ b/BoardConfig-common.mk @@ -58,11 +58,7 @@ BOARD_BOOTCONFIG += androidboot.boot_devices=14700000.ufs TARGET_NO_BOOTLOADER := true TARGET_NO_RADIOIMAGE := true -ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT))) BOARD_PREBUILT_BOOTIMAGE := $(wildcard $(TARGET_KERNEL_DIR)/boot.img) -else -BOARD_PREBUILT_BOOTIMAGE := $(wildcard $(TARGET_KERNEL_DIR)/boot-user.img) -endif ifneq (,$(BOARD_PREBUILT_BOOTIMAGE)) TARGET_NO_KERNEL := true else @@ -195,6 +191,8 @@ BOARD_USE_DEC_SW_CSC := true BOARD_USE_ENC_SW_CSC := true BOARD_SUPPORT_MFC_ENC_RGB := true BOARD_USE_BLOB_ALLOCATOR := false +BOARD_SUPPORT_MFC_ENC_BT2020 := true + ######################## BOARD_SUPER_PARTITION_SIZE := 8531214336 @@ -386,11 +384,20 @@ KERNEL_MODULES := $(wildcard $(KERNEL_MODULE_DIR)/*.ko) BOARD_VENDOR_KERNEL_MODULES_BLOCKLIST_FILE := $(KERNEL_MODULE_DIR)/vendor_dlkm.modules.blocklist -BOARD_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES_LOAD := $(strip $(shell cat $(KERNEL_MODULE_DIR)/vendor_kernel_boot.modules.load)) -ifndef BOARD_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES_LOAD +# Prebuilt kernel modules that are *not* listed in vendor_kernel_boot.modules.load +BOARD_PREBUILT_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES = fips140/fips140.ko +BOARD_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES_LOAD_EXTRA = $(foreach k,$(BOARD_PREBUILT_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES),$(if $(wildcard $(KERNEL_MODULE_DIR)/$(k)), $(k))) +KERNEL_MODULES += $(addprefix $(KERNEL_MODULE_DIR)/, $(BOARD_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES_LOAD_EXTRA)) + +# Kernel modules that are listed in vendor_kernel_boot.modules.load +BOARD_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES_LOAD_FILE := $(strip $(shell cat $(KERNEL_MODULE_DIR)/vendor_kernel_boot.modules.load)) +ifndef BOARD_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES_LOAD_FILE $(error vendor_kernel_boot.modules.load not found or empty) endif -BOARD_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES := $(addprefix $(KERNEL_MODULE_DIR)/, $(notdir $(BOARD_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES_LOAD))) +BOARD_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES_LOAD := $(BOARD_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES_LOAD_EXTRA) +BOARD_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES_LOAD += $(BOARD_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES_LOAD_FILE) +BOARD_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES := $(addprefix $(KERNEL_MODULE_DIR)/, $(BOARD_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES_LOAD_EXTRA)) +BOARD_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES += $(addprefix $(KERNEL_MODULE_DIR)/, $(notdir $(BOARD_VENDOR_KERNEL_RAMDISK_KERNEL_MODULES_LOAD_FILE))) BOARD_VENDOR_KERNEL_MODULES_LOAD := $(strip $(shell cat $(KERNEL_MODULE_DIR)/vendor_dlkm.modules.load)) ifndef BOARD_VENDOR_KERNEL_MODULES_LOAD diff --git a/battery_mitigation/battery_mitigation.cpp b/battery_mitigation/battery_mitigation.cpp index 5784b270..70e8188d 100644 --- a/battery_mitigation/battery_mitigation.cpp +++ b/battery_mitigation/battery_mitigation.cpp @@ -61,10 +61,47 @@ const struct MitigationConfig::Config cfg = { "voltage_now", "current_now", }, .LogFilePath = "/data/vendor/mitigation/thismeal.txt", + .TimestampFormat = "%Y-%m-%d %H:%M:%S", }; +const char kReadyFilePath[] = "/sys/devices/virtual/pmic/mitigation/instruction/ready"; +const char kReadyProperty[] = "vendor.brownout.mitigation.ready"; +const char kLastMealPath[] = "/data/vendor/mitigation/lastmeal.txt"; +const char kBRRequestedProperty[] = "vendor.brownout_reason"; +const std::regex kTimestampRegex("^\\S+\\s[0-9]+:[0-9]+:[0-9]+\\S+$"); + int main(int /*argc*/, char ** /*argv*/) { + auto batteryMitigationStartTime = std::chrono::system_clock::now(); bmSp = new BatteryMitigation(cfg); + if (!bmSp) { + return 0; + } + bool mitigationLogTimeValid = bmSp->isMitigationLogTimeValid(batteryMitigationStartTime, + cfg.LogFilePath, + cfg.TimestampFormat, + kTimestampRegex); + std::string reason = android::base::GetProperty(kBRRequestedProperty, ""); + if (!reason.empty() && mitigationLogTimeValid) { + std::ifstream src(cfg.LogFilePath, std::ios::in); + std::ofstream dst(kLastMealPath, std::ios::out); + dst << src.rdbuf(); + } + bool isBatteryMitigationReady = false; + std::string ready_str; + int val = 0; + while (!isBatteryMitigationReady) { + if (!android::base::ReadFileToString(kReadyFilePath, &ready_str)) { + continue; + } + ready_str = android::base::Trim(ready_str); + if (!android::base::ParseInt(ready_str, &val)) { + continue; + } + if (val == 1) { + isBatteryMitigationReady = true; + } + } + android::base::SetProperty(kReadyProperty, "1"); while (true) { pause(); } diff --git a/battery_mitigation/battery_mitigation.rc b/battery_mitigation/battery_mitigation.rc index c50811cf..c0c76fb5 100644 --- a/battery_mitigation/battery_mitigation.rc +++ b/battery_mitigation/battery_mitigation.rc @@ -1,24 +1,92 @@ -on property:sys.boot_completed=1 && property:ro.boot.bootreason=reboot,ocp,pmic,if - copy data/vendor/mitigation/thismeal.txt data/vendor/mitigation/lastmeal.txt - chown system system data/vendor/mitigation/lastmeal.txt - -on property:sys.boot_completed=1 && property:ro.boot.bootreason=reboot,uvlo,pmic,if - copy data/vendor/mitigation/thismeal.txt data/vendor/mitigation/lastmeal.txt - chown system system data/vendor/mitigation/lastmeal.txt - -on property:sys.boot_completed=1 && property:ro.boot.bootreason=reboot,uvlo,pmic,main - copy data/vendor/mitigation/thismeal.txt data/vendor/mitigation/lastmeal.txt - chown system system data/vendor/mitigation/lastmeal.txt - -on property:sys.boot_completed=1 && property:ro.boot.bootreason=reboot,uvlo,pmic,sub - copy data/vendor/mitigation/thismeal.txt data/vendor/mitigation/lastmeal.txt - chown system system data/vendor/mitigation/lastmeal.txt - on property:vendor.thermal.link_ready=1 mkdir /data/vendor/mitigation 0755 system system chown system system /data/vendor/mitigation start vendor.battery_mitigation +on property:ro.boot.bootreason=reboot,uvlo,pmic,if + setprop vendor.brownout_reason "uvlo,pmic,if" + +on property:ro.boot.bootreason=reboot,ocp,pmic,if + setprop vendor.brownout_reason "ocp,pmic,if" + +on property:ro.boot.bootreason=reboot,uvlo,pmic,main + setprop vendor.brownout_reason "uvlo,pmic,main" + +on property:ro.boot.bootreason=reboot,uvlo,pmic,sub + setprop vendor.brownout_reason "uvlo,pmic,sub" + +on property:ro.boot.bootreason=reboot,ocp,buck1m + setprop vendor.brownout_reason "ocp,buck1m" + +on property:ro.boot.bootreason=reboot,ocp,buck2m + setprop vendor.brownout_reason "ocp,buck2m" + +on property:ro.boot.bootreason=reboot,ocp,buck3m + setprop vendor.brownout_reason "ocp,buck3m" + +on property:ro.boot.bootreason=reboot,ocp,buck4m + setprop vendor.brownout_reason "ocp,buck4m" + +on property:ro.boot.bootreason=reboot,ocp,buck5m + setprop vendor.brownout_reason "ocp,buck5m" + +on property:ro.boot.bootreason=reboot,ocp,buck6m + setprop vendor.brownout_reason "ocp,buck6m" + +on property:ro.boot.bootreason=reboot,ocp,buck7m + setprop vendor.brownout_reason "ocp,buck7m" + +on property:ro.boot.bootreason=reboot,ocp,buck8m + setprop vendor.brownout_reason "ocp,buck8m" + +on property:ro.boot.bootreason=reboot,ocp,buck9m + setprop vendor.brownout_reason "ocp,buck9m" + +on property:ro.boot.bootreason=reboot,ocp,buck10m + setprop vendor.brownout_reason "ocp,buck10m" + +on property:ro.boot.bootreason=reboot,ocp,buck1s + setprop vendor.brownout_reason "ocp,buck1s" + +on property:ro.boot.bootreason=reboot,ocp,buck2s + setprop vendor.brownout_reason "ocp,buck2s" + +on property:ro.boot.bootreason=reboot,ocp,buck3s + setprop vendor.brownout_reason "ocp,buck3s" + +on property:ro.boot.bootreason=reboot,ocp,buck4s + setprop vendor.brownout_reason "ocp,buck4s" + +on property:ro.boot.bootreason=reboot,ocp,buck5s + setprop vendor.brownout_reason "ocp,buck5s" + +on property:ro.boot.bootreason=reboot,ocp,buck6s + setprop vendor.brownout_reason "ocp,buck6s" + +on property:ro.boot.bootreason=reboot,ocp,buck7s + setprop vendor.brownout_reason "ocp,buck7s" + +on property:ro.boot.bootreason=reboot,ocp,buck8s + setprop vendor.brownout_reason "ocp,buck8s" + +on property:ro.boot.bootreason=reboot,ocp,buck9s + setprop vendor.brownout_reason "ocp,buck9s" + +on property:ro.boot.bootreason=reboot,ocp,buck10s + setprop vendor.brownout_reason "ocp,buck10s" + +on property:ro.boot.bootreason=reboot,ocp,buckds + setprop vendor.brownout_reason "ocp,buckds" + +on property:ro.boot.bootreason=reboot,ocp,buckas + setprop vendor.brownout_reason "ocp,buckas" + +on property:ro.boot.bootreason=reboot,ocp,buckcs + setprop vendor.brownout_reason "ocp,buckcs" + +on property:ro.boot.bootreason=reboot,ocp,buckbs + setprop vendor.brownout_reason "ocp,buckbs" + service vendor.battery_mitigation /vendor/bin/hw/battery_mitigation user system group system diff --git a/conf/init.gs201.rc b/conf/init.gs201.rc index 6d8c5f45..5baf72d1 100644 --- a/conf/init.gs201.rc +++ b/conf/init.gs201.rc @@ -14,6 +14,9 @@ on init # CPU0 cannot be offline chmod 0444 /sys/devices/system/cpu/cpu0/online + # Set teo as cpu idle governor + write /sys/devices/system/cpu/cpuidle/current_governor teo + # Boot time fs tuning write /sys/block/sda/queue/iostats 0 write /sys/block/sda/queue/scheduler bfq @@ -209,25 +212,6 @@ on init chown system system /dev/nanohub chown system system /dev/nanohub_comms - # logbuffer - chown system system /dev/logbuffer_maxfg - chown system system /dev/logbuffer_maxfg_base - chown system system /dev/logbuffer_maxfg_flip - chown system system /dev/logbuffer_maxfg_monitor - chown system system /dev/logbuffer_maxfg_base_monitor - chown system system /dev/logbuffer_maxfg_flip_monitor - chown system system /dev/logbuffer_maxq - chown system system /dev/logbuffer_google,cpm - chown system system /dev/logbuffer_rtx - chown system system /dev/logbuffer_ssoc - chown system system /dev/logbuffer_ttf - chown system system /dev/logbuffer_tcpm - chown system system /dev/logbuffer_usbpd - chown system system /dev/logbuffer_pogo_transport - chown system system /dev/logbuffer_wireless - chown system system /dev/logbuffer_pca9468 - chown system system /dev/logbuffer_cpm - # Dump maxfg chown system system /sys/class/power_supply/maxfg/m5_model_state chown system system /sys/class/power_supply/maxfg_base/m5_model_state @@ -254,6 +238,9 @@ on init # Thermal Charge stats (write 0) chown system system /sys/devices/platform/google,charger/thermal_stats + # Google Charger stats (write 0) + chown system system /sys/devices/platform/google,charger/charge_stats + # Permission for wireless charging fan chown system system /sys/devices/platform/google,charger/thermal_dc_fan_alarm chown system system /sys/devices/platform/google,cpm/thermal_mdis_fan_alarm @@ -303,9 +290,7 @@ on init chown system system /sys/devices/platform/google,cpm/dc_ctl # Important to include dd_state as it's used in battery defender in charger mode chown system system /sys/devices/platform/google,charger/dd_state - # Disable dock-defend by default chown system system /sys/devices/platform/google,charger/dd_settings - write /sys/devices/platform/google,charger/dd_settings -1 # Power Stats HAL chown system system /dev/bbd_pwrstat @@ -377,6 +362,7 @@ on post-fs-data # Permissions Camera mkdir /data/vendor/camera 0770 system camera + mkdir /data/vendor/camera/catpipe 0770 system camera mkdir /data/vendor/camera/video_bokeh_node 0770 system camera chmod 0755 /sys/kernel/debug/tracing restorecon /sys/kernel/debug/tracing/trace_marker @@ -462,6 +448,25 @@ on early-boot chown system system /dev/battery_history chmod 0644 /dev/battery_history + # Permission for logbuffer + chown system system /dev/logbuffer_maxfg + chown system system /dev/logbuffer_maxfg_base + chown system system /dev/logbuffer_maxfg_flip + chown system system /dev/logbuffer_maxfg_monitor + chown system system /dev/logbuffer_maxfg_base_monitor + chown system system /dev/logbuffer_maxfg_flip_monitor + chown system system /dev/logbuffer_maxq + chown system system /dev/logbuffer_rtx + chown system system /dev/logbuffer_ssoc + chown system system /dev/logbuffer_ttf + chown system system /dev/logbuffer_tcpm + chown system system /dev/logbuffer_usbpd + chown system system /dev/logbuffer_pogo_transport + chown system system /dev/logbuffer_wireless + chown system system /dev/logbuffer_pca9468 + chown system system /dev/logbuffer_cpm + chown system system /dev/logbuffer_bd + on boot # Allow to access debugfs for system:system @@ -515,6 +520,13 @@ 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 + + # for battery defender + mkdir /mnt/vendor/persist/battery 0700 system system + restorecon_recursive /mnt/vendor/persist restorecon_recursive /mnt/vendor/persist/aoc restorecon_recursive /mnt/vendor/persist/audio @@ -656,12 +668,12 @@ on property:init.svc.vendor.charger=running setprop sys.usb.configfs 1 setprop vendor.setup.power 1 - # keep one little and one big + # keep one little and one mid core write /sys/devices/system/cpu/cpu1/online 0 write /sys/devices/system/cpu/cpu2/online 0 write /sys/devices/system/cpu/cpu3/online 0 - write /sys/devices/system/cpu/cpu4/online 0 write /sys/devices/system/cpu/cpu5/online 0 + write /sys/devices/system/cpu/cpu6/online 0 write /sys/devices/system/cpu/cpu7/online 0 on property:sys.boot_completed=1 @@ -684,6 +696,9 @@ on property:sys.boot_completed=1 swapon_all /vendor/etc/fstab.${ro.board.platform} write /proc/sys/vm/swappiness 100 + # Adjust watermark level + write /proc/sys/vm/watermark_scale_factor 200 + # Back to default VM settings write /proc/sys/vm/dirty_expire_centisecs 3000 write /proc/sys/vm/dirty_background_ratio 10 @@ -705,7 +720,6 @@ on property:sys.boot_completed=1 setprop vendor.powerhal.init 1 # Setup final cpu.uclamp - write /proc/vendor_sched/uclamp_threshold 8 write /proc/vendor_sched/ta_uclamp_min 1 write /proc/vendor_sched/fg_uclamp_min 0 write /proc/vendor_sched/sys_prefer_idle 0 @@ -908,7 +922,7 @@ on post-fs-data mkdir /data/vendor/powerstats 0771 system system chown system system /data/vendor/powerstats -on property:vendor.thermal.link_ready=1 +on property:vendor.brownout.mitigation.ready=1 # BCL write /sys/devices/virtual/pmic/mitigation/clock_ratio/tpu_light_clk_ratio 0xfff041c1 #DFS write /sys/devices/virtual/pmic/mitigation/clock_ratio/cpu1_heavy_clk_ratio 0xfff041c1 #DFS @@ -924,6 +938,9 @@ on property:vendor.thermal.link_ready=1 write /sys/devices/virtual/pmic/mitigation/clock_div/tpu_clk_div 0x1 write /sys/devices/virtual/pmic/mitigation/clock_div/gpu_clk_div 0x1 write /sys/devices/virtual/pmic/mitigation/clock_div/cpu2_clk_div 0x1 + +on property:vendor.thermal.link_ready=1 + # BCL chown system system /dev/thermal/tz-by-name/soc/mode chown system system /dev/thermal/tz-by-name/vdroop2/trip_point_0_temp chown system system /dev/thermal/tz-by-name/vdroop2/trip_point_0_hyst diff --git a/conf/init.gs201.usb.rc b/conf/init.gs201.usb.rc index 4ac57f92..c57e2c56 100644 --- a/conf/init.gs201.usb.rc +++ b/conf/init.gs201.usb.rc @@ -152,6 +152,8 @@ on early-boot on boot write /config/usb_gadget/g1/bcdDevice 0x0510 + # Set USB timeout + write sys/module/usbcore/parameters/initial_descriptor_timeout 500 # Use USB Gadget HAL setprop sys.usb.configfs 2 diff --git a/device-common.mk b/device-common.mk index bd7ad344..56b2e0ec 100644 --- a/device-common.mk +++ b/device-common.mk @@ -47,3 +47,7 @@ PRODUCT_PRODUCT_PROPERTIES += \ # ZramWriteback -include hardware/google/pixel/mm/device_gki.mk + +# Set thermal warm reset +PRODUCT_PRODUCT_PROPERTIES += \ + ro.thermal_warmreset = true diff --git a/device.mk b/device.mk index dfdab1a1..9937e61a 100644 --- a/device.mk +++ b/device.mk @@ -226,7 +226,7 @@ endif PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.opengles.aep.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.opengles.aep.xml \ - frameworks/native/data/etc/android.hardware.vulkan.version-1_1.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.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute.xml \ frameworks/native/data/etc/android.software.vulkan.deqp.level-2022-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml \ @@ -411,8 +411,10 @@ PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.software.midi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.midi.xml # eSIM MEP Feature +ifneq ($(DISABLE_TELEPHONY_EUICC),true) PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.telephony.euicc.mep.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/permissions/android.hardware.telephony.euicc.mep.xml +endif # default usb debug functions ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT))) @@ -551,6 +553,11 @@ PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \ battery_mitigation + +ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT))) +PRODUCT_PACKAGES += BrownoutDetection +endif + PRODUCT_PACKAGES_DEBUG += \ f2fs_io \ check_f2fs \ @@ -652,7 +659,6 @@ PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.earlyGl.app.duration=16600000 PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.frame_rate_multiple_threshold=120 PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.layer_caching_active_layer_timeout_ms=1000 PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.treat_170m_as_sRGB=1 -PRODUCT_DEFAULT_PROPERTY_OVERRIDES += persist.vendor.camera.sf_usedsp=0 PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.enable_layer_caching=true PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.set_idle_timer_ms?=80 @@ -805,6 +811,7 @@ PRODUCT_PACKAGES += \ #PRODUCT_PACKAGES += \ # trusty_metricsd +$(call soong_config_set,google_displaycolor,displaycolor_platform,gs201) PRODUCT_PACKAGES += \ android.hardware.composer.hwc3-service.pixel \ libdisplaycolor @@ -973,8 +980,6 @@ PRODUCT_COPY_FILES += \ device/google/$(TARGET_BOARD_PLATFORM)/radio/config/default.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/modem/default.cfg \ device/google/$(TARGET_BOARD_PLATFORM)/radio/config/default.nprf:$(TARGET_COPY_OUT_VENDOR)/etc/modem/default.nprf \ device/google/$(TARGET_BOARD_PLATFORM)/radio/config/default_metrics.xml:$(TARGET_COPY_OUT_VENDOR)/etc/modem/default_metrics.xml \ - device/google/$(TARGET_BOARD_PLATFORM)/radio/config/Pixel_Default.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/modem/Pixel_Default.cfg \ - device/google/$(TARGET_BOARD_PLATFORM)/radio/config/Pixel_Default.nprf:$(TARGET_COPY_OUT_VENDOR)/etc/modem/Pixel_Default.nprf \ device/google/$(TARGET_BOARD_PLATFORM)/radio/config/Pixel_Default_metrics.xml:$(TARGET_COPY_OUT_VENDOR)/etc/modem/Pixel_Default_metrics.xml \ device/google/$(TARGET_BOARD_PLATFORM)/radio/config/Pixel_stability.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/modem/Pixel_stability.cfg \ device/google/$(TARGET_BOARD_PLATFORM)/radio/config/Pixel_stability.nprf:$(TARGET_COPY_OUT_VENDOR)/etc/modem/Pixel_stability.nprf \ @@ -1000,7 +1005,7 @@ PRODUCT_PACKAGES += \ android.hardware.audio@7.1-impl \ android.hardware.audio.effect@7.0-impl \ android.hardware.soundtrigger@2.3-impl \ - vendor.google.whitechapel.audio.audioext@3.0-impl \ + vendor.google.whitechapel.audio.audioext@4.0-impl \ android.hardware.bluetooth.audio-impl \ # diff --git a/device_framework_matrix_product.xml b/device_framework_matrix_product.xml index d9e853fd..016137ee 100644 --- a/device_framework_matrix_product.xml +++ b/device_framework_matrix_product.xml @@ -98,7 +98,7 @@ com.google.hardware.pixel.display - 6 + 7 IDisplay default @@ -177,7 +177,7 @@ vendor.google.whitechapel.audio.audioext - 3.0 + 4.0 IAudioExt default diff --git a/dumpstate/Dumpstate.cpp b/dumpstate/Dumpstate.cpp index cd484408..0296991f 100644 --- a/dumpstate/Dumpstate.cpp +++ b/dumpstate/Dumpstate.cpp @@ -30,6 +30,7 @@ #include "DumpstateUtil.h" #define MODEM_LOG_DIRECTORY "/data/vendor/radio/logs/always-on" +#define MODEM_LOG_HISTORY_DIRECTORY "data/vendor/radio/logs/history" #define MODEM_EXTENDED_LOG_DIRECTORY "/data/vendor/radio/extended_logs" #define RIL_LOG_DIRECTORY "/data/vendor/radio" #define RIL_LOG_DIRECTORY_PROPERTY "persist.vendor.ril.log.base_dir" @@ -241,6 +242,8 @@ Dumpstate::Dumpstate() { "gsc", [this](int fd) { dumpGscSection(fd); } }, { "trusty", [this](int fd) { dumpTrustySection(fd); } }, { "led", [this](int fd) { dumpLEDSection(fd); } }, + { "pixel-trace", [this](int fd) { dumpPixelTraceSection(fd); } }, + { "perf-metrics", [this](int fd) { dumpPerfMetricsSection(fd); } }, }, mLogSections{ { "modem", [this](int fd, const std::string &destDir) { dumpModemLogs(fd, destDir); } }, @@ -284,11 +287,10 @@ void Dumpstate::dumpTextSection(int fd, const std::string §ionName) { // Dump items related to wlan void Dumpstate::dumpWlanSection(int fd) { - RunCommandToFd(fd, "WLAN Debug Dump", {"/vendor/bin/sh", "-c", - "cat /sys/wifi/dump_start"}); - // Dump firmware symbol table for firmware log decryption DumpFileToFd(fd, "WLAN FW Log Symbol Table", "/vendor/firmware/Data.msc"); + RunCommandToFd(fd, "WLAN TWT Dump", {"/vendor/bin/sh", "-c", + "cat /sys/wlan_ptracker/twt/*"}); } // Dump items related to power and battery @@ -376,6 +378,7 @@ void Dumpstate::dumpPowerSection(int fd) { DumpFileToFd(fd, "TTF stats", "/sys/class/power_supply/battery/ttf_stats"); DumpFileToFd(fd, "aacr_state", "/sys/class/power_supply/battery/aacr_state"); DumpFileToFd(fd, "maxq", "/dev/logbuffer_maxq"); + DumpFileToFd(fd, "TEMP/DOCK-DEFEND", "/dev/logbuffer_bd"); RunCommandToFd(fd, "TRICKLE-DEFEND Config", {"/vendor/bin/sh", "-c", " cd /sys/devices/platform/google,battery/power_supply/battery/;" @@ -518,6 +521,7 @@ void Dumpstate::dumpThermalSection(int fd) { DumpFileToFd(fd, "TMU_TOP fall thresholds:", "/sys/module/gs_thermal/parameters/tmu_top_reg_dump_fall_thres"); DumpFileToFd(fd, "TMU_SUB rise thresholds:", "/sys/module/gs_thermal/parameters/tmu_sub_reg_dump_rise_thres"); DumpFileToFd(fd, "TMU_SUB fall thresholds:", "/sys/module/gs_thermal/parameters/tmu_sub_reg_dump_fall_thres"); + DumpFileToFd(fd, "Temperature Residency Metrics:", "/sys/kernel/metrics/temp_residency/temp_residency_all/stats"); } // Dump items related to touch @@ -526,6 +530,8 @@ void Dumpstate::dumpTouchSection(int fd) { "/proc/fts/driver_test", "/sys/class/spi_master/spi6/spi6.0", "/proc/fts_ext/driver_test"}; + const char fst2_cmd_path[2][50] = {"/sys/class/spi_master/spi0/spi0.0", + "/proc/fts/driver_test"}; const char lsi_spi_path[] = "/sys/devices/virtual/sec/tsp"; const char syna_cmd_path[] = "/sys/class/spi_master/spi0/spi0.0/synaptics_tcm.0/sysfs"; const char focaltech_cmd_path[] = "/proc/focaltech_touch"; @@ -533,6 +539,8 @@ void Dumpstate::dumpTouchSection(int fd) { char cmd[256]; if (!access(focaltech_cmd_path, R_OK)) { + ::android::base::WriteStringToFd("\n<<<<<< FOCALTECH >>>>>>\n\n", fd); + // Enable: force touch active snprintf(cmd, sizeof(cmd), "echo 21 > %s/force_active", focaltech_cmd_path); RunCommandToFd(fd, "Enable Force Touch Active", {"/vendor/bin/sh", "-c", cmd}); @@ -587,6 +595,8 @@ void Dumpstate::dumpTouchSection(int fd) { } if (!access(syna_cmd_path, R_OK)) { + ::android::base::WriteStringToFd("\n<<<<<< SYNA >>>>>>\n\n", fd); + // Enable: force touch active snprintf(cmd, sizeof(cmd), "echo 21 > %s/force_active", syna_cmd_path); RunCommandToFd(fd, "Enable Force Touch Active", {"/vendor/bin/sh", "-c", cmd}); @@ -615,7 +625,12 @@ void Dumpstate::dumpTouchSection(int fd) { RunCommandToFd(fd, "Disable Force Touch Active", {"/vendor/bin/sh", "-c", cmd}); } - for (int i = 0; i < 4; i+=2) { + for (int i = 0; i < 4; i += 2) { // ftm5 + snprintf(cmd, sizeof(cmd), "%s", stm_cmd_path[i]); + if (access(cmd, R_OK)) + continue; + ::android::base::WriteStringToFd("\n<<<<<< FTM5 >>>>>>\n\n", fd); + snprintf(cmd, sizeof(cmd), "%s", stm_cmd_path[i + 1]); if (!access(cmd, R_OK)) { snprintf(cmd, sizeof(cmd), "echo A0 01 01 > %s", stm_cmd_path[i + 1]); @@ -735,7 +750,36 @@ void Dumpstate::dumpTouchSection(int fd) { } } + for (int i = 0; i < 2; i += 2) { // fst2 + snprintf(cmd, sizeof(cmd), "%s", fst2_cmd_path[i]); + if (!access(cmd, R_OK)) { + ::android::base::WriteStringToFd("\n<<<<<< FST2 >>>>>>\n\n", fd); + + snprintf(cmd, sizeof(cmd), "%s", fst2_cmd_path[i + 1]); + if (!access(cmd, R_OK)) { + // Enable: force touch active + snprintf(cmd, sizeof(cmd), "echo 21 01 > %s", fst2_cmd_path[i + 1]); + RunCommandToFd(fd, "Force Set AP as Bus Owner with Bugreport Flag", + {"/vendor/bin/sh", "-c", cmd}); + + // Golden Mutual Raw Data + snprintf(cmd, sizeof(cmd), "echo 0B 00 23 40 > %s;" + "echo 02 B7 00 10 04 E0 01 > %s ; cat %s;" + "echo 02 B7 04 F0 04 E0 01 > %s ; cat %s;", + fst2_cmd_path[i + 1], fst2_cmd_path[i + 1], fst2_cmd_path[i + 1], + fst2_cmd_path[i + 1], fst2_cmd_path[i + 1]); + RunCommandToFd(fd, "Golden Mutual Raw Data", {"/vendor/bin/sh", "-c", cmd}); + + // Restore Bus Owner + snprintf(cmd, sizeof(cmd), "echo 21 00 > %s", fst2_cmd_path[i + 1]); + RunCommandToFd(fd, "Restore Bus Owner", {"/vendor/bin/sh", "-c", cmd}); + } + } + } + if (!access(lsi_spi_path, R_OK)) { + ::android::base::WriteStringToFd("\n<<<<<< LSI >>>>>>\n\n", fd); + // Enable: force touch active snprintf(cmd, sizeof(cmd), "echo %s > %s/cmd && cat %s/cmd_result", @@ -823,6 +867,8 @@ void Dumpstate::dumpTouchSection(int fd) { } if (!access(gti0_cmd_path, R_OK)) { + ::android::base::WriteStringToFd("\n<<<<<< GTI0 >>>>>>\n\n", fd); + // Enable: force touch active snprintf(cmd, sizeof(cmd), "echo 1 > %s/force_active", gti0_cmd_path); RunCommandToFd(fd, "Force Touch Active", {"/vendor/bin/sh", "-c", cmd}); @@ -1157,8 +1203,10 @@ void Dumpstate::dumpModemSection(int fd) { void Dumpstate::dumpModemLogs(int fd, const std::string &destDir) { std::string extendedLogDir = MODEM_EXTENDED_LOG_DIRECTORY; + std::string modemLogHistoryDir = MODEM_LOG_HISTORY_DIRECTORY; dumpLogs(fd, extendedLogDir, destDir, 20, EXTENDED_LOG_PREFIX); + dumpLogs(fd, modemLogHistoryDir, destDir, 2, "Logging"); dumpModemEFS(destDir); } @@ -1308,6 +1356,15 @@ void Dumpstate::dumpLogSection(int fd, int fd_bin) RunCommandToFd(fd, "RM LOG", { "/vendor/bin/rm", logCombined.c_str()}, CommandOptions::WithTimeout(2).Build()); } +void Dumpstate::dumpPixelTraceSection(int fd) { + DumpFileToFd(fd, "Pixel trace", "/sys/kernel/tracing/instances/pixel/trace"); +} + +void Dumpstate::dumpPerfMetricsSection(int fd) { + DumpFileToFd(fd, "Long running IRQ metrics", "/sys/kernel/metrics/irq/long_irq_metrics"); + DumpFileToFd(fd, "Resume latency metrics", "/sys/kernel/metrics/resume_latency/resume_latency_metrics"); +} + ndk::ScopedAStatus Dumpstate::dumpstateBoard(const std::vector<::ndk::ScopedFileDescriptor>& in_fds, IDumpstateDevice::DumpstateMode in_mode, int64_t in_timeoutMillis) { diff --git a/dumpstate/Dumpstate.h b/dumpstate/Dumpstate.h index eadaefe6..805c1cbd 100644 --- a/dumpstate/Dumpstate.h +++ b/dumpstate/Dumpstate.h @@ -70,6 +70,8 @@ class Dumpstate : public BnDumpstateDevice { void dumpGscSection(int fd); void dumpTrustySection(int fd); void dumpLEDSection(int fd); + void dumpPixelTraceSection(int fd); + void dumpPerfMetricsSection(int fd); void dumpLogSection(int fd, int fdModem); diff --git a/gnss/47765/bin/android.hardware.gnss@2.1-impl-google.so b/gnss/47765/bin/android.hardware.gnss@2.1-impl-google.so index 729c29ec..e63acdab 100755 Binary files a/gnss/47765/bin/android.hardware.gnss@2.1-impl-google.so and b/gnss/47765/bin/android.hardware.gnss@2.1-impl-google.so differ diff --git a/gnss/47765/bin/android.hardware.gnss@2.1-service-brcm b/gnss/47765/bin/android.hardware.gnss@2.1-service-brcm index 57c040be..1ae69f13 100755 Binary files a/gnss/47765/bin/android.hardware.gnss@2.1-service-brcm and b/gnss/47765/bin/android.hardware.gnss@2.1-service-brcm differ diff --git a/gnss/47765/bin/flp.default.so b/gnss/47765/bin/flp.default.so index 55805030..728b67c0 100755 Binary files a/gnss/47765/bin/flp.default.so and b/gnss/47765/bin/flp.default.so differ diff --git a/gnss/47765/bin/gps.default.so b/gnss/47765/bin/gps.default.so index 37d378f5..061ad5cc 100755 Binary files a/gnss/47765/bin/gps.default.so and b/gnss/47765/bin/gps.default.so differ diff --git a/gnss/47765/bin/gpsd b/gnss/47765/bin/gpsd index ca2001cd..73a0c5ef 100755 Binary files a/gnss/47765/bin/gpsd and b/gnss/47765/bin/gpsd differ diff --git a/gnss/47765/bin/lhd b/gnss/47765/bin/lhd index b1789ec7..ed83fc7e 100755 Binary files a/gnss/47765/bin/lhd and b/gnss/47765/bin/lhd differ diff --git a/gnss/47765/bin/scd b/gnss/47765/bin/scd index 22d5791a..f64cc257 100755 Binary files a/gnss/47765/bin/scd and b/gnss/47765/bin/scd differ diff --git a/gnss/47765/firmware/SensorHub.patch b/gnss/47765/firmware/SensorHub.patch index 9d7016b6..cee5c462 100644 --- a/gnss/47765/firmware/SensorHub.patch +++ b/gnss/47765/firmware/SensorHub.patch @@ -1,9 +1,9 @@ - + - + @@ -79,7 +79,7 @@ F087FE022102914FF4005101915B220748084B00F13801 009102A101F438F703B000BD4170700080BD8900708989 00805D8A006905800025643A2564095374617274206368 70704170705461736B0A00000000633A5C77735C626F64 -5F3437373631313336315F3534373834345C637573746F +5F3437373631323239305F3535373939305C637573746F 6D6572735C676F6F676C655C503231466C61677461696C 6D63755C64656C69766572795C53656E736F724875625F 5032315C7372635C6875625F636F6E74726F6C6C65722E @@ -390,7 +390,7 @@ D00FF298080FF2206140F271673B4642468B2011F48EF2 F22046FEF700FF07E002464FF4D1630FF2F4518F2011F4 5FF2FEF769FC04F5A6620A23C2E9000105F0F00006F00F 0101433A462046BDE8F041FFF7BDBB0000633A5C77735C -626F645F3437373631313336315F3534373834345C6375 +626F645F3437373631323239305F3535373939305C6375 73746F6D6572735C676F6F676C655C503231466C616774 61696C6D63755C64656C69766572795C53656E736F7248 75625F5032315C7372635C636870705C7472616E73706F @@ -526,7 +526,7 @@ B590B00C46C17B0FF248420E91817B0D91417B0C91017B 25210378204626F4F1F510B010BD000025643A25640948 232568687520756E6B6E6F776E20726571756573742E20 636D643D2523782C2049443D256868750A00633A5C7773 -5C626F645F3437373631313336315F3534373834345C63 +5C626F645F3437373631323239305F3535373939305C63 7573746F6D6572735C676F6F676C655C503231466C6167 7461696C6D63755C64656C69766572795C53656E736F72 4875625F5032315C7372F19403502E8000635C63687070 @@ -585,7 +585,7 @@ F752DEC007F9D5FFF7CBFFF6E700B583B0022102914FF4 D803B000BDF07E8A000C53890028878A00113280009D32 800025643A256409434850502042617564726174652069 732073657420746F20256C640A0A00633A5C77735C626F -645F3437373631313336315F3534373834345C63757374 +645F3437373631323239305F3535373939305C63757374 6F6D6572735C676F6F676C655C503231466C6167746169 6C6D63755C64656C69766572795C53656E736F72487562 5F5032315C7372635C73656E736F725F6875622E630000 @@ -679,13 +679,13 @@ E08619AE4210D22946204600F067FF0028F6D510F1040F B5C90382B0A0F5A86419D500F65C552846FDF7F6DD0600 12D00020009069462846FDF712DE761E012804DB024600 992046FEF79EF82846FDF76FDD002EECD173BD70470000 -633A5C77735C626F645F3437373631313336315F353437 -3834345C637573746F6D6572735C676F6F676C655C5032 +633A5C77735C626F645F3437373631323239305F353537 +3939305C637573746F6D6572735C676F6F676C655C5032 31466C61677461696C6D63755C64656C69766572795C53 656E736F724875625F5032315C7372635C636870705C69 6E636C7564655C636870702F7472616E73706F72742E68 -00633A5C77735C626F645F3437373631313336315F3534 -373834345C637573746F6D6572735C676F6F676C655C50 +00633A5C77735C626F645F3437373631323239305F3535 +373939305C637573746F6D6572735C676F6F676C655C50 3231466C61677461696C6D63755C64656C69766572795C 53656E736F724875625F5032315C7372635C636870705C 706C6174666F726D5C62636D5C42434D343737785C6C69 @@ -695,8 +695,8 @@ B5C90382B0A0F5A86419D500F65C552846FDF7F6DD0600 138EA4B29C42EBD2D26A04EB440302EBC306327C012AF1 D1D6E90223D0E918679F42E7D8E8D39642E4D2E5E7D0E9 1823CDE900230FF27C010FF2100240F21E238F200FF4B1 -F403B0F0BD0000633A5C77735C626F645F343737363131 -3336315F3534373834345C637573746F6D6572735C676F +F403B0F0BD0000633A5C77735C626F645F343737363132 +3239305F3535373939305C637573746F6D6572735C676F 6F676C655C503231466C61677461696C6D63755C64656C 69766572795C53656E736F724875625F5032315C737263 5C636870705C636C69656E74732E630000000025643A25 @@ -706,7 +706,7 @@ F403B0F0BD0000633A5C77735C626F645F343737363131 21FEF75DF80AE03246294625F420F40120787032462068 3946FEF718F8012003B0F0BD25643A2564094F4F4D2061 742025733A25640A00633A5C77735C626F645F34373736 -31313336315F3534373834345C637573746F6D6572735C +31323239305F3535373939305C637573746F6D6572735C 676F6F676C655C503231466C61677461696C6D63755C64 656C69766572795C53656E736F724875625F5032315C73 72635C636870705C73657276696365735C6C6F6F706261 @@ -718,8 +718,8 @@ D4FFC6F80600C6F80A103923D6F80600D6F80A10CDE902 0122460E2000908F200FF2B0010FF4C3F32868314604B0 BDE870400E22FDF78CBF10B58B880124012B02D1FFF7BE FF00E00024204610BD25643A2564094F4F4D2061742025 -733A25640A00633A5C77735C626F645F34373736313133 -36315F3534373834345C637573746F6D6572735C676F6F +733A25640A00633A5C77735C626F645F34373736313232 +39305F3535373939305C637573746F6D6572735C676F6F 676C655C503231466C61677461696C6D63755C64656C69 766572795C53656E736F724875625F5032315C7372635C 636870705C73657276696365735C74696D6573796E632E @@ -734,7 +734,7 @@ D13B2001903B230FF280040FF26801009422468B200FF4 314603B0BDE8F043FDF7E2BE10B58A880124012A02D1FF F7BAFF00E00024204610BD25643A2564094F4F4D206174 2025733A25640A00633A5C77735C626F645F3437373631 -313336315F3534373834345C637573746F6D6572735C67 +323239305F3535373939305C637573746F6D6572735C67 6F6F676C655C503231466C61677461696C6D63755C6465 6C69766572795C53656E736F724875625F5032315C7372 635C636870705C73657276696365735C646973636F7665 @@ -761,7 +761,7 @@ D0CDE9000197230FF2B8020FF2B0118B200FF41BF2FFF7 05CDE90445AD230FF2AC118F200FF4D8F106B0BDE87083 70B50446084615461E46FFF7BEFF3246294620680068BD E87040FDF797BD00000000633A5C77735C626F645F3437 -373631313336315F3534373834345C637573746F6D6572 +373631323239305F3535373939305C637573746F6D6572 735C676F6F676C655C503231466C61677461696C6D6375 5C64656C69766572795C53656E736F724875625F503231 5C7372635C636870705C73657276696365732E63000000 @@ -788,8 +788,8 @@ D009D31AE001A8009038230FF264020FF250018B2019E0 230FF240020FF22C018E2007E001A8009042230FF22C02 0FF218018F200FF49DF00DF5027D10BC5DF80CFB0FF284 014160704725643A25640950414C3A2025730A0000633A -5C77735C626F645F3437373631313336315F3534373834 -345C637573746F6D6572735C676F6F676C655C50323146 +5C77735C626F645F3437373631323239305F3535373939 +305C637573746F6D6572735C676F6F676C655C50323146 6C61677461696C6D63755C64656C69766572795C53656E 736F724875625F5032315C7372635C636870705C706C61 74666F726D5C70616C5F6170692E6300000000000001C9 @@ -848,7 +848,7 @@ F7A8FE6089FFF793FE42F654000059FFF7A0FE02200290 32BD13460A4601460248007810F469B000001453890055 47800065478000687B890060D09100354780002B488000 436870704C696E6B5461736B00000000633A5C77735C62 -6F645F3437373631313336315F3534373834345C637573 +6F645F3437373631323239305F3535373939305C637573 746FF19403D04A80006D6572735C676F6F676C655C5032 31466C61677461696C6D63755C64656C69766572795C53 656E736F724875625F5032315C7372635C636870705C70 @@ -914,7 +914,7 @@ BD38B504464FF0827000F0B5FC144DA86078B90FF27004 0023002240F293210FF2380001B0BDE83040FBF732BB31 BD0000D088890025643A256409474E5353207365727669 636520616C7265616479206F70656E0A00000000633A5C -77735C626F645F3437373631313336315F353437383434 +77735C626F645F3437373631323239305F353537393930 5C637573746F6D6572735C676F6F676C655C503231466C 61677461696C6D63755C64656C69766572795C53656E73 6F724875625F5032315C7372635C636870705C73657276 @@ -965,7 +965,7 @@ B6F9286060B13421ADF80410821D01A900913B46811D20 0023002295210FF23000FBF7EFF836B90023002296210F F22000FBF7E7F83620FEF78EF9286030B1811D2046FFF7 99FF36203060012070BD633A5C77735C626F645F343737 -3631313336315F3534373834345C637573746F6D657273 +3631323239305F3535373939305C637573746F6D657273 5C676F6F676C655C503231466C61677461696C6D63755C 64656C69766572795C53656E736F724875625F5032315C 7372635C636870705C636F6D6D6F6E5C676E73735F63F1 @@ -1020,7 +1020,7 @@ B02016BD6272636D476E73734F6E4D6561734461746100 0025643A2564095B25735D204D6561737572656D656E74 2064617461206576656E74203A206D6561737572656D65 6E745F636F756E74203D20282564290A000000633A5C77 -735C626F645F3437373631313336315F3534373834345C +735C626F645F3437373631323239305F3535373939305C 637573746F6D6572735C676F6F676C655C503231466C61 677461696C6D63755C64656C69766572795C53656E736F 724875625F5032315C7372635C636870705C706C617466 @@ -1229,9 +1229,9 @@ A288F2804343226C9A4214D291FBF0F111FB00F1A980F1 8891FBF0F111FB00F008E0B08838B1A88070BD00291CBF F088002800D0A08070BD0B480170704700000948007870 4700000848017070470000064800787047000001484161 -70470000787B8900045C080099CB91009ACB91002F2F64 +70470000787B8900A683080099CB91009ACB91002F2F64 65706F742F636C69656E742F636F72652F72656C2F476F -6F676C652F5032322F3534353339302F2E2E2E0000007E +6F676C652F5032322F3535343830332F2E2E2E0000007E 24247E5056542044756D70203A20474C4C207665722E20 256C7520666C61677461696C3A25730A000000007E2424 7E5056542044756D70203A2054203D20256C752C204E54 @@ -2433,54 +2433,54 @@ F80BF1010BBBF1040FE7DB6D1E6DB2002D13D4E4B214F8 D25738CFE77F1CFFB2072F93DB0322314607A022F423F6 002805D1F01C05F0E2FEDFF8481908607AE707B0BDE8F0 8F574E3A006946A6F4BFB4000068467AF4CDB500002DE9 -F0430D46C1B00446A868410911F0010114BFDFF814294F -F0FF32A36893431040184304F59856A060A23609B9E889 -308000F00DFA002800F06F817DF4AEF5DCF4C2F1806818 -B94FF4CF7100F004FA288A40B17DF4A2F5DCF4B6F18168 -288A29F400F504E07DF499F5DCF4ADF18068708000F0ED -F93188D1F4DAF400F0E8F97188D1F4DDF400F0E3F90268 -217AD2F8942001F001019047207A00F0810081280CBF01 -26002600F0D3F93146D0F4BAF700F0CEF90268A168D2F8 -A020890801F00101904700F0C4F90268A168D2F8A42049 -0801F00101904700F0BAF90268A168D2F8B020490A01F0 -0101904700F0B0F90268A168D2F8AC20C90801F0010190 -4700F0A6F90268A168D2F8B820890A01F00101904700F0 -9CF9A989CFF439F100F097F9A168CA09CB064CBF022300 -23CE034CBF10260026490302F001024CBF202100211A43 -324311430268D2F8F1940350D980009020904700F07EF9 -0268A168D2F8BC20090A01F00101904700F074F9A168DE -F439F6A068800004D500F06CF90121D4F481F007A826F4 -C8F220680FF62409CBF4A7F5DEF431F606460020002159 -F821201043491C0729F9D3A16810EA010808BF4FF49018 -002759F8270018EA000F51D004F598503946A830A0F404 -F501461BA89FF434F715E08DF8000001A87AF4DEF49DF8 -0000512801DB562807DB684656F471F518B1694607A827 -F424F61BA89FF423F71BA89FF422F760BB1BA89FF420F7 -C1B202A890F422F60246394601A8A6F4CDF30246314668 -469FF4B6F401A876F4B9F402A87AF4B2F4684656F44BF5 -0028CED11BA89FF404F7C1B201A890F406F69FF400F79A -F47AF3C11D0E2934BF3B300020B8E77F1C072FA5D30026 -03A829F465F2324607A911A826F490F211A91BA829F4B4 -F712E01BA901A829F4B5F73146684626F473F19DF80400 -9DF80010411A03A829F4D1F01BA829F4AEF71BA829F4AD -F70028E7D0761C072ED7DB00F0C4F807A989F463F300F0 -C5F8D1F4C5F300F0C1F8FBF74FF800F0BDF8D1F49FF3A0 -6880010CD500F0B0F8D5F49CF4064600F0ABF846F00401 -0268D2F888209047A068400004D500F0A6F80121FAF731 -FCA068002804D500F09EF80121FAF72DFCA068010504D5 -DBF4EEF141F288311AE0C10404D5DBF4E7F14FF47A6113 -E0810404D5DBF4E0F140F6B8310CE0410404D5DBF4D9F1 -4FF4FA6105E0000405D5DBF4D2F14FF47A71DBF4EAF700 -F074F850B1A079297B00F0010001F00101884218BF4FF0 -010801D14FF0000800F064F848B1A079297B00F0040001 -F00401884218BF012700D1002700F056F850B1A079297B -00F0020001F00201884218BF4FF0010901D14FF0000900 -F046F848B1A079297B00F0100001F01001884218BF0126 -00D10026A889E08000F030F828B100F02DF80268E18852 -6E9047B8F1000F03D000F02AF8CDF414F41FB100F025F8 -FBF7DFFBB9F1000F03D000F01EF8FBF7F6FB1EB100F019 -F8CDF42DF400F015F848B1DFF8FC542868012804DB00F0 -0DF82968FEF7E2F841B0BDE8F08300002068D5F4E7B300 +F0430D46C1B00446A86881064CBFDFF818194FF0FF31A2 +688A4308401043A06004F59856E889A23618B1B0F5C87F +B8BF308000F00CFA002800F06F817DF4ADF5DCF4C1F180 +6818B94FF4CF7100F003FA288A40B17DF4A1F5DCF4B5F1 +8168288A29F4FFF404E07DF498F5DCF4ACF18068708000 +F0ECF93188D1F4D9F400F0E7F97188D1F4DCF400F0E2F9 +0268217AD2F8942001F001019047207A00F0810081280C +BF0126002600F0D2F93146D0F4B9F700F0CDF90268A168 +D2F8A020890801F00101904700F0C3F90268A168D2F8A4 +20490801F00101904700F0B9F90268A168D2F8B020490A +01F00101904700F0AFF90268A168D2F8AC20C90801F001 +01904700F0A5F90268A168D2F8B820890A01F001019047 +00F09BF9A989CFF438F100F096F9A168CA09CB064CBF02 +230023CE034CBF10260026490302F001024CBF20210021 +1A43324311430268F1940350D98000D2F89020904700F0 +7DF90268A168D2F8BC20090A01F00101904700F073F9A1 +68DEF438F6A068800004D500F06BF90121D4F480F007A8 +26F4C7F220680FF62009CBF4A6F5DEF430F60646002000 +2159F821201043491C0729F9D3A16810EA010808BF4FF4 +9018002759F8270018EA000F51D004F598503946A830A0 +F403F501461BA89FF433F715E08DF8000001A87AF4DDF4 +9DF80000512801DB562807DB684656F470F518B1694607 +A827F423F61BA89FF422F71BA89FF421F760BB1BA89FF4 +1FF7C1B202A890F421F60246394601A8A6F4CCF3024631 +4668469FF4B5F401A876F4B8F402A87AF4B1F4684656F4 +4AF50028CED11BA89FF403F7C1B201A890F405F69FF4FF +F69AF479F3C11D0E2934BF3B300020B8E77F1C072FA5D3 +002603A829F464F2324607A911A826F48FF211A91BA829 +F4B3F712E01BA901A829F4B4F73146684626F472F19DF8 +04009DF80010411A03A829F4D0F01BA829F4ADF71BA829 +F4ACF70028E7D0761C072ED7DB00F0C3F807A989F462F3 +00F0C4F8D1F4C4F300F0C0F8FBF74EF800F0BCF8D1F49E +F3A06880010CD500F0AFF8D5F49BF4064600F0AAF846F0 +04010268D2F888209047A068400004D500F0A5F80121FA +F730FCA068002804D500F09DF80121FAF72CFCA0680105 +04D5DBF4EDF141F288311AE0C10404D5DBF4E6F14FF47A +6113E0810404D5DBF4DFF140F6B8310CE0410404D5DBF4 +D8F14FF4FA6105E0000405D5DBF4D1F14FF47A71DBF4E9 +F700F073F850B1A079297B00F0010001F00101884218BF +4FF0010801D14FF0000800F063F848B1A079297B00F004 +0001F00401884218BF012700D1002700F055F850B1A079 +297B00F0020001F00201884218BF4FF0010901D14FF000 +0900F045F848B1A079297B00F0100001F01001884218BF +012600D10026A889E08000F02FF828B100F02CF80268E1 +88526E9047B8F1000F03D000F029F8CDF413F41FB100F0 +24F8FBF7DEFBB9F1000F03D000F01DF8FBF7F5FB1EB100 +F018F8CDF42CF400F014F848B1DFF8FC542868012804DB +00F00CF82968FEF7E1F841B0BDE8F0832068D5F4E7B300 00ADF800002068CBF443B400000FF22C50F2F71EBD0268 0A60406848607047000038B5846842F02005AC43114021 4300F59852816022F8A23F049951800021BDE83440D5F4 diff --git a/manifest-gralloc3.xml b/manifest-gralloc3.xml index 920307a3..852c76f0 100644 --- a/manifest-gralloc3.xml +++ b/manifest-gralloc3.xml @@ -142,7 +142,7 @@ vendor.google.whitechapel.audio.audioext hwbinder - 3.0 + 4.0 IAudioExt default diff --git a/manifest.xml b/manifest.xml index 347e8573..902aaa60 100644 --- a/manifest.xml +++ b/manifest.xml @@ -67,7 +67,7 @@ vendor.google.whitechapel.audio.audioext hwbinder - 3.0 + 4.0 IAudioExt default diff --git a/media_codecs_bo_c2.xml b/media_codecs_bo_c2.xml index 7830b9c9..b57a92aa 100644 --- a/media_codecs_bo_c2.xml +++ b/media_codecs_bo_c2.xml @@ -26,7 +26,8 @@ - + + @@ -39,7 +40,8 @@ - + + diff --git a/media_codecs_performance_c2.xml b/media_codecs_performance_c2.xml index fada0abc..08dfd5d1 100644 --- a/media_codecs_performance_c2.xml +++ b/media_codecs_performance_c2.xml @@ -231,7 +231,7 @@ - + diff --git a/pixelstats/service.cpp b/pixelstats/service.cpp index 83a46727..b94b4817 100644 --- a/pixelstats/service.cpp +++ b/pixelstats/service.cpp @@ -58,6 +58,7 @@ const struct SysfsCollector::SysfsPaths sysfs_paths = { }, .BlockStatsLength = BLOCK_STATS_LENGTH, .AmsRatePath = "/sys/devices/platform/audiometrics/ams_rate_read_once", + .MitigationPath = "/sys/devices/virtual/pmic/mitigation", .ThermalStatsPaths = { "/sys/devices/platform/100a0000.BIG/trip_counter", "/sys/devices/platform/100a0000.MID/trip_counter", @@ -65,7 +66,11 @@ const struct SysfsCollector::SysfsPaths sysfs_paths = { "/sys/devices/platform/100b0000.G3D/trip_counter", "/sys/devices/platform/100b0000.TPU/trip_counter", "/sys/devices/platform/100b0000.AUR/trip_counter", - } + }, + .CCARatePath = "/sys/devices/platform/audiometrics/cca_rate_read_once", + .TempResidencyPath = "/sys/kernel/metrics/temp_residency/temp_residency_all/stats", + .ResumeLatencyMetricsPath = "/sys/kernel/metrics/resume_latency/resume_latency_metrics", + .LongIRQMetricsPath = "/sys/kernel/metrics/irq/long_irq_metrics" }; const struct UeventListener::UeventPaths ueventPaths = { diff --git a/powerstats/Gs201CommonDataProviders.cpp b/powerstats/Gs201CommonDataProviders.cpp index 5b3bc2b6..a3249357 100644 --- a/powerstats/Gs201CommonDataProviders.cpp +++ b/powerstats/Gs201CommonDataProviders.cpp @@ -295,15 +295,6 @@ void addCPUclusters(std::shared_ptr p) { p->addStateResidencyDataProvider(std::make_unique( "/sys/devices/platform/acpm_stats/core_stats", cfgs)); - p->addStateResidencyDataProvider(std::make_unique( - "CL0", "/sys/devices/system/cpu/cpufreq/policy0/stats")); - - p->addStateResidencyDataProvider(std::make_unique( - "CL1", "/sys/devices/system/cpu/cpufreq/policy4/stats")); - - p->addStateResidencyDataProvider(std::make_unique( - "CL2", "/sys/devices/system/cpu/cpufreq/policy6/stats")); - p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterConsumer(p, EnergyConsumerType::CPU_CLUSTER, "CPUCL0", {"S4M_VDD_CPUCL0"})); p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterConsumer(p, @@ -318,7 +309,6 @@ void addGPU(std::shared_ptr p) { // TODO (b/197721618): Measuring the GPU power numbers stateCoeffs = { - {"151000", 642}, {"202000", 890}, {"251000", 1102}, {"302000", 1308}, @@ -533,6 +523,18 @@ void addPowerDomains(std::shared_ptr p) { } void addDevfreq(std::shared_ptr p) { + p->addStateResidencyDataProvider(std::make_unique( + "CL0", + "/sys/devices/system/cpu/cpufreq/policy0/stats")); + + p->addStateResidencyDataProvider(std::make_unique( + "CL1", + "/sys/devices/system/cpu/cpufreq/policy4/stats")); + + p->addStateResidencyDataProvider(std::make_unique( + "CL2", + "/sys/devices/system/cpu/cpufreq/policy6/stats")); + p->addStateResidencyDataProvider(std::make_unique( "MIF", "/sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif")); @@ -599,9 +601,10 @@ void addPixelStateResidencyDataProvider(std::shared_ptr p) { p->addStateResidencyDataProvider(std::move(pixelSdp)); } -void addCommonDataProviders(std::shared_ptr p) { +void addGs201CommonDataProviders(std::shared_ptr p) { setEnergyMeter(p); + addPixelStateResidencyDataProvider(p); addAoC(p); addDvfsStats(p); addSoC(p); @@ -610,41 +613,11 @@ void addCommonDataProviders(std::shared_ptr p) { addMobileRadio(p); addGNSS(p); addPCIe(p); + addWifi(p); addUfs(p); addPowerDomains(p); addDevfreq(p); addTPU(p); - - // TODO (b/181070764) (b/182941084): - // Remove this when Wifi/BT energy consumption models are available or revert before ship - addPlaceholderEnergyConsumers(p); -} - -void addGs201CommonDataProviders(std::shared_ptr p) { - addCommonDataProviders(p); - addPixelStateResidencyDataProvider(p); - addWifi(p); -} - -void addGs201CommonDataProvidersQc(std::shared_ptr p) { - addCommonDataProviders(p); - addWlan(p); -} - -void addGs201CommonDataProvidersBig(std::shared_ptr p) { - setEnergyMeter(p); - - addAoC(p); - addDvfsStats(p); - addSoC(p); - addCPUclusters(p); - addGPU(p); - addUfs(p); - addPowerDomains(p); - addDevfreq(p); - addTPU(p); - addPixelStateResidencyDataProvider(p); - addWifi(p); } void addNFC(std::shared_ptr p, const std::string& path) { diff --git a/powerstats/include/Gs201CommonDataProviders.h b/powerstats/include/Gs201CommonDataProviders.h index 3f66637a..5ee8108f 100644 --- a/powerstats/include/Gs201CommonDataProviders.h +++ b/powerstats/include/Gs201CommonDataProviders.h @@ -20,7 +20,20 @@ using aidl::android::hardware::power::stats::PowerStats; +void addAoC(std::shared_ptr p); +void addCPUclusters(std::shared_ptr p); +void addDevfreq(std::shared_ptr p); +void addDvfsStats(std::shared_ptr p); +void addGNSS(std::shared_ptr p); void addGs201CommonDataProviders(std::shared_ptr p); -void addGs201CommonDataProvidersBig(std::shared_ptr p); -void addGs201CommonDataProvidersQc(std::shared_ptr p); +void addMobileRadio(std::shared_ptr p); void addNFC(std::shared_ptr p, const std::string& path); +void addPCIe(std::shared_ptr p); +void addPixelStateResidencyDataProvider(std::shared_ptr p); +void addPowerDomains(std::shared_ptr p); +void addSoC(std::shared_ptr p); +void addTPU(std::shared_ptr p); +void addUfs(std::shared_ptr p); +void addWifi(std::shared_ptr p); +void addWlan(std::shared_ptr p); +void setEnergyMeter(std::shared_ptr p); diff --git a/radio/config/Pixel_Default.cfg b/radio/config/Pixel_Default.cfg deleted file mode 100644 index b1a83fde..00000000 --- a/radio/config/Pixel_Default.cfg +++ /dev/null @@ -1 +0,0 @@ -Pixel_Default.nprf,Pixel_Default_metrics.xml \ No newline at end of file diff --git a/radio/config/Pixel_Default.nprf b/radio/config/Pixel_Default.nprf deleted file mode 100644 index b21a27e8..00000000 Binary files a/radio/config/Pixel_Default.nprf and /dev/null differ diff --git a/radio/config/Pixel_stability.nprf b/radio/config/Pixel_stability.nprf index b8ab831f..c4c44e4a 100644 Binary files a/radio/config/Pixel_stability.nprf and b/radio/config/Pixel_stability.nprf differ diff --git a/radio/config/default.nprf b/radio/config/default.nprf index 09c48748..a59dd2df 100644 Binary files a/radio/config/default.nprf and b/radio/config/default.nprf differ diff --git a/rro_overlays/ConnectivityOverlay/res/values-mcc204-mnc04/config.xml b/rro_overlays/ConnectivityOverlay/res/values-mcc204-mnc04/config.xml new file mode 100644 index 00000000..2a6d2e5c --- /dev/null +++ b/rro_overlays/ConnectivityOverlay/res/values-mcc204-mnc04/config.xml @@ -0,0 +1,28 @@ + + + + + 0 + + + 0 + diff --git a/rro_overlays/ConnectivityOverlay/res/values-mcc310-mnc004/config.xml b/rro_overlays/ConnectivityOverlay/res/values-mcc310-mnc004/config.xml new file mode 100644 index 00000000..3cc7253a --- /dev/null +++ b/rro_overlays/ConnectivityOverlay/res/values-mcc310-mnc004/config.xml @@ -0,0 +1,24 @@ + + + + + 0 + diff --git a/rro_overlays/ConnectivityOverlay/res/values-mcc310-mnc590/config.xml b/rro_overlays/ConnectivityOverlay/res/values-mcc310-mnc590/config.xml new file mode 100644 index 00000000..3cc7253a --- /dev/null +++ b/rro_overlays/ConnectivityOverlay/res/values-mcc310-mnc590/config.xml @@ -0,0 +1,24 @@ + + + + + 0 + diff --git a/rro_overlays/ConnectivityOverlay/res/values-mcc310-mnc599/config.xml b/rro_overlays/ConnectivityOverlay/res/values-mcc310-mnc599/config.xml new file mode 100644 index 00000000..3cc7253a --- /dev/null +++ b/rro_overlays/ConnectivityOverlay/res/values-mcc310-mnc599/config.xml @@ -0,0 +1,24 @@ + + + + + 0 + diff --git a/rro_overlays/ConnectivityOverlay/res/values-mcc311-mnc270/config.xml b/rro_overlays/ConnectivityOverlay/res/values-mcc311-mnc270/config.xml new file mode 100644 index 00000000..3cc7253a --- /dev/null +++ b/rro_overlays/ConnectivityOverlay/res/values-mcc311-mnc270/config.xml @@ -0,0 +1,24 @@ + + + + + 0 + diff --git a/rro_overlays/ConnectivityOverlay/res/values-mcc311-mnc280/config.xml b/rro_overlays/ConnectivityOverlay/res/values-mcc311-mnc280/config.xml new file mode 100644 index 00000000..3cc7253a --- /dev/null +++ b/rro_overlays/ConnectivityOverlay/res/values-mcc311-mnc280/config.xml @@ -0,0 +1,24 @@ + + + + + 0 + diff --git a/rro_overlays/ConnectivityOverlay/res/values-mcc311-mnc480/config.xml b/rro_overlays/ConnectivityOverlay/res/values-mcc311-mnc480/config.xml new file mode 100644 index 00000000..3cc7253a --- /dev/null +++ b/rro_overlays/ConnectivityOverlay/res/values-mcc311-mnc480/config.xml @@ -0,0 +1,24 @@ + + + + + 0 + diff --git a/rro_overlays/ConnectivityOverlay/res/values/config.xml b/rro_overlays/ConnectivityOverlay/res/values/config.xml index d9a29b07..d9e9b583 100644 --- a/rro_overlays/ConnectivityOverlay/res/values/config.xml +++ b/rro_overlays/ConnectivityOverlay/res/values/config.xml @@ -23,4 +23,8 @@ 0x80000000 + + + 1 diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp index d7227840..f25ee347 100644 --- a/usb/usb/Usb.cpp +++ b/usb/usb/Usb.cpp @@ -73,7 +73,7 @@ constexpr char kThermalZoneForTempReadPrimary[] = "usb_pwr_therm2"; constexpr char kThermalZoneForTempReadSecondary1[] = "usb_pwr_therm"; constexpr char kThermalZoneForTempReadSecondary2[] = "qi_therm"; constexpr char kPogoUsbActive[] = "/sys/devices/platform/google,pogo/pogo_usb_active"; -constexpr char kPogoEnableUsb[] = "/sys/devices/platform/google,pogo/enable_usb"; +constexpr char KPogoMoveDataToUsb[] = "/sys/devices/platform/google,pogo/move_data_to_usb"; constexpr char kPowerSupplyUsbType[] = "/sys/class/power_supply/usb/usb_type"; constexpr int kSamplingIntervalSec = 5; void queryVersionHelper(android::hardware::usb::Usb *usb, @@ -159,12 +159,12 @@ ScopedAStatus Usb::enableUsbDataWhileDocked(const string& in_portName, ALOGI("Userspace enableUsbDataWhileDocked opID:%ld", in_transactionId); int flags = O_RDONLY; - ::android::base::unique_fd fd(TEMP_FAILURE_RETRY(open(kPogoEnableUsb, flags))); + ::android::base::unique_fd fd(TEMP_FAILURE_RETRY(open(KPogoMoveDataToUsb, flags))); if (fd != -1) { notSupported = false; - success = WriteStringToFile("1", kPogoEnableUsb); + success = WriteStringToFile("1", KPogoMoveDataToUsb); if (!success) { - ALOGE("Write to enable_usb failed"); + ALOGE("Write to move_data_to_usb failed"); } } diff --git a/usb/usb/android.hardware.usb-service.rc b/usb/usb/android.hardware.usb-service.rc index f06b46b7..3ee952aa 100644 --- a/usb/usb/android.hardware.usb-service.rc +++ b/usb/usb/android.hardware.usb-service.rc @@ -8,30 +8,42 @@ on post-fs chown root system /sys/class/typec/port0/power_role chown root system /sys/class/typec/port0/data_role chown root system /sys/class/typec/port0/port_type + chown root system /sys/devices/platform/10d60000.hsi2c/i2c-4/i2c-max77759tcpc/contaminant_detection chown root system /sys/devices/platform/10d60000.hsi2c/i2c-5/i2c-max77759tcpc/contaminant_detection chown root system /sys/devices/platform/10d60000.hsi2c/i2c-6/i2c-max77759tcpc/contaminant_detection + chown root system /sys/devices/platform/10d60000.hsi2c/i2c-4/i2c-max77759tcpc/usb_limit_accessory_current chown root system /sys/devices/platform/10d60000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_accessory_current chown root system /sys/devices/platform/10d60000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_accessory_current + chown root system /sys/devices/platform/10d60000.hsi2c/i2c-4/i2c-max77759tcpc/usb_limit_accessory_enable chown root system /sys/devices/platform/10d60000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_accessory_enable chown root system /sys/devices/platform/10d60000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_accessory_enable + chown root system /sys/devices/platform/10d60000.hsi2c/i2c-4/i2c-max77759tcpc/usb_limit_sink_current chown root system /sys/devices/platform/10d60000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_sink_current chown root system /sys/devices/platform/10d60000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_sink_current + chown root system /sys/devices/platform/10d60000.hsi2c/i2c-4/i2c-max77759tcpc/usb_limit_sink_enable chown root system /sys/devices/platform/10d60000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_sink_enable chown root system /sys/devices/platform/10d60000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_sink_enable + chown root system /sys/devices/platform/10d60000.hsi2c/i2c-4/i2c-max77759tcpc/usb_limit_source_enable chown root system /sys/devices/platform/10d60000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_source_enable chown root system /sys/devices/platform/10d60000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_source_enable chmod 664 /sys/class/typec/port0/power_role chmod 664 /sys/class/typec/port0/data_role chmod 664 /sys/class/typec/port0/port_type + chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-4/i2c-max77759tcpc/contaminant_detection chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-5/i2c-max77759tcpc/contaminant_detection chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-6/i2c-max77759tcpc/contaminant_detection + chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-4/i2c-max77759tcpc/usb_limit_accessory_current chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_accessory_current chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_accessory_current + chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-4/i2c-max77759tcpc/usb_limit_accessory_enable chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_accessory_enable chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_accessory_enable + chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-4/i2c-max77759tcpc/usb_limit_sink_current chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_sink_current chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_sink_current + chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-4/i2c-max77759tcpc/usb_limit_sink_enable chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_sink_enable chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_sink_enable + chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-4/i2c-max77759tcpc/usb_limit_source_enable chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_source_enable chmod 664 /sys/devices/platform/10d60000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_source_enable