1 /**
2   ******************************************************************************
3   * @file    stm32mp1xx_ll_fmc.h
4   * @author  MCD Application Team
5   * @brief   Header file of FMC HAL module.
6   ******************************************************************************
7   * @attention
8   *
9   * Copyright (c) 2019 STMicroelectronics.
10   * All rights reserved.
11   *
12   * This software is licensed under terms that can be found in the LICENSE file
13   * in the root directory of this software component.
14   * If no LICENSE file comes with this software, it is provided AS-IS.
15   *
16   ******************************************************************************
17   */
18 
19 /* Define to prevent recursive inclusion -------------------------------------*/
20 #ifndef STM32MP1xx_LL_FMC_H
21 #define STM32MP1xx_LL_FMC_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 /* Includes ------------------------------------------------------------------*/
28 #include "stm32mp1xx_hal_def.h"
29 
30 /** @addtogroup STM32MP1xx_HAL_Driver
31   * @{
32   */
33 
34 /** @addtogroup FMC_LL
35   * @{
36   */
37 
38 /** @addtogroup FMC_LL_Private_Macros
39   * @{
40   */
41 
42 #define IS_FMC_NORSRAM_BANK(__BANK__) (((__BANK__) == FMC_NORSRAM_BANK1) || \
43                                        ((__BANK__) == FMC_NORSRAM_BANK2) || \
44                                        ((__BANK__) == FMC_NORSRAM_BANK3) || \
45                                        ((__BANK__) == FMC_NORSRAM_BANK4))
46 #define IS_FMC_MUX(__MUX__) (((__MUX__) == FMC_DATA_ADDRESS_MUX_DISABLE) || \
47                              ((__MUX__) == FMC_DATA_ADDRESS_MUX_ENABLE))
48 #define IS_FMC_MEMORY(__MEMORY__) (((__MEMORY__) == FMC_MEMORY_TYPE_SRAM) || \
49                                    ((__MEMORY__) == FMC_MEMORY_TYPE_PSRAM)|| \
50                                    ((__MEMORY__) == FMC_MEMORY_TYPE_NOR))
51 #define IS_FMC_NORSRAM_MEMORY_WIDTH(__WIDTH__) (((__WIDTH__) == FMC_NORSRAM_MEM_BUS_WIDTH_8)  || \
52                                                 ((__WIDTH__) == FMC_NORSRAM_MEM_BUS_WIDTH_16))
53 #define IS_FMC_PAGESIZE(__SIZE__) (((__SIZE__) == FMC_PAGE_SIZE_NONE) || \
54                                    ((__SIZE__) == FMC_PAGE_SIZE_128) || \
55                                    ((__SIZE__) == FMC_PAGE_SIZE_256) || \
56                                    ((__SIZE__) == FMC_PAGE_SIZE_512) || \
57                                    ((__SIZE__) == FMC_PAGE_SIZE_1024))
58 #define IS_FMC_ACCESS_MODE(__MODE__) (((__MODE__) == FMC_ACCESS_MODE_A) || \
59                                       ((__MODE__) == FMC_ACCESS_MODE_B) || \
60                                       ((__MODE__) == FMC_ACCESS_MODE_C) || \
61                                       ((__MODE__) == FMC_ACCESS_MODE_D))
62 #define IS_FMC_NBL_SETUPTIME(__NBL__) (((__NBL__) == FMC_NBL_SETUPTIME_0) || \
63                                        ((__NBL__) == FMC_NBL_SETUPTIME_1) || \
64                                        ((__NBL__) == FMC_NBL_SETUPTIME_2) || \
65                                        ((__NBL__) == FMC_NBL_SETUPTIME_3))
66 #define IS_FMC_BURSTMODE(__STATE__) (((__STATE__) == FMC_BURST_ACCESS_MODE_DISABLE) || \
67                                      ((__STATE__) == FMC_BURST_ACCESS_MODE_ENABLE))
68 #define IS_FMC_WAIT_POLARITY(__POLARITY__) (((__POLARITY__) == FMC_WAIT_SIGNAL_POLARITY_LOW) || \
69                                             ((__POLARITY__) == FMC_WAIT_SIGNAL_POLARITY_HIGH))
70 #define IS_FMC_WAIT_SIGNAL_ACTIVE(__ACTIVE__) (((__ACTIVE__) == FMC_WAIT_TIMING_BEFORE_WS) || \
71                                                ((__ACTIVE__) == FMC_WAIT_TIMING_DURING_WS))
72 #define IS_FMC_WRITE_OPERATION(__OPERATION__) (((__OPERATION__) == FMC_WRITE_OPERATION_DISABLE) || \
73                                                ((__OPERATION__) == FMC_WRITE_OPERATION_ENABLE))
74 #define IS_FMC_WAITE_SIGNAL(__SIGNAL__) (((__SIGNAL__) == FMC_WAIT_SIGNAL_DISABLE) || \
75                                          ((__SIGNAL__) == FMC_WAIT_SIGNAL_ENABLE))
76 #define IS_FMC_EXTENDED_MODE(__MODE__) (((__MODE__) == FMC_EXTENDED_MODE_DISABLE) || \
77                                         ((__MODE__) == FMC_EXTENDED_MODE_ENABLE))
78 #define IS_FMC_ASYNWAIT(__STATE__) (((__STATE__) == FMC_ASYNCHRONOUS_WAIT_DISABLE) || \
79                                     ((__STATE__) == FMC_ASYNCHRONOUS_WAIT_ENABLE))
80 #define IS_FMC_DATA_LATENCY(__LATENCY__) (((__LATENCY__) > 1U) && ((__LATENCY__) <= 17U))
81 #define IS_FMC_WRITE_BURST(__BURST__) (((__BURST__) == FMC_WRITE_BURST_DISABLE) || \
82                                        ((__BURST__) == FMC_WRITE_BURST_ENABLE))
83 #define IS_FMC_CONTINOUS_CLOCK(__CCLOCK__) (((__CCLOCK__) == FMC_CONTINUOUS_CLOCK_SYNC_ONLY) || \
84                                             ((__CCLOCK__) == FMC_CONTINUOUS_CLOCK_SYNC_ASYNC))
85 #define IS_FMC_ADDRESS_SETUP_TIME(__TIME__) ((__TIME__) <= 15U)
86 #define IS_FMC_ADDRESS_HOLD_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 15U))
87 #define IS_FMC_DATASETUP_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 255U))
88 #define IS_FMC_DATAHOLD_DURATION(__DATAHOLD__) ((__DATAHOLD__) <= 3U)
89 #define IS_FMC_TURNAROUND_TIME(__TIME__) ((__TIME__) <= 15U)
90 #define IS_FMC_CLK_DIV(__DIV__) (((__DIV__) > 1U) && ((__DIV__) <= 16U))
91 #define IS_FMC_NORSRAM_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NORSRAM_DEVICE)
92 #define IS_FMC_NORSRAM_EXTENDED_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NORSRAM_EXTENDED_DEVICE)
93 #define IS_FMC_MAX_CHIP_SELECT_PULSE_TIME(__TIME__) (((__TIME__) >= 1U) && ((__TIME__) <= 65535U))
94 
95 
96 /**
97   * @}
98   */
99 
100 /* Exported typedef ----------------------------------------------------------*/
101 
102 /** @defgroup FMC_LL_Exported_typedef FMC Low Layer Exported Types
103   * @{
104   */
105 
106 #define FMC_NORSRAM_TypeDef            FMC_Bank1_TypeDef
107 #define FMC_NORSRAM_EXTENDED_TypeDef   FMC_Bank1E_TypeDef
108 
109 #define FMC_NORSRAM_DEVICE             FMC_Bank1_R
110 #define FMC_NORSRAM_EXTENDED_DEVICE    FMC_Bank1E_R
111 
112 /**
113   * @brief  FMC NORSRAM Configuration Structure definition
114   */
115 typedef struct
116 {
117   uint32_t NSBank;                       /*!< Specifies the NORSRAM memory device that will be used.
118                                               This parameter can be a value of @ref FMC_NORSRAM_Bank                     */
119 
120   uint32_t DataAddressMux;               /*!< Specifies whether the address and data values are
121                                               multiplexed on the data bus or not.
122                                               This parameter can be a value of @ref FMC_Data_Address_Bus_Multiplexing    */
123 
124   uint32_t MemoryType;                   /*!< Specifies the type of external memory attached to
125                                               the corresponding memory device.
126                                               This parameter can be a value of @ref FMC_Memory_Type                      */
127 
128   uint32_t MemoryDataWidth;              /*!< Specifies the external memory device width.
129                                               This parameter can be a value of @ref FMC_NORSRAM_Data_Width               */
130 
131   uint32_t BurstAccessMode;              /*!< Enables or disables the burst access mode for Flash memory,
132                                               valid only with synchronous burst Flash memories.
133                                               This parameter can be a value of @ref FMC_Burst_Access_Mode                */
134 
135   uint32_t WaitSignalPolarity;           /*!< Specifies the wait signal polarity, valid only when accessing
136                                               the Flash memory in burst mode.
137                                               This parameter can be a value of @ref FMC_Wait_Signal_Polarity             */
138 
139   uint32_t WaitSignalActive;             /*!< Specifies if the wait signal is asserted by the memory one
140                                               clock cycle before the wait state or during the wait state,
141                                               valid only when accessing memories in burst mode.
142                                               This parameter can be a value of @ref FMC_Wait_Timing                      */
143 
144   uint32_t WriteOperation;               /*!< Enables or disables the write operation in the selected device by the FMC.
145                                               This parameter can be a value of @ref FMC_Write_Operation                  */
146 
147   uint32_t WaitSignal;                   /*!< Enables or disables the wait state insertion via wait
148                                               signal, valid for Flash memory access in burst mode.
149                                               This parameter can be a value of @ref FMC_Wait_Signal                      */
150 
151   uint32_t ExtendedMode;                 /*!< Enables or disables the extended mode.
152                                               This parameter can be a value of @ref FMC_Extended_Mode                    */
153 
154   uint32_t AsynchronousWait;             /*!< Enables or disables wait signal during asynchronous transfers,
155                                               valid only with asynchronous Flash memories.
156                                               This parameter can be a value of @ref FMC_AsynchronousWait                 */
157 
158   uint32_t WriteBurst;                   /*!< Enables or disables the write burst operation.
159                                               This parameter can be a value of @ref FMC_Write_Burst                      */
160 
161   uint32_t ContinuousClock;              /*!< Enables or disables the FMC clock output to external memory devices.
162                                               This parameter is only enabled through the FMC_BCR1 register, and don't care
163                                               through FMC_BCR2..4 registers.
164                                               This parameter can be a value of @ref FMC_Continous_Clock                  */
165 
166   uint32_t PageSize;                     /*!< Specifies the memory page size.
167                                               This parameter can be a value of @ref FMC_Page_Size                        */
168 
169   uint32_t NBLSetupTime;                 /*!< Specifies the NBL setup timing clock cycle number
170                                               This parameter can be a value of @ref FMC_Byte_Lane                        */
171 
172   FunctionalState MaxChipSelectPulse;    /*!< Enables or disables the maximum chip select pulse management in this NSBank
173                                               for PSRAM refresh.
174                                               This parameter can be set to ENABLE or DISABLE                             */
175 
176   uint32_t MaxChipSelectPulseTime;       /*!< Specifies the maximum chip select pulse time in FMC_CLK cycles for synchronous
177                                               accesses and in HCLK cycles for asynchronous accesses,
178                                               valid only if MaxChipSelectPulse is ENABLE.
179                                               This parameter can be a value between Min_Data = 1 and Max_Data = 65535.
180                                               @note: This parameter is common to all NSBank. */
181 }FMC_NORSRAM_InitTypeDef;
182 
183 /**
184   * @brief  FMC NORSRAM Timing parameters structure definition
185   */
186 typedef struct
187 {
188   uint32_t AddressSetupTime;             /*!< Defines the number of HCLK cycles to configure
189                                               the duration of the address setup time.
190                                               This parameter can be a value between Min_Data = 0 and Max_Data = 15.
191                                               @note This parameter is not used with synchronous NOR Flash memories.      */
192 
193   uint32_t AddressHoldTime;              /*!< Defines the number of HCLK cycles to configure
194                                               the duration of the address hold time.
195                                               This parameter can be a value between Min_Data = 1 and Max_Data = 15.
196                                               @note This parameter is not used with synchronous NOR Flash memories.      */
197 
198   uint32_t DataSetupTime;                /*!< Defines the number of HCLK cycles to configure
199                                               the duration of the data setup time.
200                                               This parameter can be a value between Min_Data = 1 and Max_Data = 255.
201                                               @note This parameter is used for SRAMs, ROMs and asynchronous multiplexed
202                                               NOR Flash memories.                                                        */
203 
204   uint32_t DataHoldTime;                 /*!< Defines the number of HCLK cycles to configure
205                                               the duration of the data hold time.
206                                               This parameter can be a value between Min_Data = 0 and Max_Data = 3.
207                                               @note This parameter is used for used in asynchronous accesses.            */
208 
209   uint32_t BusTurnAroundDuration;        /*!< Defines the number of HCLK cycles to configure
210                                               the duration of the bus turnaround.
211                                               This parameter can be a value between Min_Data = 0 and Max_Data = 15.
212                                               @note This parameter is only used for multiplexed NOR Flash memories.      */
213 
214   uint32_t CLKDivision;                  /*!< Defines the period of CLK clock output signal, expressed in number of
215                                               HCLK cycles. This parameter can be a value between Min_Data = 2 and Max_Data = 16.
216                                               @note This parameter is not used for asynchronous NOR Flash, SRAM or ROM
217                                               accesses.                                                                  */
218 
219   uint32_t DataLatency;                  /*!< Defines the number of memory clock cycles to issue
220                                               to the memory before getting the first data.
221                                               The parameter value depends on the memory type as shown below:
222                                               - It must be set to 0 in case of a CRAM
223                                               - It is don't care in asynchronous NOR, SRAM or ROM accesses
224                                               - It may assume a value between Min_Data = 2 and Max_Data = 17 in NOR Flash memories
225                                                 with synchronous burst mode enable                                       */
226 
227   uint32_t AccessMode;                   /*!< Specifies the asynchronous access mode.
228                                               This parameter can be a value of @ref FMC_Access_Mode                      */
229 }FMC_NORSRAM_TimingTypeDef;
230 
231 
232 
233 
234 /**
235   * @}
236   */
237 
238 /* Exported constants --------------------------------------------------------*/
239 /** @addtogroup FMC_LL_Exported_Constants FMC Low Layer Exported Constants
240   * @{
241   */
242 
243 /** @defgroup FMC_LL_NOR_SRAM_Controller FMC NOR/SRAM Controller
244   * @{
245   */
246 
247 /** @defgroup FMC_NORSRAM_Bank FMC NOR/SRAM Bank
248   * @{
249   */
250 #define FMC_NORSRAM_BANK1                       ((uint32_t)0x00000000U)
251 #define FMC_NORSRAM_BANK2                       ((uint32_t)0x00000002U)
252 #define FMC_NORSRAM_BANK3                       ((uint32_t)0x00000004U)
253 #define FMC_NORSRAM_BANK4                       ((uint32_t)0x00000006U)
254 /**
255   * @}
256   */
257 
258 /** @defgroup FMC_Data_Address_Bus_Multiplexing FMC Data Address Bus Multiplexing
259   * @{
260   */
261 #define FMC_DATA_ADDRESS_MUX_DISABLE            ((uint32_t)0x00000000U)
262 #define FMC_DATA_ADDRESS_MUX_ENABLE             ((uint32_t)0x00000002U)
263 /**
264   * @}
265   */
266 
267 /** @defgroup FMC_Memory_Type FMC Memory Type
268   * @{
269   */
270 #define FMC_MEMORY_TYPE_SRAM                    ((uint32_t)0x00000000U)
271 #define FMC_MEMORY_TYPE_PSRAM                   ((uint32_t)0x00000004U)
272 #define FMC_MEMORY_TYPE_NOR                     ((uint32_t)0x00000008U)
273 /**
274   * @}
275   */
276 
277 /** @defgroup FMC_NORSRAM_Data_Width FMC NORSRAM Data Width
278   * @{
279   */
280 #define FMC_NORSRAM_MEM_BUS_WIDTH_8             ((uint32_t)0x00000000U)
281 #define FMC_NORSRAM_MEM_BUS_WIDTH_16            ((uint32_t)0x00000010U)
282 /**
283   * @}
284   */
285 
286 /** @defgroup FMC_NORSRAM_Flash_Access FMC NOR/SRAM Flash Access
287   * @{
288   */
289 #define FMC_NORSRAM_FLASH_ACCESS_ENABLE         ((uint32_t)0x00000040U)
290 #define FMC_NORSRAM_FLASH_ACCESS_DISABLE        ((uint32_t)0x00000000U)
291 /**
292   * @}
293   */
294 
295 /** @defgroup FMC_Burst_Access_Mode FMC Burst Access Mode
296   * @{
297   */
298 #define FMC_BURST_ACCESS_MODE_DISABLE           ((uint32_t)0x00000000U)
299 #define FMC_BURST_ACCESS_MODE_ENABLE            ((uint32_t)0x00000100U)
300 /**
301   * @}
302   */
303 
304 /** @defgroup FMC_Wait_Signal_Polarity FMC Wait Signal Polarity
305   * @{
306   */
307 #define FMC_WAIT_SIGNAL_POLARITY_LOW            ((uint32_t)0x00000000U)
308 #define FMC_WAIT_SIGNAL_POLARITY_HIGH           ((uint32_t)0x00000200U)
309 /**
310   * @}
311   */
312 
313 /** @defgroup FMC_Wait_Timing FMC Wait Timing
314   * @{
315   */
316 #define FMC_WAIT_TIMING_BEFORE_WS               ((uint32_t)0x00000000U)
317 #define FMC_WAIT_TIMING_DURING_WS               ((uint32_t)0x00000800U)
318 /**
319   * @}
320   */
321 
322 /** @defgroup FMC_Write_Operation FMC Write Operation
323   * @{
324   */
325 #define FMC_WRITE_OPERATION_DISABLE             ((uint32_t)0x00000000U)
326 #define FMC_WRITE_OPERATION_ENABLE              ((uint32_t)0x00001000U)
327 /**
328   * @}
329   */
330 
331 /** @defgroup FMC_Wait_Signal FMC Wait Signal
332   * @{
333   */
334 #define FMC_WAIT_SIGNAL_DISABLE                 ((uint32_t)0x00000000U)
335 #define FMC_WAIT_SIGNAL_ENABLE                  ((uint32_t)0x00002000U)
336 /**
337   * @}
338   */
339 
340 /** @defgroup FMC_Extended_Mode FMC Extended Mode
341   * @{
342   */
343 #define FMC_EXTENDED_MODE_DISABLE               ((uint32_t)0x00000000U)
344 #define FMC_EXTENDED_MODE_ENABLE                ((uint32_t)0x00004000U)
345 /**
346   * @}
347   */
348 
349 /** @defgroup FMC_AsynchronousWait FMC Asynchronous Wait
350   * @{
351   */
352 #define FMC_ASYNCHRONOUS_WAIT_DISABLE           ((uint32_t)0x00000000U)
353 #define FMC_ASYNCHRONOUS_WAIT_ENABLE            ((uint32_t)0x00008000U)
354 /**
355   * @}
356   */
357 
358 /** @defgroup FMC_Page_Size FMC Page Size
359   * @{
360   */
361 #define FMC_PAGE_SIZE_NONE                      ((uint32_t)0x00000000U)
362 #define FMC_PAGE_SIZE_128                       ((uint32_t)FMC_BCR1_CPSIZE_0)
363 #define FMC_PAGE_SIZE_256                       ((uint32_t)FMC_BCR1_CPSIZE_1)
364 #define FMC_PAGE_SIZE_512                       ((uint32_t)(FMC_BCR1_CPSIZE_0 | FMC_BCR1_CPSIZE_1))
365 #define FMC_PAGE_SIZE_1024                      ((uint32_t)FMC_BCR1_CPSIZE_2)
366 /**
367   * @}
368   */
369 
370 /** @defgroup FMC_Write_Burst FMC Write Burst
371   * @{
372   */
373 #define FMC_WRITE_BURST_DISABLE                 ((uint32_t)0x00000000U)
374 #define FMC_WRITE_BURST_ENABLE                  ((uint32_t)0x00080000U)
375 /**
376   * @}
377   */
378 
379 /** @defgroup FMC_Continous_Clock FMC Continuous Clock
380   * @{
381   */
382 #define FMC_CONTINUOUS_CLOCK_SYNC_ONLY          ((uint32_t)0x00000000U)
383 #define FMC_CONTINUOUS_CLOCK_SYNC_ASYNC         ((uint32_t)0x00100000U)
384 /**
385   * @}
386   */
387 
388   /** @defgroup FMC_Access_Mode FMC Access Mode
389   * @{
390   */
391 #define FMC_ACCESS_MODE_A                       ((uint32_t)0x00000000U)
392 #define FMC_ACCESS_MODE_B                       ((uint32_t)0x10000000U)
393 #define FMC_ACCESS_MODE_C                       ((uint32_t)0x20000000U)
394 #define FMC_ACCESS_MODE_D                       ((uint32_t)0x30000000U)
395 /**
396   * @}
397   */
398 
399 /** @defgroup FMC_Byte_Lane FMC Byte Lane(NBL) Setup
400   * @{
401   */
402 #define FMC_NBL_SETUPTIME_0                     ((uint32_t)0x00000000U)
403 #define FMC_NBL_SETUPTIME_1                     ((uint32_t)0x00400000U)
404 #define FMC_NBL_SETUPTIME_2                     ((uint32_t)0x00800000U)
405 #define FMC_NBL_SETUPTIME_3                     ((uint32_t)0x00C00000U)
406 /**
407   * @}
408   */
409 
410 /**
411   * @}
412   */
413 
414 
415 
416 /** @defgroup FMC_LL_Interrupt_definition FMC Low Layer Interrupt definition
417   * @{
418   */
419 /**
420   * @}
421   */
422 
423 /** @defgroup FMC_LL_Flag_definition FMC Low Layer Flag definition
424   * @{
425   */
426 /**
427   * @}
428   */
429 
430 /**
431   * @}
432   */
433 
434 /**
435   * @}
436   */
437 
438 /* Private macro -------------------------------------------------------------*/
439 /** @defgroup FMC_LL_Private_Macros FMC_LL  Private Macros
440   * @{
441   */
442   /**
443   * @brief  Enable the FMC Peripheral.
444   * @retval None
445   */
446 #define __FMC_ENABLE()  (FMC_Bank1_R->BTCR[0] |= FMC_BCR1_FMCEN)
447 
448 /**
449   * @brief  Disable the FMC Peripheral.
450   * @retval None
451   */
452 #define __FMC_DISABLE()  (FMC_Bank1_R->BTCR[0] &= ~FMC_BCR1_FMCEN)
453 /** @defgroup FMC_LL_NOR_Macros FMC NOR/SRAM Macros
454   * @brief macros to handle NOR device enable/disable and read/write operations
455   * @{
456   */
457 
458 /**
459   * @brief  Enable the NORSRAM device access.
460   * @param  __INSTANCE__ FMC_NORSRAM Instance
461   * @param  __BANK__ FMC_NORSRAM Bank
462   * @retval None
463   */
464 #define __FMC_NORSRAM_ENABLE(__INSTANCE__, __BANK__)  ((__INSTANCE__)->BTCR[(__BANK__)] |= FMC_BCR1_MBKEN)
465 
466 /**
467   * @brief  Disable the NORSRAM device access.
468   * @param  __INSTANCE__ FMC_NORSRAM Instance
469   * @param  __BANK__ FMC_NORSRAM Bank
470   * @retval None
471   */
472 #define __FMC_NORSRAM_DISABLE(__INSTANCE__, __BANK__) ((__INSTANCE__)->BTCR[(__BANK__)] &= ~FMC_BCR1_MBKEN)
473 
474 /**
475   * @}
476   */
477 
478 
479 
480 
481 /**
482   * @}
483   */
484 
485 /**
486   * @}
487   */
488 
489 /* Private functions ---------------------------------------------------------*/
490 /** @defgroup FMC_LL_Private_Functions FMC LL Private Functions
491   *  @{
492   */
493 
494 /** @defgroup FMC_LL_NORSRAM  NOR SRAM
495   *  @{
496   */
497 /** @defgroup FMC_LL_NORSRAM_Private_Functions_Group1 NOR SRAM Initialization/de-initialization functions
498   *  @{
499   */
500 HAL_StatusTypeDef  FMC_NORSRAM_Init(FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_InitTypeDef *Init);
501 HAL_StatusTypeDef  FMC_NORSRAM_Timing_Init(FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank);
502 HAL_StatusTypeDef  FMC_NORSRAM_Extended_Timing_Init(FMC_NORSRAM_EXTENDED_TypeDef *Device, FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank, uint32_t ExtendedMode);
503 HAL_StatusTypeDef  FMC_NORSRAM_DeInit(FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_EXTENDED_TypeDef *ExDevice, uint32_t Bank);
504 /**
505   * @}
506   */
507 
508 /** @defgroup FMC_LL_NORSRAM_Private_Functions_Group2 NOR SRAM Control functions
509   *  @{
510   */
511 HAL_StatusTypeDef  FMC_NORSRAM_WriteOperation_Enable(FMC_NORSRAM_TypeDef *Device, uint32_t Bank);
512 HAL_StatusTypeDef  FMC_NORSRAM_WriteOperation_Disable(FMC_NORSRAM_TypeDef *Device, uint32_t Bank);
513 /**
514   * @}
515   */
516 /**
517   * @}
518   */
519 
520 
521 
522 
523 /**
524   * @}
525   */
526 
527 /**
528   * @}
529   */
530 
531 /**
532   * @}
533   */
534 
535 #ifdef __cplusplus
536 }
537 #endif
538 
539 #endif /* STM32MP1xx_LL_FMC_H */
540 
541