gs-common: bootctrl: integrate blowAR() for gs101 & zuma
Common bootcontrol use zuma version for the base, and blowAR()
can't be used by gs101. So we need to port ag/18743149 into
common bootcontrol.
Bug: 313615120
Change-Id: I25febde96a56279e6592a6d7740be9a2e385543b
Signed-off-by: Jason Chiu <jasoncschiu@google.com>
diff --git a/bootctrl/aidl/BootControl.cpp b/bootctrl/aidl/BootControl.cpp
index 0221514..e771845 100644
--- a/bootctrl/aidl/BootControl.cpp
+++ b/bootctrl/aidl/BootControl.cpp
@@ -47,6 +47,8 @@
#define BOOT_B_PATH "/dev/block/by-name/boot_b"
#define DEVINFO_PATH "/dev/block/by-name/devinfo"
+#define BLOW_AR_PATH "/sys/kernel/boot_control/blow_ar"
+
// slot flags
#define AB_ATTR_PRIORITY_SHIFT 52
#define AB_ATTR_PRIORITY_MASK (3UL << AB_ATTR_PRIORITY_SHIFT)
@@ -227,7 +229,7 @@
return 0;
}
-static bool blowAR() {
+static bool blowAR_zuma() {
int ret = blow_otp_AR(true);
if (ret) {
ALOGI("Blow secure anti-rollback OTP failed");
@@ -243,6 +245,24 @@
return true;
}
+static bool blowAR_gs101() {
+ ::android::base::unique_fd fd(open(BLOW_AR_PATH, O_WRONLY | O_DSYNC));
+ return ::android::base::WriteStringToFd("1", fd);
+}
+
+static bool blowAR() {
+ char platform[PROPERTY_VALUE_MAX];
+ property_get("ro.boot.hardware.platform", platform, "");
+
+ if (std::string(platform) == "gs101") {
+ return blowAR_gs101();
+ } else if (std::string(platform) == "gs201" || std::string(platform) == "zuma") {
+ return blowAR_zuma();
+ }
+
+ return true;
+}
+
static constexpr MergeStatus ToAIDLMergeStatus(HIDLMergeStatus status) {
switch (status) {
case HIDLMergeStatus::NONE: