summaryrefslogtreecommitdiff
path: root/chip/g/system_chip.h
diff options
context:
space:
mode:
Diffstat (limited to 'chip/g/system_chip.h')
-rw-r--r--chip/g/system_chip.h93
1 files changed, 93 insertions, 0 deletions
diff --git a/chip/g/system_chip.h b/chip/g/system_chip.h
new file mode 100644
index 0000000000..b5b9f4cbea
--- /dev/null
+++ b/chip/g/system_chip.h
@@ -0,0 +1,93 @@
+/* Copyright 2017 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/* chip/g-specific system function prototypes */
+
+#ifndef __CROS_EC_SYSTEM_CHIP_H
+#define __CROS_EC_SYSTEM_CHIP_H
+
+/**
+ * On systems with protection from a failing RW update: read the retry counter
+ * and act on it.
+ *
+ * @return EC_SUCCESS if no flash write errors were encounterd.
+ */
+int system_process_retry_counter(void);
+
+/**
+ * On systems with protection from a failing RW update: reset retry
+ * counter, this is used after a new image upload is finished, to make
+ * sure that the new image has a chance to run.
+ */
+void system_clear_retry_counter(void);
+
+/**
+ * A function provided by some platforms to decrement a retry counter.
+ *
+ * This should be used whenever a system reset is manually triggered.
+ */
+void system_decrement_retry_counter(void);
+
+/**
+ * A function provided by some platforms to hint that something is going
+ * wrong.
+ *
+ * @return a boolean, set to True if rolling reboot condition is suspected.
+ */
+int system_rolling_reboot_suspected(void);
+
+/**
+ * Compare the rw headers to check if there was a rollback.
+ *
+ * @return a boolean, set to True if a rollback is detected.
+ */
+int system_rollback_detected(void);
+
+/**
+ * Returns non-zero value when firmware is expected to be abe to detect user
+ * request to cut off battery supply.
+ */
+int system_battery_cutoff_support_required(void);
+
+/**
+ * Functions to update INFO1 rollback mask based on one or both RW image
+ * headers.
+ */
+void system_update_rollback_mask_with_active_img(void);
+void system_update_rollback_mask_with_both_imgs(void);
+
+/**
+ * Scan INFO1 rollback map and infomap fields of both RW and RW_B image
+ * headers, and return a string showing how many zeros are there at the base
+ * of in each of these objects.
+ *
+ * The passed in parameters are the memory area to put the string in and the
+ * size of this memory area.
+ */
+void system_get_rollback_bits(char *value, size_t value_size);
+
+/**
+ * Set the rollback counter to a value which would ensure a rollback on the
+ * next boot.
+ */
+void system_ensure_rollback(void);
+
+/**
+ * Enables holding external pins across soft chip resets. Application firmware
+ * is responsible for disengaging pinhold upon reset.
+ */
+void system_pinhold_on_reset_enable(void);
+
+/**
+ * Disables holding external pins across soft chip resets.
+ */
+void system_pinhold_on_reset_disable(void);
+
+/**
+ * Disengages pinhold if engaged.
+ */
+void system_pinhold_disengage(void);
+
+#endif /* __CROS_EC_SYSTEM_CHIP_H */