/* SPDX-License-Identifier: Apache-2.0 */ /* Copyright (C) 2018 IBM Corp. */ #pragma once #ifdef VIRTUAL_PNOR_ENABLED #include #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