Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 

394 linhas
18 KiB

  1. /*
  2. * Copyright 2017-2020 NXP
  3. * All rights reserved.
  4. *
  5. * SPDX-License-Identifier: BSD-3-Clause
  6. *
  7. */
  8. #ifndef FSL_FTFX_ADAPTER_H
  9. #define FSL_FTFX_ADAPTER_H
  10. /*******************************************************************************
  11. * Definitions
  12. ******************************************************************************/
  13. #define INVALID_REG_MASK (0)
  14. #define INVALID_REG_SHIFT (0)
  15. #define INVALID_REG_ADDRESS (NULL)
  16. #define INVALID_REG_VALUE (0x00U)
  17. /* @brief Flash register access type defines */
  18. #define FTFx_REG8_ACCESS_TYPE volatile uint8_t *
  19. #define FTFx_REG32_ACCESS_TYPE volatile uint32_t *
  20. /*!
  21. * @name Common flash register info defines
  22. * @{
  23. */
  24. #if defined(FTFA)
  25. #define FTFx FTFA
  26. #define FTFx_BASE FTFA_BASE
  27. #define FTFx_FSTAT_CCIF_MASK FTFA_FSTAT_CCIF_MASK
  28. #define FTFx_FSTAT_RDCOLERR_MASK FTFA_FSTAT_RDCOLERR_MASK
  29. #define FTFx_FSTAT_ACCERR_MASK FTFA_FSTAT_ACCERR_MASK
  30. #define FTFx_FSTAT_FPVIOL_MASK FTFA_FSTAT_FPVIOL_MASK
  31. #define FTFx_FSTAT_MGSTAT0_MASK FTFA_FSTAT_MGSTAT0_MASK
  32. #define FTFx_FSEC_SEC_MASK FTFA_FSEC_SEC_MASK
  33. #define FTFx_FSEC_KEYEN_MASK FTFA_FSEC_KEYEN_MASK
  34. #if defined(FSL_FEATURE_FLASH_HAS_FLEX_RAM) && FSL_FEATURE_FLASH_HAS_FLEX_RAM
  35. #define FTFx_FCNFG_RAMRDY_MASK FTFA_FCNFG_RAMRDY_MASK
  36. #endif /* FSL_FEATURE_FLASH_HAS_FLEX_RAM */
  37. #if defined(FSL_FEATURE_FLASH_HAS_FLEX_NVM) && FSL_FEATURE_FLASH_HAS_FLEX_NVM
  38. #define FTFx_FCNFG_EEERDY_MASK FTFA_FCNFG_EEERDY_MASK
  39. #endif /* FSL_FEATURE_FLASH_HAS_FLEX_NVM */
  40. #elif defined(FTFE)
  41. #define FTFx FTFE
  42. #define FTFx_BASE FTFE_BASE
  43. #define FTFx_FSTAT_CCIF_MASK FTFE_FSTAT_CCIF_MASK
  44. #define FTFx_FSTAT_RDCOLERR_MASK FTFE_FSTAT_RDCOLERR_MASK
  45. #define FTFx_FSTAT_ACCERR_MASK FTFE_FSTAT_ACCERR_MASK
  46. #define FTFx_FSTAT_FPVIOL_MASK FTFE_FSTAT_FPVIOL_MASK
  47. #define FTFx_FSTAT_MGSTAT0_MASK FTFE_FSTAT_MGSTAT0_MASK
  48. #define FTFx_FSEC_SEC_MASK FTFE_FSEC_SEC_MASK
  49. #define FTFx_FSEC_KEYEN_MASK FTFE_FSEC_KEYEN_MASK
  50. #if defined(FSL_FEATURE_FLASH_HAS_FLEX_RAM) && FSL_FEATURE_FLASH_HAS_FLEX_RAM
  51. #define FTFx_FCNFG_RAMRDY_MASK FTFE_FCNFG_RAMRDY_MASK
  52. #endif /* FSL_FEATURE_FLASH_HAS_FLEX_RAM */
  53. #if defined(FSL_FEATURE_FLASH_HAS_FLEX_NVM) && FSL_FEATURE_FLASH_HAS_FLEX_NVM
  54. #define FTFx_FCNFG_EEERDY_MASK FTFE_FCNFG_EEERDY_MASK
  55. #endif /* FSL_FEATURE_FLASH_HAS_FLEX_NVM */
  56. #elif defined(FTFL)
  57. #define FTFx FTFL
  58. #define FTFx_BASE FTFL_BASE
  59. #define FTFx_FSTAT_CCIF_MASK FTFL_FSTAT_CCIF_MASK
  60. #define FTFx_FSTAT_RDCOLERR_MASK FTFL_FSTAT_RDCOLERR_MASK
  61. #define FTFx_FSTAT_ACCERR_MASK FTFL_FSTAT_ACCERR_MASK
  62. #define FTFx_FSTAT_FPVIOL_MASK FTFL_FSTAT_FPVIOL_MASK
  63. #define FTFx_FSTAT_MGSTAT0_MASK FTFL_FSTAT_MGSTAT0_MASK
  64. #define FTFx_FSEC_SEC_MASK FTFL_FSEC_SEC_MASK
  65. #define FTFx_FSEC_KEYEN_MASK FTFL_FSEC_KEYEN_MASK
  66. #if defined(FSL_FEATURE_FLASH_HAS_FLEX_RAM) && FSL_FEATURE_FLASH_HAS_FLEX_RAM
  67. #define FTFx_FCNFG_RAMRDY_MASK FTFL_FCNFG_RAMRDY_MASK
  68. #endif /* FSL_FEATURE_FLASH_HAS_FLEX_RAM */
  69. #if defined(FSL_FEATURE_FLASH_HAS_FLEX_NVM) && FSL_FEATURE_FLASH_HAS_FLEX_NVM
  70. #define FTFx_FCNFG_EEERDY_MASK FTFL_FCNFG_EEERDY_MASK
  71. #endif /* FSL_FEATURE_FLASH_HAS_FLEX_NVM */
  72. #else
  73. #error "Unknown flash controller"
  74. #endif
  75. /*@}*/
  76. /*!
  77. * @name Common flash register access info defines
  78. * @{
  79. */
  80. #define FTFx_FCCOB3_REG (FTFx->FCCOB3)
  81. #define FTFx_FCCOB5_REG (FTFx->FCCOB5)
  82. #define FTFx_FCCOB6_REG (FTFx->FCCOB6)
  83. #define FTFx_FCCOB7_REG (FTFx->FCCOB7)
  84. #if defined(FSL_FEATURE_FLASH_HAS_MULTIPLE_FLASH) || defined(FSL_FEATURE_FLASH_PFLASH_1_START_ADDRESS)
  85. #if defined(FTFA_FPROTSL_PROTS_MASK) || defined(FTFE_FPROTSL_PROTS_MASK) || defined(FTFL_FPROTSL_PROTS_MASK)
  86. #define FTFx_FLASH1_HAS_INT_PROT_REG (1)
  87. #define FTFx_FPROTSH_REG (FTFx->FPROTSH)
  88. #define FTFx_FPROTSL_REG (FTFx->FPROTSL)
  89. #else
  90. #define FTFx_FLASH1_HAS_INT_PROT_REG (0)
  91. #endif
  92. #endif
  93. #if defined(FTFA_FPROTH0_PROT_MASK) || defined(FTFE_FPROTH0_PROT_MASK) || defined(FTFL_FPROTH0_PROT_MASK)
  94. #define FTFx_FLASH0_HAS_HIGH_PROT_REG (1)
  95. #define FTFx_FPROT_HIGH_REG (FTFx->FPROTH3)
  96. #define FTFx_FPROTH3_REG (FTFx->FPROTH3)
  97. #define FTFx_FPROTH2_REG (FTFx->FPROTH2)
  98. #define FTFx_FPROTH1_REG (FTFx->FPROTH1)
  99. #define FTFx_FPROTH0_REG (FTFx->FPROTH0)
  100. #else
  101. #define FTFx_FLASH0_HAS_HIGH_PROT_REG (0)
  102. #endif
  103. #if defined(FTFA_FPROTL0_PROT_MASK) || defined(FTFE_FPROTL0_PROT_MASK) || defined(FTFL_FPROTL0_PROT_MASK)
  104. #define FTFx_FPROT_LOW_REG (FTFx->FPROTL3)
  105. #define FTFx_FPROTL3_REG (FTFx->FPROTL3)
  106. #define FTFx_FPROTL2_REG (FTFx->FPROTL2)
  107. #define FTFx_FPROTL1_REG (FTFx->FPROTL1)
  108. #define FTFx_FPROTL0_REG (FTFx->FPROTL0)
  109. #elif defined(FTFA_FPROT0_PROT_MASK) || defined(FTFE_FPROT0_PROT_MASK) || defined(FTFL_FPROT0_PROT_MASK)
  110. #define FTFx_FPROT_LOW_REG (FTFx->FPROT3)
  111. #define FTFx_FPROTL3_REG (FTFx->FPROT3)
  112. #define FTFx_FPROTL2_REG (FTFx->FPROT2)
  113. #define FTFx_FPROTL1_REG (FTFx->FPROT1)
  114. #define FTFx_FPROTL0_REG (FTFx->FPROT0)
  115. #endif
  116. #if defined(FSL_FEATURE_FLASH_HAS_MULTIPLE_FLASH) || defined(FSL_FEATURE_FLASH_PFLASH_1_START_ADDRESS)
  117. #if defined(FTFA_FACSSS_SGSIZE_S_MASK) || defined(FTFE_FACSSS_SGSIZE_S_MASK) || defined(FTFL_FACSSS_SGSIZE_S_MASK)
  118. #define FTFx_FLASH1_HAS_INT_XACC_REG (1)
  119. #define FTFx_XACCSH_REG (FTFx->XACCSH)
  120. #define FTFx_XACCSL_REG (FTFx->XACCSL)
  121. #define FTFx_FACSSS_REG (FTFx->FACSSS)
  122. #define FTFx_FACSNS_REG (FTFx->FACSNS)
  123. #else
  124. #define FTFx_FLASH1_HAS_INT_XACC_REG (0)
  125. #endif
  126. #endif
  127. #if (defined(FTFA_FACSS_SGSIZE_MASK) || defined(FTFE_FACSS_SGSIZE_MASK) || defined(FTFL_FACSS_SGSIZE_MASK) || \
  128. defined(FTFA_FACSS_SGSIZE_S_MASK) || defined(FTFE_FACSS_SGSIZE_S_MASK) || defined(FTFL_FACSS_SGSIZE_S_MASK))
  129. #define FTFx_FLASH0_HAS_INT_XACC_REG (1)
  130. #define FTFx_XACCH3_REG (FTFx->XACCH3)
  131. #define FTFx_XACCL3_REG (FTFx->XACCL3)
  132. #define FTFx_FACSS_REG (FTFx->FACSS)
  133. #define FTFx_FACSN_REG (FTFx->FACSN)
  134. #else
  135. #define FTFx_FLASH0_HAS_INT_XACC_REG (0)
  136. #endif
  137. /*@}*/
  138. /*!
  139. * @brief MCM cache register access info defines.
  140. */
  141. #if defined(MCM_PLACR_CFCC_MASK)
  142. #define MCM_CACHE_CLEAR_MASK MCM_PLACR_CFCC_MASK
  143. #define MCM_CACHE_CLEAR_SHIFT MCM_PLACR_CFCC_SHIFT
  144. #if defined(MCM0)
  145. #define MCM0_CACHE_REG MCM0->PLACR
  146. #elif defined(MCM) && (!defined(MCM1))
  147. #define MCM0_CACHE_REG MCM->PLACR
  148. #endif
  149. #if defined(MCM1)
  150. #define MCM1_CACHE_REG MCM1->PLACR
  151. #elif defined(MCM) && (!defined(MCM0))
  152. #define MCM1_CACHE_REG MCM->PLACR
  153. #endif
  154. #else
  155. #define MCM_CACHE_CLEAR_MASK INVALID_REG_MASK
  156. #define MCM_CACHE_CLEAR_SHIFT INVALID_REG_SHIFT
  157. #define MCM0_CACHE_REG (INVALID_REG_ADDRESS)
  158. #define MCM1_CACHE_REG (INVALID_REG_ADDRESS)
  159. #endif
  160. /*!
  161. * @brief FMC cache register access info defines.
  162. */
  163. #if defined(FMC_PFB01CR_S_INV_MASK)
  164. #define FMC_SPECULATION_INVALIDATE_MASK FMC_PFB01CR_S_INV_MASK
  165. #define FMC_SPECULATION_INVALIDATE_SHIFT FMC_PFB01CR_S_INV_SHIFT
  166. #define FMC_SPECULATION_INVALIDATE_REG FMC->PFB01CR
  167. #elif defined(FMC_PFB01CR_S_B_INV_MASK)
  168. #define FMC_SPECULATION_INVALIDATE_MASK FMC_PFB01CR_S_B_INV_MASK
  169. #define FMC_SPECULATION_INVALIDATE_SHIFT FMC_PFB01CR_S_B_INV_SHIFT
  170. #define FMC_SPECULATION_INVALIDATE_REG FMC->PFB01CR
  171. #elif defined(FMC_PFB0CR_S_INV_MASK)
  172. #define FMC_SPECULATION_INVALIDATE_MASK FMC_PFB0CR_S_INV_MASK
  173. #define FMC_SPECULATION_INVALIDATE_SHIFT FMC_PFB0CR_S_INV_SHIFT
  174. #define FMC_SPECULATION_INVALIDATE_REG FMC->PFB0CR
  175. #elif defined(FMC_PFB0CR_S_B_INV_MASK)
  176. #define FMC_SPECULATION_INVALIDATE_MASK FMC_PFB0CR_S_B_INV_MASK
  177. #define FMC_SPECULATION_INVALIDATE_SHIFT FMC_PFB0CR_S_B_INV_SHIFT
  178. #define FMC_SPECULATION_INVALIDATE_REG FMC->PFB0CR
  179. #else
  180. #define FMC_SPECULATION_INVALIDATE_MASK INVALID_REG_MASK
  181. #define FMC_SPECULATION_INVALIDATE_SHIFT INVALID_REG_SHIFT
  182. #define FMC_SPECULATION_INVALIDATE(x) (((uint32_t)(((uint32_t)(x)) << INVALID_REG_SHIFT)) & INVALID_REG_MASK)
  183. #define FMC_SPECULATION_INVALIDATE_REG (INVALID_REG_ADDRESS)
  184. #endif
  185. #if defined(FMC_PFB01CR_CINV_WAY_MASK)
  186. #define FMC_CACHE_CLEAR_MASK FMC_PFB01CR_CINV_WAY_MASK
  187. #define FMC_CACHE_CLEAR_SHIFT FMC_PFB01CR_CINV_WAY_SHIFT
  188. #define FMC_CACHE_CLEAR(x) FMC_PFB01CR_CINV_WAY(x)
  189. #elif defined(FMC_PFB0CR_CINV_WAY_MASK)
  190. #define FMC_CACHE_CLEAR_MASK FMC_PFB0CR_CINV_WAY_MASK
  191. #define FMC_CACHE_CLEAR_SHIFT FMC_PFB0CR_CINV_WAY_SHIFT
  192. #define FMC_CACHE_CLEAR(x) FMC_PFB0CR_CINV_WAY(x)
  193. #else
  194. #define FMC_CACHE_CLEAR_MASK INVALID_REG_MASK
  195. #define FMC_CACHE_CLEAR_SHIFT INVALID_REG_SHIFT
  196. #define FMC_CACHE_CLEAR(x) (((uint32_t)(((uint32_t)(x)) << INVALID_REG_SHIFT)) & INVALID_REG_MASK)
  197. #endif
  198. #if defined(FMC_PFB01CR_B0DPE_MASK)
  199. #define FMC_CACHE_B0DPE_MASK FMC_PFB01CR_B0DPE_MASK
  200. #define FMC_CACHE_B0IPE_MASK FMC_PFB01CR_B0IPE_MASK
  201. #define FMC_CACHE_REG FMC->PFB01CR
  202. #elif defined(FMC_PFB0CR_B0DPE_MASK)
  203. #define FMC_CACHE_B0DPE_MASK FMC_PFB0CR_B0DPE_MASK
  204. #define FMC_CACHE_B0IPE_MASK FMC_PFB0CR_B0IPE_MASK
  205. #define FMC_CACHE_REG FMC->PFB0CR
  206. #else
  207. #define FMC_CACHE_B0DPE_MASK INVALID_REG_MASK
  208. #define FMC_CACHE_B0IPE_MASK INVALID_REG_MASK
  209. #define FMC_CACHE_REG (INVALID_REG_ADDRESS)
  210. #endif
  211. /*!
  212. * @brief MSCM cache register access info defines.
  213. */
  214. #if defined(MSCM_OCMDR_OCM1_MASK)
  215. #define MSCM_SPECULATION_SET_MASK MSCM_OCMDR_OCM1_MASK
  216. #define MSCM_SPECULATION_SET_SHIFT MSCM_OCMDR_OCM1_SHIFT
  217. #define MSCM_SPECULATION_SET(x) MSCM_OCMDR_OCM1(x)
  218. #elif defined(MSCM_OCMDR0_OCM1_MASK) || defined(MSCM_OCMDR1_OCM1_MASK)
  219. #define MSCM_SPECULATION_SET_MASK MSCM_OCMDR0_OCM1_MASK
  220. #define MSCM_SPECULATION_SET_SHIFT MSCM_OCMDR0_OCM1_SHIFT
  221. #define MSCM_SPECULATION_SET(x) MSCM_OCMDR0_OCM1(x)
  222. #elif defined(MSCM_OCMDR_OCMC1_MASK)
  223. #define MSCM_SPECULATION_SET_MASK MSCM_OCMDR_OCMC1_MASK
  224. #define MSCM_SPECULATION_SET_SHIFT MSCM_OCMDR_OCMC1_SHIFT
  225. #define MSCM_SPECULATION_SET(x) MSCM_OCMDR_OCMC1(x)
  226. #else
  227. #define MSCM_SPECULATION_SET_MASK INVALID_REG_MASK
  228. #define MSCM_SPECULATION_SET_SHIFT INVALID_REG_SHIFT
  229. #define MSCM_SPECULATION_SET(x) (((uint32_t)(((uint32_t)(x)) << INVALID_REG_SHIFT)) & INVALID_REG_MASK)
  230. #endif
  231. #if defined(MSCM_OCMDR_OCM2_MASK)
  232. #define MSCM_CACHE_CLEAR_MASK MSCM_OCMDR_OCM2_MASK
  233. #define MSCM_CACHE_CLEAR_SHIFT MSCM_OCMDR_OCM2_SHIFT
  234. #define MSCM_CACHE_CLEAR(x) MSCM_OCMDR_OCM2(x)
  235. #else
  236. #define MSCM_CACHE_CLEAR_MASK INVALID_REG_MASK
  237. #define MSCM_CACHE_CLEAR_SHIFT INVALID_REG_SHIFT
  238. #define MSCM_CACHE_CLEAR(x) (((uint32_t)(((uint32_t)(x)) << INVALID_REG_SHIFT)) & INVALID_REG_MASK)
  239. #endif
  240. #if defined(MSCM_OCMDR_OCM1_MASK) || defined(MSCM_OCMDR_OCMC1_MASK)
  241. #define MSCM_OCMDR0_REG MSCM->OCMDR[0]
  242. #define MSCM_OCMDR1_REG MSCM->OCMDR[1]
  243. #elif defined(MSCM_OCMDR0_OCM1_MASK) || defined(MSCM_OCMDR1_OCM1_MASK)
  244. #define MSCM_OCMDR0_REG MSCM->OCMDR0
  245. #define MSCM_OCMDR1_REG MSCM->OCMDR1
  246. #else
  247. #define MSCM_OCMDR0_REG (INVALID_REG_ADDRESS)
  248. #define MSCM_OCMDR1_REG (INVALID_REG_ADDRESS)
  249. #endif
  250. /*!
  251. * @brief MSCM prefetch speculation defines.
  252. */
  253. #define MSCM_OCMDR_OCMC1_DFDS_MASK (0x10U)
  254. #define MSCM_OCMDR_OCMC1_DFCS_MASK (0x20U)
  255. #define MSCM_OCMDR_OCMC1_DFDS_SHIFT (4U)
  256. #define MSCM_OCMDR_OCMC1_DFCS_SHIFT (5U)
  257. /*!
  258. * @brief SIM PFSIZE register access info defines.
  259. */
  260. #if defined(SIM_FCFG1_CORE0_PFSIZE_MASK)
  261. #define SIM_FLASH0_PFSIZE_MASK SIM_FCFG1_CORE0_PFSIZE_MASK
  262. #define SIM_FLASH0_PFSIZE_SHIFT SIM_FCFG1_CORE0_PFSIZE_SHIFT
  263. #define SIM_FCFG1_REG SIM->FCFG1
  264. #elif defined(SIM_FCFG1_PFSIZE_MASK)
  265. #define SIM_FLASH0_PFSIZE_MASK SIM_FCFG1_PFSIZE_MASK
  266. #define SIM_FLASH0_PFSIZE_SHIFT SIM_FCFG1_PFSIZE_SHIFT
  267. #define SIM_FCFG1_REG SIM->FCFG1
  268. #else
  269. #define SIM_FLASH0_PFSIZE_MASK INVALID_REG_MASK
  270. #define SIM_FLASH0_PFSIZE_SHIFT INVALID_REG_SHIFT
  271. #define SIM_FCFG1_REG INVALID_REG_VALUE
  272. #endif
  273. #if defined(SIM_FCFG1_CORE1_PFSIZE_MASK)
  274. #define SIM_FLASH1_PFSIZE_MASK SIM_FCFG1_CORE1_PFSIZE_MASK
  275. #define SIM_FLASH1_PFSIZE_SHIFT SIM_FCFG1_CORE1_PFSIZE_SHIFT
  276. #else
  277. #define SIM_FLASH1_PFSIZE_MASK INVALID_REG_MASK
  278. #define SIM_FLASH1_PFSIZE_SHIFT INVALID_REG_SHIFT
  279. #endif
  280. /*!
  281. * @name Dual core/flash configuration
  282. * @{
  283. */
  284. /*! @brief Redefines some flash features. */
  285. #if defined(FSL_FEATURE_FLASH_CURRENT_CORE_ID)
  286. #if (FSL_FEATURE_FLASH_CURRENT_CORE_ID == 0u)
  287. #define FLASH0_FEATURE_PFLASH_START_ADDRESS FSL_FEATURE_FLASH_PFLASH_START_ADDRESS
  288. #define FLASH0_FEATURE_PFLASH_BLOCK_COUNT FSL_FEATURE_FLASH_PFLASH_BLOCK_COUNT
  289. #define FLASH0_FEATURE_PFLASH_BLOCK_SIZE FSL_FEATURE_FLASH_PFLASH_BLOCK_SIZE
  290. #define FLASH0_FEATURE_PFLASH_BLOCK_SECTOR_SIZE FSL_FEATURE_FLASH_PFLASH_BLOCK_SECTOR_SIZE
  291. #define FLASH0_FEATURE_PFLASH_BLOCK_WRITE_UNIT_SIZE FSL_FEATURE_FLASH_PFLASH_BLOCK_WRITE_UNIT_SIZE
  292. #define FLASH0_FEATURE_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT FSL_FEATURE_FLASH_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT
  293. #define FLASH0_FEATURE_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT FSL_FEATURE_FLASH_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT
  294. #define FLASH0_FEATURE_PFLASH_PROTECTION_REGION_COUNT FSL_FEATURE_FLASH_PFLASH_PROTECTION_REGION_COUNT
  295. #define FLASH1_FEATURE_PFLASH_START_ADDRESS FSL_FEATURE_FLASH_PFLASH_1_START_ADDRESS
  296. #define FLASH1_FEATURE_PFLASH_BLOCK_COUNT FSL_FEATURE_FLASH_PFLASH_1_BLOCK_COUNT
  297. #define FLASH1_FEATURE_PFLASH_BLOCK_SIZE FSL_FEATURE_FLASH_PFLASH_1_BLOCK_SIZE
  298. #define FLASH1_FEATURE_PFLASH_BLOCK_SECTOR_SIZE FSL_FEATURE_FLASH_PFLASH_1_BLOCK_SECTOR_SIZE
  299. #define FLASH1_FEATURE_PFLASH_BLOCK_WRITE_UNIT_SIZE FSL_FEATURE_FLASH_PFLASH_1_BLOCK_WRITE_UNIT_SIZE
  300. #if defined(FSL_FEATURE_FLASH_PFLASH_1_SECTOR_CMD_ADDRESS_ALIGMENT) && \
  301. defined(FSL_FEATURE_FLASH_PFLASH_1_SECTION_CMD_ADDRESS_ALIGMENT)
  302. #define FLASH1_FEATURE_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT FSL_FEATURE_FLASH_PFLASH_1_SECTOR_CMD_ADDRESS_ALIGMENT
  303. #define FLASH1_FEATURE_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT FSL_FEATURE_FLASH_PFLASH_1_SECTION_CMD_ADDRESS_ALIGMENT
  304. #else
  305. #define FLASH1_FEATURE_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT FSL_FEATURE_FLASH_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT
  306. #define FLASH1_FEATURE_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT FSL_FEATURE_FLASH_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT
  307. #endif
  308. #define FLASH1_FEATURE_PFLASH_PROTECTION_REGION_COUNT FSL_FEATURE_FLASH_PFLASH_1_PROTECTION_REGION_COUNT
  309. #elif (FSL_FEATURE_FLASH_CURRENT_CORE_ID == 1u)
  310. #define FLASH0_FEATURE_PFLASH_START_ADDRESS FSL_FEATURE_FLASH_PFLASH_1_START_ADDRESS
  311. #define FLASH0_FEATURE_PFLASH_BLOCK_COUNT FSL_FEATURE_FLASH_PFLASH_1_BLOCK_COUNT
  312. #define FLASH0_FEATURE_PFLASH_BLOCK_SIZE FSL_FEATURE_FLASH_PFLASH_1_BLOCK_SIZE
  313. #define FLASH0_FEATURE_PFLASH_BLOCK_SECTOR_SIZE FSL_FEATURE_FLASH_PFLASH_1_BLOCK_SECTOR_SIZE
  314. #define FLASH0_FEATURE_PFLASH_BLOCK_WRITE_UNIT_SIZE FSL_FEATURE_FLASH_PFLASH_1_BLOCK_WRITE_UNIT_SIZE
  315. #if defined(FSL_FEATURE_FLASH_PFLASH_1_SECTOR_CMD_ADDRESS_ALIGMENT) && \
  316. defined(FSL_FEATURE_FLASH_PFLASH_1_SECTION_CMD_ADDRESS_ALIGMENT)
  317. #define FLASH0_FEATURE_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT FSL_FEATURE_FLASH_PFLASH_1_SECTOR_CMD_ADDRESS_ALIGMENT
  318. #define FLASH0_FEATURE_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT FSL_FEATURE_FLASH_PFLASH_1_SECTION_CMD_ADDRESS_ALIGMENT
  319. #else
  320. #define FLASH0_FEATURE_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT FSL_FEATURE_FLASH_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT
  321. #define FLASH0_FEATURE_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT FSL_FEATURE_FLASH_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT
  322. #endif
  323. #define FLASH0_FEATURE_PFLASH_PROTECTION_REGION_COUNT FSL_FEATURE_FLASH_PFLASH_1_PROTECTION_REGION_COUNT
  324. #define FLASH1_FEATURE_PFLASH_START_ADDRESS FSL_FEATURE_FLASH_PFLASH_START_ADDRESS
  325. #define FLASH1_FEATURE_PFLASH_BLOCK_COUNT FSL_FEATURE_FLASH_PFLASH_BLOCK_COUNT
  326. #define FLASH1_FEATURE_PFLASH_BLOCK_SIZE FSL_FEATURE_FLASH_PFLASH_BLOCK_SIZE
  327. #define FLASH1_FEATURE_PFLASH_BLOCK_SECTOR_SIZE FSL_FEATURE_FLASH_PFLASH_BLOCK_SECTOR_SIZE
  328. #define FLASH1_FEATURE_PFLASH_BLOCK_WRITE_UNIT_SIZE FSL_FEATURE_FLASH_PFLASH_BLOCK_WRITE_UNIT_SIZE
  329. #define FLASH1_FEATURE_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT FSL_FEATURE_FLASH_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT
  330. #define FLASH1_FEATURE_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT FSL_FEATURE_FLASH_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT
  331. #define FLASH1_FEATURE_PFLASH_PROTECTION_REGION_COUNT FSL_FEATURE_FLASH_PFLASH_PROTECTION_REGION_COUNT
  332. #endif
  333. #else /* undfine FSL_FEATURE_FLASH_CURRENT_CORE_ID */
  334. #define FLASH0_FEATURE_PFLASH_START_ADDRESS FSL_FEATURE_FLASH_PFLASH_START_ADDRESS
  335. #define FLASH0_FEATURE_PFLASH_BLOCK_COUNT FSL_FEATURE_FLASH_PFLASH_BLOCK_COUNT
  336. #define FLASH0_FEATURE_PFLASH_BLOCK_SIZE FSL_FEATURE_FLASH_PFLASH_BLOCK_SIZE
  337. #define FLASH0_FEATURE_PFLASH_BLOCK_SECTOR_SIZE FSL_FEATURE_FLASH_PFLASH_BLOCK_SECTOR_SIZE
  338. #define FLASH0_FEATURE_PFLASH_BLOCK_WRITE_UNIT_SIZE FSL_FEATURE_FLASH_PFLASH_BLOCK_WRITE_UNIT_SIZE
  339. #define FLASH0_FEATURE_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT FSL_FEATURE_FLASH_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT
  340. #define FLASH0_FEATURE_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT FSL_FEATURE_FLASH_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT
  341. #define FLASH0_FEATURE_PFLASH_PROTECTION_REGION_COUNT FSL_FEATURE_FLASH_PFLASH_PROTECTION_REGION_COUNT
  342. #if defined(FSL_FEATURE_FLASH_HAS_MULTIPLE_FLASH) || defined(FSL_FEATURE_FLASH_PFLASH_1_START_ADDRESS)
  343. #define FLASH1_FEATURE_PFLASH_START_ADDRESS FSL_FEATURE_FLASH_PFLASH_1_START_ADDRESS
  344. #define FLASH1_FEATURE_PFLASH_BLOCK_COUNT FSL_FEATURE_FLASH_PFLASH_1_BLOCK_COUNT
  345. #define FLASH1_FEATURE_PFLASH_BLOCK_SIZE FSL_FEATURE_FLASH_PFLASH_1_BLOCK_SIZE
  346. #define FLASH1_FEATURE_PFLASH_BLOCK_SECTOR_SIZE FSL_FEATURE_FLASH_PFLASH_1_BLOCK_SECTOR_SIZE
  347. #define FLASH1_FEATURE_PFLASH_BLOCK_WRITE_UNIT_SIZE FSL_FEATURE_FLASH_PFLASH_1_BLOCK_WRITE_UNIT_SIZE
  348. #define FLASH1_FEATURE_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT FSL_FEATURE_FLASH_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT
  349. #define FLASH1_FEATURE_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT FSL_FEATURE_FLASH_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT
  350. #define FLASH1_FEATURE_PFLASH_PROTECTION_REGION_COUNT FSL_FEATURE_FLASH_PFLASH_PROTECTION_REGION_COUNT
  351. #else /* undfine FSL_FEATURE_FLASH_HAS_MULTIPLE_FLASH or FSL_FEATURE_FLASH_PFLASH_1_START_ADDRESS */
  352. #define FLASH1_FEATURE_PFLASH_START_ADDRESS 0
  353. #define FLASH1_FEATURE_PFLASH_BLOCK_COUNT 0
  354. #define FLASH1_FEATURE_PFLASH_BLOCK_SIZE 0
  355. #define FLASH1_FEATURE_PFLASH_BLOCK_SECTOR_SIZE 0
  356. #define FLASH1_FEATURE_PFLASH_BLOCK_WRITE_UNIT_SIZE 0
  357. #define FLASH1_FEATURE_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT 0
  358. #define FLASH1_FEATURE_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT 0
  359. #define FLASH1_FEATURE_PFLASH_PROTECTION_REGION_COUNT 0
  360. #endif
  361. #endif
  362. #if FLASH0_FEATURE_PFLASH_PROTECTION_REGION_COUNT > FLASH1_FEATURE_PFLASH_PROTECTION_REGION_COUNT
  363. #define MAX_FLASH_PROT_REGION_COUNT FLASH0_FEATURE_PFLASH_PROTECTION_REGION_COUNT
  364. #else
  365. #define MAX_FLASH_PROT_REGION_COUNT FLASH1_FEATURE_PFLASH_PROTECTION_REGION_COUNT
  366. #endif
  367. /*@}*/
  368. #endif /* FSL_FTFX_ADAPTER_H */