1 /*
2  * Copyright 2018-2021 NXP
3  * All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  *
7  */
8 
9 #ifndef FSL_FLASH_ADAPTER_H_
10 #define FSL_FLASH_ADAPTER_H_
11 
12 /*******************************************************************************
13  * Definitions
14  ******************************************************************************/
15 
16 /*!
17  * @name FTFx configuration
18  * @{
19  */
20 /*! @brief Flash driver location. */
21 #if !defined(FLASH_DRIVER_IS_FLASH_RESIDENT)
22 #if (!defined(BL_TARGET_ROM) && !defined(BL_TARGET_RAM))
23 #define FLASH_DRIVER_IS_FLASH_RESIDENT 1 /*!< Used for the flash resident application. */
24 #else
25 #define FLASH_DRIVER_IS_FLASH_RESIDENT 0 /*!< Used for the non-flash resident application. */
26 #endif
27 #endif
28 
29 #if defined(FMU0_MSF1)
30 #define FLASH                   FMU0_MSF1_NS
31 #define FLASH_FSTAT_FAIL_MASK   FMU_FSTAT_FAIL_MASK
32 #define FLASH_FSTAT_CMDABT_MASK FMU_FSTAT_CMDABT_MASK
33 #define FLASH_FSTAT_PVIOL_MASK  FMU_FSTAT_PVIOL_MASK
34 #define FLASH_FSTAT_ACCERR_MASK FMU_FSTAT_ACCERR_MASK
35 #define FLASH_FSTAT_CWSABT_MASK FMU_FSTAT_CWSABT_MASK
36 #define FLASH_FSTAT_CCIF_MASK   FMU_FSTAT_CCIF_MASK
37 #define FLASH_FSTAT_CMDPRT_MASK FMU_FSTAT_CMDPRT_MASK
38 #define FLASH_FSTAT_CMDP_MASK   FMU_FSTAT_CMDP_MASK
39 #define FLASH_FSTAT_CMDDID_MASK FMU_FSTAT_CMDDID_MASK
40 #define FLASH_FSTAT_DFDIF_MASK  FMU_FSTAT_DFDIF_MASK
41 #define FLASH_FSTAT_PEWEN_MASK  FMU_FSTAT_PEWEN_MASK
42 #define FLASH_FSTAT_PERDY_MASK  FMU_FSTAT_PERDY_MASK
43 #elif defined(MSF1)
44 #define FLASH                   MSF1
45 #define FLASH_FSTAT_FAIL_MASK   MSF1_FSTAT_FAIL_MASK
46 #define FLASH_FSTAT_CMDABT_MASK MSF1_FSTAT_CMDABT_MASK
47 #define FLASH_FSTAT_PVIOL_MASK  MSF1_FSTAT_PVIOL_MASK
48 #define FLASH_FSTAT_ACCERR_MASK MSF1_FSTAT_ACCERR_MASK
49 #define FLASH_FSTAT_CWSABT_MASK MSF1_FSTAT_CWSABT_MASK
50 #define FLASH_FSTAT_CCIF_MASK   MSF1_FSTAT_CCIF_MASK
51 #define FLASH_FSTAT_CMDPRT_MASK MSF1_FSTAT_CMDPRT_MASK
52 #define FLASH_FSTAT_CMDP_MASK   MSF1_FSTAT_CMDP_MASK
53 #define FLASH_FSTAT_CMDDID_MASK MSF1_FSTAT_CMDDID_MASK
54 #define FLASH_FSTAT_DFDIF_MASK  MSF1_FSTAT_DFDIF_MASK
55 #define FLASH_FSTAT_PEWEN_MASK  MSF1_FSTAT_PEWEN_MASK
56 #define FLASH_FSTAT_PERDY_MASK  MSF1_FSTAT_PERDY_MASK
57 #elif defined(FMU0)
58 #if (defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE & 0x2))
59 #define FLASH FMU0_NS
60 #if defined(RF_FMU)
61 #define NBU_FLASH RF_FMU_NS
62 #endif
63 #else
64 #define FLASH FMU0
65 #if defined(RF_FMU)
66 #define NBU_FLASH RF_FMU
67 #endif
68 #endif
69 #define FLASH_FSTAT_FAIL_MASK   FMU_FSTAT_FAIL_MASK
70 #define FLASH_FSTAT_CMDABT_MASK FMU_FSTAT_CMDABT_MASK
71 #define FLASH_FSTAT_PVIOL_MASK  FMU_FSTAT_PVIOL_MASK
72 #define FLASH_FSTAT_ACCERR_MASK FMU_FSTAT_ACCERR_MASK
73 #define FLASH_FSTAT_CWSABT_MASK FMU_FSTAT_CWSABT_MASK
74 #define FLASH_FSTAT_CCIF_MASK   FMU_FSTAT_CCIF_MASK
75 #define FLASH_FSTAT_CMDPRT_MASK FMU_FSTAT_CMDPRT_MASK
76 #define FLASH_FSTAT_CMDP_MASK   FMU_FSTAT_CMDP_MASK
77 #define FLASH_FSTAT_CMDDID_MASK FMU_FSTAT_CMDDID_MASK
78 #define FLASH_FSTAT_DFDIF_MASK  FMU_FSTAT_DFDIF_MASK
79 #define FLASH_FSTAT_PEWEN_MASK  FMU_FSTAT_PEWEN_MASK
80 #define FLASH_FSTAT_PERDY_MASK  FMU_FSTAT_PERDY_MASK
81 #endif
82 
83 #if defined(SMSCM)
84 #define SMSCM_FLASH_CACHE_CTRL_MASK       SMSCM_OCMDR0_OCMCF2_MASK
85 #define SMSCM_FLASH_CACHE_CTRL(x)         SMSCM_OCMDR0_OCMCF2(x)
86 #define SMSCM_FLASH_SPECULATION_CTRL_MASK SMSCM_OCMDR0_OCMCF1_MASK
87 #define SMSCM_FLASH_SPECULATION_CTRL(x)   SMSCM_OCMDR0_OCMCF1(x)
88 #endif
89 
90 #if defined(RF_FMCCFG)
91 #define NBU_FLASH_CACHE_CTRL_MASK       RF_FMCCFG_RFMCCFG_RFCF3_MASK
92 #define NBU_FLASH_CACHE_CTRL(x)         RF_FMCCFG_RFMCCFG_RFCF3(x)
93 #define NBU_FLASH_SPECULATION_CTRL_MASK RF_FMCCFG_RFMCCFG_RFCF2_MASK
94 #define NBU_FLASH_SPECULATION_CTRL(x)   RF_FMCCFG_RFMCCFG_RFCF2(x)
95 #endif
96 
97 #define FLASH_FEATURE_PFLASH0_START_ADDRESS      FSL_FEATURE_FLASH_PFLASH_START_ADDRESS
98 #define FLASH_FEATURE_PFLASH0_BLOCK_COUNT        FSL_FEATURE_FLASH_PFLASH_BLOCK_COUNT
99 #define FLASH_FEATURE_PFLASH0_BLOCK_SIZE_512KB   FSL_FEATURE_FLASH_PFLASH_BLOCK_SIZE_512KB
100 #define FLASH_FEATURE_PFLASH0_BLOCK_SIZE         FSL_FEATURE_FLASH_PFLASH_BLOCK_SIZE
101 #define FLASH_FEATURE_PFLASH0_IFR0_START_ADDRESS FSL_FEATURE_FLASH_IFR0_START_ADDRESS
102 #define FLASH_FEATURE_PFLASH0_IFR0_SIZE          FSL_FEATURE_FLASH_IFR0_SIZE
103 
104 #define FLASH_FEATURE_PFLASH1_START_ADDRESS      FSL_FEATURE_RF_FLASH_PFLASH_START_ADDRESS
105 #define FLASH_FEATURE_PFLASH1_BLOCK_COUNT        FSL_FEATURE_RF_FLASH_PFLASH_BLOCK_COUNT
106 #define FLASH_FEATURE_PFLASH1_BLOCK_SIZE         FSL_FEATURE_RF_FLASH_PFLASH_BLOCK_SIZE
107 #define FLASH_FEATURE_PFLASH1_IFR0_START_ADDRESS FSL_FEATURE_RF_FLASH_IFR0_START_ADDRESS
108 #define FLASH_FEATURE_PFLASH1_IFR0_SIZE          FSL_FEATURE_RF_FLASH_IFR0_SIZE
109 
110 #define FLASH_FEATURE_SECTOR_SIZE         FSL_FEATURE_FLASH_PFLASH_SECTOR_SIZE
111 #define FLASH_FEATURE_PHRASE_SIZE         FSL_FEATURE_FLASH_PFLASH_PHRASE_SIZE
112 #define FLASH_FEATURE_PAGE_SIZE           FSL_FEATURE_FLASH_PFLASH_PAGE_SIZE
113 #define FLASH_FEATURE_PHRASE_SIZE_IN_WORD (4u)
114 #define FLASH_FEATURE_PAGE_SIZE_IN_WORD   (32u)
115 
116 #endif /* FSL_FLASH_ADAPTER_H_ */
117