blob: e325775030f1be23102c421a14f13274e9f33af0 [file] [log] [blame]
/* 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"
#include "backend.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];
};
struct vpnor_data {
struct vpnor_partition_table *vpnor;
struct vpnor_partition_paths paths;
};
#ifdef __cplusplus
extern "C" {
#endif
/** @brief Populate the path object with the default partition paths
*
* @param[in/out] paths - A paths object in which to store the defaults
*
* Returns 0 if the call succeeds, else a negative error code.
*/
void vpnor_default_paths(struct vpnor_partition_paths *paths);
/** @brief Create a virtual PNOR partition table.
*
* @param[in] backend - The backend context pointer
* @param[in] paths - A paths object pointer to initialise vpnor
*
* 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.
*
* The content of the paths object is copied out, ownership is retained by the
* caller.
*
* Returns 0 if the call succeeds, else a negative error code.
*/
int vpnor_init(struct backend *backend,
const struct vpnor_partition_paths *paths);
/** @brief Copy bootloader partition (alongwith TOC) to LPC memory
*
* @param[in] backend - The backend context pointer
*
* @returns 0 on success, negative error code on failure
*/
int vpnor_copy_bootloader_partition(const struct backend *backend, void *buf,
uint32_t count);
/** @brief Destroy partition table, if it exists.
*
* @param[in] backend - The backend context pointer
*/
void vpnor_destroy(struct backend *backend);
#ifdef __cplusplus
}
#endif
#endif