mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-11-26 19:25:02 +00:00
vba_bdb_init initializes the vboot context and decides what to do next based on the vboot register content. Possible actions are: 1. proceed to verify the current slot 2. reset to try the other slot 3. reset to recovery mode bdb_sprw_test demonstrates these actions. BUG=chrome-os-partner:51907 BRANCH=tot TEST=make runtests Change-Id: If72cdd575d09b9162a871f088064ca853b7fd74d Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/342604 Reviewed-by: Randall Spangler <rspangler@chromium.org>
69 lines
1.3 KiB
C
69 lines
1.3 KiB
C
/* Copyright 2016 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.
|
|
*/
|
|
|
|
#ifndef VBOOT_REFERENCE_FIRMWARE_BDB_BDB_API_H
|
|
#define VBOOT_REFERENCE_FIRMWARE_BDB_BDB_API_H
|
|
|
|
#include <stdint.h>
|
|
#include "vboot_register.h"
|
|
|
|
struct vba_context {
|
|
/* Indicate which slot is being tried: 0 - primary, 1 - secondary */
|
|
uint8_t slot;
|
|
};
|
|
|
|
/**
|
|
* Initialize vboot process
|
|
*
|
|
* @param ctx
|
|
* @return enum bdb_return_code
|
|
*/
|
|
int vba_bdb_init(struct vba_context *ctx);
|
|
|
|
/**
|
|
* Finalize vboot process
|
|
*
|
|
* @param ctx
|
|
* @return enum bdb_return_code
|
|
*/
|
|
int vba_bdb_finalize(struct vba_context *ctx);
|
|
|
|
/**
|
|
* Log failed boot attempt and reset the chip
|
|
*
|
|
* @param ctx
|
|
*/
|
|
void vba_bdb_fail(struct vba_context *ctx);
|
|
|
|
/**
|
|
* Get vboot register value
|
|
*
|
|
* Implemented by each chip
|
|
*
|
|
* @param type Type of register to get
|
|
* @return Register value
|
|
*/
|
|
uint32_t vbe_get_vboot_register(enum vboot_register type);
|
|
|
|
/**
|
|
* Set vboot register value
|
|
*
|
|
* Implemented by each chip
|
|
*
|
|
* @param type Type of register to set
|
|
* @param val Value to set
|
|
*/
|
|
void vbe_set_vboot_register(enum vboot_register type, uint32_t val);
|
|
|
|
/**
|
|
* Reset the SoC
|
|
*
|
|
* Implemented by each chip. This is different from reboot (a.k.a. board reset,
|
|
* cold reset).
|
|
*/
|
|
void vbe_reset(void);
|
|
|
|
#endif
|