1 /**
2   ******************************************************************************
3   * @file    stm32n6xx_hal_pssi.h
4   * @author  MCD Application Team
5   * @brief   Header file of PSSI HAL module.
6   ******************************************************************************
7   * @attention
8   *
9   * Copyright (c) 2023 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 STM32N6xx_HAL_PSSI_H
21 #define STM32N6xx_HAL_PSSI_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 /* Includes ------------------------------------------------------------------*/
28 #include "stm32n6xx_hal_def.h"
29 
30 /** @addtogroup STM32N6xx_HAL_Driver
31   * @{
32   */
33 #if defined(PSSI)
34 
35 #ifndef USE_HAL_PSSI_REGISTER_CALLBACKS
36 /* For backward compatibility, if USE_HAL_PSSI_REGISTER_CALLBACKS not defined, define it to 1*/
37 #define USE_HAL_PSSI_REGISTER_CALLBACKS 0U
38 #endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
39 
40 /** @addtogroup PSSI PSSI
41   * @brief PSSI HAL module driver
42   * @{
43   */
44 
45 /* Exported types ------------------------------------------------------------*/
46 /** @defgroup PSSI_Exported_Types PSSI Exported Types
47   * @{
48   */
49 
50 
51 /**
52   * @brief PSSI Init structure definition
53   */
54 typedef struct
55 {
56   uint32_t  DataWidth;          /* !< Configures the data width.
57                                       This parameter can be a value of @ref PSSI_DATA_WIDTH. */
58   uint32_t  BusWidth;           /* !< Configures the parallel bus width.
59                                       This parameter can be a value of @ref PSSI_BUS_WIDTH. */
60   uint32_t  ControlSignal;      /* !< Configures Data enable and Data ready.
61                                       This parameter can be a value of @ref ControlSignal_Configuration. */
62   uint32_t  ClockPolarity;      /* !< Configures the PSSI Input Clock polarity.
63                                       This parameter can be a value of @ref Clock_Polarity. */
64   uint32_t  DataEnablePolarity; /* !< Configures the PSSI Data Enable polarity.
65                                       This parameter can be a value of @ref Data_Enable_Polarity. */
66   uint32_t  ReadyPolarity;      /* !< Configures the PSSI Ready polarity.
67                                       This parameter can be a value of @ref Ready_Polarity. */
68 
69 } PSSI_InitTypeDef;
70 
71 
72 /**
73   * @brief  HAL PSSI State structures definition
74   */
75 typedef enum
76 {
77   HAL_PSSI_STATE_RESET   = 0x00U, /* !< PSSI not yet initialized or disabled     */
78   HAL_PSSI_STATE_READY   = 0x01U, /* !< Peripheral initialized and ready for use */
79   HAL_PSSI_STATE_BUSY    = 0x02U, /* !< An internal process is ongoing           */
80   HAL_PSSI_STATE_BUSY_TX = 0x03U, /* !< Transmit process is ongoing              */
81   HAL_PSSI_STATE_BUSY_RX = 0x04U, /* !< Receive process is ongoing               */
82   HAL_PSSI_STATE_TIMEOUT = 0x05U, /* !< Timeout state                            */
83   HAL_PSSI_STATE_ERROR   = 0x06U, /* !< PSSI state error                         */
84   HAL_PSSI_STATE_ABORT   = 0x07U, /* !< PSSI process is aborted                  */
85 
86 } HAL_PSSI_StateTypeDef;
87 
88 /**
89   * @brief  PSSI handle Structure definition
90   */
91 #if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
92 typedef struct __PSSI_HandleTypeDef
93 #else
94 typedef struct
95 #endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
96 {
97   PSSI_TypeDef         *Instance;    /*!< PSSI register base address.    */
98   PSSI_InitTypeDef      Init;        /*!< PSSI Initialization Structure. */
99   uint32_t             *pBuffPtr;    /*!< PSSI Data buffer.              */
100   uint32_t              XferCount;   /*!< PSSI transfer count            */
101   uint32_t              XferSize;    /*!< PSSI  transfer size            */
102 #if defined(HAL_DMA_MODULE_ENABLED)
103   DMA_HandleTypeDef    *hdmatx;      /*!< PSSI Tx DMA Handle parameters  */
104   DMA_HandleTypeDef    *hdmarx;      /*!< PSSI Rx DMA Handle parameters  */
105 #endif /*HAL_DMA_MODULE_ENABLED*/
106 
107 #if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
108   void (* TxCpltCallback)(struct __PSSI_HandleTypeDef *hpssi);    /*!< PSSI transfer complete callback. */
109   void (* RxCpltCallback)(struct __PSSI_HandleTypeDef *hpssi);    /*!< PSSI transfer complete callback. */
110   void (* ErrorCallback)(struct __PSSI_HandleTypeDef *hpssi);     /*!< PSSI transfer complete callback. */
111   void (* AbortCpltCallback)(struct __PSSI_HandleTypeDef *hpssi); /*!< PSSI transfer error callback.    */
112 
113   void (* MspInitCallback)(struct __PSSI_HandleTypeDef *hpssi);   /*!< PSSI Msp Init callback.          */
114   void (* MspDeInitCallback)(struct __PSSI_HandleTypeDef *hpssi); /*!< PSSI Msp DeInit callback.        */
115 #endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
116 
117   HAL_LockTypeDef             Lock;                               /*!< PSSI lock.                       */
118   __IO HAL_PSSI_StateTypeDef State;                               /*!< PSSI transfer state.             */
119   __IO uint32_t               ErrorCode;                          /*!< PSSI error code.                 */
120 
121 } PSSI_HandleTypeDef;
122 
123 #if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
124 /**
125   * @brief  HAL PSSI Callback pointer definition
126   */
127 typedef  void (*pPSSI_CallbackTypeDef)(PSSI_HandleTypeDef *hpssi);  /*!< Pointer to a PSSI common callback function */
128 
129 /**
130   * @brief  HAL PSSI Callback ID enumeration definition
131   */
132 typedef enum
133 {
134   HAL_PSSI_TX_COMPLETE_CB_ID = 0x00U, /*!< PSSI Tx Transfer completed callback ID  */
135   HAL_PSSI_RX_COMPLETE_CB_ID = 0x01U, /*!< PSSI Rx Transfer completed callback ID  */
136   HAL_PSSI_ERROR_CB_ID       = 0x03U, /*!< PSSI Error callback ID                  */
137   HAL_PSSI_ABORT_CB_ID       = 0x04U, /*!< PSSI Abort callback ID                  */
138 
139   HAL_PSSI_MSPINIT_CB_ID     = 0x05U, /*!< PSSI Msp Init callback ID               */
140   HAL_PSSI_MSPDEINIT_CB_ID   = 0x06U  /*!< PSSI Msp DeInit callback ID             */
141 
142 } HAL_PSSI_CallbackIDTypeDef;
143 #endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
144 
145 /**
146   * @}
147   */
148 
149 /* Exported constants --------------------------------------------------------*/
150 /** @defgroup PSSI_Exported_Constants PSSI Exported Constants
151   * @{
152   */
153 
154 /** @defgroup PSSI_Error_Code PSSI Error Code
155   * @{
156   */
157 #define HAL_PSSI_ERROR_NONE             0x00000000U /*!< No error                */
158 #define HAL_PSSI_ERROR_NOT_SUPPORTED    0x00000001U /*!< Not supported operation */
159 #define HAL_PSSI_ERROR_UNDER_RUN        0x00000002U /*!< FIFO Under-run error    */
160 #define HAL_PSSI_ERROR_OVER_RUN         0x00000004U /*!< FIFO Over-run  error    */
161 #define HAL_PSSI_ERROR_DMA              0x00000008U /*!< Dma     error           */
162 #define HAL_PSSI_ERROR_TIMEOUT          0x00000010U /*!< Timeout error           */
163 #if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
164 #define HAL_PSSI_ERROR_INVALID_CALLBACK 0x00000020U /*!< Invalid callback error  */
165 #endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
166 
167 /**
168   * @}
169   */
170 
171 /** @defgroup PSSI_DATA_WIDTH PSSI Data Width
172   * @{
173   */
174 
175 #define HAL_PSSI_8BITS                  0x00000000U   /*!<  8 Bits  */
176 #define HAL_PSSI_16BITS                 0x00000001U   /*!< 16 Bits  */
177 #define HAL_PSSI_32BITS                 0x00000002U   /*!< 32 Bits  */
178 /**
179   * @}
180   */
181 
182 /** @defgroup PSSI_BUS_WIDTH PSSI Bus Width
183   * @{
184   */
185 
186 #define HAL_PSSI_8LINES                 0x00000000U   /*!< 8 data lines  */
187 #define HAL_PSSI_16LINES                PSSI_CR_EDM   /*!< 16 data lines */
188 /**
189   * @}
190   */
191 /** @defgroup PSSI_MODE PSSI mode
192   * @{
193   */
194 #define HAL_PSSI_UNIDIRECTIONAL         0x00000000U /*!< Uni-directional mode */
195 #define HAL_PSSI_BIDIRECTIONAL          0x00000001U /*!< Bi-directional mode  */
196 /**
197   * @}
198   */
199 
200 /** @defgroup ControlSignal_Configuration ControlSignal Configuration
201   * @{
202   */
203 #define HAL_PSSI_DE_RDY_DISABLE           (0x0U << PSSI_CR_DERDYCFG_Pos) /*!< Neither DE nor RDY are enabled */
204 #define HAL_PSSI_RDY_ENABLE               (0x1U << PSSI_CR_DERDYCFG_Pos) /*!< Only RDY enabled */
205 #define HAL_PSSI_DE_ENABLE                (0x2U << PSSI_CR_DERDYCFG_Pos) /*!< Only DE enabled */
206 #define HAL_PSSI_DE_RDY_ALT_ENABLE        (0x3U << PSSI_CR_DERDYCFG_Pos) /*!< Both RDY and DE alternate functions enabled */
207 #define HAL_PSSI_MAP_RDY_BIDIR_ENABLE     (0x4U << PSSI_CR_DERDYCFG_Pos) /*!< Bi-directional on RDY pin */
208 #define HAL_PSSI_RDY_MAP_ENABLE           (0x5U << PSSI_CR_DERDYCFG_Pos) /*!< Only RDY enabled, mapped to DE pin */
209 #define HAL_PSSI_DE_MAP_ENABLE            (0x6U << PSSI_CR_DERDYCFG_Pos) /*!< Only DE enabled, mapped to RDY pin */
210 #define HAL_PSSI_MAP_DE_BIDIR_ENABLE      (0x7U << PSSI_CR_DERDYCFG_Pos) /*!< Bi-directional on DE pin */
211 
212 /**
213   * @}
214   */
215 
216 
217 /** @defgroup Data_Enable_Polarity Data Enable Polarity
218   * @{
219   */
220 #define HAL_PSSI_DEPOL_ACTIVE_LOW         0x0U            /*!< Active Low */
221 #define HAL_PSSI_DEPOL_ACTIVE_HIGH        PSSI_CR_DEPOL   /*!< Active High */
222 /**
223   * @}
224   */
225 /** @defgroup Ready_Polarity Ready Polarity
226   * @{
227   */
228 #define HAL_PSSI_RDYPOL_ACTIVE_LOW        0x0U            /*!< Active Low */
229 #define HAL_PSSI_RDYPOL_ACTIVE_HIGH       PSSI_CR_RDYPOL  /*!< Active High */
230 /**
231   * @}
232   */
233 
234 /** @defgroup Clock_Polarity Clock Polarity
235   * @{
236   */
237 #define HAL_PSSI_FALLING_EDGE             0x0U            /*!< Fallling Edge */
238 #define HAL_PSSI_RISING_EDGE              0x1U            /*!< Rising Edge */
239 /**
240   * @}
241   */
242 
243 /** @defgroup Clock_Source Clock Source
244   * @{
245   */
246 #define HAL_PSSI_CLOCK_EXT                0x0U                     /*!< External Clock */
247 #define HAL_PSSI_CLOCK_INT                PSSI_CR_CKSRC            /*!< Internal Clock */
248 /**
249   * @}
250   */
251 
252 
253 /** @defgroup PSSI_DEFINITION PSSI definitions
254   * @{
255   */
256 
257 #define PSSI_MAX_NBYTE_SIZE         0x10000U         /* 64 KB */
258 #define PSSI_TIMEOUT_TRANSMIT       0x0000FFFFU      /*!< Timeout Value   */
259 
260 #define PSSI_CR_OUTEN_INPUT         0x00000000U      /*!< Input Mode      */
261 #define PSSI_CR_OUTEN_OUTPUT        PSSI_CR_OUTEN    /*!< Output Mode     */
262 
263 #define PSSI_CR_DMA_ENABLE          PSSI_CR_DMAEN    /*!< DMA Mode Enable */
264 #define PSSI_CR_DMA_DISABLE         (~PSSI_CR_DMAEN) /*!< DMA Mode Disable*/
265 
266 #define PSSI_CR_16BITS              PSSI_CR_EDM      /*!< 16 Lines Mode   */
267 #define PSSI_CR_8BITS               (~PSSI_CR_EDM)   /*!< 8 Lines Mode    */
268 
269 #define PSSI_FLAG_RTT1B             PSSI_SR_RTT1B    /*!< 1 Byte Fifo Flag */
270 #define PSSI_FLAG_RTT4B             PSSI_SR_RTT4B    /*!< 4 Bytes Fifo Flag*/
271 
272 
273 /**
274   * @}
275   */
276 
277 /** @defgroup PSSI_Interrupts PSSI Interrupts
278   * @{
279   */
280 
281 #define PSSI_FLAG_OVR_RIS            PSSI_RIS_OVR_RIS     /*!< Overrun, Underrun errors flag */
282 #define PSSI_FLAG_MASK               PSSI_RIS_OVR_RIS_Msk /*!< Overrun, Underrun errors Mask */
283 #define PSSI_FLAG_OVR_MIS            PSSI_MIS_OVR_MIS     /*!< Overrun, Underrun masked errors flag */
284 /**
285   * @}
286   */
287 
288 
289 /**
290   * @}
291   */
292 /* Exported macros ------------------------------------------------------------*/
293 /** @defgroup PSSI_Exported_Macros PSSI Exported Macros
294   * @{
295   */
296 
297 /** @brief Reset PSSI handle state
298   * @param  __HANDLE__ specifies the PSSI handle.
299   * @retval None
300   */
301 #if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
302 #define HAL_PSSI_RESET_HANDLE_STATE(__HANDLE__) do{                                            \
303                                                       (__HANDLE__)->State = HAL_PSSI_STATE_RESET;\
304                                                       (__HANDLE__)->MspInitCallback = NULL;       \
305                                                       (__HANDLE__)->MspDeInitCallback = NULL;     \
306                                                      }while(0)
307 #else
308 #define HAL_PSSI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_PSSI_STATE_RESET)
309 #endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
310 
311 
312 /**
313   * @brief  Enable the PSSI.
314   * @param  __HANDLE__ PSSI handle
315   * @retval None.
316   */
317 #define HAL_PSSI_ENABLE(__HANDLE__)        ((__HANDLE__)->Instance->CR |= PSSI_CR_ENABLE)
318 /**
319   * @brief  Disable the PSSI.
320   * @param  __HANDLE__ PSSI handle
321   * @retval None.
322   */
323 #define HAL_PSSI_DISABLE(__HANDLE__)        ((__HANDLE__)->Instance->CR &= (~PSSI_CR_ENABLE))
324 
325 /* PSSI pripheral STATUS */
326 /**
327   * @brief  Get the PSSI pending flags.
328   * @param  __HANDLE__ PSSI handle
329   * @param  __FLAG__ flag to check.
330   *          This parameter can be any combination of the following values:
331   *            @arg PSSI_FLAG_RTT1B:  FIFO is ready to transfer one byte
332   *            @arg PSSI_FLAG_RTT4B: FIFO is ready to transfer four bytes
333   * @retval The state of FLAG.
334   */
335 
336 #define HAL_PSSI_GET_STATUS(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SR & (__FLAG__))
337 
338 
339 /* Interrupt & Flag management */
340 /**
341   * @brief  Get the PSSI pending flags.
342   * @param  __HANDLE__ PSSI handle
343   * @param  __FLAG__ flag to check.
344   *          This parameter can be any combination of the following values:
345   *            @arg PSSI_FLAG_OVR_RIS: Data Buffer overrun/underrun error flag
346   * @retval The state of FLAG.
347   */
348 #define HAL_PSSI_GET_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->RIS & (__FLAG__))
349 
350 /**
351   * @brief  Clear the PSSI pending flags.
352   * @param  __HANDLE__ PSSI handle
353   * @param  __FLAG__ specifies the flag to clear.
354   *          This parameter can be any combination of the following values:
355   *            @arg PSSI_FLAG_OVR_RIS: Data Buffer overrun/underrun error flag
356   * @retval None
357   */
358 #define HAL_PSSI_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
359 
360 /**
361   * @brief  Enable the specified PSSI interrupts.
362   * @param  __HANDLE__ PSSI handle
363   * @param __INTERRUPT__ specifies the PSSI interrupt sources to be enabled.
364   *          This parameter can be any combination of the following values:
365   *            @arg PSSI_FLAG_OVR_RIS: Configuration error mask
366   * @retval None
367   */
368 #define HAL_PSSI_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IER |= (__INTERRUPT__))
369 
370 /**
371   * @brief  Disable the specified PSSI interrupts.
372   * @param  __HANDLE__ PSSI handle
373   * @param __INTERRUPT__ specifies the PSSI interrupt sources to be disabled.
374   *          This parameter can be any combination of the following values:
375   *            @arg PSSI_IT_OVR_IE: Configuration error mask
376   * @retval None
377   */
378 #define HAL_PSSI_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IER &= ~(__INTERRUPT__))
379 
380 /**
381   * @brief  Check whether the specified PSSI interrupt source is enabled or not.
382   * @param  __HANDLE__ PSSI handle
383   * @param  __INTERRUPT__ specifies the PSSI interrupt source to check.
384   *          This parameter can be one of the following values:
385   *            @arg PSSI_IT_OVR_IE: Data Buffer overrun/underrun error interrupt mask
386   * @retval The state of INTERRUPT source.
387   */
388 #define HAL_PSSI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IER & (__INTERRUPT__))
389 
390 
391 /**
392   * @brief  Check whether the PSSI Control signal is valid.
393   * @param  __CONTROL__ Control signals configuration
394   * @retval Valid or not.
395   */
396 
397 #define IS_PSSI_CONTROL_SIGNAL(__CONTROL__) (((__CONTROL__) == HAL_PSSI_DE_RDY_DISABLE        ) || \
398                                              ((__CONTROL__) == HAL_PSSI_RDY_ENABLE            ) || \
399                                              ((__CONTROL__) == HAL_PSSI_DE_ENABLE             ) || \
400                                              ((__CONTROL__) == HAL_PSSI_DE_RDY_ALT_ENABLE     ) || \
401                                              ((__CONTROL__) == HAL_PSSI_MAP_RDY_BIDIR_ENABLE  ) || \
402                                              ((__CONTROL__) == HAL_PSSI_RDY_MAP_ENABLE        ) || \
403                                              ((__CONTROL__) == HAL_PSSI_DE_MAP_ENABLE         ) || \
404                                              ((__CONTROL__) == HAL_PSSI_MAP_DE_BIDIR_ENABLE   ))
405 
406 
407 /**
408   * @brief  Check whether the PSSI Bus Width is valid.
409   * @param  __BUSWIDTH__ PSSI Bush width
410   * @retval Valid or not.
411   */
412 
413 #define IS_PSSI_BUSWIDTH(__BUSWIDTH__) (((__BUSWIDTH__) == HAL_PSSI_8LINES    ) || \
414                                         ((__BUSWIDTH__) == HAL_PSSI_16LINES   ))
415 
416 /**
417 
418   * @brief  Check whether the PSSI Clock Polarity is valid.
419   * @param  __CLOCKPOL__ PSSI Clock Polarity
420   * @retval Valid or not.
421   */
422 
423 #define IS_PSSI_CLOCK_POLARITY(__CLOCKPOL__) (((__CLOCKPOL__) == HAL_PSSI_FALLING_EDGE   ) || \
424                                               ((__CLOCKPOL__) == HAL_PSSI_RISING_EDGE    ))
425 
426 
427 /**
428   * @brief  Check whether the PSSI Data Enable Polarity is valid.
429   * @param  __DEPOL__ PSSI DE Polarity
430   * @retval Valid or not.
431   */
432 
433 #define IS_PSSI_DE_POLARITY(__DEPOL__) (((__DEPOL__) == HAL_PSSI_DEPOL_ACTIVE_LOW    ) || \
434                                         ((__DEPOL__) == HAL_PSSI_DEPOL_ACTIVE_HIGH   ))
435 
436 /**
437   * @brief  Check whether the PSSI Ready Polarity is valid.
438   * @param  __RDYPOL__ PSSI RDY Polarity
439   * @retval Valid or not.
440   */
441 
442 #define IS_PSSI_RDY_POLARITY(__RDYPOL__) (((__RDYPOL__) == HAL_PSSI_RDYPOL_ACTIVE_LOW   ) || \
443                                           ((__RDYPOL__) == HAL_PSSI_RDYPOL_ACTIVE_HIGH   ))
444 
445 /**
446   * @brief  Check whether the PSSI Clock source is valid.
447   * @param  __CLOCKSRC__ PSSI Clock Source
448   * @retval Valid or not.
449   */
450 
451 #define IS_PSSI_CLOCK_SOURCE(__CLOCKSRC__) (((__CLOCKSRC__) == HAL_PSSI_CLOCK_EXT   ) || \
452                                             ((__CLOCKSRC__) == HAL_PSSI_CLOCK_INT   ))
453 /**
454   * @}
455   */
456 
457 
458 /* Exported functions --------------------------------------------------------*/
459 /** @addtogroup PSSI_Exported_Functions PSSI Exported Functions
460   * @{
461   */
462 
463 /** @addtogroup PSSI_Exported_Functions_Group1 Initialization and de-initialization functions
464   * @{
465   */
466 
467 /* Initialization and de-initialization functions *******************************/
468 HAL_StatusTypeDef HAL_PSSI_Init(PSSI_HandleTypeDef *hpssi);
469 HAL_StatusTypeDef HAL_PSSI_DeInit(PSSI_HandleTypeDef *hpssi);
470 void              HAL_PSSI_MspInit(PSSI_HandleTypeDef *hpssi);
471 void              HAL_PSSI_MspDeInit(PSSI_HandleTypeDef *hpssi);
472 /* Callbacks Register/UnRegister functions  ***********************************/
473 #if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
474 HAL_StatusTypeDef HAL_PSSI_RegisterCallback(PSSI_HandleTypeDef *hpssi, HAL_PSSI_CallbackIDTypeDef CallbackID,
475                                             pPSSI_CallbackTypeDef pCallback);
476 HAL_StatusTypeDef HAL_PSSI_UnRegisterCallback(PSSI_HandleTypeDef *hpssi, HAL_PSSI_CallbackIDTypeDef CallbackID);
477 #endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
478 
479 /**
480   * @}
481   */
482 
483 
484 /** @addtogroup PSSI_Exported_Functions_Group2 Input and Output operation functions
485   * @{
486   */
487 
488 /* IO operation functions *******************************************************/
489 HAL_StatusTypeDef HAL_PSSI_Transmit(PSSI_HandleTypeDef *hpssi, uint8_t *pData, uint32_t Size, uint32_t Timeout);
490 HAL_StatusTypeDef HAL_PSSI_Receive(PSSI_HandleTypeDef *hpssi, uint8_t *pData, uint32_t Size, uint32_t Timeout);
491 #if defined(HAL_DMA_MODULE_ENABLED)
492 HAL_StatusTypeDef HAL_PSSI_Transmit_DMA(PSSI_HandleTypeDef *hpssi, uint32_t *pData, uint32_t Size);
493 HAL_StatusTypeDef HAL_PSSI_Receive_DMA(PSSI_HandleTypeDef *hpssi, uint32_t *pData, uint32_t Size);
494 HAL_StatusTypeDef HAL_PSSI_Abort_DMA(PSSI_HandleTypeDef *hpssi);
495 #endif /*HAL_DMA_MODULE_ENABLED*/
496 
497 /**
498   * @}
499   */
500 
501 /** @addtogroup PSSI_Exported_Functions_Group3 Peripheral State and Error functions
502   * @{
503   */
504 
505 /* Peripheral State functions ***************************************************/
506 HAL_PSSI_StateTypeDef HAL_PSSI_GetState(const PSSI_HandleTypeDef *hpssi);
507 uint32_t              HAL_PSSI_GetError(const PSSI_HandleTypeDef *hpssi);
508 
509 /**
510   * @}
511   */
512 
513 /** @addtogroup PSSI_Exported_Functions_Group4 Clock Source Selection function
514   * @{
515   */
516 /* Clock source selection function  *******************************************/
517 HAL_StatusTypeDef HAL_PSSI_ClockConfig(PSSI_HandleTypeDef *hpssi, uint32_t ClockSource);
518 
519 /**
520   * @}
521   */
522 
523 /** @addtogroup PSSI_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks
524   * @{
525   */
526 
527 void HAL_PSSI_IRQHandler(PSSI_HandleTypeDef *hpssi);
528 void HAL_PSSI_TxCpltCallback(PSSI_HandleTypeDef *hpssi);
529 void HAL_PSSI_RxCpltCallback(PSSI_HandleTypeDef *hpssi);
530 void HAL_PSSI_ErrorCallback(PSSI_HandleTypeDef *hpssi);
531 void HAL_PSSI_AbortCpltCallback(PSSI_HandleTypeDef *hpssi);
532 
533 /**
534   * @}
535   */
536 
537 
538 /**
539   * @}
540   */
541 
542 /* Private constants ---------------------------------------------------------*/
543 
544 
545 /* Private macros ------------------------------------------------------------*/
546 
547 
548 /**
549   * @}
550   */
551 #endif /* PSSI */
552 
553 /**
554   * @}
555   */
556 
557 
558 #ifdef __cplusplus
559 }
560 #endif
561 
562 #endif /* STM32N6xx_HAL_PSSI_H */
563 
564