mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-08 00:21:46 +00:00
Our previous idea to cut Rd for many reset cases cannot work if cr50 consistently resets the EC by asserting the reset pin shortly after power-on. Therefore, make a decision based upon whether battery-backed memory indicates we previously negotiated a PD power contract as a sink. If we previously did not negotiate a contract, or if power was removed from the device (causing battery-backed memory to wipe) then we can assume that we don't have an active power contract. BUG=chrome-os-partner:62952 BRANCH=reef TEST=On reef, run "cutoff" on the console, reattach AC, and verify device successfully wakes. Also verify Rp is dropped on console 'reboot' and F3 + power from RW. Change-Id: Ie300b9589cac6be7a69b77678bea6b1b6b25578c Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/443356 Commit-Ready: Shawn N <shawnn@chromium.org> Tested-by: Shawn N <shawnn@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
38 lines
1.4 KiB
C
38 lines
1.4 KiB
C
/* Copyright (c) 2014 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.
|
|
*/
|
|
|
|
/* NPCX-specific SIB module for Chrome EC */
|
|
|
|
#ifndef __CROS_EC_SYSTEM_CHIP_H
|
|
#define __CROS_EC_SYSTEM_CHIP_H
|
|
|
|
/* Indices for battery-backed ram (BBRAM) data position */
|
|
enum bbram_data_index {
|
|
BBRM_DATA_INDEX_SCRATCHPAD = 0, /* General-purpose scratchpad */
|
|
BBRM_DATA_INDEX_SAVED_RESET_FLAGS = 4, /* Saved reset flags */
|
|
BBRM_DATA_INDEX_WAKE = 8, /* Wake reasons for hibernate */
|
|
BBRM_DATA_INDEX_PD0 = 12, /* USB-PD saved port0 state */
|
|
BBRM_DATA_INDEX_PD1 = 13, /* USB-PD saved port1 state */
|
|
BBRM_DATA_INDEX_VBNVCNTXT = 16, /* VbNvContext for ARM arch */
|
|
BBRM_DATA_INDEX_RAMLOG = 32, /* RAM log for Booter */
|
|
};
|
|
|
|
/* Issue a watchdog reset*/
|
|
void system_watchdog_reset(void);
|
|
/* Check reset cause and return reset flags */
|
|
void system_check_reset_cause(void);
|
|
|
|
/* Begin flash address for hibernate utility; defined in linker script */
|
|
extern unsigned int __flash_lpfw_start;
|
|
/* End flash address for hibernate utility; defined in linker script */
|
|
extern unsigned int __flash_lpfw_end;
|
|
|
|
/* Begin flash address for little FW; defined in linker script */
|
|
extern unsigned int __flash_lplfw_start;
|
|
/* End flash address for little FW; defined in linker script */
|
|
extern unsigned int __flash_lplfw_end;
|
|
|
|
#endif /* __CROS_EC_SYSTEM_CHIP_H */
|