123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- /*
- * The Clear BSD License
- * Copyright 2013-2016 Freescale Semiconductor, Inc.
- * Copyright 2016-2018 NXP
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted (subject to the limitations in the
- * disclaimer below) provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
- * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
- * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
- #ifndef _FSL_FTFX_CACHE_H_
- #define _FSL_FTFX_CACHE_H_
- #include "fsl_ftfx_controller.h"
- /*!
- * @addtogroup ftfx_cache_driver
- * @{
- */
- /*******************************************************************************
- * Definitions
- ******************************************************************************/
- /*!
- * @name FTFx cache version
- * @{
- */
- /*! @brief Flexnvm driver version for SDK*/
- #define FSL_FTFX_CACHE_DRIVER_VERSION (MAKE_VERSION(3, 0, 0)) /*!< Version 1.0.0. */
- /*@}*/
- /*!
- * @brief FTFx prefetch speculation status.
- */
- typedef struct _flash_prefetch_speculation_status
- {
- bool instructionOff; /*!< Instruction speculation.*/
- bool dataOff; /*!< Data speculation.*/
- } ftfx_prefetch_speculation_status_t;
- /*!
- * @brief Constants for execute-in-RAM flash function.
- */
- enum _ftfx_cache_ram_func_constants
- {
- kFTFx_CACHE_RamFuncMaxSizeInWords = 16U, /*!< The maximum size of execute-in-RAM function.*/
- };
- /*! @brief FTFx cache driver state information.
- *
- * An instance of this structure is allocated by the user of the flash driver and
- * passed into each of the driver APIs.
- */
- typedef struct _ftfx_cache_config
- {
- uint8_t flashMemoryIndex; /*!< 0 - primary flash; 1 - secondary flash*/
- uint8_t reserved[3];
- uint32_t *comBitOperFuncAddr; /*!< An buffer point to the flash execute-in-RAM function. */
- } ftfx_cache_config_t;
- /*******************************************************************************
- * API
- ******************************************************************************/
- #if defined(__cplusplus)
- extern "C" {
- #endif
- /*!
- * @brief Initializes the global FTFx cache structure members.
- *
- * This function checks and initializes the Flash module for the other FTFx cache APIs.
- *
- * @param config Pointer to the storage for the driver runtime state.
- *
- * @retval #kStatus_FTFx_Success API was executed successfully.
- * @retval #kStatus_FTFx_InvalidArgument An invalid argument is provided.
- * @retval #kStatus_FTFx_ExecuteInRamFunctionNotReady Execute-in-RAM function is not available.
- */
- status_t FTFx_CACHE_Init(ftfx_cache_config_t *config);
- /*!
- * @brief Process the cache/prefetch/speculation to the flash.
- *
- * @param config A pointer to the storage for the driver runtime state.
- * @param process The possible option used to control flash cache/prefetch/speculation
- * @retval #kStatus_FTFx_Success API was executed successfully.
- * @retval #kStatus_FTFx_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FTFx_ExecuteInRamFunctionNotReady Execute-in-RAM function is not available.
- */
- status_t FTFx_CACHE_ClearCachePrefetchSpeculation(ftfx_cache_config_t *config, bool isPreProcess);
- /*!
- * @brief Sets the PFlash prefetch speculation to the intended speculation status.
- *
- * @param speculationStatus The expected protect status to set to the PFlash protection register. Each bit is
- * @retval #kStatus_FTFx_Success API was executed successfully.
- * @retval #kStatus_FTFx_InvalidSpeculationOption An invalid speculation option argument is provided.
- */
- status_t FTFx_CACHE_PflashSetPrefetchSpeculation(ftfx_prefetch_speculation_status_t *speculationStatus);
- /*!
- * @brief Gets the PFlash prefetch speculation status.
- *
- * @param speculationStatus Speculation status returned by the PFlash IP.
- * @retval #kStatus_FTFx_Success API was executed successfully.
- */
- status_t FTFx_CACHE_PflashGetPrefetchSpeculation(ftfx_prefetch_speculation_status_t *speculationStatus);
- #if defined(__cplusplus)
- }
- #endif
- /*! @}*/
- #endif /* _FSL_FTFX_CACHE_H_ */
|