diff options
author | George Lee <geolee@google.com> | 2022-10-05 14:08:33 -0700 |
---|---|---|
committer | George Lee <geolee@google.com> | 2022-10-10 17:37:34 +0000 |
commit | 8a8a2c92a276d9f12e38d50dde5eee48e4e72a16 (patch) | |
tree | f2727e846613c66f24bc16ca5aad227d96b42ccb | |
parent | 78841a5be944862e3597e9ab335c653de9fd672c (diff) | |
download | gs201-8a8a2c92a276d9f12e38d50dde5eee48e4e72a16.tar.gz |
bcl: Add mitigation ready check
Instead of relying on vendor.thermal.link_ready property to gate write
to BCL's SYSFS node, adding mitigation ready SYSFS so that writes to
BCL's SYSFS node would not cause NULL pointer dereference.
Bug: 249130916
Test: Confirm property vendor.brownout.mitigation.ready is set
Signed-off-by: George Lee <geolee@google.com>
Change-Id: Ic643a07ddb657cfc7e22537d5d25d0d99324e31c
-rw-r--r-- | battery_mitigation/battery_mitigation.cpp | 19 | ||||
-rw-r--r-- | conf/init.gs201.rc | 5 |
2 files changed, 23 insertions, 1 deletions
diff --git a/battery_mitigation/battery_mitigation.cpp b/battery_mitigation/battery_mitigation.cpp index 5784b27..2204bd5 100644 --- a/battery_mitigation/battery_mitigation.cpp +++ b/battery_mitigation/battery_mitigation.cpp @@ -63,8 +63,27 @@ const struct MitigationConfig::Config cfg = { .LogFilePath = "/data/vendor/mitigation/thismeal.txt", }; +const char kReadyFilePath[] = "/sys/devices/virtual/pmic/mitigation/instruction/ready"; +const char kReadyProperty[] = "vendor.brownout.mitigation.ready"; + int main(int /*argc*/, char ** /*argv*/) { bmSp = new BatteryMitigation(cfg); + bool isBatteryMitigationReady = false; + std::string ready_str; + int val = 0; + while (!isBatteryMitigationReady) { + if (!android::base::ReadFileToString(kReadyFilePath, &ready_str)) { + continue; + } + ready_str = android::base::Trim(ready_str); + if (!android::base::ParseInt(ready_str, &val)) { + continue; + } + if (val == 1) { + isBatteryMitigationReady = true; + } + } + android::base::SetProperty(kReadyProperty, "1"); while (true) { pause(); } diff --git a/conf/init.gs201.rc b/conf/init.gs201.rc index daa5be6..76c1ffe 100644 --- a/conf/init.gs201.rc +++ b/conf/init.gs201.rc @@ -911,7 +911,7 @@ on post-fs-data mkdir /data/vendor/powerstats 0771 system system chown system system /data/vendor/powerstats -on property:vendor.thermal.link_ready=1 +on property:vendor.brownout.mitigation.ready=1 # BCL write /sys/devices/virtual/pmic/mitigation/clock_ratio/tpu_light_clk_ratio 0xfff041c1 #DFS write /sys/devices/virtual/pmic/mitigation/clock_ratio/cpu1_heavy_clk_ratio 0xfff041c1 #DFS @@ -927,6 +927,9 @@ on property:vendor.thermal.link_ready=1 write /sys/devices/virtual/pmic/mitigation/clock_div/tpu_clk_div 0x1 write /sys/devices/virtual/pmic/mitigation/clock_div/gpu_clk_div 0x1 write /sys/devices/virtual/pmic/mitigation/clock_div/cpu2_clk_div 0x1 + +on property:vendor.thermal.link_ready=1 + # BCL chown system system /dev/thermal/tz-by-name/soc/mode chown system system /dev/thermal/tz-by-name/vdroop2/trip_point_0_temp chown system system /dev/thermal/tz-by-name/vdroop2/trip_point_0_hyst |