From 8202fc2818c814357c0cb3b71e4022ddf515f766 Mon Sep 17 00:00:00 2001 From: Spade Lee Date: Tue, 29 Oct 2024 10:49:02 +0000 Subject: [PATCH 01/23] dumpstate: gs201: fix dump path - Add missing change ag/25268925 - Correct FG reg dump path in sysfs - Correct battery EEPROM dump path - Correct main/dc charger dump path in sysfs - Correct tcpm dump path - Add charger dump path in debugfs - Add swelling data dump in dumpBatteryHealth - Remove function not for gs201 Bug: 376080915 Test: all paths were correctly dumped, but debugfs need sepolicy Flag: EXEMPT bugfix Change-Id: Ida288b94f19c3d49843a2944c323486980587779 Signed-off-by: Spade Lee --- dumpstate/dump_power.cpp | 154 ++++++++++++++++++++++++++++++++------- 1 file changed, 128 insertions(+), 26 deletions(-) diff --git a/dumpstate/dump_power.cpp b/dumpstate/dump_power.cpp index 9ccc45ec..dc6dd391 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"}, }; @@ -136,12 +146,15 @@ void dumpMaxFg() { 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 registers", "/sys/class/power_supply/maxfg/registers_dump"}, {"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"}, + {"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"}, @@ -151,7 +164,7 @@ void dumpMaxFg() { 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]); } @@ -234,19 +247,10 @@ void dumpPdEngine() { 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"}, @@ -285,7 +289,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()); @@ -295,15 +299,113 @@ void dumpBatteryDefend() { 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/10cb0000.hsi2c/i2c-11/11-0066"; + const char* chg_reg_dump_file = "/sys/class/power_supply/main-charger/device/registers_dump"; + const std::string chg_name_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 *maxFg77779StrMatch = "max77779fg"; + const char *chgTblName = "Charging table dump"; + const char *chgTblDir = "/d/google_battery/chg_raw_profile"; + + const char *maxFgInfo [] { + "fg_model", + "algo_ver", + "model_ok", + }; + + const char *max77779FgInfo [] { + "fg_model", + "algo_ver", + "model_ok", + }; + + if (isUserBuild()) + return; + + dumpFileContent(chgTblName, chgTblDir); + + if (isValidDir(maxFgDir)) { + for (auto & directory : maxFgInfo) { + printValuesOfDirectory(directory, debugfs, maxFgStrMatch); + } + } else { + for (auto & directory : max77779FgInfo) { + printValuesOfDirectory(directory, debugfs, maxFg77779StrMatch); + } + } +} 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; @@ -329,7 +431,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]); @@ -374,7 +476,7 @@ void dumpGvoteables() { std::string content; std::vector files; int ret; - if (!isUserBuild()) + if (isUserBuild()) return; ret = getFilesInDir(directory, &files); if (ret < 0) @@ -662,10 +764,10 @@ int main() { dumpLogBufferTcpm(); dumpTcpc(); dumpPdEngine(); - dumpWc68(); - dumpLn8411(); dumpBatteryHealth(); dumpBatteryDefend(); + dumpChg(); + dumpChgUserDebug(); dumpBatteryEeprom(); dumpChargerStats(); dumpWlcLogs(); From 12dd9e39f2087bdecb0885a33d7fdcd182a169df Mon Sep 17 00:00:00 2001 From: Bill Yang Date: Wed, 18 Sep 2024 10:01:04 +0000 Subject: [PATCH 02/23] Use full namespace path for BOARD_WPA_SUPPLICANT_PRIVATE_LIB There are several different version lib_driver_cmd_qcwcn control by different soong_namespace and it will be used as static lib of hostapd and wpa_supplicant and due to these wlan modules are in global namespace and in order to read static lib from other namespace, will need to set full namespace path instead. Bug: 359745733 Test: lunch lynx-trunk_staging-userdebug; \ m hostapd_cli hostapd libhostapd_aidl wpa_cli wpa_supplicant \ wpa_supplicant_macsec libwpa_client libwpa_aidl libpasn Flag: EXEMPT refactor Change-Id: I747026b7ac5711ed0d450edf79e1fa24da9ac3b6 --- wifi/qcom/BoardConfig-wifi.mk | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/wifi/qcom/BoardConfig-wifi.mk b/wifi/qcom/BoardConfig-wifi.mk index 4bd72107..18fc6d5d 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 From 837de89c138d5c3009ffb70921ce0cc110afedd3 Mon Sep 17 00:00:00 2001 From: Herbert Xue Date: Wed, 6 Nov 2024 11:08:00 +0800 Subject: [PATCH 03/23] Move video_codec soong config variables into board config Flag: EXEMPT bugfix Bug: 370663515 Test: m libExynosC2OSAL Change-Id: Iff6a4e9c5cbadf0eb7711cb9d1ad971f0ec365db --- BoardConfig-common.mk | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk index fd777786..7e8e9a01 100644 --- a/BoardConfig-common.mk +++ b/BoardConfig-common.mk @@ -196,7 +196,11 @@ 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_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 From 7d140022ff98439a2bacbdaab21e1591f1a7e333 Mon Sep 17 00:00:00 2001 From: Spade Lee Date: Thu, 7 Nov 2024 17:25:28 +0000 Subject: [PATCH 04/23] dump_power: gs201: correct dump path - fix dual fg path - fix pmic path - add logbuffer_dual_batt - move fg registers dump from debugfs to sysfs - remove max77779fg path Bug: 377895720 Flag: EXEMPT bugfix Change-Id: Ie5c8fe188fa0426617fc481cd8d38b2dfeca1e07 Signed-off-by: Spade Lee --- dumpstate/dump_power.cpp | 49 +++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/dumpstate/dump_power.cpp b/dumpstate/dump_power.cpp index dc6dd391..08f68d37 100644 --- a/dumpstate/dump_power.cpp +++ b/dumpstate/dump_power.cpp @@ -143,23 +143,25 @@ 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 registers", "/sys/class/power_supply/maxfg/registers_dump"}, - {"maxfg", "/dev/logbuffer_maxfg"}, - {"maxfg", "/dev/logbuffer_maxfg_monitor"}, + {"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"; @@ -168,13 +170,13 @@ void dumpMaxFg() { 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() { @@ -240,8 +242,8 @@ void dumpPdEngine() { const char* pdEngine [][3] { {"TCPC logbuffer", "/dev/logbuffer_usbpd"}, {"pogo_transport logbuffer", "/dev/logbuffer_pogo_transport"}, - {"PPS-google_cpm", "/dev/logbuffer_cpm"}, - {"PPS-dc", "/dev/logbuffer_pca9468"}, + {"PPS-google_cpm logbuffer", "/dev/logbuffer_cpm"}, + {"PPS-pca9468 logbuffer", "/dev/logbuffer_pca9468"}, }; for (const auto &row : pdEngine) { dumpFileContent(row[0], row[1]); @@ -331,7 +333,7 @@ void printValuesOfDirectory(const char *directory, std::string debugfs, const ch files.clear(); } void dumpChg() { - const std::string pmic_bus = "/sys/devices/platform/10cb0000.hsi2c/i2c-11/11-0066"; + 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"; @@ -371,7 +373,8 @@ void dumpChgUserDebug() { const std::string debugfs = "/d/"; const char *maxFgDir = "/d/maxfg"; const char *maxFgStrMatch = "maxfg"; - const char *maxFg77779StrMatch = "max77779fg"; + 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"; @@ -381,12 +384,6 @@ void dumpChgUserDebug() { "model_ok", }; - const char *max77779FgInfo [] { - "fg_model", - "algo_ver", - "model_ok", - }; - if (isUserBuild()) return; @@ -396,9 +393,9 @@ void dumpChgUserDebug() { for (auto & directory : maxFgInfo) { printValuesOfDirectory(directory, debugfs, maxFgStrMatch); } - } else { - for (auto & directory : max77779FgInfo) { - printValuesOfDirectory(directory, debugfs, maxFg77779StrMatch); + } else if (isValidDir(maxBaseFgDir)) { + for (auto & directory : maxFgInfo) { + printValuesOfDirectory(directory, debugfs, maxBaseFgStrMatch); } } } From ba05fccd6d208afae14c5e5e93fa1c2991da14ed Mon Sep 17 00:00:00 2001 From: Boon Jun Date: Mon, 11 Nov 2024 07:04:35 +0000 Subject: [PATCH 05/23] Update ldaf sensor device filename LDAF sensor device filename changed after kernel upgrade from v5.10 to v6.1 in some of our in-market devices. We need to update the device filename to access the LDAF with this new kernel version. Bug: 378045567 Test: Open camera, and observe available LDAF sensor in logs Flag: EXEMPT bugfix Change-Id: I9ecdeb73e6787409e02eae3c699d2d9817249bc4 --- conf/init.gs201.rc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/init.gs201.rc b/conf/init.gs201.rc index 2b5e3a6f..f1d89e95 100644 --- a/conf/init.gs201.rc +++ b/conf/init.gs201.rc @@ -370,8 +370,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 From 2451f7afe424a0ee56f0faac38366b8bbd69d790 Mon Sep 17 00:00:00 2001 From: Herbert Xue Date: Fri, 8 Nov 2024 15:20:18 +0800 Subject: [PATCH 06/23] Set soong config variable "board_use_dec_sw_csc" for libExynosVideoCodec Flag: EXEMPT bugfix Bug: 375522783 Test: m libExynosVideoCodec Change-Id: I23e96ea7ece291562c3ad959c84cc6f95f587e1c --- BoardConfig-common.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk index 7e8e9a01..07774a73 100644 --- a/BoardConfig-common.mk +++ b/BoardConfig-common.mk @@ -198,6 +198,7 @@ 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_dec_sw_csc,$(BOARD_USE_DEC_SW_CSC)) $(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)) From f48f2625e6f1a090220717a7af85cf60cb1d05e6 Mon Sep 17 00:00:00 2001 From: Paulsu Su Date: Sun, 17 Nov 2024 06:24:38 +0000 Subject: [PATCH 07/23] init: make pmu_poll_enable node readable Bug: 378509589 Flag: EXEMPT init config for read permission Change-Id: I226aa1a9801bdbb2630c7583180495752c9002e1 --- 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 f1d89e95..5b03968f 100644 --- a/conf/init.gs201.rc +++ b/conf/init.gs201.rc @@ -97,7 +97,7 @@ 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 From e89e33a63cc317b7ca2201a3e02f283b99cb0879 Mon Sep 17 00:00:00 2001 From: Herbert Xue Date: Tue, 19 Nov 2024 15:31:23 +0800 Subject: [PATCH 08/23] Set soong config variables for libExynosC2H263Dec and libExynosC2H263Enc Flag: EXEMPT bugfix Bug: 375111251 Test: m libExynosC2H263Dec libExynosC2H263Enc Change-Id: Ifd1a768baa7aab356f37922c017a65e95f083232 --- BoardConfig-common.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk index 07774a73..31f7ab6f 100644 --- a/BoardConfig-common.mk +++ b/BoardConfig-common.mk @@ -198,7 +198,11 @@ 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)) From f5e3505bc92983c4aefbc37291013f1be83dfb60 Mon Sep 17 00:00:00 2001 From: kellyhung Date: Tue, 19 Nov 2024 07:58:44 +0000 Subject: [PATCH 09/23] Add soong config use_google_qns to device/google/gs201/device.mk Bug: 360757079 Test: lunch cheetah-trunk_staging-userdebug; m grilservice Flag: EXEMPT bugfix Change-Id: I114d13b8e610a289b3c2df60630a14241c93eb28 --- device.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/device.mk b/device.mk index fd0eccfb..5b2e734c 100644 --- a/device.mk +++ b/device.mk @@ -217,6 +217,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 From d817c863003711fe780bb42320f4d61ebd897e48 Mon Sep 17 00:00:00 2001 From: Will Song Date: Wed, 27 Nov 2024 02:10:59 -0800 Subject: [PATCH 10/23] init: gs201: move sched rate limit to late init Since pixel performance has a shared configuration, we need to move override values into late init. Bug: 381100494 Test: Boot Flag: EXEMPT bug fix Change-Id: Ia0ec769ff8996d66a4355f20de884fcb05728c3f --- conf/init.gs201.rc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/conf/init.gs201.rc b/conf/init.gs201.rc index 5b03968f..92f478b3 100644 --- a/conf/init.gs201.rc +++ b/conf/init.gs201.rc @@ -153,14 +153,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 @@ -332,6 +329,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 From fac8b49c5a1c49db72f43308764d397cc8aabe6b Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Tue, 3 Dec 2024 17:29:53 +0800 Subject: [PATCH 11/23] Clean up unnecessary data_connection_5g_plus overlay This string is not device specific, and already set at, frameworks/base/packages/SettingsLib/res/values-mcc311-mnc480/strings.xml frameworks/base/packages/SettingsLib/res/values-mcc310-mnc004/strings.xml Bug: 377907543 Flag: EXEMPT clean up Test: m Change-Id: I3391ec3d0a45e70ef3a96005961f7060da25e997 --- .../res/values-mcc310-mnc004/strings.xml | 22 ------------------- .../res/values-mcc311-mnc480/strings.xml | 22 ------------------- 2 files changed, 44 deletions(-) delete mode 100644 overlay/frameworks/base/packages/SettingsLib/res/values-mcc310-mnc004/strings.xml delete mode 100644 overlay/frameworks/base/packages/SettingsLib/res/values-mcc311-mnc480/strings.xml diff --git a/overlay/frameworks/base/packages/SettingsLib/res/values-mcc310-mnc004/strings.xml b/overlay/frameworks/base/packages/SettingsLib/res/values-mcc310-mnc004/strings.xml deleted file mode 100644 index f8ed0c01..00000000 --- a/overlay/frameworks/base/packages/SettingsLib/res/values-mcc310-mnc004/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - 5G UW - diff --git a/overlay/frameworks/base/packages/SettingsLib/res/values-mcc311-mnc480/strings.xml b/overlay/frameworks/base/packages/SettingsLib/res/values-mcc311-mnc480/strings.xml deleted file mode 100644 index f8ed0c01..00000000 --- a/overlay/frameworks/base/packages/SettingsLib/res/values-mcc311-mnc480/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - 5G UW - From a477bea5e2b419e510a711e51ead5962004f714f Mon Sep 17 00:00:00 2001 From: Nelson Li Date: Tue, 26 Nov 2024 08:49:42 +0000 Subject: [PATCH 12/23] Change TARGET_RECOVERY_UI_LIB to use fully qualified names in gs201 Since the TARGET_RECOVERY_UI_LIB for each device is not exactly the same, and most of the modules in it contain `soong_namespace{}` to avoid conflicts between different devices, after converting `librecovery_ui_ext` from Android.mk to Android.bp, it needs to be changed to a `fully qualified name` in order to correctly use the corresponding module. Flag: EXEMPT refactor Bug: 339143524 Test: m -j librecovery_ui_ext Change-Id: I1a41a48feb26771127f9603ae5ae226d2de61065 --- BoardConfig-common.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk index 31f7ab6f..4d34a7df 100644 --- a/BoardConfig-common.mk +++ b/BoardConfig-common.mk @@ -75,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 From 81a804eab629bdc473536e3199942161df19149a Mon Sep 17 00:00:00 2001 From: Nelson Li Date: Tue, 26 Nov 2024 08:49:42 +0000 Subject: [PATCH 13/23] Change TARGET_RECOVERY_UI_LIB to use fully qualified names in gs201 Since the TARGET_RECOVERY_UI_LIB for each device is not exactly the same, and most of the modules in it contain `soong_namespace{}` to avoid conflicts between different devices, after converting `librecovery_ui_ext` from Android.mk to Android.bp, it needs to be changed to a `fully qualified name` in order to correctly use the corresponding module. Flag: EXEMPT refactor Bug: 339143524 Test: m -j librecovery_ui_ext Merged-In: I1a41a48feb26771127f9603ae5ae226d2de61065 Change-Id: I1a41a48feb26771127f9603ae5ae226d2de61065 --- BoardConfig-common.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk index 46967791..f8105813 100644 --- a/BoardConfig-common.mk +++ b/BoardConfig-common.mk @@ -73,7 +73,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 From 6eded858fc07d6dc18fa74486fd64d0b4ae8a7be Mon Sep 17 00:00:00 2001 From: Rick Yiu Date: Thu, 5 Dec 2024 08:53:47 +0000 Subject: [PATCH 14/23] Add sched qos support Add task profiles and set permissions. Bug: 355612114 Flag: NONE init rc file does not support flag Test: build pass Change-Id: I04d2f7af89fe3b1425962a5a5ab01e42f09fc19d --- conf/init.gs201.rc | 77 ++++++++++++++ task_profiles.json | 254 ++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 314 insertions(+), 17 deletions(-) diff --git a/conf/init.gs201.rc b/conf/init.gs201.rc index 92f478b3..fa8edc30 100644 --- a/conf/init.gs201.rc +++ b/conf/init.gs201.rc @@ -104,6 +104,83 @@ on init 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 diff --git a/task_profiles.json b/task_profiles.json index 47cada84..6b9b1ee3 100644 --- a/task_profiles.json +++ b/task_profiles.json @@ -15,21 +15,6 @@ } ] }, - { - "Name": "PreferIdle", - "Actions": [ - { - "Name": "WriteFile", - "Params": - { - "FilePath": "/proc/vendor_sched/prefer_idle_set", - "ProcFilePath": "/proc/vendor_sched/prefer_idle_set", - "Value": "", - "LogFailures": "false" - } - } - ] - }, { "Name": "CameraServicePerformance", "Actions": [ @@ -174,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": [ @@ -265,6 +265,202 @@ } ] }, + { + "Name": "AdpfSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/adpf_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "AdpfClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/adpf_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "BoostPrioSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/boost_prio_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "BoostPrioClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/boost_prio_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreemptWakeupSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/preempt_wakeup_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreemptWakeupClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/preempt_wakeup_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferFitSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_fit_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferFitClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_fit_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferIdleSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_idle_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferIdleClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_idle_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "AutoUclampMaxSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/auto_uclamp_max_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "AutoUclampMaxClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/auto_uclamp_max_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferHighCapSet", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_high_cap_set", + "Value": "", + "LogFailures": "false" + } + } + ] + }, + { + "Name": "PreferHighCapClear", + "Actions": [ + { + "Name": "WriteFile", + "Params": + { + "FilePath": "/proc/vendor_sched/sched_qos/prefer_high_cap_clear", + "Value": "", + "LogFailures": "false" + } + } + ] + }, { "Name": "ResetUclampGrp", "Actions": [ @@ -302,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": [ "MaxPerformance", "ResetUclampGrp", "PreferIdle" ] + "Profiles": [ "MaxPerformance", "SCHED_QOS_SENSITIVE_EXTREME_SET" ] } ] } From cadf608f929ee619dd742fdc47f6945416dc4202 Mon Sep 17 00:00:00 2001 From: Daniel Zheng Date: Thu, 5 Dec 2024 14:55:56 -0800 Subject: [PATCH 15/23] update health HAL dependency Bug: 381926253 Test: th Change-Id: I55424b1ce6672b532a83dd9349c5265d31f279b2 --- health/android.hardware.health-service.gs201.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 796a10b44014235cc7632e56febc3fbb4bfdded7 Mon Sep 17 00:00:00 2001 From: Daniel Lowe Date: Thu, 5 Dec 2024 19:14:52 +0000 Subject: [PATCH 16/23] [Pixel VPN] Apply reviewed default permissions Pregrantting below permissions: READ_PHONE_STATE Flag: EXEMPT add permission pregranted in b/337725984 Bug: 373686360 Test: presubmit, manual install Change-Id: I2f2cf9e1bd2e60dd04afac8fdf6d1c7f5f654778 --- default-permissions.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/default-permissions.xml b/default-permissions.xml index 45a2d303..428b7193 100644 --- a/default-permissions.xml +++ b/default-permissions.xml @@ -185,5 +185,9 @@ + + + From dc10f550c0b38ca3d356e0b62294e7eee3508ccb Mon Sep 17 00:00:00 2001 From: Chungkai Mei Date: Mon, 25 Nov 2024 06:03:17 +0000 Subject: [PATCH 17/23] set input to 100 explicitly in task_profile instead of using ADPF, let's use task_profile to boost input tasks' priroity Bug: 378761104 Flag: EXEMPT new task_profile behavior Change-Id: Ice311b1abcf3d629917e16f1490d4cb63fd83796 Signed-off-by: Chungkai Mei --- task_profiles.json | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/task_profiles.json b/task_profiles.json index 6b9b1ee3..103ff202 100644 --- a/task_profiles.json +++ b/task_profiles.json @@ -488,6 +488,19 @@ } } ] + }, + { + "Name": "HighestCfsPrioScheduling", + "Actions": [ + { + "Name": "SetSchedulerPolicy", + "Params": + { + "Policy": "SCHED_OTHER", + "Nice": "-20" + } + } + ] } ], @@ -526,7 +539,7 @@ }, { "Name": "InputPolicy", - "Profiles": [ "MaxPerformance", "SCHED_QOS_SENSITIVE_EXTREME_SET" ] + "Profiles": [ "HighestCfsPrioScheduling", "MaxPerformance", "SCHED_QOS_SENSITIVE_EXTREME_SET" ] } ] } From 8cca4af88c9097b98520f41b9ab102ba47ae0bca Mon Sep 17 00:00:00 2001 From: Piotr Klasa Date: Mon, 9 Dec 2024 14:37:08 +0100 Subject: [PATCH 18/23] Move all vendor_sched parameters and permissions to init.pixel.perf.rc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: 335874870 Test: Checked that permissions and values ​​for all affected files are correct (ls -l, cat) Flag: EXEMPT not supported by this component yet Change-Id: I018b7b564bcc533212d2ada0dda85678c41feead --- conf/init.gs201.rc | 138 --------------------------------------------- 1 file changed, 138 deletions(-) diff --git a/conf/init.gs201.rc b/conf/init.gs201.rc index fa8edc30..d5e2da37 100644 --- a/conf/init.gs201.rc +++ b/conf/init.gs201.rc @@ -20,36 +20,6 @@ on init # Disable util-awareness write /proc/vendor_sched/teo_util_threshold "1024 1024 1024" - 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 - chown system system /proc/vendor_sched/groups/nnapi/set_task_group - chown system system /proc/vendor_sched/groups/sys/set_task_group - chown system system /proc/vendor_sched/groups/sys_bg/set_task_group - chown system system /proc/vendor_sched/groups/ta/set_task_group - chown system system /proc/vendor_sched/groups/rt/set_task_group - chown system system /proc/vendor_sched/groups/sf/set_task_group - chown system system /proc/vendor_sched/groups/dex2oat/set_task_group - chown system system /proc/vendor_sched/groups/cam_power/set_task_group - chown system system /proc/vendor_sched/groups/ota/set_task_group - chown system system /proc/vendor_sched/groups/bg/set_proc_group - chown system system /proc/vendor_sched/groups/cam/set_proc_group - chown system system /proc/vendor_sched/groups/fg/set_proc_group - chown system system /proc/vendor_sched/groups/nnapi/set_proc_group - chown system system /proc/vendor_sched/groups/sys/set_proc_group - chown system system /proc/vendor_sched/groups/sys_bg/set_proc_group - chown system system /proc/vendor_sched/groups/ta/set_proc_group - chown system system /proc/vendor_sched/groups/rt/set_proc_group - chown system system /proc/vendor_sched/groups/sf/set_proc_group - chown system system /proc/vendor_sched/groups/dex2oat/set_proc_group - chown system system /proc/vendor_sched/groups/cam_power/set_proc_group - chown system system /proc/vendor_sched/groups/ota/set_proc_group - chown system system /proc/vendor_sched/prefer_idle_set - 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 @@ -71,116 +41,8 @@ on init chown system system /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu6_memlat@17000010/memlat_cpuidle_state_aware chown system system /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu7_memlat@17000010/memlat_cpuidle_state_aware - chmod 0220 /proc/vendor_sched/groups/bg/set_task_group - chmod 0220 /proc/vendor_sched/groups/cam/set_task_group - chmod 0220 /proc/vendor_sched/groups/fg/set_task_group - chmod 0220 /proc/vendor_sched/groups/nnapi/set_task_group - chmod 0220 /proc/vendor_sched/groups/sys/set_task_group - chmod 0220 /proc/vendor_sched/groups/sys_bg/set_task_group - chmod 0220 /proc/vendor_sched/groups/ta/set_task_group - chmod 0220 /proc/vendor_sched/groups/rt/set_task_group - chmod 0220 /proc/vendor_sched/groups/sf/set_task_group - chmod 0220 /proc/vendor_sched/groups/dex2oat/set_task_group - chmod 0220 /proc/vendor_sched/groups/cam_power/set_task_group - chmod 0220 /proc/vendor_sched/groups/ota/set_task_group - chmod 0220 /proc/vendor_sched/groups/bg/set_proc_group - chmod 0220 /proc/vendor_sched/groups/cam/set_proc_group - chmod 0220 /proc/vendor_sched/groups/fg/set_proc_group - chmod 0220 /proc/vendor_sched/groups/nnapi/set_proc_group - chmod 0220 /proc/vendor_sched/groups/sys/set_proc_group - chmod 0220 /proc/vendor_sched/groups/sys_bg/set_proc_group - chmod 0220 /proc/vendor_sched/groups/ta/set_proc_group - chmod 0220 /proc/vendor_sched/groups/rt/set_proc_group - chmod 0220 /proc/vendor_sched/groups/sf/set_proc_group - chmod 0220 /proc/vendor_sched/groups/dex2oat/set_proc_group - chmod 0220 /proc/vendor_sched/groups/cam_power/set_proc_group - 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 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 From c74b1a6c605bb1effdc160b52a96fd059853fc19 Mon Sep 17 00:00:00 2001 From: Paulsu Su Date: Thu, 12 Dec 2024 22:24:26 -0800 Subject: [PATCH 19/23] Set initial value for foreground_window group For multi-window foreground app group. Bug: 200769420 Change-Id: I2d9cd9d90e9011593c53facf5fd47a4414e3f1cf Test: build pass Flag: NONE vendor init file does not support flag --- conf/init.gs201.rc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/conf/init.gs201.rc b/conf/init.gs201.rc index d5e2da37..59bc55a3 100644 --- a/conf/init.gs201.rc +++ b/conf/init.gs201.rc @@ -615,6 +615,7 @@ on property:sys.boot_completed=1 # Setup final cpuset write /dev/cpuset/top-app/cpus ${persist.device_config.vendor_system_native.top-app_cpuset:-0-7} write /dev/cpuset/foreground/cpus ${persist.device_config.vendor_system_native.foreground_cpuset:-0-3,4-5} + write /dev/cpuset/foreground_window/cpus ${persist.device_config.vendor_system_native.foreground_window_cpuset:-0-3,4-5} write /dev/cpuset/background/cpus ${persist.device_config.vendor_system_native.background_cpuset:-0-3} write /dev/cpuset/system-background/cpus ${persist.device_config.vendor_system_native.system-background_cpuset:-0-3} write /dev/cpuset/restricted/cpus ${persist.device_config.vendor_system_native.restricted_cpuset:-0-3} @@ -948,6 +949,8 @@ on property:persist.device_config.vendor_system_native.top-app_cpuset=* write /dev/cpuset/top-app/cpus ${persist.device_config.vendor_system_native.top-app_cpuset:-0-7} on property:persist.device_config.vendor_system_native.foreground_cpuset=* write /dev/cpuset/foreground/cpus ${persist.device_config.vendor_system_native.foreground_cpuset:-0-3,4-5} +on property:persist.device_config.vendor_system_native.foreground_window_cpuset=* + write /dev/cpuset/foreground/cpus ${persist.device_config.vendor_system_native.foreground_window_cpuset:-0-3,4-5} on property:persist.device_config.vendor_system_native.background_cpuset=* write /dev/cpuset/background/cpus ${persist.device_config.vendor_system_native.background_cpuset:-0-3} on property:persist.device_config.vendor_system_native.system-background_cpuset=* From 7270e65cfd2386802f8290e05133662fe8959468 Mon Sep 17 00:00:00 2001 From: Jack Wu Date: Fri, 20 Dec 2024 18:00:10 +0800 Subject: [PATCH 20/23] dump_power: add battery caretaker dump into bugreport logging for AACR(+H), AAFV, AACT, AACC and AACP Version Bug: 384737509 Test: adb bugreport Flag: EXEMPT bugfix Change-Id: I366adec774866a9561067e1a3e42f9c794d3ccb8 Signed-off-by: Jack Wu --- dumpstate/dump_power.cpp | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/dumpstate/dump_power.cpp b/dumpstate/dump_power.cpp index 08f68d37..878f26aa 100644 --- a/dumpstate/dump_power.cpp +++ b/dumpstate/dump_power.cpp @@ -301,6 +301,48 @@ 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; @@ -763,6 +805,7 @@ int main() { dumpPdEngine(); dumpBatteryHealth(); dumpBatteryDefend(); + dumpBatteryCaretaker(); dumpChg(); dumpChgUserDebug(); dumpBatteryEeprom(); From a0676aa9d86b00c54145adaabb579b09ba23423f Mon Sep 17 00:00:00 2001 From: Nelson Li Date: Thu, 26 Dec 2024 02:56:45 +0000 Subject: [PATCH 21/23] Refactor: Use googleDeviceConfig namespace in gs201 BoardConfig Replaces the `CitadelProvision` Soong config namespace with the more generic `googleDeviceConfig` in device/google/gs201/BoardConfig-common.mk. This improves clarity and consistency, as the namespace is used for configurations beyond Citadel-related functionality. Flag: EXEMPT refactor Bug: 386114735 Test: m CitadelProvision Change-Id: If4b3428b391762e65fbf6631f7bd60e02d73b250 --- BoardConfig-common.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk index 4d34a7df..b55906f8 100644 --- a/BoardConfig-common.mk +++ b/BoardConfig-common.mk @@ -22,7 +22,7 @@ TARGET_SOC := gs201 TARGET_SOC_NAME := google USES_DEVICE_GOOGLE_GS201 := true -$(call soong_config_set,CitadelProvision,target_soc,gs201) +$(call soong_config_set,googleDeviceConfig,target_soc,gs201) TARGET_ARCH := arm64 TARGET_ARCH_VARIANT := armv8-2a From ff2584a9ace4694702e2b030ca3d6131e3b7e9b8 Mon Sep 17 00:00:00 2001 From: Hung-Yeh Lee Date: Wed, 4 Dec 2024 14:52:48 +0800 Subject: [PATCH 22/23] display-dump: make display dump project-specific Bug: 376426334 Test: adb bugreport Test: adb shell /vendor/bin/dump/dump_*_display Test: adb shell /vendor/bin/dump/dump_*_second_display Flag: EXEMPT bugfix Change-Id: I838f95abc934644063fd0c46e8106af4dbb105f8 --- device.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device.mk b/device.mk index 5b2e734c..6ef1b9dc 100644 --- a/device.mk +++ b/device.mk @@ -25,7 +25,7 @@ include device/google/gs-common/thermal/dump/thermal.mk include device/google/gs-common/thermal/thermal_hal/device.mk include device/google/gs-common/pixel_metrics/pixel_metrics.mk include device/google/gs-common/performance/perf.mk -include device/google/gs-common/display/dump.mk +include device/google/gs-common/display/dump_exynos_display.mk include device/google/gs-common/camera/dump.mk include device/google/gs-common/gxp/gxp.mk include device/google/gs-common/gps/dump/log.mk From 341185cc5f0c03f3fc02096febcbe3ab6e415595 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Fri, 20 Dec 2024 08:11:38 +0000 Subject: [PATCH 23/23] Update IDisplay to V13-V14 V14 is not frozen yet. We should still allow V13 for 'next' build. Bug: 381463038 Bug: 378407278 Test: build pass Flag: EXEMPT bugfix Change-Id: Ieffe2c96ce2225560815158a8e89975e19f16499 --- 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 c0b4deb2..f4410c13 100644 --- a/device_framework_matrix_product.xml +++ b/device_framework_matrix_product.xml @@ -78,7 +78,7 @@ com.google.hardware.pixel.display - 13 + 13-14 IDisplay default