From 0f55bf0d03b3a345909d0bc91d46633e5027cb25 Mon Sep 17 00:00:00 2001 From: YiKai Peng Date: Thu, 20 Jun 2024 02:31:57 +0000 Subject: [PATCH 01/24] gs201: wlc: add authstart permission Bug: 348272247 Test: Build/Flash Flag: EXEMPT bugfix Change-Id: I1bba5e3d25dd3d062faf11a1a92e254de4de78e5 Signed-off-by: YiKai Peng --- conf/init.gs201.rc | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/init.gs201.rc b/conf/init.gs201.rc index f4bc6eac..6ac807a5 100644 --- a/conf/init.gs201.rc +++ b/conf/init.gs201.rc @@ -261,6 +261,7 @@ on init chown system system /sys/class/power_supply/wireless/device/version chown system system /sys/class/power_supply/wireless/device/features chown system system /sys/class/power_supply/wireless/device/authtype + chown system system /sys/class/power_supply/wireless/device/authstart # Adaptive charge chown system system /sys/class/power_supply/battery/charge_deadline From 32b03d0ac34652f13dc161027e51c79aa7e741d9 Mon Sep 17 00:00:00 2001 From: Mike McTernan Date: Thu, 4 Jul 2024 15:47:41 +0100 Subject: [PATCH 02/24] APC/TUI: remove support for APC Flag: EXEMPT build file change Bug: 351151445 Test: m && test on device Change-Id: Id777192d0aff8847b28aede2e95413de6a17b3af --- device.mk | 3 --- 1 file changed, 3 deletions(-) diff --git a/device.mk b/device.mk index 38add23a..37df4d9b 100644 --- a/device.mk +++ b/device.mk @@ -76,7 +76,6 @@ PRODUCT_SOONG_NAMESPACES += \ vendor/google_devices/common/chre/host/hal \ vendor/google/whitechapel/tools \ vendor/google/interfaces \ - vendor/google_devices/common/proprietary/confirmatioui_hal \ vendor/google_nos/host/android \ vendor/google_nos/test/system-test-harness \ vendor/google/camera @@ -817,8 +816,6 @@ PRODUCT_PACKAGES_DEBUG += \ trusty_stats_test \ trusty-coverage-controller \ -include device/google/gs101/confirmationui/confirmationui.mk - # Trusty Secure DPU Daemon PRODUCT_PACKAGES += \ securedpud.slider From 7c074a6c3c0f908f773a45ac00b0bd177ec6f4cd Mon Sep 17 00:00:00 2001 From: Roy Luo Date: Wed, 26 Jun 2024 22:55:52 +0000 Subject: [PATCH 03/24] Use absolute path for udc device Avoid search in /sys/class/udc directory Bug: 339241080 Test: tested on gs201 Flag: EXEMPT bugfix Change-Id: Iad74cae0d6ad6887d79d705dc8478f1b44532503 --- usb/gadget/UsbGadget.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usb/gadget/UsbGadget.h b/usb/gadget/UsbGadget.h index d117b910..cdd1871e 100644 --- a/usb/gadget/UsbGadget.h +++ b/usb/gadget/UsbGadget.h @@ -74,7 +74,7 @@ constexpr char kProcInterruptsPath[] = "/proc/interrupts"; constexpr char kProcIrqPath[] = "/proc/irq/"; constexpr char kSmpAffinityList[] = "/smp_affinity_list"; #ifndef UDC_PATH -#define UDC_PATH "/sys/class/udc/11210000.dwc3/" +#define UDC_PATH "/sys/devices/platform/11210000.usb/11210000.dwc3/udc/11210000.dwc3/" #endif static MonitorFfs monitorFfs(kGadgetName); From 7136214409ee55c18e6dd5eb8830ffab628c1d6d Mon Sep 17 00:00:00 2001 From: Jeremy Kemp Date: Wed, 22 May 2024 09:59:19 +0100 Subject: [PATCH 04/24] Add Mali OpenCL ICD to PRODUCT_PACKAGES Bug: 324057328 Test: clpeak Change-Id: Ied865d4149569b90b400b876ab29441ea2d09c06 --- device.mk | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/device.mk b/device.mk index 37df4d9b..fe4f9e13 100644 --- a/device.mk +++ b/device.mk @@ -252,9 +252,18 @@ PRODUCT_PACKAGES += \ csffw_image_prebuilt__firmware_prebuilt_todx_mali_csffw.bin \ libGLES_mali \ vulkan.mali \ - libOpenCL \ libgpudataproducer \ +# Install the OpenCL ICD Loader +PRODUCT_SOONG_NAMESPACES += external/OpenCL-ICD-Loader +PRODUCT_PACKAGES += \ + libOpenCL \ + mali_icd__customer_pixel_opencl-icd_ARM.icd +ifeq ($(DEVICE_IS_64BIT_ONLY),false) +PRODUCT_PACKAGES += \ + mali_icd__customer_pixel_opencl-icd_ARM32.icd +endif + # Mali Configuration Properties # b/221255664 prevents setting PROTECTED_MAX_CORE_COUNT=2 PRODUCT_VENDOR_PROPERTIES += \ From 082d87f959b7e870c69eddff922e4fb6172dc55b Mon Sep 17 00:00:00 2001 From: Qais Yousef Date: Fri, 7 Jun 2024 14:24:03 +0000 Subject: [PATCH 05/24] init.gs201.rc: Apply sched tuning to improve sched latencies Bug: 340860065 Flag: NONE not supported for init.rc scripts Signed-off-by: Qais Yousef Change-Id: Iea2a75de69815c5fd812f2e65b8a018a9c396d9e --- conf/init.gs201.rc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/conf/init.gs201.rc b/conf/init.gs201.rc index 6ac807a5..0caf0611 100644 --- a/conf/init.gs201.rc +++ b/conf/init.gs201.rc @@ -689,6 +689,12 @@ on property:sys.boot_completed=1 write /dev/cpuset/camera-daemon/cpus ${persist.device_config.vendor_system_native.camera-daemon_cpuset:-0-7} setprop vendor.powerhal.init 1 + # Setup scheduler parameters + write /proc/vendor_sched/min_granularity_ns 1000000 + write /proc/vendor_sched/latency_ns 8000000 + write /proc/vendor_sched/max_load_balance_interval 1 + write /proc/vendor_sched/enable_hrtick 1 + # Setup final cpu.uclamp write /proc/vendor_sched/groups/ta/uclamp_min 1 write /proc/vendor_sched/groups/fg/uclamp_min 0 From a1ad16fd7796e3cf7b9e4f1417c0f23e3a6d9c56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Kosi=C5=84ski?= Date: Wed, 10 Jul 2024 22:12:12 +0000 Subject: [PATCH 06/24] Delete PDX sockets for legacy VR services. Remove irrelevant copy and paste content. None of the gs201 devices ever included these services and these sockets are not doing anything. Bug: 234559097 Test: presubmit Flag: EXEMPT dead code removal Change-Id: I60698b026c2e456296943adc8c2a2f03fe3dd867 --- conf/init.gs201.rc | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/conf/init.gs201.rc b/conf/init.gs201.rc index 0caf0611..c6db0e17 100644 --- a/conf/init.gs201.rc +++ b/conf/init.gs201.rc @@ -141,16 +141,6 @@ on init write /sys/class/net/rmnet6/queues/rx-0/rps_cpus fe write /sys/class/net/rmnet7/queues/rx-0/rps_cpus fe - # Create UDS structure for base VR services. - mkdir /dev/socket/pdx 0775 system system - mkdir /dev/socket/pdx/system 0775 system system - mkdir /dev/socket/pdx/system/buffer_hub 0775 system system - mkdir /dev/socket/pdx/system/performance 0775 system system - mkdir /dev/socket/pdx/system/vr 0775 system system - mkdir /dev/socket/pdx/system/vr/display 0775 system system - mkdir /dev/socket/pdx/system/vr/pose 0775 system system - mkdir /dev/socket/pdx/system/vr/sensors 0775 system system - # Boot time 183626384 write /proc/vendor_sched/groups/ta/uclamp_min 159 write /proc/vendor_sched/groups/ta/prefer_idle 1 From 9bbd5399300194b786e99c975f4cb9f54acdd5c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Wagner?= Date: Wed, 10 Jul 2024 08:47:00 +0000 Subject: [PATCH 07/24] Increase the max core index for protected TLS allocations to 4 Pixel has removed unnecessary allocation padding, and we now pass dEQP with a maximum physical core index setting of 4, which allows the driver to utilize 4 GPU cores (1111b) in the extreme tests. Bug: 221255664 Test: L10 atest CtsDeqpTestCases -- --module-arg 'CtsDeqpTestCases:include-filter:dEQP-VK.protected_memory.*' Flag: EXEMPT bugfix Change-Id: Iee15ed0d929f648ad45f7d5fe708e8cb14296e6f --- device.mk | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/device.mk b/device.mk index fe4f9e13..51babdfe 100644 --- a/device.mk +++ b/device.mk @@ -265,11 +265,10 @@ PRODUCT_PACKAGES += \ endif # Mali Configuration Properties -# b/221255664 prevents setting PROTECTED_MAX_CORE_COUNT=2 PRODUCT_VENDOR_PROPERTIES += \ vendor.mali.platform.config=/vendor/etc/mali/platform.config \ vendor.mali.debug.config=/vendor/etc/mali/debug.config \ - vendor.mali.base_protected_max_core_count=1 \ + vendor.mali.base_protected_max_core_count=4 \ vendor.mali.base_protected_tls_max=67108864 \ vendor.mali.platform_agt_frequency_khz=24576 From 338008193e5c830d3ee169211428d55f4468718d Mon Sep 17 00:00:00 2001 From: Jerry Huang Date: Wed, 12 Jun 2024 16:50:38 +0800 Subject: [PATCH 08/24] gs201: video: change to use c2 "default" AIDL service Bug: 322920559 Change-Id: Ia2e6cac052bc0ee417e179f61804eada9ae87bf5 --- device.mk | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/device.mk b/device.mk index 51babdfe..c58f5f27 100644 --- a/device.mk +++ b/device.mk @@ -315,6 +315,7 @@ PRODUCT_VENDOR_PROPERTIES += ro.surface_flinger.prime_shader_cache.ultrahdr=1 DEVICE_MANIFEST_FILE := \ device/google/gs201/manifest.xml +BOARD_USE_CODEC2_AIDL := V1 ifneq (,$(filter aosp_%,$(TARGET_PRODUCT))) DEVICE_MANIFEST_FILE += \ device/google/gs201/manifest_media_aosp.xml @@ -770,12 +771,19 @@ PRODUCT_COPY_FILES += \ device/google/gs201/media_codecs_performance_c2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance_c2.xml \ PRODUCT_PROPERTY_OVERRIDES += \ - debug.stagefright.c2-poolmask=458752 \ debug.c2.use_dmabufheaps=1 \ media.c2.dmabuf.padding=512 \ debug.stagefright.ccodec_delayed_params=1 \ ro.vendor.gpu.dataspace=1 +ifneq ($(BOARD_USE_CODEC2_AIDL), ) +PRODUCT_PROPERTY_OVERRIDES += \ + debug.stagefright.c2-poolmask=1507328 +else +PRODUCT_PROPERTY_OVERRIDES += \ + debug.stagefright.c2-poolmask=458752 +endif + # Create input surface on the framework side PRODUCT_PROPERTY_OVERRIDES += \ debug.stagefright.c2inputsurface=-1 \ From 06118f1b530f61578d146dffe0b9e93be14fdbaa Mon Sep 17 00:00:00 2001 From: Robert Luo Date: Fri, 19 Jul 2024 11:34:14 +0800 Subject: [PATCH 09/24] [Pixel RR] Apply reviewed default permissions Pregrantting below permissions: READ_CONTACTS WRITE_CONTACTS READ_CALL_LOG Flag: EXEMPT add pregranted permission in b/337725984, b/337802920 Bug: 337725984, 337802920 Test: presubmit Change-Id: I611bedf6f05acc3f80ccc021fb534869e131dba1 --- default-permissions.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/default-permissions.xml b/default-permissions.xml index ecdbaf01..afe5bc4d 100644 --- a/default-permissions.xml +++ b/default-permissions.xml @@ -178,5 +178,12 @@ + + + + + + + From 01383d960314c938877843b6e7e09b5a872997a3 Mon Sep 17 00:00:00 2001 From: Herbert Xue Date: Tue, 16 Jul 2024 14:36:08 +0800 Subject: [PATCH 10/24] Add soong config variable for PowerAnomalySitril Set the variable is true when USE_LASSEN_OEMHOOK is true and BOARD_WITHOUT_RADIO is not true. Flag: EXEMPT bugfix Bug: 325857852 Test: m ConnectivityMonitor Change-Id: I10d1b9b198db960d1d6af0a69044907c8043c4e6 --- device.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/device.mk b/device.mk index c58f5f27..0c38f565 100644 --- a/device.mk +++ b/device.mk @@ -211,6 +211,7 @@ USE_LASSEN_OEMHOOK := true # $(USE_LASSEN_OEMHOOK) is true and $(BOARD_WITHOUT_RADIO) is not true. ifneq ($(BOARD_WITHOUT_RADIO),true) PRODUCT_SOONG_NAMESPACES += vendor/google/tools/power-anomaly-sitril + $(call soong_config_set,sitril,use_lassen_oemhook_with_radio,true) endif # Use for GRIL From 6566e47574bcc2bd26d82342776798d5c30434a7 Mon Sep 17 00:00:00 2001 From: Qais Yousef Date: Fri, 7 Jun 2024 14:30:53 +0000 Subject: [PATCH 11/24] BoardConfig-common.mk: Enable Lazy RCU Bug: 340860065 Flag: EXEMPT this is a boot time parameter Signed-off-by: Qais Yousef Change-Id: Id8ce33fac746f3a873c69461f7f9054b274603d9 --- BoardConfig-common.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk index 48d30a44..ba35ddb4 100644 --- a/BoardConfig-common.mk +++ b/BoardConfig-common.mk @@ -50,7 +50,7 @@ BOARD_KERNEL_CMDLINE += dyndbg=\"func alloc_contig_dump_pages +p\" BOARD_KERNEL_CMDLINE += earlycon=exynos4210,0x10A00000 console=ttySAC0,115200 androidboot.console=ttySAC0 printk.devkmsg=on BOARD_KERNEL_CMDLINE += cma_sysfs.experimental=Y BOARD_KERNEL_CMDLINE += cgroup_disable=memory -BOARD_KERNEL_CMDLINE += rcupdate.rcu_expedited=1 rcu_nocbs=all +BOARD_KERNEL_CMDLINE += rcupdate.rcu_expedited=1 rcu_nocbs=all rcutree.enable_rcu_lazy BOARD_KERNEL_CMDLINE += stack_depot_disable=off page_pinner=on BOARD_KERNEL_CMDLINE += swiotlb=1024 BOARD_KERNEL_CMDLINE += disable_dma32=on From 0386e9b22f7af994c335e492691502a70ce1068c Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Thu, 18 Jul 2024 09:16:59 +0000 Subject: [PATCH 12/24] Upgrade IDisplay to V13 Bug: 315496839 Test: build pass Change-Id: I9bf92af08fd21d834ca538d79bd906ca9e4fab2a --- device_framework_matrix_product.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device_framework_matrix_product.xml b/device_framework_matrix_product.xml index 772c5e5a..02d92bc5 100644 --- a/device_framework_matrix_product.xml +++ b/device_framework_matrix_product.xml @@ -78,7 +78,7 @@ com.google.hardware.pixel.display - 12 + 13 IDisplay default From fa514f678135a3548994124d677866351b8434b5 Mon Sep 17 00:00:00 2001 From: George Lee Date: Fri, 2 Aug 2024 17:55:08 +0000 Subject: [PATCH 13/24] init: gs201: Mask VDROOP1 for GPU CLK Divider Bug: 337613046 Test: Confirm divider is configured Flag: EXEMPT bugfix Change-Id: Id143431a6d63c4915ab0c0e97207eca1be4ea171 Signed-off-by: George Lee --- conf/init.gs201.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/init.gs201.rc b/conf/init.gs201.rc index c6db0e17..cc88feb5 100644 --- a/conf/init.gs201.rc +++ b/conf/init.gs201.rc @@ -906,7 +906,7 @@ on property:vendor.brownout.mitigation.ready=1 write /sys/devices/virtual/pmic/mitigation/triggered_lvl/uvlo2_lvl 3000 write /sys/devices/virtual/pmic/mitigation/triggered_lvl/soft_ocp_cpu2_lvl 12000 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/gpu_clk_div 0x81 #mask VDROOP1 write /sys/devices/virtual/pmic/mitigation/clock_div/cpu1_clk_div 0x381 write /sys/devices/virtual/pmic/mitigation/clock_div/cpu2_clk_div 0x1 From 0c1f69415fe2f97bd337b24dd721b40f26832452 Mon Sep 17 00:00:00 2001 From: Kuen-Han Tsai Date: Wed, 7 Aug 2024 12:27:27 +0800 Subject: [PATCH 14/24] Limit hub tuning when enable_hub is enabled Some external hubs have the same VID and PID as the internal hub, causing unintended hub tuning and compatibility issues. This patch restricts hub tuning to only the internal hub located on bus 1, port 1 when enable_hub is set to 1. Bug: 353650207 Test: Verified an external GL852G speakerphone dock works when docked. Test: adb shell cmd android.hardware.usb.IUsb/default hub-vendor-cmd Flag: EXEMPT bugfix Change-Id: If2cfe6684e4f5fafaab34bf7a4e4b4cd464d6575 Signed-off-by: Kuen-Han Tsai --- usb/usb/Usb.cpp | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp index 2c42b116..5b38729b 100644 --- a/usb/usb/Usb.cpp +++ b/usb/usb/Usb.cpp @@ -51,6 +51,7 @@ namespace usb_flags = android::hardware::usb::flags; using aidl::android::frameworks::stats::IStats; using android::base::GetProperty; +using android::base::ParseInt; using android::base::Tokenize; using android::base::Trim; using android::hardware::google::pixel::getStatsService; @@ -91,6 +92,8 @@ 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 kPogoEnableHub[] = "/sys/devices/platform/google,pogo/enable_hub"; +constexpr char kInternalHubDevnum[] = "/sys/bus/usb/devices/1-1/devnum"; constexpr char KPogoMoveDataToUsb[] = "/sys/devices/platform/google,pogo/move_data_to_usb"; constexpr char kPowerSupplyUsbType[] = "/sys/class/power_supply/usb/usb_type"; constexpr char kUdcUeventRegex[] = @@ -471,11 +474,16 @@ bool switchMode(const string &portName, const PortRole &in_role, struct Usb *usb return roleSwitch; } -static int usbDeviceRemoved(const char *devname, void* client_data) { - return 0; +static int getInternalHubUniqueId() { + string internalHubDevnum; + int devnum = 0, internalHubUniqueId = -1; + if (ReadFileToString(kInternalHubDevnum, &internalHubDevnum) && + ParseInt(Trim(internalHubDevnum).c_str(), &devnum)) + internalHubUniqueId = 1000 + devnum; + return internalHubUniqueId; } -static int usbDeviceAdded(const char *devname, void* client_data) { +static Status tuneInternalHub(const char *devname, void* client_data) { uint16_t vendorId, productId; struct usb_device *device; ::aidl::android::hardware::usb::Usb *usb; @@ -484,7 +492,7 @@ static int usbDeviceAdded(const char *devname, void* client_data) { device = usb_device_open(devname); if (!device) { ALOGE("usb_device_open failed\n"); - return 0; + return Status::ERROR; } usb = (::aidl::android::hardware::usb::Usb *)client_data; @@ -506,6 +514,26 @@ static int usbDeviceAdded(const char *devname, void* client_data) { usb_device_close(device); + return Status::SUCCESS; +} + +static int usbDeviceRemoved(const char *devname, void* client_data) { + return 0; +} + +static int usbDeviceAdded(const char *devname, void* client_data) { + string pogoEnableHub; + int uniqueId = 0; + + // 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); + } + return 0; } From c62a6b812dd3ea384830202131ee2a85d3d53b94 Mon Sep 17 00:00:00 2001 From: samou Date: Tue, 6 Aug 2024 02:35:06 +0000 Subject: [PATCH 15/24] Remove BCL from thermal Flag: EXEMPT tuning changes Bug: 349935208 Change-Id: I43b37dc596c799927868c0c546d30ed8e51c17c5 Signed-off-by: samou --- conf/init.gs201.rc | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/conf/init.gs201.rc b/conf/init.gs201.rc index cc88feb5..15601204 100644 --- a/conf/init.gs201.rc +++ b/conf/init.gs201.rc @@ -911,34 +911,6 @@ on property:vendor.brownout.mitigation.ready=1 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 - chown system system /dev/thermal/tz-by-name/vdroop1/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/vdroop1/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/smpl_gm/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/smpl_gm/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/ocp_cpu1/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/ocp_cpu1/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/ocp_cpu2/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/ocp_cpu2/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/ocp_tpu/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/ocp_tpu/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/ocp_gpu/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/ocp_gpu/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/soft_ocp_cpu1/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/soft_ocp_cpu1/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/soft_ocp_cpu2/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/soft_ocp_cpu2/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/soft_ocp_tpu/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/soft_ocp_tpu/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/soft_ocp_gpu/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/soft_ocp_gpu/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/soc/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/soc/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/batoilo/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/batoilo/trip_point_0_hyst # Thermal chown system system /dev/thermal/tz-by-name/skin_therm/trip_point_0_temp chown system system /dev/thermal/tz-by-name/skin_therm/trip_point_0_hyst From 11938381ec29c2376c4b736a40e820bf6a6bc2de Mon Sep 17 00:00:00 2001 From: samou Date: Mon, 15 Jul 2024 09:28:08 +0000 Subject: [PATCH 16/24] Migrate dump_power_gs201.sh contents into cpp for improved speed Flag: EXEMPT refactor Bug: 349935208 Test: ./dump_power Change-Id: I7799487b0f88cf59cb46f050d87528d535f7e788 Signed-off-by: samou --- device.mk | 2 +- dumpstate/Android.bp | 20 +- dumpstate/dump_power.cpp | 722 ++++++++++++++++++++++++++++++++++ dumpstate/dump_power_gs201.sh | 315 --------------- dumpstate/item.mk | 1 + 5 files changed, 739 insertions(+), 321 deletions(-) create mode 100644 dumpstate/dump_power.cpp delete mode 100644 dumpstate/dump_power_gs201.sh create mode 100644 dumpstate/item.mk diff --git a/device.mk b/device.mk index 0c38f565..fe09cd81 100644 --- a/device.mk +++ b/device.mk @@ -1152,7 +1152,7 @@ include hardware/google/pixel/wifi_ext/device.mk # Battery Stats Viewer PRODUCT_PACKAGES_DEBUG += BatteryStatsViewer -PRODUCT_PACKAGES += dump_power_gs201.sh +include device/google/gs201/dumpstate/item.mk # Install product specific framework compatibility matrix # (TODO: b/169535506) This includes the FCM for system_ext and product partition. diff --git a/dumpstate/Android.bp b/dumpstate/Android.bp index a325151d..6f59dc65 100644 --- a/dumpstate/Android.bp +++ b/dumpstate/Android.bp @@ -2,9 +2,19 @@ package { default_applicable_licenses: ["Android-Apache-2.0"], } -sh_binary { - name: "dump_power_gs201.sh", - src: "dump_power_gs201.sh", +cc_binary { + name: "dump_power", + srcs: ["dump_power.cpp"], + cflags: [ + "-Wall", + "-Wextra", + "-Werror", + ], + shared_libs: [ + "libbase", + "libdump", + "libdumpstateutil", + ], vendor: true, - sub_dir: "dump", -} + relative_install_path: "dump", +} \ No newline at end of file diff --git a/dumpstate/dump_power.cpp b/dumpstate/dump_power.cpp new file mode 100644 index 00000000..1841502b --- /dev/null +++ b/dumpstate/dump_power.cpp @@ -0,0 +1,722 @@ +/* + * Copyright 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "DumpstateUtil.h" +void printTitle(const char *msg) { + printf("\n------ %s ------\n", msg); +} +int getCommandOutput(const char *cmd, std::string *output) { + char buffer[1024]; + FILE *pipe = popen(cmd, "r"); + if (!pipe) { + return -1; + } + while (fgets(buffer, sizeof buffer, pipe) != NULL) { + *output += buffer; + } + pclose(pipe); + if (output->back() == '\n') + output->pop_back(); + return 0; +} +bool isValidFile(const char *file) { + if (!access(file, R_OK)) { + return false; + } + return true; +} +bool isUserBuild() { + return ::android::os::dumpstate::PropertiesHelper::IsUserBuild(); +} +int getFilesInDir(const char *directory, std::vector *files) { + std::string content; + struct dirent *entry; + DIR *dir = opendir(directory); + if (dir == NULL) + return -1; + files->clear(); + while ((entry = readdir(dir)) != NULL) + files->push_back(entry->d_name); + closedir(dir); + sort(files->begin(), files->end()); + return 0; +} +void dumpPowerStatsTimes() { + const char *title = "Power Stats Times"; + char rBuff[128]; + struct timespec rTs; + struct sysinfo info; + int ret; + printTitle(title); + sysinfo(&info); + const time_t boottime = time(NULL) - info.uptime; + ret = clock_gettime(CLOCK_REALTIME, &rTs); + if (ret) + return; + struct tm *nowTime = std::localtime(&rTs.tv_sec); + std::strftime(rBuff, sizeof(rBuff), "%m/%d/%Y %H:%M:%S", nowTime); + printf("Boot: %s", ctime(&boottime)); + printf("Now: %s\n", rBuff); +} +int readContentsOfDir(const char* title, const char* directory, const char* strMatch, + bool useStrMatch = false, bool printDirectory = false) { + std::vector files; + std::string content; + std::string fileLocation; + int ret; + ret = getFilesInDir(directory, &files); + if (ret < 0) + return ret; + printTitle(title); + for (auto &file : files) { + if (useStrMatch && std::string::npos == std::string(file).find(strMatch)) { + continue; + } + fileLocation = std::string(directory) + std::string(file); + if (!android::base::ReadFileToString(fileLocation, &content)) { + continue; + } + if (printDirectory) { + printf("\n\n%s\n", fileLocation.c_str()); + } + if (content.back() == '\n') + content.pop_back(); + printf("%s\n", content.c_str()); + } + return 0; +} +void dumpAcpmStats() { + const char* acpmDir = "/sys/devices/platform/acpm_stats/"; + const char* statsSubStr = "_stats"; + const char* acpmTitle = "ACPM stats"; + readContentsOfDir(acpmTitle, acpmDir, statsSubStr, true, true); +} +void dumpPowerSupplyStats() { + const char* dumpList[][2] = { + {"CPU PM stats", "/sys/devices/system/cpu/cpupm/cpupm/time_in_state"}, + {"GENPD summary", "/d/pm_genpd/pm_genpd_summary"}, + {"Power supply property battery", "/sys/class/power_supply/battery/uevent"}, + {"Power supply property dc", "/sys/class/power_supply/dc/uevent"}, + {"Power supply property gcpm", "/sys/class/power_supply/gcpm/uevent"}, + {"Power supply property gcpm_pps", "/sys/class/power_supply/gcpm_pps/uevent"}, + {"Power supply property main-charger", "/sys/class/power_supply/main-charger/uevent"}, + {"Power supply property dc-mains", "/sys/class/power_supply/dc-mains/uevent"}, + {"Power supply property tcpm", "/sys/class/power_supply/tcpm-source-psy-8-0025/uevent"}, + {"Power supply property usb", "/sys/class/power_supply/usb/uevent"}, + {"Power supply property wireless", "/sys/class/power_supply/wireless/uevent"}, + }; + for (const auto &row : dumpList) { + dumpFileContent(row[0], row[1]); + } +} +void dumpMaxFg() { + const char *maxfgLoc = "/sys/class/power_supply/maxfg"; + const char *maxfg [][2] = { + {"Power supply property maxfg", "/sys/class/power_supply/maxfg/uevent"}, + {"m5_state", "/sys/class/power_supply/maxfg/m5_model_state"}, + {"maxfg", "/dev/logbuffer_maxfg"}, + {"maxfg", "/dev/logbuffer_maxfg_monitor"}, + }; + const char *maxfgFlip [][2] = { + {"Power supply property maxfg_base", "/sys/class/power_supply/maxfg_base/uevent"}, + {"Power supply property maxfg_flip", "/sys/class/power_supply/maxfg_flip/uevent"}, + {"m5_state", "/sys/class/power_supply/maxfg_base/m5_model_state"}, + {"maxfg_base", "/dev/logbuffer_maxfg_base"}, + {"maxfg_flip", "/dev/logbuffer_maxfg_flip"}, + {"maxfg_base", "/dev/logbuffer_maxfg_base_monitor"}, + {"maxfg_flip", "/dev/logbuffer_maxfg_flip_monitor"}, + }; + const char *maxfgHistoryName = "Maxim FG History"; + const char *maxfgHistoryDir = "/dev/maxfg_history"; + std::string content; + if (isValidFile(maxfgLoc)) { + for (const auto &row : maxfg) { + dumpFileContent(row[0], row[1]); + } + } else { + for (const auto &row : maxfgFlip) { + dumpFileContent(row[0], row[1]); + } + } + if (isValidFile(maxfgHistoryDir)) { + dumpFileContent(maxfgHistoryName, maxfgHistoryDir); + } +} +void dumpPowerSupplyDock() { + const char* powerSupplyPropertyDockTitle = "Power supply property dock"; + const char* powerSupplyPropertyDockFile = "/sys/class/power_supply/dock/uevent"; + dumpFileContent(powerSupplyPropertyDockTitle, powerSupplyPropertyDockFile); +} +void dumpLogBufferTcpm() { + const char* logbufferTcpmTitle = "Logbuffer TCPM"; + const char* logbufferTcpmFile = "/dev/logbuffer_tcpm"; + const char* debugTcpmFile = "/sys/kernel/debug/tcpm"; + const char* tcpmLogTitle = "TCPM logs"; + const char* tcpmFile = "/sys/kernel/debug/tcpm"; + const char* tcpmFileAlt = "/sys/kernel/debug/usb/tcpm"; + int retCode; + dumpFileContent(logbufferTcpmTitle, logbufferTcpmFile); + retCode = readContentsOfDir(tcpmLogTitle, isValidFile(debugTcpmFile) ? tcpmFile : tcpmFileAlt, + NULL); + if (retCode < 0) + printTitle(tcpmLogTitle); +} +void dumpTcpc() { + int ret; + const char* max77759TcpcHead = "TCPC"; + const char* i2cSubDirMatch = "i2c-"; + const char* directory = "/sys/devices/platform/10d60000.hsi2c/"; + const char* max77759Tcpc [][2] { + {"registers:", "/i2c-max77759tcpc/registers"}, + {"frs:", "/i2c-max77759tcpc/frs"}, + {"auto_discharge:", "/i2c-max77759tcpc/auto_discharge"}, + {"bcl2_enabled:", "/i2c-max77759tcpc/bcl2_enabled"}, + {"cc_toggle_enable:", "/i2c-max77759tcpc/cc_toggle_enable"}, + {"containment_detection:", "/i2c-max77759tcpc/containment_detection"}, + {"containment_detection_status:", "/i2c-max77759tcpc/containment_detection_status"}, + }; + std::vector files; + std::string content; + printTitle(max77759TcpcHead); + ret = getFilesInDir(directory, &files); + if (ret < 0) { + for (auto &tcpcVal : max77759Tcpc) + printf("%s\n", tcpcVal[0]); + return; + } + for (auto &file : files) { + for (auto &tcpcVal : max77759Tcpc) { + printf("%s ", tcpcVal[0]); + if (std::string::npos == std::string(file).find(i2cSubDirMatch)) { + continue; + } + std::string fileName = directory + file + "/" + std::string(tcpcVal[1]); + if (!android::base::ReadFileToString(fileName, &content)) { + continue; + } + printf("%s\n", content.c_str()); + } + } +} +void dumpPdEngine() { + const char* pdEngine [][2] { + {"PD Engine", "/dev/logbuffer_usbpd"}, + {"PPS-google_cpm", "/dev/logbuffer_cpm"}, + {"PPS-dc", "/dev/logbuffer_pca9468"}, + }; + for (const auto &row : pdEngine) { + dumpFileContent(row[0], row[1]); + } +} +void dumpWc68() { + const char* wc68Title = "WC68"; + const char* wc68File = "/dev/logbuffer_wc68"; + dumpFileContent(wc68Title, wc68File); +} +void dumpLn8411() { + const char* ln8411Title = "LN8411"; + const char* ln8411File = "/dev/logbuffer_ln8411"; + dumpFileContent(ln8411Title, ln8411File); +} +void dumpBatteryHealth() { + const char* batteryHealth [][2] { + {"Battery Health", "/sys/class/power_supply/battery/health_index_stats"}, + {"BMS", "/dev/logbuffer_ssoc"}, + {"TTF", "/dev/logbuffer_ttf"}, + {"TTF details", "/sys/class/power_supply/battery/ttf_details"}, + {"TTF stats", "/sys/class/power_supply/battery/ttf_stats"}, + {"aacr_state", "/sys/class/power_supply/battery/aacr_state"}, + {"maxq", "/dev/logbuffer_maxq"}, + {"TEMP/DOCK-DEFEND", "/dev/logbuffer_bd"}, + }; + for (const auto &row : batteryHealth) { + dumpFileContent(row[0], row[1]); + } +} +void dumpBatteryDefend() { + 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"}, + {"TEMP-DEFEND Config", "/sys/devices/platform/google,charger/", "bd_"}, + }; + std::vector files; + struct dirent *entry; + std::string content; + std::string fileLocation; + for (auto &config : defendConfig) { + 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 = "\n"; + } + printf("%s: %s", file.c_str(), content.c_str()); + if (content.back() != '\n') + printf("\n"); + } + files.clear(); + } +} +void dumpChgUserDebug() { + std::vector files; + struct dirent *entry; + std::string content; + const char *chgUserDebug [][2] { + {"DC_registers dump", "/sys/class/power_supply/dc-mains/device/registers_dump"}, + {"max77759_chg registers dump", "/d/max77759_chg/registers"}, + {"max77729_pmic registers dump", "/d/max77729_pmic/registers"}, + {"Charging table dump", "/d/google_battery/chg_raw_profile"}, + }; + const std::string debugfs = "/d/"; + const char *maxFgStrMatch = "maxfg"; + const char *fgInfo [][2] { + {"fg_model", "fg_model"}, + {"fg_alo_ver", "algo_ver"}, + {"fg_model_ok", "model_ok"}, + {"fg registers", "registers"}, + {"Maxim FG NV RAM", "nv_registers"}, + }; + if (!isUserBuild()) + return; + for (auto &row : chgUserDebug) { + dumpFileContent(row[0], row[1]); + } + for (auto &info : fgInfo) { + DIR *dir = opendir(debugfs.c_str()); + if (dir == NULL) + return; + printTitle(info[0]); + while ((entry = readdir(dir)) != NULL) + if (std::string(entry->d_name).find(maxFgStrMatch) != std::string::npos) + files.push_back(entry->d_name); + closedir(dir); + sort(files.begin(), files.end()); + for (auto &file : files) { + std::string fileDirectory = debugfs + file; + std::string fileLocation = fileDirectory + "/" + std::string(info[1]); + if (!android::base::ReadFileToString(fileLocation, &content)) { + content = "\n"; + } + printf("%s:\n%s", fileDirectory.c_str(), content.c_str()); + if (content.back() != '\n') + printf("\n"); + } + files.clear(); + } +} +void dumpBatteryEeprom() { + const char *title = "Battery EEPROM"; + const char *files[] { + "/sys/devices/platform/10970000.hsi2c/i2c-4/4-0050/eeprom", + "/sys/devices/platform/10970000.hsi2c/i2c-5/5-0050/eeprom", + "/sys/devices/platform/10da0000.hsi2c/i2c-6/6-0050/eeprom", + "/sys/devices/platform/10da0000.hsi2c/i2c-7/7-0050/eeprom", + "/sys/devices/platform/10c90000.hsi2c/i2c-7/7-0050/eeprom", + "/sys/devices/platform/10c90000.hsi2c/i2c-6/6-0050/eeprom", + }; + std::string result; + std::string xxdCmd; + printTitle(title); + for (auto &file : files) { + if (!isValidFile(file)) + continue; + xxdCmd = "xxd " + std::string(file); + int ret = getCommandOutput(xxdCmd.c_str(), &result); + if (ret < 0) + return; + printf("%s\n", result.c_str()); + } +} +void dumpChargerStats() { + const char *chgStatsTitle = "Charger Stats"; + const char *chgStatsLocation = "/sys/class/power_supply/battery/charge_details"; + const char *chargerStats [][3] { + {"Google Charger", "/sys/kernel/debug/google_charger/", "pps_"}, + {"Google Battery", "/sys/kernel/debug/google_battery/", "ssoc_"}, + }; + std::vector files; + std::string content; + struct dirent *entry; + dumpFileContent(chgStatsTitle, chgStatsLocation); + if (!isUserBuild()) + return; + for (auto &stat : chargerStats) { + DIR *dir = opendir(stat[1]); + if (dir == NULL) + return; + printTitle(stat[0]); + while ((entry = readdir(dir)) != NULL) + if (std::string(entry->d_name).find(stat[2]) != std::string::npos) + files.push_back(entry->d_name); + closedir(dir); + sort(files.begin(), files.end()); + for (auto &file : files) { + std::string fileLocation = std::string(stat[1]) + file; + if (!android::base::ReadFileToString(fileLocation, &content)) { + content = "\n"; + } + printf("%s: %s", file.c_str(), content.c_str()); + if (content.back() != '\n') + printf("\n"); + } + files.clear(); + } +} +void dumpWlcLogs() { + const char *dumpWlcList [][2] { + {"WLC Logs", "/dev/logbuffer_wireless"}, + {"WLC VER", "/sys/class/power_supply/wireless/device/version"}, + {"WLC STATUS", "/sys/class/power_supply/wireless/device/status"}, + {"WLC FW Version", "/sys/class/power_supply/wireless/device/fw_rev"}, + {"RTX", "/dev/logbuffer_rtx"}, + }; + for (auto &row : dumpWlcList) { + if (!isValidFile(row[1])) + printTitle(row[0]); + dumpFileContent(row[0], row[1]); + } +} +void dumpGvoteables() { + const char *directory = "/sys/kernel/debug/gvotables/"; + const char *statusName = "/status"; + const char *title = "gvotables"; + std::string content; + std::vector files; + int ret; + if (!isUserBuild()) + return; + ret = getFilesInDir(directory, &files); + if (ret < 0) + return; + printTitle(title); + for (auto &file : files) { + std::string fileLocation = std::string(directory) + file + std::string(statusName); + if (!android::base::ReadFileToString(fileLocation, &content)) { + continue; + } + printf("%s: %s", file.c_str(), content.c_str()); + if (content.back() != '\n') + printf("\n"); + } + files.clear(); +} +void dumpMitigation() { + const char *mitigationList [][2] { + {"Lastmeal" , "/data/vendor/mitigation/lastmeal.txt"}, + {"Thismeal" , "/data/vendor/mitigation/thismeal.txt"}, + }; + for (auto &row : mitigationList) { + if (!isValidFile(row[1])) + printTitle(row[0]); + dumpFileContent(row[0], row[1]); + } +} +void dumpMitigationStats() { + int ret; + const char *directory = "/sys/devices/virtual/pmic/mitigation/last_triggered_count/"; + const char *capacityDirectory = "/sys/devices/virtual/pmic/mitigation/last_triggered_capacity/"; + const char *timestampDirectory = + "/sys/devices/virtual/pmic/mitigation/last_triggered_timestamp/"; + const char *voltageDirectory = "/sys/devices/virtual/pmic/mitigation/last_triggered_voltage/"; + const char *capacitySuffix = "_cap"; + const char *timeSuffix = "_time"; + const char *voltageSuffix = "_volt"; + const char *countSuffix = "_count"; + const char *title = "Mitigation Stats"; + std::vector files; + std::string content; + std::string fileLocation; + std::string source; + std::string subModuleName; + int count; + int soc; + int time; + int voltage; + ret = getFilesInDir(directory, &files); + if (ret < 0) + return; + printTitle(title); + printf("Source\t\tCount\tSOC\tTime\tVoltage\n"); + for (auto &file : files) { + fileLocation = std::string(directory) + std::string(file); + if (!android::base::ReadFileToString(fileLocation, &content)) { + continue; + } + ret = atoi(android::base::Trim(content).c_str()); + if (ret == -1) + continue; + count = ret; + subModuleName = std::string(file); + subModuleName.erase(subModuleName.find(countSuffix), strlen(countSuffix)); + fileLocation = std::string(capacityDirectory) + std::string(subModuleName) + + std::string(capacitySuffix); + if (!android::base::ReadFileToString(fileLocation, &content)) { + continue; + } + ret = atoi(android::base::Trim(content).c_str()); + if (ret == -1) + continue; + soc = ret; + fileLocation = std::string(timestampDirectory) + std::string(subModuleName) + + std::string(timeSuffix); + if (!android::base::ReadFileToString(fileLocation, &content)) { + continue; + } + ret = atoi(android::base::Trim(content).c_str()); + if (ret == -1) + continue; + time = ret; + fileLocation = std::string(voltageDirectory) + std::string(subModuleName) + + std::string(voltageSuffix); + if (!android::base::ReadFileToString(fileLocation, &content)) { + continue; + } + ret = atoi(android::base::Trim(content).c_str()); + if (ret == -1) + continue; + voltage = ret; + printf("%s \t%i\t%i\t%i\t%i\n", subModuleName.c_str(), count, soc, time, voltage); + } +} +void dumpMitigationDirs() { + const int paramCount = 4; + const char *titles[] = { + "Clock Divider Ratio", + "Clock Stats", + "Triggered Level", + "Instruction", + }; + const char *directories[] = { + "/sys/devices/virtual/pmic/mitigation/clock_ratio/", + "/sys/devices/virtual/pmic/mitigation/clock_stats/", + "/sys/devices/virtual/pmic/mitigation/triggered_lvl/", + "/sys/devices/virtual/pmic/mitigation/instruction/", + }; + const char *paramSuffix[] = {"_ratio", "_stats", "_lvl", ""}; + const char *titleRowVal[] = { + "Source\t\tRatio", + "Source\t\tStats", + "Source\t\tLevel", + "", + }; + const int eraseCnt[] = {6, 6, 4, 0}; + const bool useTitleRow[] = {true, true, true, false}; + std::vector files; + std::string content; + std::string fileLocation; + std::string source; + std::string subModuleName; + std::string readout; + for (int i = 0; i < paramCount; i++) { + printTitle(titles[i]); + if (useTitleRow[i]) { + printf("%s\n", titleRowVal[i]); + } + getFilesInDir(directories[i], &files); + for (auto &file : files) { + fileLocation = std::string(directories[i]) + std::string(file); + if (!android::base::ReadFileToString(fileLocation, &content)) { + continue; + } + readout = android::base::Trim(content); + subModuleName = std::string(file); + subModuleName.erase(subModuleName.find(paramSuffix[i]), eraseCnt[i]); + if (useTitleRow[i]) { + printf("%s \t%s\n", subModuleName.c_str(), readout.c_str()); + } else { + printf("%s=%s\n", subModuleName.c_str(), readout.c_str()); + } + } + } +} +void dumpIrqDurationCounts() { + const char *title = "IRQ Duration Counts"; + const char *colNames = "Source\t\t\t\tlt_5ms_cnt\tbt_5ms_to_10ms_cnt\tgt_10ms_cnt\tCode" + "\tCurrent Threshold (uA)\tCurrent Reading (uA)\n"; + const int nonOdpmChannelCnt = 9; + const int odpmChCnt = 12; + enum Duration { + LT_5MS, + BT_5MS_10MS, + GT_10MS, + DUR_MAX, + }; + const char *irqDurDirectories[] = { + "/sys/devices/virtual/pmic/mitigation/irq_dur_cnt/less_than_5ms_count", + "/sys/devices/virtual/pmic/mitigation/irq_dur_cnt/between_5ms_to_10ms_count", + "/sys/devices/virtual/pmic/mitigation/irq_dur_cnt/greater_than_10ms_count", + }; + enum PowerWarn { + MAIN, + SUB, + PWRWARN_MAX, + }; + const char *pwrwarnDirectories[] = { + "/sys/devices/virtual/pmic/mitigation/main_pwrwarn/", + "/sys/devices/virtual/pmic/mitigation/sub_pwrwarn/", + }; + const char *lpfCurrentDirs[] = { + "/sys/devices/platform/acpm_mfd_bus@15500000/i2c-1/1-001f/s2mpg14-meter/" + "s2mpg14-odpm/iio:device1/lpf_current", + "/sys/devices/platform/acpm_mfd_bus@15510000/i2c-0/0-002f/s2mpg15-meter/" + "s2mpg15-odpm/iio:device0/lpf_current", + }; + bool titlesInitialized = false; + std::vector channelNames; + std::vector channelData[DUR_MAX]; + std::vector pwrwarnThreshold[PWRWARN_MAX]; + std::vector pwrwarnCode[PWRWARN_MAX]; + std::vector lpfCurrentVals[PWRWARN_MAX]; + std::vector files; + std::string content; + std::string token; + std::string tokenCh; + std::string fileLocation; + for (int i = 0; i < DUR_MAX; i++) { + if (!android::base::ReadFileToString(irqDurDirectories[i], &content)) { + return; + } + std::istringstream tokenStream(content); + while (std::getline(tokenStream, token, '\n')) { + if (!titlesInitialized) { + tokenCh = token; + tokenCh.erase(tokenCh.find(':'), tokenCh.length()); + channelNames.push_back(tokenCh); + } + // there is a space after the ':' which needs to be removed + token.erase(0, token.find(':') + 1); + channelData[i].push_back(token); + } + if (!titlesInitialized) + titlesInitialized = true; + } + for (int i = 0; i < PWRWARN_MAX; i++) { + getFilesInDir(pwrwarnDirectories[i], &files); + for (auto &file : files) { + fileLocation = std::string(pwrwarnDirectories[i]) + std::string(file); + if (!android::base::ReadFileToString(fileLocation, &content)) { + continue; + } + std::string readout; + readout = android::base::Trim(content); + std::string readoutThreshold = readout; + readoutThreshold.erase(0, readoutThreshold.find('=') + 1); + std::string readoutCode = readout; + readoutCode.erase(readoutCode.find('='), readoutCode.length()); + pwrwarnThreshold[i].push_back(readoutThreshold); + pwrwarnCode[i].push_back(readoutCode); + } + } + for (int i = 0; i < PWRWARN_MAX; i++) { + if (!android::base::ReadFileToString(lpfCurrentDirs[i], &content)) { + continue; + } + std::istringstream tokenStream(content); + bool first = true; + while (std::getline(tokenStream, token, '\n')) { + token.erase(0, token.find(' ')); + if (first) { + first = false; + continue; + } + lpfCurrentVals[i].push_back(token); + } + } + printTitle(title); + printf("%s", colNames); + for (uint i = 0; i < channelNames.size(); i++) { + std::string code = ""; + std::string threshold = ""; + std::string current = ""; + std::string ltDataMsg = ""; + std::string btDataMsg = ""; + std::string gtDataMsg = ""; + int pmicSel = 0; + int offset = 0; + std::string channelNameSuffix = " \t"; + if (i >= nonOdpmChannelCnt) { + offset = nonOdpmChannelCnt; + if (i >= (odpmChCnt + nonOdpmChannelCnt)) { + pmicSel = 1; + offset = odpmChCnt + nonOdpmChannelCnt; + } + channelNameSuffix = ""; + code = pwrwarnCode[pmicSel][i - offset]; + threshold = pwrwarnThreshold[pmicSel][i - offset]; + current = lpfCurrentVals[pmicSel][i - offset]; + } + if (i < channelData[0].size()) + ltDataMsg = channelData[0][i]; + if (i < channelData[1].size()) + btDataMsg = channelData[1][i]; + if (i < channelData[2].size()) + gtDataMsg = channelData[2][i]; + std::string adjustedChannelName = channelNames[i] + channelNameSuffix; + printf("%s \t%s\t\t%s\t\t\t%s\t\t%s \t%s \t\t%s\n", + adjustedChannelName.c_str(), + ltDataMsg.c_str(), + btDataMsg.c_str(), + gtDataMsg.c_str(), + code.c_str(), + threshold.c_str(), + current.c_str()); + } +} +int main() { + dumpPowerStatsTimes(); + dumpAcpmStats(); + dumpPowerSupplyStats(); + dumpMaxFg(); + dumpPowerSupplyDock(); + dumpLogBufferTcpm(); + dumpTcpc(); + dumpPdEngine(); + dumpWc68(); + dumpLn8411(); + dumpBatteryHealth(); + dumpBatteryDefend(); + dumpChgUserDebug(); + dumpBatteryEeprom(); + dumpChargerStats(); + dumpWlcLogs(); + dumpGvoteables(); + dumpMitigation(); + dumpMitigationStats(); + dumpMitigationDirs(); + dumpIrqDurationCounts(); +} diff --git a/dumpstate/dump_power_gs201.sh b/dumpstate/dump_power_gs201.sh deleted file mode 100644 index 64d75566..00000000 --- a/dumpstate/dump_power_gs201.sh +++ /dev/null @@ -1,315 +0,0 @@ -#!/vendor/bin/sh -build_type="$(getprop ro.build.type)" - -echo "\n------ Power Stats Times ------" -echo -n "Boot: " && /vendor/bin/uptime -s && echo -n "Now: " && date; - -echo "\n------ ACPM stats ------" -for f in /sys/devices/platform/acpm_stats/*_stats ; do - echo "\n\n$f" - cat $f -done - -echo "\n------ CPU PM stats ------" -cat "/sys/devices/system/cpu/cpupm/cpupm/time_in_state" - -echo "\n------ GENPD summary ------" -cat "/d/pm_genpd/pm_genpd_summary" - -echo "\n------ Power supply property battery ------" -cat "/sys/class/power_supply/battery/uevent" -echo "\n------ Power supply property dc ------" -cat "/sys/class/power_supply/dc/uevent" -echo "\n------ Power supply property gcpm ------" -cat "/sys/class/power_supply/gcpm/uevent" -echo "\n------ Power supply property gcpm_pps ------" -cat "/sys/class/power_supply/gcpm_pps/uevent" -echo "\n------ Power supply property main-charger ------" -cat "/sys/class/power_supply/main-charger/uevent" - -if [ -d "/sys/class/power_supply/pca9468-mains/uevent" ] -then - echo "\n------ Power supply property pca9468-mains ------" - cat "/sys/class/power_supply/pca9468-mains/uevent" -else - echo "\n------ Power supply property pca94xx-mains ------" - cat "/sys/class/power_supply/pca94xx-mains/uevent" -fi - -echo "\n------ Power supply property tcpm ------" -cat /sys/class/power_supply/tcpm-source-psy-*/uevent -echo "\n------ Power supply property usb ------" -cat "/sys/class/power_supply/usb/uevent" -echo "\n------ Power supply property wireless ------" -cat "/sys/class/power_supply/wireless/uevent" - -if [ -d "/sys/class/power_supply/maxfg" ] -then - echo "\n------ Power supply property maxfg ------" - cat "/sys/class/power_supply/maxfg/uevent" - echo "\n------ m5_state ------" - cat "/sys/class/power_supply/maxfg/m5_model_state" - echo "\n------ maxfg ------" - cat "/dev/logbuffer_maxfg" - echo "\n------ maxfg_monitor ------" - cat "/dev/logbuffer_maxfg_monitor" -else - echo "\n------ Power supply property maxfg_base ------" - cat "/sys/class/power_supply/maxfg_base/uevent" - echo "\n------ Power supply property maxfg_secondary ------" - cat "/sys/class/power_supply/maxfg_secondary/uevent" - echo "\n------ m5_state ------" - cat "/sys/class/power_supply/maxfg_base/m5_model_state" - echo "\n------ maxfg_base ------" - cat "/dev/logbuffer_maxfg_base" - echo "\n------ maxfg_secondary ------" - cat "/dev/logbuffer_maxfg_secondary" - echo "\n------ maxfg_base_monitor ------" - cat "/dev/logbuffer_maxfg_base_monitor" - echo "\n------ maxfg_secondary_monitor ------" - cat "/dev/logbuffer_maxfg_secondary_monitor" - echo "\n------ google_dual_batt ------" - cat "/dev/logbuffer_dual_batt" -fi - -if [ -e "/dev/maxfg_history" ] -then - echo "\n------ Maxim FG History ------" - xxd "/dev/maxfg_history" -fi - -if [ -d "/sys/class/power_supply/dock" ] -then - echo "\n------ Power supply property dock ------" - cat "/sys/class/power_supply/dock/uevent" -fi - -if [ -e "/dev/logbuffer_tcpm" ] -then - echo "\n------ Logbuffer TCPM ------" - cat "/dev/logbuffer_tcpm" -elif [ $build_type = "userdebug" ] -then - echo "\n------ TCPM logs ------" - if [ -d "/sys/kernel/debug/tcpm" ] - then - cat /sys/kernel/debug/tcpm/* - else - cat /sys/kernel/debug/usb/tcpm* - fi -fi - -echo "\n------ TCPC ------" -max77759tcpc_path="/sys/devices/platform/10d60000.hsi2c/i2c-13/13-0025" -echo "registers:" -cat $max77759tcpc_path/registers -echo "frs:" -cat $max77759tcpc_path/frs -echo "auto_discharge:" -cat $max77759tcpc_path/auto_discharge -echo "bc12_enabled:" -cat $max77759tcpc_path/bc12_enabled -echo "cc_toggle_enable:" -cat $max77759tcpc_path/cc_toggle_enable -echo "contaminant_detection:" -cat $max77759tcpc_path/contaminant_detection -echo "contaminant_detection_status:" -cat $max77759tcpc_path/contaminant_detection_status - -echo "\n------ PD Engine ------" -cat "/dev/logbuffer_usbpd" -echo "\nPOGO Transport" -cat "/dev/logbuffer_pogo_transport" -echo "\n------ PPS-google_cpm ------" -cat "/dev/logbuffer_cpm" -echo "\n------ PPS-dc ------" -cat "/dev/logbuffer_pca9468" - -echo "\n------ Battery Health ------" -cat "/sys/class/power_supply/battery/health_index_stats" -echo "\n------ Battery Health SoC Residency ------" -cat "/sys/class/power_supply/battery/swelling_data" -echo "\n------ BMS ------" -cat "/dev/logbuffer_ssoc" -echo "\n------ TTF ------" -cat "/dev/logbuffer_ttf" -echo "\n------ TTF details ------" -cat "/sys/class/power_supply/battery/ttf_details" -echo "\n------ TTF stats ------" -cat "/sys/class/power_supply/battery/ttf_stats" -echo "\n------ aacr_state ------" -cat "/sys/class/power_supply/battery/aacr_state" -echo "\n------ maxq ------" -cat "/dev/logbuffer_maxq" -echo "\n------ TEMP/DOCK-DEFEND ------" -cat "/dev/logbuffer_bd" - -echo "\n------ TRICKLE-DEFEND Config ------" -cd /sys/devices/platform/google,battery/power_supply/battery/ -for f in `ls bd_*` -do - echo $f: `cat $f` -done - -echo "\n------ DWELL-DEFEND Config ------" -cd /sys/devices/platform/google,charger/ -for f in `ls charge_s*` -do - echo "$f: `cat $f`" -done - -echo "\n------ TEMP-DEFEND Config ------" -cd /sys/devices/platform/google,charger/ -for f in `ls bd_*` -do - echo "$f: `cat $f`" -done - -echo "\n------ DC_registers dump ------" -cat "/sys/class/power_supply/pca94xx-mains/device/registers_dump" -echo "\n------ max77759_chg registers dump ------" -cat "/sys/class/power_supply/main-charger/device/registers_dump" -echo "\n------ max77729_pmic registers dump ------" -cat /sys/devices/platform/*.hsi2c/i2c-*/*-0066/registers_dump - -if [ $build_type = "userdebug" ] -then - echo "\n------ Charging table dump ------" - cat "/d/google_battery/chg_raw_profile" - - echo "\n------ fg_model ------" - for f in /d/maxfg* - do - regs=`cat $f/fg_model` - echo $f: - echo "$regs" - done - - echo "\n------ fg_alo_ver ------" - for f in /d/maxfg* - do - regs=`cat $f/algo_ver` - echo $f: - echo "$regs" - done - - echo "\n------ fg_model_ok ------" - for f in /d/maxfg* - do - regs=`cat $f/model_ok` - echo $f: - echo "$regs" - done - - echo "\n------ fg registers ------" - for f in /d/maxfg* - do - regs=`cat $f/registers` - echo $f: - echo "$regs" - done - - echo "\n------ Maxim FG NV RAM ------" - for f in /d/maxfg* - do - regs=`cat $f/nv_registers` - echo $f: - echo "$regs" - done -fi - -echo "\n------ Battery EEPROM ------" -if [ -e "/sys/devices/platform/10da0000.hsi2c/i2c-15/15-0050/eeprom" ] -then - xxd /sys/devices/platform/10da0000.hsi2c/i2c-15/15-0050/eeprom -fi - -echo "\n------ Charger Stats ------" -cat "/sys/class/power_supply/battery/charge_details" -if [ $build_type = "userdebug" ] -then - echo "\n------ Google Charger ------" - cd /sys/kernel/debug/google_charger/ - for f in `ls pps_*` - do - echo "$f: `cat $f`" - done - echo "\n------ Google Battery ------" - cd /sys/kernel/debug/google_battery/ - for f in `ls ssoc_*` - do - echo "$f: `cat $f`" - done -fi - -echo "\n------ WLC logs ------" -cat "/dev/logbuffer_wireless" -echo "\n------ WLC VER ------" -cat "/sys/class/power_supply/wireless/device/version" -echo "\n------ WLC STATUS ------" -cat "/sys/class/power_supply/wireless/device/status" -echo "\n------ WLC FW Version ------" -cat "/sys/class/power_supply/wireless/device/fw_rev" -echo "\n------ RTX ------" -cat "/dev/logbuffer_rtx" - -if [ $build_type = "userdebug" ] -then - echo "\n------ gvotables ------" - cat /sys/kernel/debug/gvotables/*/status -fi - -echo "\n------ Lastmeal ------" -cat "/data/vendor/mitigation/lastmeal.txt" -echo "\n------ Thismeal ------" -cat "/data/vendor/mitigation/thismeal.txt" -echo "\n------ Mitigation Stats ------" -echo "Source\t\tCount\tSOC\tTime\tVoltage" -for f in `ls /sys/devices/virtual/pmic/mitigation/last_triggered_count/*` -do - count=`cat $f` - a=${f/\/sys\/devices\/virtual\/pmic\/mitigation\/last_triggered_count\//} - b=${f/last_triggered_count/last_triggered_capacity} - c=${f/last_triggered_count/last_triggered_timestamp/} - d=${f/last_triggered_count/last_triggered_voltage/} - cnt=`cat $f` - cap=`cat ${b/count/cap}` - ti=`cat ${c/count/time}` - volt=`cat ${d/count/volt}` - echo "${a/_count/} \t$cnt\t$cap\t$ti\t$volt" -done - -echo "\n------ Clock Divider Ratio ------" -echo \"Source\t\tRatio\" -for f in `ls /sys/devices/virtual/pmic/mitigation/clock_ratio/*` -do ratio=`cat $f` - a=${f/\/sys\/devices\/virtual\/pmic\/mitigation\/clock_ratio\//} - echo "${a/_ratio/} \t$ratio" -done - -echo "\n------ Clock Stats ------" -echo "Source\t\tStats" -for f in `ls /sys/devices/virtual/pmic/mitigation/clock_stats/*` -do - stats=`cat $f` - a=${f/\/sys\/devices\/virtual\/pmic\/mitigation\/clock_stats\//}; - echo "${a/_stats/} \t$stats" -done - -echo "\n------ Triggered Level ------" -echo "Source\t\tLevel" -for f in `ls /sys/devices/virtual/pmic/mitigation/triggered_lvl/*` -do - lvl=`cat $f` - a=${f/\/sys\/devices\/virtual\/pmic\/mitigation\/triggered_lvl\//} - echo "${a/_lvl/} \t$lvl" -done - -echo "\n------ Instruction ------" -for f in `ls /sys/devices/virtual/pmic/mitigation/instruction/*` -do - val=`cat $f` - a=${f/\/sys\/devices\/virtual\/pmic\/mitigation\/instruction\//} - echo "$a=$val" -done - diff --git a/dumpstate/item.mk b/dumpstate/item.mk new file mode 100644 index 00000000..692ff8bf --- /dev/null +++ b/dumpstate/item.mk @@ -0,0 +1 @@ +PRODUCT_PACKAGES += dump_power From f13115f44c909e137aa8f1ff68d0c774759c83a2 Mon Sep 17 00:00:00 2001 From: Roy Luo Date: Fri, 23 Aug 2024 01:28:38 +0000 Subject: [PATCH 17/24] usb: correct sys.usb.controller sysprop system/core/init/init.cpp SetUsbController picks the first udc device if there're multiple udc devices present on the system to populate sys.usb.controller system property. CONFIG_USB_DUMMY_HCD enabled in kernel-5.10 GKI would introduce a dummy udc device named "dummy_udc.0". Depends on timing, the dummy device might be picked up by the init process and incorrectly populate sys.usb.controller. This issue only applies to devices on kernel-5.10 GKI, the WAR is to overwrite the sysprop if it's incorrectly populated by the dummy udc. Bug: 333778731 Test: tested on Cheetah Flag: EXEMPT bugfix Change-Id: I7555dda7f0bb436200ef7cd8a46b785232187cfd --- conf/init.gs201.usb.rc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/init.gs201.usb.rc b/conf/init.gs201.usb.rc index 9ba9eb8a..7d017d31 100644 --- a/conf/init.gs201.usb.rc +++ b/conf/init.gs201.usb.rc @@ -417,3 +417,7 @@ on property:ro.bootmode=usbuwb on property:vendor.usb.contaminantdisable=true exec /vendor/bin/hw/disable_contaminant_detection.sh + +# WAR for kernel 5.10 with CONFIG_USB_DUMMY_HCD enabled +on property:sys.usb.controller=dummy_udc.0 + setprop sys.usb.controller "11210000.dwc3" From fe86e10394c354a0aa6d634a171e154fb1013e36 Mon Sep 17 00:00:00 2001 From: Ankit Goyal Date: Wed, 28 Aug 2024 22:54:00 -0700 Subject: [PATCH 18/24] Delete mapper4 manifest Bug: 362183626 Flag: EXEMPT manifest update Test: Boot to home on shiba Change-Id: I828ee34e1de2fb0ac228688517d4be89e43247d1 --- manifest.xml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/manifest.xml b/manifest.xml index 34b0326d..8c6ed15e 100644 --- a/manifest.xml +++ b/manifest.xml @@ -1,13 +1,4 @@ - - android.hardware.graphics.mapper - passthrough - 4.0 - - IMapper - default - - android.hardware.boot IBootControl/default From 646cc8fdcfeb9ab05244345dd5c1c4c7dd565e1a Mon Sep 17 00:00:00 2001 From: kellyhung Date: Fri, 23 Aug 2024 13:04:47 +0800 Subject: [PATCH 19/24] Add soong config use_google_qns in device/google/gs201/device.mk Bug: 360757079 Test: lunch r11-trunk_staging-userdebug; m grilservice Flag: EXEMPT bugfix Change-Id: Ia10d6d73f7349b6a5de5046236c8498f54962036 --- device.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/device.mk b/device.mk index 726de305..eeecde31 100644 --- a/device.mk +++ b/device.mk @@ -212,6 +212,7 @@ USE_LASSEN_OEMHOOK := true ifneq ($(BOARD_WITHOUT_RADIO),true) PRODUCT_SOONG_NAMESPACES += vendor/google/tools/power-anomaly-sitril $(call soong_config_set,sitril,use_lassen_oemhook_with_radio,true) + $(call soong_config_set,grilservice,use_google_qns,true) endif # Use for GRIL From fcc8f3875f5849b6abed2bced47292f64e15a243 Mon Sep 17 00:00:00 2001 From: Charlie Yang Date: Wed, 4 Sep 2024 11:02:52 +0000 Subject: [PATCH 20/24] Revert "Add soong config use_google_qns in device/google/gs201/d..." Revert submission 28947244-grilservice Reason for revert: b/363911795 Reverted changes: /q/submissionid:28947244-grilservice Change-Id: I81e58d0f1190a592f388ab1031275e6f2656217b --- device.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/device.mk b/device.mk index eeecde31..726de305 100644 --- a/device.mk +++ b/device.mk @@ -212,7 +212,6 @@ USE_LASSEN_OEMHOOK := true ifneq ($(BOARD_WITHOUT_RADIO),true) PRODUCT_SOONG_NAMESPACES += vendor/google/tools/power-anomaly-sitril $(call soong_config_set,sitril,use_lassen_oemhook_with_radio,true) - $(call soong_config_set,grilservice,use_google_qns,true) endif # Use for GRIL From 541efd2ce2ea8c041f841537723c7596cdae0c60 Mon Sep 17 00:00:00 2001 From: carmenyip Date: Tue, 27 Aug 2024 08:19:37 +0000 Subject: [PATCH 21/24] extended_log: update directory permissions for gs201 Bug: 336638376 Test: $ cd data/vendor/radio $ ls -la Flag: NONE changing directory permissions only Change-Id: I972634ab85eb8416b43183712394c27d4d0340ee --- conf/init.modem.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/init.modem.rc b/conf/init.modem.rc index 6c89e3b2..861f0a18 100644 --- a/conf/init.modem.rc +++ b/conf/init.modem.rc @@ -11,7 +11,7 @@ on post-fs-data mkdir /data/vendor/slog 0771 system system # Modem extended log folder - mkdir /data/vendor/radio/extended_logs 0770 radio system + mkdir /data/vendor/radio/extended_logs 0771 radio system # Modem MDS log folder mkdir /data/vendor/radio/mds 0771 radio system From a664dadaa8738f1a2ac91af8628777693587b0b9 Mon Sep 17 00:00:00 2001 From: Ocean Chen Date: Wed, 4 Sep 2024 15:40:17 +0800 Subject: [PATCH 22/24] Switch from the BFQ to the mq-deadline I/O scheduler The mq-deadline I/O scheduler is more stable than BFQ. Additionally, the boot time is shorter with the mq-deadline I/O scheduler. It only changes the scheduler on new kernel. Bug: 186902601 Test: forrest build Change-Id: I5d336b3f146ca673c83c03304773d0ccf4c01e77 Signed-off-by: Ocean Chen --- conf/init.gs201.rc | 1 + device.mk | 8 ++++++++ storage/5.10/init.gs201.storage.rc | 3 +++ storage/6.1/init.gs201.storage.rc | 2 ++ 4 files changed, 14 insertions(+) create mode 100644 storage/5.10/init.gs201.storage.rc create mode 100644 storage/6.1/init.gs201.storage.rc diff --git a/conf/init.gs201.rc b/conf/init.gs201.rc index 15601204..028db4b6 100644 --- a/conf/init.gs201.rc +++ b/conf/init.gs201.rc @@ -1,3 +1,4 @@ +import /vendor/etc/init/hw/init.gs201.storage.rc import /vendor/etc/init/hw/init.gs201.usb.rc import android.hardware.drm@1.2-service.widevine.rc import init.exynos.sensorhub.rc diff --git a/device.mk b/device.mk index 726de305..95b4fc28 100644 --- a/device.mk +++ b/device.mk @@ -356,6 +356,14 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \ device/google/gs201/conf/init.gs201.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.gs201.rc +ifneq (,$(filter 5.%, $(TARGET_LINUX_KERNEL_VERSION))) +PRODUCT_COPY_FILES += \ + device/google/gs201/storage/5.10/init.gs201.storage.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.gs201.storage.rc +else +PRODUCT_COPY_FILES += \ + device/google/gs201/storage/6.1/init.gs201.storage.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.gs201.storage.rc +endif + ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT))) PRODUCT_COPY_FILES += \ device/google/gs201/conf/init.debug.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.debug.rc \ diff --git a/storage/5.10/init.gs201.storage.rc b/storage/5.10/init.gs201.storage.rc new file mode 100644 index 00000000..7df260de --- /dev/null +++ b/storage/5.10/init.gs201.storage.rc @@ -0,0 +1,3 @@ +on init + write /sys/block/sda/queue/scheduler bfq + write /sys/block/sda/queue/iosched/slice_idle 0 \ No newline at end of file diff --git a/storage/6.1/init.gs201.storage.rc b/storage/6.1/init.gs201.storage.rc new file mode 100644 index 00000000..3d88bb69 --- /dev/null +++ b/storage/6.1/init.gs201.storage.rc @@ -0,0 +1,2 @@ +on init + write /sys/block/sda/queue/scheduler mq-deadline \ No newline at end of file From 8d194cb38ce88f8087bdc7c8b0aad4e2b7ef9e27 Mon Sep 17 00:00:00 2001 From: samou Date: Wed, 4 Sep 2024 16:19:55 +0000 Subject: [PATCH 23/24] bcl: remove charging debugfs data logging Flag: EXEMPT refactor Bug: 362322242 Change-Id: Ibdd3df9c7a2dfeab36a43d32dc092fefdec9d77d Signed-off-by: samou --- dumpstate/dump_power.cpp | 49 ---------------------------------------- 1 file changed, 49 deletions(-) diff --git a/dumpstate/dump_power.cpp b/dumpstate/dump_power.cpp index 1841502b..adb6c9b5 100644 --- a/dumpstate/dump_power.cpp +++ b/dumpstate/dump_power.cpp @@ -117,7 +117,6 @@ void dumpAcpmStats() { void dumpPowerSupplyStats() { const char* dumpList[][2] = { {"CPU PM stats", "/sys/devices/system/cpu/cpupm/cpupm/time_in_state"}, - {"GENPD summary", "/d/pm_genpd/pm_genpd_summary"}, {"Power supply property battery", "/sys/class/power_supply/battery/uevent"}, {"Power supply property dc", "/sys/class/power_supply/dc/uevent"}, {"Power supply property gcpm", "/sys/class/power_supply/gcpm/uevent"}, @@ -292,53 +291,6 @@ void dumpBatteryDefend() { files.clear(); } } -void dumpChgUserDebug() { - std::vector files; - struct dirent *entry; - std::string content; - const char *chgUserDebug [][2] { - {"DC_registers dump", "/sys/class/power_supply/dc-mains/device/registers_dump"}, - {"max77759_chg registers dump", "/d/max77759_chg/registers"}, - {"max77729_pmic registers dump", "/d/max77729_pmic/registers"}, - {"Charging table dump", "/d/google_battery/chg_raw_profile"}, - }; - const std::string debugfs = "/d/"; - const char *maxFgStrMatch = "maxfg"; - const char *fgInfo [][2] { - {"fg_model", "fg_model"}, - {"fg_alo_ver", "algo_ver"}, - {"fg_model_ok", "model_ok"}, - {"fg registers", "registers"}, - {"Maxim FG NV RAM", "nv_registers"}, - }; - if (!isUserBuild()) - return; - for (auto &row : chgUserDebug) { - dumpFileContent(row[0], row[1]); - } - for (auto &info : fgInfo) { - DIR *dir = opendir(debugfs.c_str()); - if (dir == NULL) - return; - printTitle(info[0]); - while ((entry = readdir(dir)) != NULL) - if (std::string(entry->d_name).find(maxFgStrMatch) != std::string::npos) - files.push_back(entry->d_name); - closedir(dir); - sort(files.begin(), files.end()); - for (auto &file : files) { - std::string fileDirectory = debugfs + file; - std::string fileLocation = fileDirectory + "/" + std::string(info[1]); - if (!android::base::ReadFileToString(fileLocation, &content)) { - content = "\n"; - } - printf("%s:\n%s", fileDirectory.c_str(), content.c_str()); - if (content.back() != '\n') - printf("\n"); - } - files.clear(); - } -} void dumpBatteryEeprom() { const char *title = "Battery EEPROM"; const char *files[] { @@ -710,7 +662,6 @@ int main() { dumpLn8411(); dumpBatteryHealth(); dumpBatteryDefend(); - dumpChgUserDebug(); dumpBatteryEeprom(); dumpChargerStats(); dumpWlcLogs(); From f0733782af6e9b02f4ce725e92bad52e8fe7c7d9 Mon Sep 17 00:00:00 2001 From: Jerry Chang Date: Mon, 1 Jul 2024 08:53:07 +0000 Subject: [PATCH 24/24] Add input event profile to mitigate input latency of input threads Bug: 347122505 Test: check the priority and latency of input thread in Perffeto Flag: NONE early device setting updates Change-Id: Ia05fc4592ebe3946a52e10e435bc8f8cef7becc9 --- conf/init.gs201.rc | 4 ++++ task_profiles.json | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/conf/init.gs201.rc b/conf/init.gs201.rc index 028db4b6..9223edd5 100644 --- a/conf/init.gs201.rc +++ b/conf/init.gs201.rc @@ -52,6 +52,8 @@ on init chown system system /proc/vendor_sched/prefer_idle_clear chown system system /proc/vendor_sched/pmu_poll_enable chown system system /proc/vendor_sched/pmu_poll_time + chown system system /proc/vendor_sched/uclamp_fork_reset_clear + chown system system /proc/vendor_sched/uclamp_fork_reset_set chown system system /sys/devices/system/cpu/cpufreq/policy0/sched_pixel/lcpi_threshold chown system system /sys/devices/system/cpu/cpufreq/policy0/sched_pixel/spc_threshold chown system system /sys/devices/system/cpu/cpufreq/policy0/sched_pixel/limit_frequency @@ -101,6 +103,8 @@ on init chmod 0220 /proc/vendor_sched/prefer_idle_clear chmod 0220 /proc/vendor_sched/pmu_poll_enable chmod 0220 /proc/vendor_sched/pmu_poll_time + chmod 0220 /proc/vendor_sched/uclamp_fork_reset_clear + chmod 0220 /proc/vendor_sched/uclamp_fork_reset_set start vendor.keymaster-4-0 diff --git a/task_profiles.json b/task_profiles.json index fda6c3ea..81e5e41f 100644 --- a/task_profiles.json +++ b/task_profiles.json @@ -288,6 +288,10 @@ { "Name": "OtaProfiles", "Profiles": [ "OtaPerformance", "ProcessCapacityNormal", "LowIoPriority", "TimerSlackHigh" ] + }, + { + "Name": "InputPolicy", + "Profiles": [ "ResetUclampGrp" ] } ] }