1 /* 2 * Copyright 2017-2019 NXP 3 * All rights reserved. 4 * 5 * SPDX-License-Identifier: BSD-3-Clause 6 * 7 */ 8 9 #ifndef FSL_FTFX_FEATURES_H 10 #define FSL_FTFX_FEATURES_H 11 12 #if (defined(BL_TARGET_FLASH) || defined(BL_TARGET_ROM) || defined(BL_TARGET_RAM)) 13 #include <assert.h> 14 #include <string.h> 15 #include "fsl_device_registers.h" 16 #include "bootloader_common.h" 17 #else 18 #include "fsl_common.h" 19 #endif 20 21 #include "fsl_ftfx_adapter.h" 22 23 /*! 24 * @addtogroup ftfx_feature 25 * @{ 26 */ 27 /******************************************************************************* 28 * Definitions 29 ******************************************************************************/ 30 31 /*! 32 * @name FTFx configuration 33 * @{ 34 */ 35 /*! @brief Flash driver location. */ 36 #if !defined(FTFx_DRIVER_IS_FLASH_RESIDENT) 37 #if (!defined(BL_TARGET_ROM) && !defined(BL_TARGET_RAM)) 38 #define FTFx_DRIVER_IS_FLASH_RESIDENT 1U /*!< Used for the flash resident application. */ 39 #else 40 #define FTFx_DRIVER_IS_FLASH_RESIDENT 0U /*!< Used for the non-flash resident application. */ 41 #endif 42 #endif 43 44 /*! @brief Flash Driver Export option */ 45 #if !defined(FTFx_DRIVER_IS_EXPORTED) 46 #if defined(BL_TARGET_ROM) 47 #define FTFx_DRIVER_IS_EXPORTED 1U /*!< Used for the ROM bootloader. */ 48 #else 49 #define FTFx_DRIVER_IS_EXPORTED 0U /*!< Used for the MCUXpresso SDK application. */ 50 #endif 51 #endif 52 /*@}*/ 53 54 /*! @brief Indicates whether the secondary flash is supported in the Flash driver */ 55 #if defined(FSL_FEATURE_FLASH_HAS_MULTIPLE_FLASH) || defined(FSL_FEATURE_FLASH_PFLASH_1_START_ADDRESS) 56 #define FTFx_DRIVER_HAS_FLASH1_SUPPORT (1U) 57 #define FTFx_FLASH_COUNT (2U) 58 #else 59 #define FTFx_DRIVER_HAS_FLASH1_SUPPORT (0U) 60 #define FTFx_FLASH_COUNT (1U) 61 #endif 62 63 /*! 64 * @name Secondary flash configuration 65 * @{ 66 */ 67 /*! @brief Indicates whether the secondary flash has its own protection register in flash module. */ 68 #if defined(FSL_FEATURE_FLASH_HAS_MULTIPLE_FLASH) && defined(FTFE_FPROTS_PROTS_MASK) 69 #define FTFx_FLASH1_HAS_PROT_CONTROL (1U) 70 #else 71 #define FTFx_FLASH1_HAS_PROT_CONTROL (0U) 72 #endif 73 74 /*! @brief Indicates whether the secondary flash has its own Execute-Only access register in flash module. */ 75 #if defined(FSL_FEATURE_FLASH_HAS_MULTIPLE_FLASH) && defined(FTFE_FACSSS_SGSIZE_S_MASK) 76 #define FTFx_FLASH1_HAS_XACC_CONTROL (1U) 77 #else 78 #define FTFx_FLASH1_HAS_XACC_CONTROL (0U) 79 #endif 80 /*@}*/ 81 82 #if FTFx_FLASH1_HAS_XACC_CONTROL || FTFx_FLASH1_HAS_PROT_CONTROL 83 #define FTFx_FLASH1_IS_INDEPENDENT_BLOCK (1U) 84 #else 85 #define FTFx_FLASH1_IS_INDEPENDENT_BLOCK (0U) 86 #endif 87 88 /*! @}*/ 89 90 #endif /* FSL_FTFX_FEATURES_H */ 91