Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:10

0001 /**
0002   ******************************************************************************
0003   * @file    stm32h7xx_hal_eth_ex_legacy.h
0004   * @author  MCD Application Team
0005   * @brief   Header file of ETH HAL Extended module.
0006   ******************************************************************************
0007   * @attention
0008   *
0009   * Copyright (c) 2017 STMicroelectronics.
0010   * All rights reserved.
0011   *
0012   * This software is licensed under terms that can be found in the LICENSE file
0013   * in the root directory of this software component.
0014   * If no LICENSE file comes with this software, it is provided AS-IS.
0015   *
0016   ******************************************************************************
0017   */
0018 
0019 /* Define to prevent recursive inclusion -------------------------------------*/
0020 #ifndef STM32H7xx_HAL_ETH_EX_LEGACY_H
0021 #define STM32H7xx_HAL_ETH_EX_LEGACY_H
0022 
0023 #ifdef __cplusplus
0024  extern "C" {
0025 #endif
0026 
0027 #if defined(ETH)
0028 
0029 /* Includes ------------------------------------------------------------------*/
0030 #include "stm32h7xx_hal_def.h"
0031 
0032 /** @addtogroup STM32H7xx_HAL_Driver
0033   * @{
0034   */
0035 
0036 /** @addtogroup ETHEx
0037   * @{
0038   */
0039 
0040 /* Exported types ------------------------------------------------------------*/
0041 /** @defgroup ETHEx_Exported_Types ETHEx Exported Types
0042   * @ingroup RTEMSBSPsARMSTM32H7
0043   * @{
0044   */
0045 
0046 /**
0047   * @brief  ETH RX VLAN structure definition
0048   */
0049 typedef struct{
0050   FunctionalState InnerVLANTagInStatus;      /*!< Enables or disables Inner VLAN Tag in Rx Status  */
0051 
0052   uint32_t StripInnerVLANTag;                /*!< Sets the Inner VLAN Tag Stripping on Receive
0053                                                   This parameter can be a value of @ref ETHEx_Rx_Inner_VLAN_Tag_Stripping */
0054 
0055   FunctionalState InnerVLANTag;              /*!< Enables or disables Inner VLAN Tag */
0056 
0057   FunctionalState DoubleVLANProcessing;      /*!< Enable or Disable double VLAN processing */
0058 
0059   FunctionalState VLANTagHashTableMatch;     /*!< Enable or Disable VLAN Tag Hash Table Match */
0060 
0061   FunctionalState VLANTagInStatus;           /*!< Enable or Disable VLAN Tag in Rx status */
0062 
0063   uint32_t StripVLANTag;                     /*!< Set the VLAN Tag Stripping on Receive
0064                                                   This parameter can be a value of @ref ETHEx_Rx_VLAN_Tag_Stripping */
0065 
0066   uint32_t VLANTypeCheck;                    /*!< Enable or Disable VLAN Type Check
0067                                                   This parameter can be a value of @ref ETHEx_VLAN_Type_Check */
0068 
0069   FunctionalState VLANTagInverceMatch;       /*!< Enable or disable VLAN Tag Inverse Match */
0070 }ETH_RxVLANConfigTypeDef;
0071 /**
0072   *
0073   */
0074 
0075 /**
0076   * @brief  ETH TX VLAN structure definition
0077   */
0078 typedef struct{
0079   FunctionalState SourceTxDesc;   /*!< Enable or Disable VLAN tag source from DMA tx descriptors */
0080 
0081   FunctionalState SVLANType;      /*!< Enable or Disable insertion of SVLAN type */
0082 
0083   uint32_t VLANTagControl;        /*!< Sets the VLAN tag control in tx packets
0084                                       This parameter can be a value of @ref ETHEx_VLAN_Tag_Control */
0085 }ETH_TxVLANConfigTypeDef;
0086 /**
0087   *
0088   */
0089 
0090 /**
0091   * @brief  ETH L3 filter structure definition
0092   */
0093 typedef struct{
0094   uint32_t Protocol;                /*!< Sets the L3 filter protocol to IPv4 or IPv6
0095                                          This parameter can be a value of @ref ETHEx_L3_Protocol */
0096 
0097   uint32_t SrcAddrFilterMatch;      /*!< Sets the L3 filter source address match
0098                                          This parameter can be a value of @ref ETHEx_L3_Source_Match */
0099 
0100   uint32_t DestAddrFilterMatch;     /*!< Sets the L3 filter destination address match
0101                                          This parameter can be a value of @ref ETHEx_L3_Destination_Match */
0102 
0103   uint32_t SrcAddrHigherBitsMatch;  /*!< Sets the L3 filter source address higher bits match
0104                                          This parameter can be a value from 0 to 31 */
0105 
0106   uint32_t DestAddrHigherBitsMatch; /*!< Sets the L3 filter destination address higher bits match
0107                                          This parameter can be a value from 0 to 31 */
0108 
0109   uint32_t Ip4SrcAddr;              /*!< Sets the L3 filter IPv4 source address if IPv4 protocol is used
0110                                          This parameter can be a value from 0x0 to 0xFFFFFFFF */
0111 
0112   uint32_t Ip4DestAddr;             /*!< Sets the L3 filter IPv4 destination  address if IPv4 protocol is used
0113                                          This parameter can be a value from 0 to 0xFFFFFFFF  */
0114 
0115   uint32_t Ip6Addr[4];                 /*!< Sets the L3 filter IPv6 address if IPv6 protocol is used
0116                                           This parameter must be a table of 4 words (4* 32 bits) */
0117 }ETH_L3FilterConfigTypeDef;
0118 /**
0119   *
0120   */
0121 
0122 /**
0123   * @brief  ETH L4 filter structure definition
0124   */
0125 typedef struct{
0126   uint32_t Protocol;               /*!< Sets the L4 filter protocol to TCP or UDP
0127                                         This parameter can be a value of @ref ETHEx_L4_Protocol */
0128 
0129   uint32_t SrcPortFilterMatch;     /*!< Sets the L4 filter source port match
0130                                         This parameter can be a value of @ref ETHEx_L4_Source_Match */
0131 
0132   uint32_t DestPortFilterMatch;    /*!< Sets the L4 filter destination port match
0133                                         This parameter can be a value of @ref ETHEx_L4_Destination_Match */
0134 
0135   uint32_t SourcePort;             /*!< Sets the L4 filter source port
0136                                         This parameter must be a value from 0x0 to 0xFFFF */
0137 
0138   uint32_t DestinationPort;        /*!< Sets the L4 filter destination port
0139                                         This parameter must be a value from 0x0 to 0xFFFF */
0140 }ETH_L4FilterConfigTypeDef;
0141 /**
0142   *
0143   */
0144 
0145 /**
0146   * @}
0147   */
0148 
0149 /* Exported constants --------------------------------------------------------*/
0150 /** @defgroup ETHEx_Exported_Constants ETHEx Exported Constants
0151   * @ingroup RTEMSBSPsARMSTM32H7
0152   * @{
0153   */
0154 
0155 /** @defgroup ETHEx_LPI_Event ETHEx LPI Event
0156   * @ingroup RTEMSBSPsARMSTM32H7
0157   * @{
0158   */
0159 #define ETH_TX_LPI_ENTRY    ETH_MACLCSR_TLPIEN
0160 #define ETH_TX_LPI_EXIT     ETH_MACLCSR_TLPIEX
0161 #define ETH_RX_LPI_ENTRY    ETH_MACLCSR_RLPIEN
0162 #define ETH_RX_LPI_EXIT     ETH_MACLCSR_RLPIEX
0163 /**
0164   * @}
0165   */
0166 
0167 /** @defgroup ETHEx_L3_Filter ETHEx L3 Filter
0168   * @ingroup RTEMSBSPsARMSTM32H7
0169   * @{
0170   */
0171 #define ETH_L3_FILTER_0                 ((uint32_t)0x00000000)
0172 #define ETH_L3_FILTER_1                 ((uint32_t)0x0000000C)
0173 /**
0174   * @}
0175   */
0176 
0177 /** @defgroup ETHEx_L4_Filter ETHEx L4 Filter
0178   * @ingroup RTEMSBSPsARMSTM32H7
0179   * @{
0180   */
0181 #define ETH_L4_FILTER_0                 ((uint32_t)0x00000000)
0182 #define ETH_L4_FILTER_1                 ((uint32_t)0x0000000C)
0183 /**
0184   * @}
0185   */
0186 
0187 /** @defgroup ETHEx_L3_Protocol ETHEx L3 Protocol
0188   * @ingroup RTEMSBSPsARMSTM32H7
0189   * @{
0190   */
0191 #define ETH_L3_IPV6_MATCH                       ETH_MACL3L4CR_L3PEN
0192 #define ETH_L3_IPV4_MATCH                       ((uint32_t)0x00000000)
0193 /**
0194   * @}
0195   */
0196 
0197 /** @defgroup ETHEx_L3_Source_Match ETHEx L3 Source Match
0198   * @ingroup RTEMSBSPsARMSTM32H7
0199   * @{
0200   */
0201 #define ETH_L3_SRC_ADDR_PERFECT_MATCH_ENABLE    ETH_MACL3L4CR_L3SAM
0202 #define ETH_L3_SRC_ADDR_INVERSE_MATCH_ENABLE    (ETH_MACL3L4CR_L3SAM | ETH_MACL3L4CR_L3SAIM)
0203 #define ETH_L3_SRC_ADDR_MATCH_DISABLE           ((uint32_t)0x00000000)
0204 /**
0205   * @}
0206   */
0207 
0208 /** @defgroup ETHEx_L3_Destination_Match ETHEx L3 Destination Match
0209   * @ingroup RTEMSBSPsARMSTM32H7
0210   * @{
0211   */
0212 #define ETH_L3_DEST_ADDR_PERFECT_MATCH_ENABLE   ETH_MACL3L4CR_L3DAM
0213 #define ETH_L3_DEST_ADDR_INVERSE_MATCH_ENABLE   (ETH_MACL3L4CR_L3DAM | ETH_MACL3L4CR_L3DAIM)
0214 #define ETH_L3_DEST_ADDR_MATCH_DISABLE          ((uint32_t)0x00000000)
0215 /**
0216   * @}
0217   */
0218 
0219 /** @defgroup ETHEx_L4_Protocol ETHEx L4 Protocol
0220   * @ingroup RTEMSBSPsARMSTM32H7
0221   * @{
0222   */
0223 #define ETH_L4_UDP_MATCH                        ETH_MACL3L4CR_L4PEN
0224 #define ETH_L4_TCP_MATCH                        ((uint32_t)0x00000000)
0225 /**
0226   * @}
0227   */
0228 
0229 /** @defgroup ETHEx_L4_Source_Match ETHEx L4 Source Match
0230   * @ingroup RTEMSBSPsARMSTM32H7
0231   * @{
0232   */
0233 #define ETH_L4_SRC_PORT_PERFECT_MATCH_ENABLE    ETH_MACL3L4CR_L4SPM
0234 #define ETH_L4_SRC_PORT_INVERSE_MATCH_ENABLE    (ETH_MACL3L4CR_L4SPM |ETH_MACL3L4CR_L4SPIM)
0235 #define ETH_L4_SRC_PORT_MATCH_DISABLE           ((uint32_t)0x00000000)
0236 /**
0237   * @}
0238   */
0239 
0240 /** @defgroup ETHEx_L4_Destination_Match ETHEx L4 Destination Match
0241   * @ingroup RTEMSBSPsARMSTM32H7
0242   * @{
0243   */
0244 #define ETH_L4_DEST_PORT_PERFECT_MATCH_ENABLE   ETH_MACL3L4CR_L4DPM
0245 #define ETH_L4_DEST_PORT_INVERSE_MATCH_ENABLE   (ETH_MACL3L4CR_L4DPM | ETH_MACL3L4CR_L4DPIM)
0246 #define ETH_L4_DEST_PORT_MATCH_DISABLE          ((uint32_t)0x00000000)
0247 /**
0248   * @}
0249   */
0250 
0251 /** @defgroup ETHEx_Rx_Inner_VLAN_Tag_Stripping ETHEx Rx Inner VLAN Tag Stripping
0252   * @ingroup RTEMSBSPsARMSTM32H7
0253   * @{
0254   */
0255 #define ETH_INNERVLANTAGRXSTRIPPING_NONE      ETH_MACVTR_EIVLS_DONOTSTRIP
0256 #define ETH_INNERVLANTAGRXSTRIPPING_IFPASS    ETH_MACVTR_EIVLS_STRIPIFPASS
0257 #define ETH_INNERVLANTAGRXSTRIPPING_IFFAILS   ETH_MACVTR_EIVLS_STRIPIFFAILS
0258 #define ETH_INNERVLANTAGRXSTRIPPING_ALWAYS    ETH_MACVTR_EIVLS_ALWAYSSTRIP
0259 /**
0260   * @}
0261   */
0262 
0263 /** @defgroup ETHEx_Rx_VLAN_Tag_Stripping ETHEx Rx VLAN Tag Stripping
0264   * @ingroup RTEMSBSPsARMSTM32H7
0265   * @{
0266   */
0267 #define ETH_VLANTAGRXSTRIPPING_NONE      ETH_MACVTR_EVLS_DONOTSTRIP
0268 #define ETH_VLANTAGRXSTRIPPING_IFPASS    ETH_MACVTR_EVLS_STRIPIFPASS
0269 #define ETH_VLANTAGRXSTRIPPING_IFFAILS   ETH_MACVTR_EVLS_STRIPIFFAILS
0270 #define ETH_VLANTAGRXSTRIPPING_ALWAYS    ETH_MACVTR_EVLS_ALWAYSSTRIP
0271 /**
0272   * @}
0273   */
0274 
0275 /** @defgroup ETHEx_VLAN_Type_Check ETHEx VLAN Type Check
0276   * @ingroup RTEMSBSPsARMSTM32H7
0277   * @{
0278   */
0279 #define ETH_VLANTYPECHECK_DISABLE    ETH_MACVTR_DOVLTC
0280 #define ETH_VLANTYPECHECK_SVLAN      (ETH_MACVTR_ERSVLM | ETH_MACVTR_ESVL)
0281 #define ETH_VLANTYPECHECK_CVLAN      ((uint32_t)0x00000000)
0282 /**
0283   * @}
0284   */
0285 
0286 /** @defgroup ETHEx_VLAN_Tag_Control ETHEx_VLAN_Tag_Control
0287   * @ingroup RTEMSBSPsARMSTM32H7
0288   * @{
0289   */
0290 #define ETH_VLANTAGCONTROL_NONE       (ETH_MACVIR_VLP | ETH_MACVIR_VLC_NOVLANTAG)
0291 #define ETH_VLANTAGCONTROL_DELETE     (ETH_MACVIR_VLP | ETH_MACVIR_VLC_VLANTAGDELETE)
0292 #define ETH_VLANTAGCONTROL_INSERT     (ETH_MACVIR_VLP | ETH_MACVIR_VLC_VLANTAGINSERT)
0293 #define ETH_VLANTAGCONTROL_REPLACE    (ETH_MACVIR_VLP | ETH_MACVIR_VLC_VLANTAGREPLACE)
0294 /**
0295   * @}
0296   */
0297 
0298 /** @defgroup ETHEx_Tx_VLAN_Tag ETHEx Tx VLAN Tag
0299   * @ingroup RTEMSBSPsARMSTM32H7
0300   * @{
0301   */
0302 #define ETH_INNER_TX_VLANTAG    ((uint32_t)0x00000001U)
0303 #define ETH_OUTER_TX_VLANTAG    ((uint32_t)0x00000000U)
0304 /**
0305   * @}
0306   */
0307 
0308 /**
0309   * @}
0310   */
0311 
0312 /* Exported functions --------------------------------------------------------*/
0313 /** @addtogroup ETHEx_Exported_Functions
0314   * @{
0315   */
0316 
0317 /** @addtogroup ETHEx_Exported_Functions_Group1
0318   * @{
0319   */
0320 /* MAC ARP Offloading APIs  ***************************************************/
0321 void              HAL_ETHEx_EnableARPOffload(ETH_HandleTypeDef *heth);
0322 void              HAL_ETHEx_DisableARPOffload(ETH_HandleTypeDef *heth);
0323 void              HAL_ETHEx_SetARPAddressMatch(ETH_HandleTypeDef *heth, uint32_t IpAddress);
0324 
0325 /* MAC L3 L4 Filtering APIs ***************************************************/
0326 void              HAL_ETHEx_EnableL3L4Filtering(ETH_HandleTypeDef *heth);
0327 void              HAL_ETHEx_DisableL3L4Filtering(ETH_HandleTypeDef *heth);
0328 HAL_StatusTypeDef HAL_ETHEx_GetL3FilterConfig(ETH_HandleTypeDef *heth, uint32_t Filter, ETH_L3FilterConfigTypeDef *pL3FilterConfig);
0329 HAL_StatusTypeDef HAL_ETHEx_GetL4FilterConfig(ETH_HandleTypeDef *heth, uint32_t Filter, ETH_L4FilterConfigTypeDef *pL4FilterConfig);
0330 HAL_StatusTypeDef HAL_ETHEx_SetL3FilterConfig(ETH_HandleTypeDef *heth, uint32_t Filter, ETH_L3FilterConfigTypeDef *pL3FilterConfig);
0331 HAL_StatusTypeDef HAL_ETHEx_SetL4FilterConfig(ETH_HandleTypeDef *heth, uint32_t Filter, ETH_L4FilterConfigTypeDef *pL4FilterConfig);
0332 
0333 /* MAC VLAN Processing APIs    ************************************************/
0334 void              HAL_ETHEx_EnableVLANProcessing(ETH_HandleTypeDef *heth);
0335 void              HAL_ETHEx_DisableVLANProcessing(ETH_HandleTypeDef *heth);
0336 HAL_StatusTypeDef HAL_ETHEx_GetRxVLANConfig(ETH_HandleTypeDef *heth, ETH_RxVLANConfigTypeDef *pVlanConfig);
0337 HAL_StatusTypeDef HAL_ETHEx_SetRxVLANConfig(ETH_HandleTypeDef *heth, ETH_RxVLANConfigTypeDef *pVlanConfig);
0338 void              HAL_ETHEx_SetVLANHashTable(ETH_HandleTypeDef *heth, uint32_t VLANHashTable);
0339 HAL_StatusTypeDef HAL_ETHEx_GetTxVLANConfig(ETH_HandleTypeDef *heth, uint32_t VLANTag ,ETH_TxVLANConfigTypeDef *pVlanConfig);
0340 HAL_StatusTypeDef HAL_ETHEx_SetTxVLANConfig(ETH_HandleTypeDef *heth, uint32_t VLANTag ,ETH_TxVLANConfigTypeDef *pVlanConfig);
0341 void              HAL_ETHEx_SetTxVLANIdentifier(ETH_HandleTypeDef *heth, uint32_t VLANTag ,uint32_t VLANIdentifier);
0342 
0343 /* Energy Efficient Ethernet APIs *********************************************/
0344 void              HAL_ETHEx_EnterLPIMode(ETH_HandleTypeDef *heth, FunctionalState TxAutomate, FunctionalState TxClockStop);
0345 void              HAL_ETHEx_ExitLPIMode(ETH_HandleTypeDef *heth);
0346 uint32_t          HAL_ETHEx_GetMACLPIEvent(ETH_HandleTypeDef *heth);
0347 
0348 /**
0349   * @}
0350   */
0351 
0352 /**
0353   * @}
0354   */
0355 
0356 /**
0357   * @}
0358   */
0359 
0360 /**
0361   * @}
0362   */
0363 
0364 #endif /* ETH */
0365 
0366 #ifdef __cplusplus
0367 }
0368 #endif
0369 
0370 #endif /* STM32H7xx_HAL_ETH_EX_LEGACY_H */