/* Copyright (c) 2013 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.
*
* Access to portions of the firmware image, perhaps later to be expanded
* to other devices.
*/
#ifndef VBOOT_REFERENCE_REGION_H_
#define VBOOT_REFERENCE_REGION_H_
#include "bmpblk_header.h"
#include "gbb_header.h"
#include "vboot_api.h"
#include "vboot_struct.h"
/* The maximum length of a hardware ID */
#define VB_REGION_HWID_LEN 256
/**
* Read data from a region
*
* @param cparams Vboot common parameters
* @param region Region number to read
* @param offset Offset within region to start reading
* @param size Size of data to read
* @param buf Buffer to put the data into
* @return VBERROR_... error, VBERROR_SUCCESS on success,
*/
VbError_t VbRegionReadData(VbCommonParams *cparams,
enum vb_firmware_region region, uint32_t offset,
uint32_t size, void *buf);
/**
* Check the version of the GBB and print debug information if valid
*
* @param cparams Vboot common parameters
*/
void VbRegionCheckVersion(VbCommonParams *cparams);
/**
* Read the hardware ID from the GBB
*
* @param cparams Vboot common parameters
* @param hwid Place to put HWID, which will be null-terminated
* @param max_size Maximum size of HWID including terminated null
* character (suggest VB_REGION_HWID_LEN). If this size
* it too small then VBERROR_INVALID_PARAMETER is
* returned.
* @return VBERROR_... error, VBERROR_SUCCESS on success,
*/
VbError_t VbRegionReadHWID(VbCommonParams *cparams, char *hwid,
uint32_t max_size);
#endif /* VBOOT_REFERENCE_REGION_H_ */