98 lines
2.7 KiB
C
98 lines
2.7 KiB
C
|
/* 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);
|
||
|
|
||
|
/**
|
||
|
* Returns True if a rollback was detected during system_preinit.
|
||
|
*
|
||
|
* system_rollback_detected only returns True from rollback until the AP boots
|
||
|
* and then enters deep sleep. The system won't know that it rolled back on
|
||
|
* resume from deep sleep.
|
||
|
*
|
||
|
* @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 */
|