1 /**
2   ******************************************************************************
3   * @file    stm32n6xx_hal_mdios.h
4   * @author  MCD Application Team
5   * @brief   Header file of MDIOS HAL module.
6   ******************************************************************************
7   * @attention
8   *
9   * Copyright (c) 2017 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_MDIOS_H
21 #define STM32N6xx_HAL_MDIOS_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32n6xx_hal_def.h"
30 
31 #if defined (MDIOS)
32 
33 /** @addtogroup STM32N6xx_HAL_Driver
34   * @{
35   */
36 
37 /** @addtogroup MDIOS
38   * @{
39   */
40 
41 /* Exported types ------------------------------------------------------------*/
42 /** @defgroup MDIOS_Exported_Types MDIOS Exported Types
43   * @{
44   */
45 
46 /** @defgroup MDIOS_Exported_Types_Group1 MDIOS State structures definition
47   * @{
48   */
49 
50 typedef enum
51 {
52   HAL_MDIOS_STATE_RESET             = 0x00U,    /*!< Peripheral not yet Initialized or disabled         */
53   HAL_MDIOS_STATE_READY             = 0x01U,    /*!< Peripheral Initialized and ready for use           */
54   HAL_MDIOS_STATE_BUSY              = 0x02U,    /*!< an internal process is ongoing                     */
55   HAL_MDIOS_STATE_ERROR             = 0x04U     /*!< Reception process is ongoing                       */
56 } HAL_MDIOS_StateTypeDef;
57 
58 /**
59   * @}
60   */
61 
62 /** @defgroup MDIOS_Exported_Types_Group2 MDIOS Init Structure definition
63   * @{
64   */
65 
66 typedef struct
67 {
68   uint32_t PortAddress;           /*!< Specifies the MDIOS port address.
69                                        This parameter can be a value from 0 to 31 */
70   uint32_t PreambleCheck;         /*!< Specifies whether the preamble check is enabled or disabled.
71                                        This parameter can be a value of @ref MDIOS_Preamble_Check */
72 } MDIOS_InitTypeDef;
73 
74 /**
75   * @}
76   */
77 
78 /** @defgroup MDIOS_Exported_Types_Group4 MDIOS handle Structure definition
79   * @{
80   */
81 
82 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
83 typedef struct __MDIOS_HandleTypeDef
84 #else
85 typedef struct
86 #endif
87 {
88   MDIOS_TypeDef                *Instance;     /*!< Register base address       */
89 
90   MDIOS_InitTypeDef            Init;          /*!< MDIOS Init Structure        */
91 
92   __IO HAL_MDIOS_StateTypeDef  State;         /*!< MDIOS communication state
93                                                    This parameter can be a value of of @ref HAL_MDIOS_StateTypeDef */
94 
95   __IO uint32_t                ErrorCode;     /*!< Holds the global Error code of the MDIOS HAL status machine
96                                                    This parameter can be a value of of @ref MDIOS_Error_Code */
97 
98   HAL_LockTypeDef              Lock;          /*!< MDIOS Lock                  */
99 
100 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
101 
102   void (* WriteCpltCallback)(struct __MDIOS_HandleTypeDef *hmdios);   /*!< MDIOS Write Complete Callback */
103   void (* ReadCpltCallback)(struct __MDIOS_HandleTypeDef *hmdios);    /*!< MDIOS Read  Complete Callback */
104   void (* ErrorCallback)(struct __MDIOS_HandleTypeDef *hmdios);       /*!< MDIOS Error Callback          */
105   void (* WakeUpCallback)(struct __MDIOS_HandleTypeDef *hmdios);      /*!< MDIOS Wake UP Callback        */
106 
107   void (* MspInitCallback)(struct __MDIOS_HandleTypeDef *hmdios);     /*!< MDIOS Msp Init callback       */
108   void (* MspDeInitCallback)(struct __MDIOS_HandleTypeDef *hmdios);   /*!< MDIOS Msp DeInit callback     */
109 
110 #endif  /* USE_HAL_MDIOS_REGISTER_CALLBACKS */
111 } MDIOS_HandleTypeDef;
112 
113 /**
114   * @}
115   */
116 
117 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
118 /**
119   * @brief  HAL MDIOS Callback ID enumeration definition
120   */
121 typedef enum
122 {
123   HAL_MDIOS_MSPINIT_CB_ID            = 0x00U,    /*!< MDIOS MspInit callback ID           */
124   HAL_MDIOS_MSPDEINIT_CB_ID          = 0x01U,    /*!< MDIOS MspDeInit callback ID         */
125 
126   HAL_MDIOS_WRITE_COMPLETE_CB_ID     = 0x02U,    /*!< MDIOS Write Complete Callback ID    */
127   HAL_MDIOS_READ_COMPLETE_CB_ID      = 0x03U,    /*!< MDIOS Read Complete Callback ID     */
128   HAL_MDIOS_ERROR_CB_ID              = 0x04U,    /*!< MDIOS Error Callback ID             */
129   HAL_MDIOS_WAKEUP_CB_ID             = 0x05U     /*!< MDIOS Wake UP Callback ID           */
130 } HAL_MDIOS_CallbackIDTypeDef;
131 
132 /**
133   * @brief  HAL MDIOS Callback pointer definition
134   */
135 typedef  void (*pMDIOS_CallbackTypeDef)(MDIOS_HandleTypeDef *hmdios); /*!< pointer to an MDIOS callback function */
136 
137 #endif /* USE_HAL_MDIOS_REGISTER_CALLBACKS */
138 
139 /**
140   * @}
141   */
142 
143 /* Exported constants --------------------------------------------------------*/
144 /** @defgroup MDIOS_Exported_Constants MDIOS Exported Constants
145   * @{
146   */
147 
148 /** @defgroup MDIOS_Preamble_Check  MDIOS Preamble Check
149   * @{
150   */
151 #define MDIOS_PREAMBLE_CHECK_ENABLE      ((uint32_t)0x00000000U)
152 #define MDIOS_PREAMBLE_CHECK_DISABLE     MDIOS_CR_DPC
153 /**
154   * @}
155   */
156 
157 /** @defgroup MDIOS_Input_Output_Registers_Definitions MDIOS Input Output Registers Definitions
158   * @{
159   */
160 #define MDIOS_REG0                      ((uint32_t)0x00000000U)
161 #define MDIOS_REG1                      ((uint32_t)0x00000001U)
162 #define MDIOS_REG2                      ((uint32_t)0x00000002U)
163 #define MDIOS_REG3                      ((uint32_t)0x00000003U)
164 #define MDIOS_REG4                      ((uint32_t)0x00000004U)
165 #define MDIOS_REG5                      ((uint32_t)0x00000005U)
166 #define MDIOS_REG6                      ((uint32_t)0x00000006U)
167 #define MDIOS_REG7                      ((uint32_t)0x00000007U)
168 #define MDIOS_REG8                      ((uint32_t)0x00000008U)
169 #define MDIOS_REG9                      ((uint32_t)0x00000009U)
170 #define MDIOS_REG10                     ((uint32_t)0x0000000AU)
171 #define MDIOS_REG11                     ((uint32_t)0x0000000BU)
172 #define MDIOS_REG12                     ((uint32_t)0x0000000CU)
173 #define MDIOS_REG13                     ((uint32_t)0x0000000DU)
174 #define MDIOS_REG14                     ((uint32_t)0x0000000EU)
175 #define MDIOS_REG15                     ((uint32_t)0x0000000FU)
176 #define MDIOS_REG16                     ((uint32_t)0x00000010U)
177 #define MDIOS_REG17                     ((uint32_t)0x00000011U)
178 #define MDIOS_REG18                     ((uint32_t)0x00000012U)
179 #define MDIOS_REG19                     ((uint32_t)0x00000013U)
180 #define MDIOS_REG20                     ((uint32_t)0x00000014U)
181 #define MDIOS_REG21                     ((uint32_t)0x00000015U)
182 #define MDIOS_REG22                     ((uint32_t)0x00000016U)
183 #define MDIOS_REG23                     ((uint32_t)0x00000017U)
184 #define MDIOS_REG24                     ((uint32_t)0x00000018U)
185 #define MDIOS_REG25                     ((uint32_t)0x00000019U)
186 #define MDIOS_REG26                     ((uint32_t)0x0000001AU)
187 #define MDIOS_REG27                     ((uint32_t)0x0000001BU)
188 #define MDIOS_REG28                     ((uint32_t)0x0000001CU)
189 #define MDIOS_REG29                     ((uint32_t)0x0000001DU)
190 #define MDIOS_REG30                     ((uint32_t)0x0000001EU)
191 #define MDIOS_REG31                     ((uint32_t)0x0000001FU)
192 /**
193   * @}
194   */
195 
196 /** @defgroup MDIOS_Registers_Flags  MDIOS Registers Flags
197   * @{
198   */
199 #define MDIOS_REG0_FLAG    ((uint32_t)0x00000001U)
200 #define MDIOS_REG1_FLAG    ((uint32_t)0x00000002U)
201 #define MDIOS_REG2_FLAG    ((uint32_t)0x00000004U)
202 #define MDIOS_REG3_FLAG    ((uint32_t)0x00000008U)
203 #define MDIOS_REG4_FLAG    ((uint32_t)0x00000010U)
204 #define MDIOS_REG5_FLAG    ((uint32_t)0x00000020U)
205 #define MDIOS_REG6_FLAG    ((uint32_t)0x00000040U)
206 #define MDIOS_REG7_FLAG    ((uint32_t)0x00000080U)
207 #define MDIOS_REG8_FLAG    ((uint32_t)0x00000100U)
208 #define MDIOS_REG9_FLAG    ((uint32_t)0x00000200U)
209 #define MDIOS_REG10_FLAG   ((uint32_t)0x00000400U)
210 #define MDIOS_REG11_FLAG   ((uint32_t)0x00000800U)
211 #define MDIOS_REG12_FLAG   ((uint32_t)0x00001000U)
212 #define MDIOS_REG13_FLAG   ((uint32_t)0x00002000U)
213 #define MDIOS_REG14_FLAG   ((uint32_t)0x00004000U)
214 #define MDIOS_REG15_FLAG   ((uint32_t)0x00008000U)
215 #define MDIOS_REG16_FLAG   ((uint32_t)0x00010000U)
216 #define MDIOS_REG17_FLAG   ((uint32_t)0x00020000U)
217 #define MDIOS_REG18_FLAG   ((uint32_t)0x00040000U)
218 #define MDIOS_REG19_FLAG   ((uint32_t)0x00080000U)
219 #define MDIOS_REG20_FLAG   ((uint32_t)0x00100000U)
220 #define MDIOS_REG21_FLAG   ((uint32_t)0x00200000U)
221 #define MDIOS_REG22_FLAG   ((uint32_t)0x00400000U)
222 #define MDIOS_REG23_FLAG   ((uint32_t)0x00800000U)
223 #define MDIOS_REG24_FLAG   ((uint32_t)0x01000000U)
224 #define MDIOS_REG25_FLAG   ((uint32_t)0x02000000U)
225 #define MDIOS_REG26_FLAG   ((uint32_t)0x04000000U)
226 #define MDIOS_REG27_FLAG   ((uint32_t)0x08000000U)
227 #define MDIOS_REG28_FLAG   ((uint32_t)0x10000000U)
228 #define MDIOS_REG29_FLAG   ((uint32_t)0x20000000U)
229 #define MDIOS_REG30_FLAG   ((uint32_t)0x40000000U)
230 #define MDIOS_REG31_FLAG   ((uint32_t)0x80000000U)
231 #define MDIOS_ALLREG_FLAG  ((uint32_t)0xFFFFFFFFU)
232 /**
233   * @}
234   */
235 
236 /** @defgroup MDIOS_Interrupt_sources Interrupt Sources
237   * @{
238   */
239 #define MDIOS_IT_WRITE                   MDIOS_CR_WRIE
240 #define MDIOS_IT_READ                    MDIOS_CR_RDIE
241 #define MDIOS_IT_ERROR                   MDIOS_CR_EIE
242 /**
243   * @}
244   */
245 
246 /** @defgroup MDIOS_Interrupt_Flags  MDIOS Interrupt Flags
247   * @{
248   */
249 #define MDIOS_TURNAROUND_ERROR_FLAG       MDIOS_SR_TERF
250 #define MDIOS_START_ERROR_FLAG            MDIOS_SR_SERF
251 #define MDIOS_PREAMBLE_ERROR_FLAG         MDIOS_SR_PERF
252 /**
253   * @}
254   */
255 
256 /** @defgroup MDIOS_Error_Code MDIOS Error Code
257   * @{
258   */
259 #define HAL_MDIOS_ERROR_NONE         ((uint32_t)0x00000000U)   /*!< No error            */
260 #define HAL_MDIOS_ERROR_PARAM        ((uint32_t)0x00000001U)   /*!< Busy error          */
261 #define HAL_MDIOS_ERROR_BUSY         ((uint32_t)0x00000002U)   /*!< Parameter error     */
262 #define HAL_MDIOS_ERROR_TIMEOUT      ((uint32_t)0x00000004U)   /*!< Timeout error       */
263 #define HAL_MDIOS_ERROR_DATA         ((uint32_t)0x00000010U)   /*!< Data transfer error       */
264 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
265 #define HAL_MDIOS_ERROR_INVALID_CALLBACK ((uint32_t)0x00000020U)    /*!< Invalid Callback error  */
266 #endif /* USE_HAL_MDIOS_REGISTER_CALLBACKS */
267 /**
268   * @}
269   */
270 
271 /** @defgroup MDIOS_Wakeup_Line  MDIOS Wakeup Line
272   * @{
273   */
274 #define MDIOS_WAKEUP_EXTI_LINE  ((uint32_t)0x00008000)  /* !<  47 - 32 = 15 */
275 /**
276   * @}
277   */
278 
279 /**
280   * @}
281   */
282 /* Exported macros -----------------------------------------------------------*/
283 /** @defgroup MDIOS_Exported_Macros MDIOS Exported Macros
284   * @{
285   */
286 
287 /** @brief Reset MDIOS handle state
288   * @param  __HANDLE__: MDIOS handle.
289   * @retval None
290   */
291 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
292 #define __HAL_MDIOS_RESET_HANDLE_STATE(__HANDLE__)  do{                                                   \
293                                                         (__HANDLE__)->State = HAL_MDIOS_STATE_RESET;      \
294                                                         (__HANDLE__)->MspInitCallback = NULL;             \
295                                                         (__HANDLE__)->MspDeInitCallback = NULL;           \
296                                                       } while(0)
297 #else
298 #define __HAL_MDIOS_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_MDIOS_STATE_RESET)
299 #endif /*USE_HAL_MDIOS_REGISTER_CALLBACKS */
300 
301 /**
302   * @brief  Enable/Disable the MDIOS peripheral.
303   * @param  __HANDLE__: specifies the MDIOS handle.
304   * @retval None
305   */
306 #define __HAL_MDIOS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= MDIOS_CR_EN)
307 #define __HAL_MDIOS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~MDIOS_CR_EN)
308 
309 
310 /**
311   * @brief  Enable the MDIOS device interrupt.
312   * @param  __HANDLE__: specifies the MDIOS handle.
313   * @param  __INTERRUPT__ : specifies the MDIOS interrupt sources to be enabled.
314   *         This parameter can be one or a combination of the following values:
315   *            @arg MDIOS_IT_WRITE: Register write interrupt
316   *            @arg MDIOS_IT_READ: Register read interrupt
317   *            @arg MDIOS_IT_ERROR: Error interrupt
318   * @retval None
319   */
320 #define __HAL_MDIOS_ENABLE_IT(__HANDLE__, __INTERRUPT__)  ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
321 
322 /**
323   * @brief  Disable the MDIOS device interrupt.
324   * @param  __HANDLE__: specifies the MDIOS handle.
325   * @param  __INTERRUPT__ : specifies the MDIOS interrupt sources to be disabled.
326   *         This parameter can be one or a combination of the following values:
327   *            @arg MDIOS_IT_WRITE: Register write interrupt
328   *            @arg MDIOS_IT_READ: Register read interrupt
329   *            @arg MDIOS_IT_ERROR: Error interrupt
330   * @retval None
331   */
332 #define __HAL_MDIOS_DISABLE_IT(__HANDLE__, __INTERRUPT__)  ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
333 
334 /** @brief Set MDIOS slave get write register flag
335   * @param  __HANDLE__: specifies the MDIOS handle.
336   * @param  __FLAG__: specifies the write register flag
337   * @retval The state of write flag
338   */
339 #define __HAL_MDIOS_GET_WRITE_FLAG(__HANDLE__, __FLAG__)      ((__HANDLE__)->Instance->WRFR &  (__FLAG__))
340 
341 /** @brief MDIOS slave get read register flag
342   * @param  __HANDLE__: specifies the MDIOS handle.
343   * @param  __FLAG__: specifies the read register flag
344   * @retval The state of read flag
345   */
346 #define __HAL_MDIOS_GET_READ_FLAG(__HANDLE__, __FLAG__)        ((__HANDLE__)->Instance->RDFR &  (__FLAG__))
347 
348 /** @brief MDIOS slave get interrupt
349   * @param  __HANDLE__: specifies the MDIOS handle.
350   * @param  __FLAG__ : specifies the Error flag.
351   *         This parameter can be one or a combination of the following values:
352   *            @arg MDIOS_TURNARROUND_ERROR_FLAG: Register write interrupt
353   *            @arg MDIOS_START_ERROR_FLAG: Register read interrupt
354   *            @arg MDIOS_PREAMBLE_ERROR_FLAG: Error interrupt
355   * @retval The state of the error flag
356   */
357 #define __HAL_MDIOS_GET_ERROR_FLAG(__HANDLE__, __FLAG__)       ((__HANDLE__)->Instance->SR &  (__FLAG__))
358 
359 /** @brief  MDIOS slave clear interrupt
360   * @param  __HANDLE__: specifies the MDIOS handle.
361   * @param  __FLAG__ : specifies the Error flag.
362   *         This parameter can be one or a combination of the following values:
363   *            @arg MDIOS_TURNARROUND_ERROR_FLAG: Register write interrupt
364   *            @arg MDIOS_START_ERROR_FLAG: Register read interrupt
365   *            @arg MDIOS_PREAMBLE_ERROR_FLAG: Error interrupt
366   * @retval none
367   */
368 #define __HAL_MDIOS_CLEAR_ERROR_FLAG(__HANDLE__, __FLAG__)       ((__HANDLE__)->Instance->CLRFR) |= (__FLAG__)
369 
370 /**
371   * @brief  Checks whether the specified MDIOS interrupt is set or not.
372   * @param  __HANDLE__: specifies the MDIOS handle.
373   * @param  __INTERRUPT__ : specifies the MDIOS interrupt sources
374   *            This parameter can be one or a combination of the following values:
375   *            @arg MDIOS_IT_WRITE: Register write interrupt
376   *            @arg MDIOS_IT_READ: Register read interrupt
377   *            @arg MDIOS_IT_ERROR: Error interrupt
378   * @retval The state of the interrupt source
379   */
380 #define __HAL_MDIOS_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR & (__INTERRUPT__))
381 
382 /**
383   * @brief Enable the MDIOS WAKEUP Exti Line.
384   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be enabled.
385   * This parameter can be:
386   *   @arg MDIOS_WAKEUP_EXTI_LINE
387   * @retval None.
388   */
389 #define __HAL_MDIOS_WAKEUP_EXTI_ENABLE_IT(__EXTI_LINE__)   (EXTI->IMR2 |= (__EXTI_LINE__))
390 
391 /**
392   * @brief checks whether the specified MDIOS WAKEUP Exti interrupt flag is set or not.
393   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be cleared.
394   * This parameter can be:
395   *   @arg MDIOS_WAKEUP_EXTI_LINE
396   * @retval EXTI MDIOS WAKEUP Line Status.
397   */
398 #define __HAL_MDIOS_WAKEUP_EXTI_GET_FLAG(__EXTI_LINE__)  (EXTI->IMR2 & (__EXTI_LINE__))
399 
400 /**
401   * @brief Clear the MDIOS WAKEUP Exti flag.
402   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP Exti sources to be cleared.
403   * This parameter can be:
404   *   @arg MDIOS_WAKEUP_EXTI_LINE
405   * @retval None.
406   */
407 #define __HAL_MDIOS_WAKEUP_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->IMR2 &= ~ (__EXTI_LINE__))
408 
409 /**
410   * @brief  enable rising edge interrupt on selected EXTI line.
411   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP EXTI sources to be disabled.
412   * This parameter can be:
413   *  @arg MDIOS_WAKEUP_EXTI_LINE
414   * @retval None
415   */
416 #define __HAL_MDIOS_WAKEUP_EXTI_ENABLE_RISING_EDGE(__EXTI_LINE__) (EXTI->FTSR2 &= ~(__EXTI_LINE__)); \
417   (EXTI->RTSR2 |= (__EXTI_LINE__))
418 
419 /**
420   * @brief  enable falling edge interrupt on selected EXTI line.
421   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP EXTI sources to be disabled.
422   * This parameter can be:
423   *  @arg MDIOS_WAKEUP_EXTI_LINE
424   * @retval None
425   */
426 #define __HAL_MDIOS_WAKEUP_EXTI_ENABLE_FALLING_EDGE(__EXTI_LINE__) (EXTI->RTSR2 &= ~(__EXTI_LINE__));\
427   (EXTI->FTSR2 |= (__EXTI_LINE__))
428 
429 /**
430   * @brief  enable falling edge interrupt on selected EXTI line.
431   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP EXTI sources to be disabled.
432   * This parameter can be:
433   *  @arg MDIOS_WAKEUP_EXTI_LINE
434   * @retval None
435   */
436 #define __HAL_MDIOS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE(__EXTI_LINE__) (EXTI->RTSR2 |= (__EXTI_LINE__));\
437   (EXTI->FTSR2 |= (__EXTI_LINE__))
438 
439 /**
440   * @brief  Generates a Software interrupt on selected EXTI line.
441   * @param  __EXTI_LINE__: specifies the MDIOS WAKEUP EXTI sources to be disabled.
442   * This parameter can be:
443   *  @arg MDIOS_WAKEUP_EXTI_LINE
444   * @retval None
445   */
446 #define __HAL_MDIOS_WAKEUP_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER2 |= (__EXTI_LINE__))
447 
448 /**
449   * @}
450   */
451 
452 /* Exported functions --------------------------------------------------------*/
453 /** @defgroup MDIOS_Exported_Functions MDIOS Exported Functions
454   * @{
455   */
456 
457 /** @addtogroup MDIOS_Exported_Functions_Group1
458   * @{
459   */
460 HAL_StatusTypeDef HAL_MDIOS_Init(MDIOS_HandleTypeDef *hmdios);
461 HAL_StatusTypeDef HAL_MDIOS_DeInit(MDIOS_HandleTypeDef *hmdios);
462 void HAL_MDIOS_MspInit(MDIOS_HandleTypeDef *hmdios);
463 void  HAL_MDIOS_MspDeInit(MDIOS_HandleTypeDef *hmdios);
464 
465 /* Callbacks Register/UnRegister functions  ***********************************/
466 #if (USE_HAL_MDIOS_REGISTER_CALLBACKS == 1)
467 HAL_StatusTypeDef HAL_MDIOS_RegisterCallback(MDIOS_HandleTypeDef *hmdios, HAL_MDIOS_CallbackIDTypeDef CallbackID,
468                                              pMDIOS_CallbackTypeDef pCallback);
469 HAL_StatusTypeDef HAL_MDIOS_UnRegisterCallback(MDIOS_HandleTypeDef *hmdios, HAL_MDIOS_CallbackIDTypeDef CallbackID);
470 #endif /* USE_HAL_MDIOS_REGISTER_CALLBACKS */
471 /**
472   * @}
473   */
474 
475 /** @addtogroup MDIOS_Exported_Functions_Group2
476   * @{
477   */
478 HAL_StatusTypeDef HAL_MDIOS_WriteReg(MDIOS_HandleTypeDef *hmdios,  uint32_t RegNum, uint16_t Data);
479 HAL_StatusTypeDef HAL_MDIOS_ReadReg(MDIOS_HandleTypeDef *hmdios,  uint32_t RegNum, uint16_t *pData);
480 
481 uint32_t HAL_MDIOS_GetWrittenRegAddress(const MDIOS_HandleTypeDef *hmdios);
482 uint32_t HAL_MDIOS_GetReadRegAddress(const MDIOS_HandleTypeDef *hmdios);
483 HAL_StatusTypeDef HAL_MDIOS_ClearWriteRegAddress(MDIOS_HandleTypeDef *hmdios, uint32_t RegNum);
484 HAL_StatusTypeDef HAL_MDIOS_ClearReadRegAddress(MDIOS_HandleTypeDef *hmdios, uint32_t RegNum);
485 
486 HAL_StatusTypeDef HAL_MDIOS_EnableEvents(MDIOS_HandleTypeDef *hmdios);
487 void HAL_MDIOS_IRQHandler(MDIOS_HandleTypeDef *hmdios);
488 void HAL_MDIOS_WriteCpltCallback(MDIOS_HandleTypeDef *hmdios);
489 void HAL_MDIOS_ReadCpltCallback(MDIOS_HandleTypeDef *hmdios);
490 void HAL_MDIOS_ErrorCallback(MDIOS_HandleTypeDef *hmdios);
491 void HAL_MDIOS_WakeUpCallback(MDIOS_HandleTypeDef *hmdios);
492 /**
493   * @}
494   */
495 
496 /** @addtogroup MDIOS_Exported_Functions_Group3
497   * @{
498   */
499 uint32_t HAL_MDIOS_GetError(const MDIOS_HandleTypeDef *hmdios);
500 HAL_MDIOS_StateTypeDef HAL_MDIOS_GetState(const MDIOS_HandleTypeDef *hmdios);
501 /**
502   * @}
503   */
504 
505 /**
506   * @}
507   */
508 
509 /* Private types -------------------------------------------------------------*/
510 /** @defgroup MDIOS_Private_Types MDIOS Private Types
511   * @{
512   */
513 
514 /**
515   * @}
516   */
517 
518 /* Private variables ---------------------------------------------------------*/
519 /** @defgroup MDIOS_Private_Variables MDIOS Private Variables
520   * @{
521   */
522 
523 /**
524   * @}
525   */
526 
527 /* Private constants ---------------------------------------------------------*/
528 /** @defgroup MDIOS_Private_Constants MDIOS Private Constants
529   * @{
530   */
531 
532 /**
533   * @}
534   */
535 
536 /* Private macros ------------------------------------------------------------*/
537 /** @defgroup MDIOS_Private_Macros MDIOS Private Macros
538   * @{
539   */
540 
541 #define IS_MDIOS_PORTADDRESS(__ADDR__) ((__ADDR__) < 32U)
542 
543 #define IS_MDIOS_REGISTER(__REGISTER__) ((__REGISTER__) < 32U)
544 
545 #define IS_MDIOS_PREAMBLECHECK(__PREAMBLECHECK__) (((__PREAMBLECHECK__) == MDIOS_PREAMBLE_CHECK_ENABLE) || \
546                                                    ((__PREAMBLECHECK__) == MDIOS_PREAMBLE_CHECK_DISABLE))
547 
548 /**
549   * @}
550   */
551 
552 /* Private functions ---------------------------------------------------------*/
553 /** @defgroup MDIOS_Private_Functions MDIOS Private Functions
554   * @{
555   */
556 
557 /**
558   * @}
559   */
560 
561 
562 /**
563   * @}
564   */
565 
566 /**
567   * @}
568   */
569 
570 #endif /* MDIOS */
571 
572 #ifdef __cplusplus
573 }
574 #endif
575 
576 #endif /* STM32N6xx_HAL_MDIOS_H */
577