diff options
Diffstat (limited to 'vpnor/mboxd_pnor_partition_table.h')
-rw-r--r-- | vpnor/mboxd_pnor_partition_table.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/vpnor/mboxd_pnor_partition_table.h b/vpnor/mboxd_pnor_partition_table.h new file mode 100644 index 0000000..d13a2d2 --- /dev/null +++ b/vpnor/mboxd_pnor_partition_table.h @@ -0,0 +1,67 @@ +/* SPDX-License-Identifier: Apache-2.0 */ +/* Copyright (C) 2018 IBM Corp. */ +#pragma once + +#ifdef VIRTUAL_PNOR_ENABLED + +#include <limits.h> +#include "pnor_partition_defs.h" + +struct mbox_context; +struct vpnor_partition_table; + +struct vpnor_partition_paths +{ + char ro_loc[PATH_MAX]; + char rw_loc[PATH_MAX]; + char prsv_loc[PATH_MAX]; + char patch_loc[PATH_MAX]; +}; + +#ifdef __cplusplus +extern "C" { +#endif + +/** @brief Create a virtual PNOR partition table. + * + * @param[in] context - mbox context pointer + * + * This API should be called before calling any other APIs below. If a table + * already exists, this function will not do anything further. This function + * will not do anything if the context is NULL. + * + * Returns 0 if the call succeeds, else a negative error code. + */ +int init_vpnor(struct mbox_context *context); + +/** @brief Create a virtual PNOR partition table. + * + * @param[in] context - mbox context pointer + * + * This API is same as above one but requires context->path is initialised + * with all the necessary paths. + * + * Returns 0 if the call succeeds, else a negative error code. + */ + +int init_vpnor_from_paths(struct mbox_context *context); + +/** @brief Copy bootloader partition (alongwith TOC) to LPC memory + * + * @param[in] context - mbox context pointer + * + * @returns 0 on success, negative error code on failure + */ +int vpnor_copy_bootloader_partition(const struct mbox_context *context); + +/** @brief Destroy partition table, if it exists. + * + * @param[in] context - mbox context pointer + */ +void destroy_vpnor(struct mbox_context *context); + +#ifdef __cplusplus +} +#endif + +#endif |