1 /* 2 * Copyright 2022-2024 NXP 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef NETC_ETH_IP_CFG_DEFINES_H 8 #define NETC_ETH_IP_CFG_DEFINES_H 9 10 /** 11 * @file Netc_Eth_Ip_Cfg_Defines.h 12 * 13 * @addtogroup NETC_ETH_DRIVER NETC_ETH Driver 14 * @{ 15 */ 16 17 #ifdef __cplusplus 18 extern "C"{ 19 #endif 20 21 /*================================================================================================== 22 * INCLUDE FILES 23 * 1) system and project includes 24 * 2) needed interfaces from external units 25 * 3) internal and external interfaces from this unit 26 ==================================================================================================*/ 27 #include "Mcal.h" 28 #include "S32Z2_ENETC_PORT.h" 29 #include "S32Z2_NETC_F3_SI0.h" 30 #include "S32Z2_NETC_F3_SI1.h" 31 #include "S32Z2_NETC_F3_SI2.h" 32 #include "S32Z2_NETC_F3_SI3.h" 33 #include "S32Z2_NETC_F3_SI4.h" 34 #include "S32Z2_NETC_F3_SI5.h" 35 #include "S32Z2_NETC_F3_SI6.h" 36 #include "S32Z2_NETC_F3_SI7.h" 37 #include "S32Z2_NETC_IERB.h" 38 #include "S32Z2_NETC_VF1_PCI_HDR_TYPE0.h" 39 #include "S32Z2_NETC_VF2_PCI_HDR_TYPE0.h" 40 #include "S32Z2_NETC_VF3_PCI_HDR_TYPE0.h" 41 #include "S32Z2_NETC_VF4_PCI_HDR_TYPE0.h" 42 #include "S32Z2_NETC_VF5_PCI_HDR_TYPE0.h" 43 #include "S32Z2_NETC_VF6_PCI_HDR_TYPE0.h" 44 #include "S32Z2_NETC_VF7_PCI_HDR_TYPE0.h" 45 46 #include "S32Z2_NETC_F3.h" 47 #include "S32Z2_NETC_F0_PCI_HDR_TYPE0.h" 48 #include "S32Z2_NETC_F1_PCI_HDR_TYPE0.h" 49 #include "S32Z2_NETC_F2_PCI_HDR_TYPE0.h" 50 #include "S32Z2_NETC_F3_PCI_HDR_TYPE0.h" 51 52 #include "S32Z2_TMR0_BASE.h" 53 54 #include "S32Z2_IERC_PCI.h" 55 56 #include "S32Z2_SW_ETH_MAC_PORT0.h" 57 #include "S32Z2_SW_ETH_MAC_PORT1.h" 58 59 #include "S32Z2_NETC_F1_GLOBAL.h" 60 #include "S32Z2_NETC_F0_GLOBAL.h" 61 62 #include "S32Z2_NETC_F2_COMMON.h" 63 #include "S32Z2_NETC_F3_COMMON.h" 64 65 #include "S32Z2_NETC_PRIV.h" 66 /** @brief MSI table base address of each SI. */ 67 #define NETC_ETH_IP_MSI_BASE_PTRS { (uint32 *)(0x74BB0000U), (uint32 *)(0x74C30000U), (uint32 *)(0x74C40000U), (uint32 *)(0x74C50000U), \ 68 (uint32 *)(0x74C60000U), (uint32 *)(0x74C70000U), (uint32 *)(0x74C80000U), (uint32 *)(0x74C90000U) } 69 70 /*================================================================================================== 71 * SOURCE FILE VERSION INFORMATION 72 ==================================================================================================*/ 73 #define NETC_ETH_IP_CFG_DEFINES_VENDOR_ID 43 74 #define NETC_ETH_IP_CFG_DEFINES_AR_RELEASE_MAJOR_VERSION 4 75 #define NETC_ETH_IP_CFG_DEFINES_AR_RELEASE_MINOR_VERSION 7 76 #define NETC_ETH_IP_CFG_DEFINES_AR_RELEASE_REVISION_VERSION 0 77 #define NETC_ETH_IP_CFG_DEFINES_SW_MAJOR_VERSION 2 78 #define NETC_ETH_IP_CFG_DEFINES_SW_MINOR_VERSION 0 79 #define NETC_ETH_IP_CFG_DEFINES_SW_PATCH_VERSION 0 80 81 /*================================================================================================== 82 * FILE VERSION CHECKS 83 ==================================================================================================*/ 84 #ifndef DISABLE_MCAL_INTERMODULE_ASR_CHECK 85 /* Checks against Mcal.h */ 86 #if ((NETC_ETH_IP_CFG_DEFINES_AR_RELEASE_MAJOR_VERSION != MCAL_AR_RELEASE_MAJOR_VERSION) || \ 87 (NETC_ETH_IP_CFG_DEFINES_AR_RELEASE_MINOR_VERSION != MCAL_AR_RELEASE_MINOR_VERSION)) 88 #error "AUTOSAR Version Numbers of Netc_Eth_Ip_Cfg_Defines.h and Mcal.h are different" 89 #endif 90 #endif 91 92 /*================================================================================================== 93 CONSTANTS 94 ==================================================================================================*/ 95 96 /*================================================================================================== 97 DEFINES AND MACROS 98 ==================================================================================================*/ 99 100 /** TODO: This must be generated in function of what user is using in configuration. 101 * LIMITATION: must be multiple of 8. 102 */ 103 /** @brief Total number of command BDRs. */ 104 #define NETC_ETH_IP_COMMAND_BDR_LENGTH (2U) /*!< BD ring length. 2 means the actual size of ring is 16 because it is in sets of 8 BDs */ 105 #define NETC_ETH_IP_SET_OF_BD (8U) /*!< set of BD */ 106 #define NETC_ETH_IP_ACTUAL_CBDR_SIZE ((NETC_ETH_IP_COMMAND_BDR_LENGTH) * (NETC_ETH_IP_SET_OF_BD)) /*!< CBDR actual size */ 107 108 /** @brief Development error enable/disable. */ 109 #define NETC_ETH_IP_DEV_ERROR_DETECT (STD_OFF) 110 111 /*! @brief Extended buffer support enable/disable */ 112 #define NETC_ETH_IP_EXTENDED_BUFF (STD_OFF) 113 114 /*! @brief Custom tag support enable/disable */ 115 #define NETC_ETH_IP_CUSTOM_TAG_SUPPORT (STD_OFF) 116 117 /** @brief Minimum number of bytes supported by a frame. */ 118 #define NETC_ETH_IP_MIN_FRAME_LENGTH (16U) 119 120 /** @brief First buffer define. Used to check the hardware limitation of frame length */ 121 #define NETC_ETH_IP_FIRST_BUFFER_IDX (0U) 122 123 /** @brief Number of traffic classes. */ 124 #define NETC_ETH_IP_NUMBER_OF_PRIORITIES (8U) 125 126 /** @brief TX buffer descriptor final bit mask. */ 127 #define NETC_ETH_IP_TXBD_FINAL_MASK (0x80000000UL) 128 /** @brief TX buffer descriptor extended bit mask. */ 129 #define NETC_ETH_IP_TXBD_EXTENDED_BUFFER_MASK (0x40000000UL) 130 /** @brief TX buffer descriptor writeback bit mask. */ 131 #define NETC_ETH_IP_TXBD_WRITEBACK_MASK (0x04000000UL) 132 /** @brief TX buffer descriptor frame interrupt bit mask. */ 133 #define NETC_ETH_IP_TXBD_FRAME_INTERRUPT_MASK (0x20000000UL) 134 135 /** @brief TX frame buffer interrupt enable bit mask. */ 136 #define NETC_ETH_IP_TBIER_TXFIE_MASK (0x00000002UL) 137 138 /** @brief TX threshold(coalescing) interrupt enable bit mask. */ 139 #define NETC_ETH_IP_TBIER_TXTIE_MASK (0x00000001UL) 140 141 /* RX buffer descriptor information. */ 142 /** @brief RX buffer descriptor priority code point mask. */ 143 #define NETC_ETH_IP_RXBD_PCP_MASK (0xE0000000UL) 144 /** @brief RX buffer descriptor priority code point shift value. */ 145 #define NETC_ETH_IP_RXBD_PCP_SHIFT (29UL) 146 /** @brief RX buffer descriptor drop eligible indicator mask. */ 147 #define NETC_ETH_IP_RXBD_DEI_MASK (0x10000000UL) 148 /** @brief RX buffer descriptor drop eligible indicator shift value. */ 149 #define NETC_ETH_IP_RXBD_DEI_SHIFT (28UL) 150 /** @brief RX buffer descriptor VLAN identifier mask. */ 151 #define NETC_ETH_IP_RXBD_VID_MASK (0x0FFF0000UL) 152 /** @brief RX buffer descriptor VLAN identifier shift value. */ 153 #define NETC_ETH_IP_RXBD_VID_SHIFT (16UL) 154 /** @brief RX buffer descriptor VLAN tag protocol identifier mask. */ 155 #define NETC_ETH_IP_RXBD_TPID_MASK (0x00000003UL) 156 /** @brief RX buffer descriptor final mask. */ 157 #define NETC_ETH_IP_RXBD_FINAL_MASK (0x80000000UL) 158 /** @brief RX buffer descriptor ready mask. */ 159 #define NETC_ETH_IP_RXBD_READY_MASK (0x40000000UL) 160 /** @brief RX buffer descriptor length mask. */ 161 #define NETC_ETH_IP_RXBD_LENGTH_MASK (0x0000FFFFUL) 162 /** @brief RX buffer descriptor source port mask. */ 163 #define NETC_ETH_IP_RXBD_SRC_PORT_MASK (0x0000001FUL) 164 /** @brief RX buffer descriptor error mask. */ 165 #define NETC_ETH_IP_RXBD_ERROR_MASK (0x00FF0000UL) 166 /** @brief RX buffer descriptor error shift value. */ 167 #define NETC_ETH_IP_RXBD_ERROR_SHIFT (16UL) 168 /** @brief RX buffer descriptor L4 flag mask. */ 169 #define NETC_ETH_IP_RXBD_L4_FLAG_MASK (0x00001000UL) 170 /** @brief RX buffer descriptor L3 flag mask. */ 171 #define NETC_ETH_IP_RXBD_L3_FLAG_MASK (0x00000800UL) 172 /** @brief RX buffer descriptor timespamp flag mask. */ 173 #define NETC_ETH_IP_RXBD_TIMESTAMP_FLAG_MASK (0x00000400UL) 174 /** @brief RX buffer descriptor VLAN head flag mask. */ 175 #define NETC_ETH_IP_RXBD_VLAN_HEAD_FLAG_MASK (0x00000200UL) 176 /** @brief RX buffer descriptor host reason mask. */ 177 #define NETC_ETH_IP_RXBD_HOST_REASON_MASK (0x0000003CUL) 178 /** @brief RX buffer descriptor host reason shift value. */ 179 #define NETC_ETH_IP_RXBD_HOST_REASON_SHIFT (2UL) 180 /** @brief Receive threshold interrupt enable mask. */ 181 #define NETC_ETH_IP_RBIER_RXTIE_MASK (0x00000001UL) 182 183 /** @brief Station interface(SI) type. */ 184 #define Netc_Eth_Ip_SiBaseType NETC_F3_SI0_Type 185 186 /** @brief Virtual station interface(VSI) type. */ 187 #define Netc_Eth_Ip_VsiBaseType NETC_F3_SI1_Type 188 189 /** @brief Virtual function(VF) type */ 190 #define Netc_Eth_Ip_VfBaseType NETC_VF1_PCI_HDR_TYPE0_Type 191 192 /** @brief NETC PCI Express ECAM PF type */ 193 #define Netc_Eth_Ip_PCIeBaseType NETC_F0_PCI_HDR_TYPE0_Type 194 195 /** @brief ENETC function struct type. */ 196 #define Netc_Eth_Ip_EnetcBaseType NETC_F3_Type 197 198 /* Descriptor options for normal buffer. */ 199 /** @brief Flags shift value. */ 200 #define NETC_ETH_IP_FL_SHIFT (27U) 201 /** @brief This field contains the only Flags Qualifier setting supported by NETCv3. */ 202 /* It is used as a value because is the only one supported. If the next version support more, code will be updated. */ 203 #define NETC_ETH_IP_FLQ_VALUE (0x02U) 204 /** @brief Flags Qualifier shift value. */ 205 #define NETC_ETH_IP_FLQ_SHIFT (24U) 206 /** @brief Switch Management Sending Options shift value. */ 207 #define NETC_ETH_IP_SMSO_SHIFT (23U) 208 /** @brief Ingress/Egress switch port number this frame is to be injected towards/to be transmitted shift value. */ 209 #define NETC_ETH_IP_INGR_EGRESS_PORT_SHIFT (16U) 210 /** @brief Timestamp Reference Request shift value. */ 211 #define NETC_ETH_IP_TSR_SHIFT (22U) 212 /** @brief Internal Priority Value shift value. */ 213 #define NETC_ETH_IP_IPV_SHIFT (12U) 214 /** @brief Discard Resilience shift value. */ 215 #define NETC_ETH_IP_DR_SHIFT (10U) 216 217 /* TX write-back fields. */ 218 #define NETC_ETH_IP_HOSTREASON_WB_MASK (0x0000000FUL) 219 #define NETC_ETH_IP_HOSTREASON_WB_SHIFT (0x2U) 220 #define NETC_ETH_IP_HOSTREASON_REGULAR_FRAME (0x00000000UL) 221 #define NETC_ETH_IP_HOSTREASON_INGR_MIRROR (0x00000001UL) 222 #define NETC_ETH_IP_HOSTREASON_MAC_LEARN (0x00000002UL) 223 #define NETC_ETH_IP_HOSTREASON_TIMESTAMP (0x00000003UL) 224 #define NETC_ETH_IP_HOSTREASON_RESERVEDx4 (0x00000004UL) 225 #define NETC_ETH_IP_HOSTREASON_RESERVEDx5 (0x00000005UL) 226 #define NETC_ETH_IP_HOSTREASON_RESERVEDx6 (0x00000006UL) 227 #define NETC_ETH_IP_HOSTREASON_RESERVEDx7 (0x00000007UL) 228 #define NETC_ETH_IP_HOSTREASON_SW_PTP (0x00000008UL) 229 #define NETC_ETH_IP_HOSTREASON_SWx9 (0x00000009UL) 230 #define NETC_ETH_IP_HOSTREASON_SWxA (0x0000000AUL) 231 #define NETC_ETH_IP_HOSTREASON_SWxB (0x0000000BUL) 232 #define NETC_ETH_IP_HOSTREASON_SWxC (0x0000000CUL) 233 #define NETC_ETH_IP_HOSTREASON_SWxD (0x0000000DUL) 234 #define NETC_ETH_IP_HOSTREASON_SWxE (0x0000000EUL) 235 #define NETC_ETH_IP_HOSTREASON_SWxF (0x0000000FUL) 236 #define NETC_ETH_IP_TX_WB_STATUS_MASK (0x01FFU) 237 238 /* Descriptor options for extended buffer. */ 239 #if (STD_ON == NETC_ETH_IP_EXTENDED_BUFF) 240 /** @brief Priority code point shift value. */ 241 #define NETC_ETH_IP_PCP_SHIFT (29U) 242 /** @brief Priority code point bit mask. */ 243 #define NETC_ETH_IP_PCP_MASK (0xE0000000UL) 244 /** @brief Drop eligible indicator shift value. */ 245 #define NETC_ETH_IP_DEI_SHIFT (28U) 246 /** @brief Drop eligible indicator bit mask. */ 247 #define NETC_ETH_IP_DEI_MASK (0x10000000UL) 248 /** @brief VLAN identifier shift value. */ 249 #define NETC_ETH_IP_VID_SHIFT (16U) 250 /** @brief VLAN identifier bit mask. */ 251 #define NETC_ETH_IP_VID_MASK (0x0FFF0000UL) 252 /** @brief Tag protocol identifier shift value. */ 253 #define NETC_ETH_IP_TPID_SHIFT (14U) 254 /** @brief Tag protocol identifier bit mask. */ 255 #define NETC_ETH_IP_TPID_MASK (0x0000C000UL) 256 /** @brief Extension flags shift value. */ 257 #define NETC_ETH_IP_E_FLAGS_SHIFT (16U) 258 /** @brief Extension flags bit mask. */ 259 #define NETC_ETH_IP_E_FLAGS_MASK (0x00FF0000UL) 260 #endif 261 262 /* VSI-to-PSI message used defines. */ 263 /** @brief Define the bit used by VSI-to-PSI messaging to show if the process is still in progress. */ 264 #define NETC_ETH_IP_VSI_MSG_PROGRESS_STATUS (0x00000001UL) 265 /** @brief Define the bit used to show the message status. */ 266 #define NETC_ETH_IP_VSI_MSG_STATUS (0x0002U) 267 /** @brief Define used to code the 32 bytes message. */ 268 #define NETC_ETH_IP_VSITOPSI_MSG_SIZE (0x00000001UL) 269 /** @brief Define VSI Enable value for PSIMSGSR register. */ 270 #define NETC_ETH_IP_VSI_ENABLE (1U) 271 /** @brief Define Message receive complete value for PSIMSGRR register. */ 272 #define NETC_ETH_IP_MSG_RCV_COMPLETE (1U) 273 /** @brief Define PSI Message shift value for PSIMSGSR register. */ 274 #define NETC_ETH_IP_PSI_MSG_POS (16U) 275 /** @brief Define interrupt enable register for the PSI. */ 276 #define NETC_ETH_IP_PSIIER_MASK (0xFE00FEU) 277 /** @brief Define PSI message receive event mask */ 278 #define NETC_ETH_IP_PSI_MR_EV_MASK (0xFEU) 279 /** @brief Define FLR event mask */ 280 #define NETC_ETH_IP_FLR_EV_MASK (0x00FE0000UL) 281 /** @brief Define FLRn shift value for PSIIDR register, x = 1..7 */ 282 #define NETC_ETH_IP_PSI_IDR_FLR(x) (16U + (x)) 283 284 #define NETC_ETH_IP_VLAN_SUPPORT (STD_ON) 285 /*! @brief Enables/Disables internal cache management */ 286 #define NETC_ETH_IP_HAS_CACHE_MANAGEMENT (STD_OFF) 287 288 /*!< the length of response data buffer in bytes for Ingress Port Filter table */ 289 #define NETC_ETH_IP_INGRESSPORTFILTERTABLE_REQBUFFER_LEN (224U) 290 /*!< the length of response data buffer in bytes for Ingress Port Filter table */ 291 #define NETC_ETH_IP_INGRESSPORTFILTERTABLE_RSPBUFFER_LEN (236U) 292 /*!< the length of response data buffer in bytes for time gate scheduling table */ 293 #define NETC_ETH_IP_TGSTABLE_RSPBUFFER_LEN (12U) 294 /*!< the length of request data buffer in bytes for add cmd for rate policer table */ 295 #define NETC_ETH_IP_RATEPOLICERTABLE_REQBUFFER_LEN (27U) 296 /*!< the length of response data buffer in bytes for rate policer table */ 297 #define NETC_ETH_IP_RATEPOLICERTABLE_RSPBUFFER_LEN (108U) 298 /*!< the length of request data buffer in bytes for add and update cmd for ingress stream identification table */ 299 #define NETC_ETH_IP_ISITABLE_ADD_REQBUFFER_LEN (28U) 300 /*!< the length of request data buffer in bytes for query and delete cmd for ingress stream identification table */ 301 #define NETC_ETH_IP_ISITABLE_QUERY_REQBUFFER_LEN (24U) 302 /*!< 0 the length of response data buffer in bytes for query cmd for ingress stream identification table */ 303 #define NETC_ETH_IP_ISITABLE_RSQBUFFER_LEN (32U) 304 /*!< the length of request data buffer in bytes for add and update cmd for stream gate instance table */ 305 #define NETC_ETH_IP_SGITABLE_REQBUFFER_LEN (26U) 306 /*!< the length of response data buffer in bytes for stream gate instance table */ 307 #define NETC_ETH_IP_SGITABLE_RSPBUFFER_LEN (48U) 308 /*!< the length of request data buffer in bytes for add and update cmd for ingress stream table */ 309 #define NETC_ETH_IP_INGRESSSTREAMTABLE_REQBUFFER_LEN (46U) 310 /*!< the length of response data buffer in bytes for ingress stream table */ 311 #define NETC_ETH_IP_INGRESSSTREAMTABLE_RSPBUFFER_LEN (42U) 312 /*!< 0 bytes response data buffer length for add, update and delete cmd for tables */ 313 #define NETC_ETH_IP_TABLE_COMMON_RSPBUFFER_0BYTE_LEN (0U) 314 /*!< 4 bytes response data buffer length for add, update and delete cmd for tables */ 315 #define NETC_ETH_IP_TABLE_COMMON_RSPBUFFER_4BYTE_LEN (4U) 316 /*!< 8 bytes request data buffer length for query and delete cmd for tables */ 317 #define NETC_ETH_IP_TABLE_COMMON_REQBUFFER_8BYTE_LEN (8U) 318 /*!< 53 uint32 items of Ingress Port Filter Table KEYE_DATA Format */ 319 #define NETC_ETH_IP_INGRESSPORTFILTERTABLE_KEYE_DATA_LEN (53U) 320 /*!< 16-byte aligned memory for command tables */ 321 #define NETC_ETH_IP_TABLE_ALIGNED_SIZE (16U) 322 /* The maximum number of VLAN Filter Table entries */ 323 #define NETC_ETH_IP_NUMBER_OF_VLAN_FILTER_ENTRIES (0U) 324 /* The maximum number of Rate Policer Table entries */ 325 #define NETC_ETH_IP_NUMBER_OF_RP_ENTRIES (0U) 326 /* The maximum number of Stream Identification Table entries */ 327 #define NETC_ETH_NUMBER_OF_STREAMIDENTIFICATION_ENTRIES (0U) 328 /* The maximum number of Ingress Stream Table entries */ 329 #define NETC_ETH_NUMBER_OF_INGRESSSTREAM_ENTRIES (0U) 330 /* The maximum number of Stream Gate Control List entries */ 331 #define NETC_ETH_NUMBER_OF_SGCL_ENTRIES (0U) 332 /* The maximum number of Stream Gate Instance entries */ 333 #define NETC_ETH_NUMBER_OF_SGI_ENTRIES (0U) 334 /* The maximum number of gate control list */ 335 #define NETC_ETH_MAX_NUMBER_OF_GATECONTROLLIST_ENTRIES (2U) 336 /* The maximum number of static ingress port filter table list */ 337 #define NETC_ETH_MAX_NUMBER_OF_IPFTABLE_LIST (0U) 338 /*!< The length of response data buffer in bytes for time gate scheduling table. */ 339 #define NETC_ETH_IP_TGSTABLE_ADD_REQBUFFER_LEN (44U) 340 #define NETC_ETH_IP_TABLEDATA_BUFFER_LENGTH (59U) 341 342 /* Maxim number of registers that can be interrogated in case of the correctable errors */ 343 #define NETC_ETH_IP_MAX_CORRECTABLE_ERROR_REPORTING_STATISTICS_LENGTH (1U) 344 345 /* Maxim number of registers that can be interrogated in case of the uncorrectable errors */ 346 #define NETC_ETH_IP_MAX_UNCORRECTABLE_ERROR_REPORTING_STATISTICS_LENGTH (27U) 347 348 349 #if !defined(Netc_EthSwt_Ip_TimerBase) 350 #define Netc_EthSwt_Ip_TimerBase IP_NETC__TMR0_BASE 351 #endif 352 353 354 /*================================================================================================== 355 ENUMS 356 ==================================================================================================*/ 357 358 /*================================================================================================== 359 STRUCTURES AND OTHER TYPEDEFS 360 ==================================================================================================*/ 361 362 /*================================================================================================== 363 GLOBAL VARIABLE DECLARATIONS 364 ==================================================================================================*/ 365 366 /*================================================================================================== 367 FUNCTION PROTOTYPES 368 ==================================================================================================*/ 369 370 #ifdef __cplusplus 371 } 372 #endif 373 374 /** @} */ 375 376 #endif /* NETC_ETH_IP_CFG_DEFINES_H */ 377