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"