blob: fc63a303c76601d69474e01d5efa455a41220134 [file] [log] [blame]
/*
* Copyright (c) 2018 The Fuchsia Authors
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef _ZIRCON_ZIRCON_H_
#define _ZIRCON_ZIRCON_H_
#include <lib/zbi-format/driver-config.h>
#include <zircon/hw/gpt.h>
#include <libavb/libavb.h>
#include <libzbi/zbi.h>
/* called before booting to allow board specific additions to the bootdata */
int zircon_preboot(zbi_header_t *zbi, size_t capacity);
AvbIOResult read_rollback_index(AvbOps *ops, size_t rollback_index_location,
uint64_t *out_rollback_index);
AvbIOResult write_rollback_index(AvbOps *ops, size_t rollback_index_location,
uint64_t rollback_index);
AvbIOResult read_is_device_unlocked(AvbOps *ops, bool *out_is_unlocked);
// Add bootloader file items.
zbi_result_t AddBootloaderFiles(const char *name, const void *data, size_t len);
// Loads and verifies an image from RAM.
//
// This will do the normal boot flow validation on the given image and copy
// it into the kernel load buffer described by the "loadaddr"/"loadsize" env
// vars.
//
// If this function succeeds, you may call zircon_ram_boot() to boot the
// loaded image.
//
// Args:
// image: buffer containing the image.
// size: image size.
//
// Returns 0 on success.
int zircon_ram_load(const void *image, size_t size);
// Boots a Zircon image previously loaded via zircon_ram_load().
//
// This function will not return unless a failure occurs.
void zircon_ram_boot(void);
// Constructs a zbi container containing the Vim3 specific ZBI items.
int get_board_zbi_items_container(void* buffer, size_t capacity);
#endif