diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk index debe2b30..e071f0de 100644 --- a/BoardConfig-common.mk +++ b/BoardConfig-common.mk @@ -22,6 +22,7 @@ TARGET_SOC := gs201 TARGET_SOC_NAME := google USES_DEVICE_GOOGLE_GS201 := true +$(call soong_config_set,CitadelProvision,target_soc,gs201) TARGET_ARCH := arm64 TARGET_ARCH_VARIANT := armv8-2a @@ -49,6 +50,7 @@ BOARD_KERNEL_CMDLINE += cgroup_disable=memory BOARD_KERNEL_CMDLINE += rcupdate.rcu_expedited=1 rcu_nocbs=all rcutree.enable_rcu_lazy BOARD_KERNEL_CMDLINE += stack_depot_disable=off page_pinner=on BOARD_KERNEL_CMDLINE += swiotlb=1024 +BOARD_KERNEL_CMDLINE += cgroup.memory=nokmem BOARD_KERNEL_CMDLINE += disable_dma32=on BOARD_BOOTCONFIG += androidboot.boot_devices=14700000.ufs @@ -73,7 +75,7 @@ TARGET_RECOVERY_FSTAB_GENRULE := gen_fstab.gs201 TARGET_RECOVERY_PIXEL_FORMAT := ABGR_8888 TARGET_RECOVERY_UI_MARGIN_HEIGHT := 165 TARGET_RECOVERY_UI_LIB := \ - librecovery_ui_pixel \ + //hardware/google/pixel/recovery:librecovery_ui_pixel \ libfstab AB_OTA_UPDATER := true @@ -193,7 +195,16 @@ BOARD_SUPPORT_MFC_ENC_RGB := true BOARD_USE_BLOB_ALLOCATOR := false BOARD_SUPPORT_MFC_ENC_BT2020 := true BOARD_SUPPORT_FLEXIBLE_P010 := true - +$(call soong_config_set,video_codec,target_soc_name,$(TARGET_SOC_NAME)) +$(call soong_config_set_bool,video_codec,board_use_codec2_hidl_1_2,$(BOARD_USE_CODEC2_HIDL_1_2)) +$(call soong_config_set_bool,video_codec,board_use_csc_filter,$(BOARD_USE_CSC_FILTER)) +$(call soong_config_set_bool,video_codec,board_use_dec_sw_csc,$(BOARD_USE_DEC_SW_CSC)) +$(call soong_config_set_bool,video_codec,board_use_enc_sw_csc,$(BOARD_USE_ENC_SW_CSC)) +$(call soong_config_set_bool,video_codec,board_support_mfc_enc_rgb,$(BOARD_SUPPORT_MFC_ENC_RGB)) +$(call soong_config_set_bool,video_codec,board_use_blob_allocator,$(BOARD_USE_BLOB_ALLOCATOR)) +$(call soong_config_set_bool,video_codec,board_support_mfc_enc_bt2020,$(BOARD_SUPPORT_MFC_ENC_BT2020)) +$(call soong_config_set_bool,video_codec,board_support_flexible_p010,$(BOARD_SUPPORT_FLEXIBLE_P010)) +$(call soong_config_set_bool,video_codec,board_use_codec2_aidl,$(if $(BOARD_USE_CODEC2_AIDL),true,false)) ######################## BOARD_SUPER_PARTITION_SIZE := 8531214336 diff --git a/conf/init.debug.rc b/conf/init.debug.rc index 3f8be42f..eb970541 100644 --- a/conf/init.debug.rc +++ b/conf/init.debug.rc @@ -15,6 +15,15 @@ on init chown system system /sys/devices/platform/sjtag_gsa/interface/end chown system system /sys/devices/platform/sjtag_gsa/interface/pubkey +# HSUM separated main user from the SYSTEM user, granting write permissions +# for write only SJTAG sysfs files + chmod 220 /sys/devices/platform/sjtag_ap/interface/auth + chmod 220 /sys/devices/platform/sjtag_ap/interface/begin + chmod 220 /sys/devices/platform/sjtag_ap/interface/end + chmod 220 /sys/devices/platform/sjtag_gsa/interface/auth + chmod 220 /sys/devices/platform/sjtag_gsa/interface/begin + chmod 220 /sys/devices/platform/sjtag_gsa/interface/end + on property:vendor.debug.ramdump.force_crash=true write /sys/kernel/pixel_debug/trigger "null" diff --git a/conf/init.gs201.rc b/conf/init.gs201.rc index 68fbc433..7bcbd819 100644 --- a/conf/init.gs201.rc +++ b/conf/init.gs201.rc @@ -19,10 +19,6 @@ on init # Disable util-awareness write /proc/vendor_sched/teo_util_threshold "1024 1024 1024" - # Boot time fs tuning - write /sys/block/sda/queue/scheduler bfq - write /sys/block/sda/queue/iosched/slice_idle 0 - chown system system /proc/vendor_sched/groups/bg/set_task_group chown system system /proc/vendor_sched/groups/cam/set_task_group chown system system /proc/vendor_sched/groups/fg/set_task_group @@ -100,13 +96,90 @@ on init chmod 0220 /proc/vendor_sched/groups/ota/set_proc_group chmod 0220 /proc/vendor_sched/prefer_idle_set chmod 0220 /proc/vendor_sched/prefer_idle_clear - chmod 0220 /proc/vendor_sched/pmu_poll_enable + chmod 0660 /proc/vendor_sched/pmu_poll_enable chmod 0220 /proc/vendor_sched/pmu_poll_time chmod 0220 /proc/vendor_sched/uclamp_fork_reset_clear chmod 0220 /proc/vendor_sched/uclamp_fork_reset_set start vendor.keymaster-4-0 + # Change permission of sched qos nodes + chown system system /proc/vendor_sched/sched_qos/adpf_set + chown system system /proc/vendor_sched/sched_qos/adpf_clear + chown system system /proc/vendor_sched/sched_qos/auto_uclamp_max_set + chown system system /proc/vendor_sched/sched_qos/auto_uclamp_max_clear + chown system system /proc/vendor_sched/sched_qos/boost_prio_set + chown system system /proc/vendor_sched/sched_qos/boost_prio_clear + chown system system /proc/vendor_sched/sched_qos/preempt_wakeup_set + chown system system /proc/vendor_sched/sched_qos/preempt_wakeup_clear + chown system system /proc/vendor_sched/sched_qos/prefer_fit_set + chown system system /proc/vendor_sched/sched_qos/prefer_fit_clear + chown system system /proc/vendor_sched/sched_qos/prefer_high_cap_set + chown system system /proc/vendor_sched/sched_qos/prefer_high_cap_clear + chown system system /proc/vendor_sched/sched_qos/prefer_idle_set + chown system system /proc/vendor_sched/sched_qos/prefer_idle_clear + chown system system /proc/vendor_sched/sched_qos/rampup_multiplier_set + chown system system /proc/vendor_sched/sched_qos/rampup_multiplier_clear + + chmod 0220 /proc/vendor_sched/sched_qos/adpf_set + chmod 0220 /proc/vendor_sched/sched_qos/adpf_clear + chmod 0220 /proc/vendor_sched/sched_qos/auto_uclamp_max_set + chmod 0220 /proc/vendor_sched/sched_qos/auto_uclamp_max_clear + chmod 0220 /proc/vendor_sched/sched_qos/boost_prio_set + chmod 0220 /proc/vendor_sched/sched_qos/boost_prio_clear + chmod 0220 /proc/vendor_sched/sched_qos/preempt_wakeup_set + chmod 0220 /proc/vendor_sched/sched_qos/preempt_wakeup_clear + chmod 0220 /proc/vendor_sched/sched_qos/prefer_fit_set + chmod 0220 /proc/vendor_sched/sched_qos/prefer_fit_clear + chmod 0220 /proc/vendor_sched/sched_qos/prefer_high_cap_set + chmod 0220 /proc/vendor_sched/sched_qos/prefer_high_cap_clear + chmod 0220 /proc/vendor_sched/sched_qos/prefer_idle_set + chmod 0220 /proc/vendor_sched/sched_qos/prefer_idle_clear + chmod 0220 /proc/vendor_sched/sched_qos/rampup_multiplier_set + chmod 0220 /proc/vendor_sched/sched_qos/rampup_multiplier_clear + + # Enable sched_qos for some groups + write /proc/vendor_sched/groups/ta/qos_adpf_enable 1 + write /proc/vendor_sched/groups/ta/qos_auto_uclamp_max_enable 1 + write /proc/vendor_sched/groups/ta/qos_boost_prio_enable 1 + write /proc/vendor_sched/groups/ta/qos_preempt_wakeup_enable 1 + write /proc/vendor_sched/groups/ta/qos_prefer_fit_enable 1 + write /proc/vendor_sched/groups/ta/qos_prefer_high_cap_enable 1 + write /proc/vendor_sched/groups/ta/qos_prefer_idle_enable 1 + write /proc/vendor_sched/groups/ta/qos_rampup_multiplier_enable 1 + write /proc/vendor_sched/groups/fg/qos_adpf_enable 1 + write /proc/vendor_sched/groups/fg/qos_auto_uclamp_max_enable 1 + write /proc/vendor_sched/groups/fg/qos_boost_prio_enable 1 + write /proc/vendor_sched/groups/fg/qos_preempt_wakeup_enable 1 + write /proc/vendor_sched/groups/fg/qos_prefer_fit_enable 1 + write /proc/vendor_sched/groups/fg/qos_prefer_high_cap_enable 1 + write /proc/vendor_sched/groups/fg/qos_prefer_idle_enable 1 + write /proc/vendor_sched/groups/fg/qos_rampup_multiplier_enable 1 + write /proc/vendor_sched/groups/fg_wi/qos_adpf_enable 1 + write /proc/vendor_sched/groups/fg_wi/qos_auto_uclamp_max_enable 1 + write /proc/vendor_sched/groups/fg_wi/qos_boost_prio_enable 1 + write /proc/vendor_sched/groups/fg_wi/qos_preempt_wakeup_enable 1 + write /proc/vendor_sched/groups/fg_wi/qos_prefer_fit_enable 1 + write /proc/vendor_sched/groups/fg_wi/qos_prefer_high_cap_enable 1 + write /proc/vendor_sched/groups/fg_wi/qos_prefer_idle_enable 1 + write /proc/vendor_sched/groups/fg_wi/qos_rampup_multiplier_enable 1 + write /proc/vendor_sched/groups/cam/qos_adpf_enable 1 + write /proc/vendor_sched/groups/cam/qos_auto_uclamp_max_enable 1 + write /proc/vendor_sched/groups/cam/qos_prefer_fit_enable 1 + write /proc/vendor_sched/groups/cam/qos_prefer_high_cap_enable 1 + write /proc/vendor_sched/groups/cam/qos_prefer_idle_enable 1 + write /proc/vendor_sched/groups/cam/qos_rampup_multiplier_enable 1 + write /proc/vendor_sched/groups/cam_power/qos_adpf_enable 1 + write /proc/vendor_sched/groups/cam_power/qos_auto_uclamp_max_enable 1 + write /proc/vendor_sched/groups/cam_power/qos_prefer_fit_enable 1 + write /proc/vendor_sched/groups/cam_power/qos_prefer_high_cap_enable 1 + write /proc/vendor_sched/groups/cam_power/qos_prefer_idle_enable 1 + write /proc/vendor_sched/groups/cam_power/qos_rampup_multiplier_enable 1 + write /proc/vendor_sched/groups/rt/qos_adpf_enable 1 + write /proc/vendor_sched/groups/rt/qos_rampup_multiplier_enable 1 + write /proc/vendor_sched/groups/sf/qos_adpf_enable 1 + write /proc/vendor_sched/groups/sf/qos_rampup_multiplier_enable 1 + # ZRAM setup write /sys/block/zram0/comp_algorithm lz77eh write /proc/sys/vm/page-cluster 0 @@ -156,14 +229,11 @@ on init # governor setting write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor sched_pixel write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/up_rate_limit_us 500 - write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/down_rate_limit_us 5000 write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/down_rate_limit_scale_pow 2 write /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor sched_pixel write /sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/up_rate_limit_us 500 - write /sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/down_rate_limit_us 20000 write /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor sched_pixel write /sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/up_rate_limit_us 500 - write /sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/down_rate_limit_us 20000 # memlat cpuidle awareness setting write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu0_memlat@17000010/memlat_cpuidle_state_aware 2 @@ -335,6 +405,11 @@ on late-fs # Mount RW partitions which need run fsck mount_all --late +on late-init + write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/down_rate_limit_us 5000 + write /sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/down_rate_limit_us 20000 + write /sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/down_rate_limit_us 20000 + on post-fs-data # Log data folder mkdir /data/vendor 0771 radio system @@ -373,8 +448,8 @@ on post-fs-data restorecon /sys/kernel/debug/tracing/trace_marker # ranging sensor - chown system system /dev/stmvl53l1_ranging - chmod 0660 /dev/stmvl53l1_ranging + chown system system /dev/ispolin_ranging + chmod 0660 /dev/ispolin_ranging # Factory calibration files chmod 0771 /mnt/vendor/persist/camera diff --git a/default-permissions.xml b/default-permissions.xml index afe5bc4d..428b7193 100644 --- a/default-permissions.xml +++ b/default-permissions.xml @@ -180,10 +180,14 @@ - + + + + diff --git a/device.mk b/device.mk index d25f33e7..5f6c99e3 100644 --- a/device.mk +++ b/device.mk @@ -219,6 +219,9 @@ endif # Use for GRIL USES_LASSEN_MODEM := true $(call soong_config_set, vendor_ril_google_feature, use_lassen_modem, true) +ifneq ($(BOARD_WITHOUT_RADIO),true) +$(call soong_config_set_bool,grilservice,use_google_qns,true) +endif ifeq ($(USES_GOOGLE_DIALER_CARRIER_SETTINGS),true) USE_GOOGLE_DIALER := true @@ -393,6 +396,10 @@ PRODUCT_COPY_FILES += \ include device/google/gs-common/insmod/insmod.mk +# Insmod config files +PRODUCT_COPY_FILES += \ + $(call find-copy-subdir-files,init.insmod.*.cfg,$(TARGET_KERNEL_DIR),$(TARGET_COPY_OUT_VENDOR_DLKM)/etc) + # For creating dtbo image PRODUCT_HOST_PACKAGES += \ mkdtimg @@ -959,9 +966,6 @@ USE_EARLY_SEND_DEVICE_INFO := true ifneq ($(BOARD_WITHOUT_RADIO),true) $(call inherit-product-if-exists, vendor/samsung_slsi/telephony/$(BOARD_USES_SHARED_VENDOR_TELEPHONY)/common/device-vendor.mk) -# modem_svc_sit daemon -PRODUCT_PACKAGES += modem_svc_sit - # modem logging binary/configs PRODUCT_PACKAGES += modem_logging_control @@ -1104,7 +1108,7 @@ PRODUCT_SOONG_NAMESPACES += \ vendor/google_devices/gs201/proprietary/gchips/tpu/nnapi_stable_aidl \ vendor/google_devices/gs201/proprietary/gchips/tpu/aidl \ vendor/google_devices/gs201/proprietary/gchips/tpu/hal \ - vendor/google_devices/gs201/proprietary/gchips/tpu/tachyon/api \ + vendor/google_devices/gs201/proprietary/gchips/tpu/tachyon/tachyon_apis \ vendor/google_devices/gs201/proprietary/gchips/tpu/tachyon/service # TPU firmware PRODUCT_PACKAGES += edgetpu-janeiro.fw @@ -1169,12 +1173,19 @@ include device/google/gs201/dumpstate/item.mk DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE += device/google/gs201/device_framework_matrix_product.xml # Preopt SystemUI +ifneq ($(RELEASE_SYSTEMUI_USE_SPEED_PROFILE), true) PRODUCT_DEXPREOPT_SPEED_APPS += SystemUIGoogle # For internal -PRODUCT_DEXPREOPT_SPEED_APPS += SystemUI # For AOSP +PRODUCT_DEXPREOPT_SPEED_APPS += SystemUI # For AOSP +endif -# Compile SystemUI on device with `speed`. +# Set on-device compilation mode for SystemUI. +ifeq ($(RELEASE_SYSTEMUI_USE_SPEED_PROFILE), true) +PRODUCT_PROPERTY_OVERRIDES += \ + dalvik.vm.systemuicompilerfilter=speed-profile +else PRODUCT_PROPERTY_OVERRIDES += \ dalvik.vm.systemuicompilerfilter=speed +endif # Keymint configuration PRODUCT_COPY_FILES += \ diff --git a/device_framework_matrix_product.xml b/device_framework_matrix_product.xml index 02d92bc5..c0b4deb2 100644 --- a/device_framework_matrix_product.xml +++ b/device_framework_matrix_product.xml @@ -118,7 +118,7 @@ vendor.google.wifi_ext - 2-3 + 2-4 IWifiExt default diff --git a/dumpstate/dump_power.cpp b/dumpstate/dump_power.cpp index adb6c9b5..878f26aa 100644 --- a/dumpstate/dump_power.cpp +++ b/dumpstate/dump_power.cpp @@ -43,9 +43,19 @@ int getCommandOutput(const char *cmd, std::string *output) { return 0; } bool isValidFile(const char *file) { - if (!access(file, R_OK)) { - return false; + FILE *fp = fopen(file, "r"); + if (fp != NULL) { + fclose(fp); + return true; } + return false; +} +bool isValidDir(const char *directory) { + DIR *dir = opendir(directory); + if (dir == NULL) + return false; + + closedir(dir); return true; } bool isUserBuild() { @@ -122,8 +132,8 @@ void dumpPowerSupplyStats() { {"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 pca94xx-mains", "/sys/class/power_supply/pca94xx-mains/uevent"}, + {"Power supply property tcpm", "/sys/class/power_supply/tcpm-source-psy-i2c-max77759tcpc/uevent"}, {"Power supply property usb", "/sys/class/power_supply/usb/uevent"}, {"Power supply property wireless", "/sys/class/power_supply/wireless/uevent"}, }; @@ -133,35 +143,40 @@ void dumpPowerSupplyStats() { } void dumpMaxFg() { const char *maxfgLoc = "/sys/class/power_supply/maxfg"; + const char *maxfgDualLoc = "/sys/class/power_supply/maxfg_base"; 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"}, + {"maxfg registers", "/sys/class/power_supply/maxfg/registers_dump"}, + {"maxfg logbuffer", "/dev/logbuffer_maxfg"}, + {"maxfg_monitor logbuffer", "/dev/logbuffer_maxfg_monitor"}, }; - const char *maxfgFlip [][2] = { + const char *maxfgDual [][2] = { {"Power supply property maxfg_base", "/sys/class/power_supply/maxfg_base/uevent"}, - {"Power supply property maxfg_flip", "/sys/class/power_supply/maxfg_flip/uevent"}, + {"Power supply property maxfg_secondary", "/sys/class/power_supply/maxfg_secondary/uevent"}, + {"maxfg_base registers", "/sys/class/power_supply/maxfg_base/registers_dump"}, + {"maxfg_secondary registers", "/sys/class/power_supply/maxfg_secondary/registers_dump"}, {"m5_state", "/sys/class/power_supply/maxfg_base/m5_model_state"}, - {"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"}, + {"maxfg_base logbuffer", "/dev/logbuffer_maxfg_base"}, + {"maxfg_secondary logbuffer", "/dev/logbuffer_maxfg_secondary"}, + {"maxfg_base logbuffer", "/dev/logbuffer_maxfg_base_monitor"}, + {"maxfg_secondary logbuffer", "/dev/logbuffer_maxfg_secondary_monitor"}, + {"dual_batt logbuffer", "/dev/logbuffer_dual_batt"}, }; const char *maxfgHistoryName = "Maxim FG History"; const char *maxfgHistoryDir = "/dev/maxfg_history"; std::string content; - if (isValidFile(maxfgLoc)) { + if (isValidDir(maxfgLoc)) { for (const auto &row : maxfg) { dumpFileContent(row[0], row[1]); } - } else { - for (const auto &row : maxfgFlip) { + } else if (isValidDir(maxfgDualLoc)){ + for (const auto &row : maxfgDual) { dumpFileContent(row[0], row[1]); } - } - if (isValidFile(maxfgHistoryDir)) { - dumpFileContent(maxfgHistoryName, maxfgHistoryDir); + if (isValidFile(maxfgHistoryDir)) { + dumpFileContent(maxfgHistoryName, maxfgHistoryDir); + } } } void dumpPowerSupplyDock() { @@ -184,65 +199,60 @@ void dumpLogBufferTcpm() { 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"}, + const char* max77759TcpcHead = "TCPC Device Attributes"; + const char* directory = "/sys/class/typec/port0/device"; + const char* max77759Tcpc [] { + "auto_discharge", + "bc12_enabled", + "cc_toggle_enable", + "contaminant_detection", + "contaminant_detection_status", + "frs", + "irq_hpd_count", + "manual_disable_vbus", + "non_compliant_reasons", + "sbu_pullup", + "update_sdp_enum_timeout", + "usb_limit_accessory_current", + "usb_limit_accessory_enable", + "usb_limit_sink_current", + "usb_limit_sink_enable", + "usb_limit_source_enable", }; - std::vector files; + std::string content; + std::string tcpcRegistersPath(std::string(directory) + "/registers"); + + dumpFileContent("TCPC Registers", tcpcRegistersPath.c_str()); + 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()); - } + + for (auto& tcpcVal : max77759Tcpc) { + std::string filename = std::string(directory) + "/" + std::string(tcpcVal); + printf("%s: ", tcpcVal); + android::base::ReadFileToString(filename, &content); + if (!content.empty() && (content.back() == '\n' || content.back() == '\r')) + content.pop_back(); + printf("%s\n", content.c_str()); } + printf("\n"); } + void dumpPdEngine() { - const char* pdEngine [][2] { - {"PD Engine", "/dev/logbuffer_usbpd"}, - {"PPS-google_cpm", "/dev/logbuffer_cpm"}, - {"PPS-dc", "/dev/logbuffer_pca9468"}, + const char* pdEngine [][3] { + {"TCPC logbuffer", "/dev/logbuffer_usbpd"}, + {"pogo_transport logbuffer", "/dev/logbuffer_pogo_transport"}, + {"PPS-google_cpm logbuffer", "/dev/logbuffer_cpm"}, + {"PPS-pca9468 logbuffer", "/dev/logbuffer_pca9468"}, }; 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"}, + {"Battery Health SoC Residency", "/sys/class/power_supply/battery/swelling_data"}, {"BMS", "/dev/logbuffer_ssoc"}, {"TTF", "/dev/logbuffer_ttf"}, {"TTF details", "/sys/class/power_supply/battery/ttf_details"}, @@ -281,7 +291,7 @@ void dumpBatteryDefend() { sort(files.begin(), files.end()); for (auto &file : files) { fileLocation = std::string(config[1]) + std::string(file); - if (!android::base::ReadFileToString(fileLocation, &content)) { + if (!android::base::ReadFileToString(fileLocation, &content) || content.empty()) { content = "\n"; } printf("%s: %s", file.c_str(), content.c_str()); @@ -291,15 +301,150 @@ void dumpBatteryDefend() { files.clear(); } } +void dumpBatteryCaretaker() { + const char* aacpConfig [][3] { + {"AACP Version", + "/sys/devices/platform/google,battery/power_supply/battery/", "aacp_"}, + {"AACR Config", + "/sys/devices/platform/google,battery/power_supply/battery/", "aacr_"}, + {"AAFV Config", + "/sys/devices/platform/google,battery/power_supply/battery/", "aafv_"}, + {"AACT Config", + "/sys/devices/platform/google,battery/power_supply/battery/", "aact_"}, + {"AACC", + "/sys/devices/platform/google,battery/power_supply/battery/", "aacc"}, + }; + std::vector files; + struct dirent *entry; + std::string content; + std::string fileLocation; + for (auto &config : aacpConfig) { + DIR *dir = opendir(config[1]); + if (dir == NULL) + continue; + printTitle(config[0]); + while ((entry = readdir(dir)) != NULL) { + if (std::string(entry->d_name).find(config[2]) != std::string::npos && + strncmp(config[2], entry->d_name, strlen(config[2])) == 0) { + files.push_back(entry->d_name); + } + } + closedir(dir); + sort(files.begin(), files.end()); + for (auto &file : files) { + fileLocation = std::string(config[1]) + std::string(file); + if (!android::base::ReadFileToString(fileLocation, &content) || content.empty()) { + content = "\n"; + } + printf("%s: %s", file.c_str(), content.c_str()); + if (content.back() != '\n') + printf("\n"); + } + files.clear(); + } +} +void printValuesOfDirectory(const char *directory, std::string debugfs, const char *strMatch) { + std::vector files; + auto info = directory; + std::string content; + struct dirent *entry; + DIR *dir = opendir(debugfs.c_str()); + if (dir == NULL) + return; + + printTitle((debugfs + std::string(strMatch) + "/" + std::string(info)).c_str()); + while ((entry = readdir(dir)) != NULL) + if (std::string(entry->d_name).find(strMatch) != std::string::npos) + files.push_back(entry->d_name); + closedir(dir); + + sort(files.begin(), files.end()); + + for (auto &file : files) { + std::string fileDirectory = debugfs + file; + std::string fileLocation = fileDirectory + "/" + std::string(info); + if (!android::base::ReadFileToString(fileLocation, &content)) { + content = "\n"; + } + + printf("%s:\n%s", fileDirectory.c_str(), content.c_str()); + + if (content.back() != '\n') + printf("\n"); + } + files.clear(); +} +void dumpChg() { + const std::string pmic_bus = "/sys/devices/platform/10d60000.hsi2c/i2c-13/13-0066"; + const char* chg_reg_dump_file = "/sys/class/power_supply/main-charger/device/registers_dump"; + const std::string chg_name_cmd = "/sys/class/power_supply/main-charger/device/name"; + const std::string pmic_name_cmd = pmic_bus + "/name"; + const std::string pmic_reg_dump_file = pmic_bus + "/registers_dump"; + const std::string reg_dump_str = " registers dump"; + const char* chgConfig [][2] { + {"DC_registers dump", "/sys/class/power_supply/pca94xx-mains/device/registers_dump"}, + }; + std::string chg_name; + std::string pmic_name; + + printf("\n"); + + int ret = android::base::ReadFileToString(chg_name_cmd, &chg_name); + if (ret && !chg_name.empty()) { + chg_name.erase(chg_name.length() - 1); // remove new line + const std::string chg_reg_dump_title = chg_name + reg_dump_str; + + /* CHG reg dump */ + dumpFileContent(chg_reg_dump_title.c_str(), chg_reg_dump_file); + } + + ret = android::base::ReadFileToString(pmic_name_cmd, &pmic_name); + if (ret && !pmic_name.empty()) { + pmic_name.erase(pmic_name.length() - 1); // remove new line + const std::string pmic_reg_dump_title = pmic_name + reg_dump_str; + + /* PMIC reg dump */ + dumpFileContent(pmic_reg_dump_title.c_str(), pmic_reg_dump_file.c_str()); + } + + for (auto &config : chgConfig) { + dumpFileContent(config[0], config[1]); + } +} +void dumpChgUserDebug() { + const std::string debugfs = "/d/"; + const char *maxFgDir = "/d/maxfg"; + const char *maxFgStrMatch = "maxfg"; + const char *maxBaseFgDir = "/d/maxfg_base"; + const char *maxBaseFgStrMatch = "maxfg_base"; + const char *chgTblName = "Charging table dump"; + const char *chgTblDir = "/d/google_battery/chg_raw_profile"; + + const char *maxFgInfo [] { + "fg_model", + "algo_ver", + "model_ok", + }; + + if (isUserBuild()) + return; + + dumpFileContent(chgTblName, chgTblDir); + + if (isValidDir(maxFgDir)) { + for (auto & directory : maxFgInfo) { + printValuesOfDirectory(directory, debugfs, maxFgStrMatch); + } + } else if (isValidDir(maxBaseFgDir)) { + for (auto & directory : maxFgInfo) { + printValuesOfDirectory(directory, debugfs, maxBaseFgStrMatch); + } + } +} void dumpBatteryEeprom() { 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", + "/sys/devices/platform/10da0000.hsi2c/i2c-15/15-0050/eeprom", }; std::string result; std::string xxdCmd; @@ -325,7 +470,7 @@ void dumpChargerStats() { std::string content; struct dirent *entry; dumpFileContent(chgStatsTitle, chgStatsLocation); - if (!isUserBuild()) + if (isUserBuild()) return; for (auto &stat : chargerStats) { DIR *dir = opendir(stat[1]); @@ -370,7 +515,7 @@ void dumpGvoteables() { std::string content; std::vector files; int ret; - if (!isUserBuild()) + if (isUserBuild()) return; ret = getFilesInDir(directory, &files); if (ret < 0) @@ -658,10 +803,11 @@ int main() { dumpLogBufferTcpm(); dumpTcpc(); dumpPdEngine(); - dumpWc68(); - dumpLn8411(); dumpBatteryHealth(); dumpBatteryDefend(); + dumpBatteryCaretaker(); + dumpChg(); + dumpChgUserDebug(); dumpBatteryEeprom(); dumpChargerStats(); dumpWlcLogs(); diff --git a/health/android.hardware.health-service.gs201.xml b/health/android.hardware.health-service.gs201.xml index 2acaabac..8ddfbdaa 100644 --- a/health/android.hardware.health-service.gs201.xml +++ b/health/android.hardware.health-service.gs201.xml @@ -1,7 +1,7 @@ android.hardware.health - 3 + 4 IHealth/default diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml index 76cbb5ec..bf571d48 100644 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -276,6 +276,9 @@ true + + 1024 + - - - 5G UW - diff --git a/overlay/frameworks/base/packages/SettingsLib/res/values-mcc311-mnc480/strings.xml b/overlay/frameworks/base/packages/SettingsLib/res/values-mcc311-mnc480/strings.xml deleted file mode 100644 index f8ed0c01..00000000 --- a/overlay/frameworks/base/packages/SettingsLib/res/values-mcc311-mnc480/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - 5G UW - diff --git a/task_profiles.json b/task_profiles.json index 81e5e41f..6b9b1ee3 100644 --- a/task_profiles.json +++ b/task_profiles.json @@ -159,6 +159,21 @@ } ] }, + { + "Name": "HighPerformanceWI", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/groups/fg_wi/set_task_group", + "ProcFilePath": "/proc/vendor_sched/groups/fg_wi/set_proc_group", + "Value": "", + "LogFailures": "false" + } + } + ] + }, { "Name": "RealtimePerformance", "Actions": [ @@ -250,6 +265,202 @@ } ] }, + { + "Name": "AdpfSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/adpf_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "AdpfClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/adpf_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "BoostPrioSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/boost_prio_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "BoostPrioClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/boost_prio_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreemptWakeupSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/preempt_wakeup_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreemptWakeupClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/preempt_wakeup_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferFitSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_fit_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferFitClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_fit_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferIdleSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_idle_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferIdleClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_idle_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "AutoUclampMaxSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/auto_uclamp_max_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "AutoUclampMaxClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/auto_uclamp_max_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferHighCapSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_high_cap_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferHighCapClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_high_cap_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, { "Name": "ResetUclampGrp", "Actions": [ @@ -287,11 +498,35 @@ }, { "Name": "OtaProfiles", - "Profiles": [ "OtaPerformance", "ProcessCapacityNormal", "LowIoPriority", "TimerSlackHigh" ] + "Profiles": [ "OtaPerformance", "ServiceCapacityLow", "LowIoPriority", "TimerSlackHigh" ] + }, + { + "Name": "SCHED_QOS_SENSITIVE_EXTREME_SET", + "Profiles": [ "AdpfSet", "PreferIdleSet", "PreferFitSet", "BoostPrioSet", "PreemptWakeupSet" ] + }, + { + "Name": "SCHED_QOS_SENSITIVE_EXTREME_CLEAR", + "Profiles": [ "AdpfClear", "PreferIdleClear", "PreferFitClear", "BoostPrioClear", "PreemptWakeupClear" ] + }, + { + "Name": "SCHED_QOS_SENSITIVE_STANDARD_SET", + "Profiles": [ "AdpfSet", "PreferIdleSet", "PreferFitSet" ] + }, + { + "Name": "SCHED_QOS_SENSITIVE_STANDARD_CLEAR", + "Profiles": [ "AdpfClear", "PreferIdleClear", "PreferFitClear" ] + }, + { + "Name": "SCHED_QOS_POWER_EFFICIENCY_SET", + "Profiles": [ "AutoUclampMaxSet" ] + }, + { + "Name": "SCHED_QOS_POWER_EFFICIENCY_CLEAR", + "Profiles": [ "AutoUclampMaxClear" ] }, { "Name": "InputPolicy", - "Profiles": [ "ResetUclampGrp" ] + "Profiles": [ "MaxPerformance", "SCHED_QOS_SENSITIVE_EXTREME_SET" ] } ] } diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp index 5b38729b..530abb8c 100644 --- a/usb/usb/Usb.cpp +++ b/usb/usb/Usb.cpp @@ -990,17 +990,21 @@ void queryVersionHelper(android::hardware::usb::Usb *usb, Status status; pthread_mutex_lock(&usb->mLock); status = getPortStatusHelper(usb, currentPortStatus); - queryMoistureDetectionStatus(usb, currentPortStatus); - queryPowerTransferStatus(usb, currentPortStatus); - queryNonCompliantChargerStatus(currentPortStatus); - queryUsbDataSession(usb, currentPortStatus); - if (usb->mCallback != NULL) { - ScopedAStatus ret = usb->mCallback->notifyPortStatusChange(*currentPortStatus, - status); - if (!ret.isOk()) - ALOGE("queryPortStatus error %s", ret.getDescription().c_str()); + if (status == Status::SUCCESS && currentPortStatus->size() > 0) { + queryMoistureDetectionStatus(usb, currentPortStatus); + queryPowerTransferStatus(usb, currentPortStatus); + queryNonCompliantChargerStatus(currentPortStatus); + queryUsbDataSession(usb, currentPortStatus); + if (usb->mCallback != NULL) { + ScopedAStatus ret = usb->mCallback->notifyPortStatusChange(*currentPortStatus, + status); + if (!ret.isOk()) + ALOGE("queryPortStatus error %s", ret.getDescription().c_str()); + } else { + ALOGI("Notifying userspace skipped. Callback is NULL"); + } } else { - ALOGI("Notifying userspace skipped. Callback is NULL"); + ALOGI("%s skipped. currentPortStatus is empty", __func__); } pthread_mutex_unlock(&usb->mLock); } diff --git a/wifi/qcom/BoardConfig-wifi.mk b/wifi/qcom/BoardConfig-wifi.mk index 4bd72107..13692770 100644 --- a/wifi/qcom/BoardConfig-wifi.mk +++ b/wifi/qcom/BoardConfig-wifi.mk @@ -19,8 +19,9 @@ LOCAL_WIFI_PATH := device/google/gs201/wifi/qcom # wlan flags BOARD_WLAN_DEVICE := qcwcn BOARD_WLAN_CHIP := wcn6740 -BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE) -BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE) +# Use full namespace path for both BOARD_WPA_SUPPLICANT_PRIVATE_LIB and BOARD_HOSTAPD_PRIVATE_LIB due to wlan module for sw5100 has its own namespace. +BOARD_WPA_SUPPLICANT_PRIVATE_LIB := //hardware/qcom/wlan/wcn6740/qcwcn/wpa_supplicant_8_lib:lib_driver_cmd_$(BOARD_WLAN_DEVICE) +BOARD_HOSTAPD_PRIVATE_LIB := //hardware/qcom/wlan/wcn6740/qcwcn/wpa_supplicant_8_lib:lib_driver_cmd_$(BOARD_WLAN_DEVICE) BOARD_WPA_SUPPLICANT_DRIVER := NL80211 BOARD_HOSTAPD_DRIVER := NL80211 WPA_SUPPLICANT_VERSION := VER_0_8_X @@ -36,7 +37,7 @@ WIFI_FEATURE_IMU_DETECTION := true WIFI_HIDL_UNIFIED_SUPPLICANT_SERVICE_RC_ENTRY := true # Avoid Wifi reset on MAC Address change # WIFI_AVOID_IFACE_RESET_MAC_CHANGE := true -# WIFI_FEATURE_HOSTAPD_11AX := true +WIFI_FEATURE_HOSTAPD_11AX := true WIFI_DRIVER_STATE_CTRL_PARAM := "/dev/wlan" WIFI_DRIVER_STATE_ON := "ON" WIFI_DRIVER_STATE_OFF := "OFF"