1 /*
2  * Copyright 2023 NXP
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef NETC_ETH_IP_FEATURES_H
8 #define NETC_ETH_IP_FEATURES_H
9 
10 /**
11  * @file Netc_Eth_Ip_Features.h
12  *
13  * @addtogroup NETC_ETH_DRIVER NETC_ETH Driver
14  * @{
15  */
16 
17 #ifdef __cplusplus
18 extern "C"
19 {
20 #endif
21 
22 /*==================================================================================================
23 *                                          INCLUDE FILES
24 * 1) system and project includes
25 * 2) needed interfaces from external units
26 * 3) internal and external interfaces from this unit
27 ==================================================================================================*/
28 
29 /*==================================================================================================
30 *                                 SOURCE FILE VERSION INFORMATION
31 ==================================================================================================*/
32 #define NETC_ETH_IP_FEATURES_VENDOR_ID                    43
33 #define NETC_ETH_IP_FEATURES_AR_RELEASE_MAJOR_VERSION     4
34 #define NETC_ETH_IP_FEATURES_AR_RELEASE_MINOR_VERSION     7
35 #define NETC_ETH_IP_FEATURES_AR_RELEASE_REVISION_VERSION  0
36 #define NETC_ETH_IP_FEATURES_SW_MAJOR_VERSION             1
37 #define NETC_ETH_IP_FEATURES_SW_MINOR_VERSION             0
38 #define NETC_ETH_IP_FEATURES_SW_PATCH_VERSION             0
39 
40 /*==================================================================================================
41 *                                       FILE VERSION CHECKS
42 ==================================================================================================*/
43 
44 /*==================================================================================================
45 *                                            CONSTANTS
46 ==================================================================================================*/
47 
48 /*==================================================================================================
49 *                                       DEFINES AND MACROS
50 ==================================================================================================*/
51 /** @brief Total number of virtual ethernet controllers supported on NETC(VSIs). */
52 #define FEATURE_NETC_ETH_NUM_OF_VIRTUAL_CTRLS       7
53 
54 /** @brief Total number of physical ethernet controllers supported on NETC(PSIs). */
55 #define NETC_ETH_IP_NUM_OF_PHYSICAL_CTRLS           (1U)
56 
57 /** @brief Total number of ethernet controllers supported on NETC(VSI + PSI). */
58 #define FEATURE_NETC_ETH_NUMBER_OF_CTRLS            (8)
59 
60 #define FEATURE_NETC_NUMBER_OF_FUNC            (4U)
61 /** @brief Index of the physical SI. */
62 #define NETC_ETH_IP_PSI_INDEX                       (0U)
63 
64 /** @brief Alignment for buffer descriptor. */
65 #define FEATURE_NETC_BUFFDESCR_ALIGNMENT_BYTES      (128U)
66 
67 /** @brief Alignment for buffer. */
68 #define FEATURE_NETC_BUFF_ALIGNMENT_BYTES           (64U)
69 
70 /** @brief Alignment value for virtual station interface message send. */
71 #define FEATURE_NETC_ETH_VSI_MSG_ALIGNMENT          (64U)
72 
73 /* TODO: Generate this from configuration. From all VSs take the bigger value. */
74 /** @brief Number of RX BDR used.*/
75 #define FEATURE_NETC_RX_BDR_COUNT (18U)
76 /** @brief Number of TX BDR used.*/
77 #define FEATURE_NETC_TX_BDR_COUNT (18U)
78 
79 /** @brief Index in the MSI table of VSI to PSI interrupt. */
80 #define NETC_ETH_IP_SITOSI_MESSAGE_MSI_TABLE_INDEX  (0U)
81 /** @brief Index in the MSI table of TX interrupt. */
82 #define NETC_ETH_IP_TX_MSI_TABLE_INDEX              (1U)
83 /** @brief Index in the MSI table of RX interrupt. */
84 #define NETC_ETH_IP_RX_MSI_TABLE_INDEX              (2U)
85 /** @brief MSI message control enable mask. */
86 #define NETC_ETH_IP_MSI_MSG_CTL_ENABLE_MASK         (0x8000U)
87 /** @brief Number of entries for a MSI table of a SI. */
88 #define NETC_ETH_IP_NUM_OF_ENTRIES_MSITABLE         (3U)
89 
90 /** @brief Extract a specific bit form a byte. */
91 #define NETC_ETH_IP_BIT0_VALUE_FROM_BYTE(Byte)      ((Byte) & 1U)
92 #define NETC_ETH_IP_BIT1_VALUE_FROM_BYTE(Byte)      (((Byte) >> 1U) & 0x01U)
93 #define NETC_ETH_IP_BIT2_VALUE_FROM_BYTE(Byte)      (((Byte) >> 2U) & 0x01U)
94 #define NETC_ETH_IP_BIT3_VALUE_FROM_BYTE(Byte)      (((Byte) >> 3U) & 0x01U)
95 #define NETC_ETH_IP_BIT4_VALUE_FROM_BYTE(Byte)      (((Byte) >> 4U) & 0x01U)
96 #define NETC_ETH_IP_BIT5_VALUE_FROM_BYTE(Byte)      (((Byte) >> 5U) & 0x01U)
97 #define NETC_ETH_IP_BIT6_VALUE_FROM_BYTE(Byte)      (((Byte) >> 6U) & 0x01U)
98 #define NETC_ETH_IP_BIT7_VALUE_FROM_BYTE(Byte)      (((Byte) >> 7U) & 0x01U)
99 
100 /** @brief Number of bytes in a MAC address. */
101 #define NETC_ETH_IP_MAC_BYTES_SIZE                  (uint8)(6U)
102 
103 /** @brief Select hash value register. */
104 #define NETC_ETH_IP_SELECT_HASH_REGISTER            (uint8)(0x20U)
105 
106 /** @brief Select hash value register. */
107 #define NETC_ETH_IP_HASH_VALUE                      (uint8)(0x1FU)
108 
109 #define NETC_ETH_IP_TIME_GATE_SCHEDULING_TABLE_ID   (5U)     /*!< Time Gate Scheduling table id */
110 #define NETC_ETH_IP_RATE_POLICER_TABLE_ID           (10U)    /*!< Rate Policer table id */
111 #define NETC_ETH_IP_INGRESS_PORT_FILTER_TABLE_ID    (13U)    /*!< Ingress Port Filter table id */
112 
113 /*! @brief Generate the type of cache IP on the platform used for the cacheable buffers feature */
114 #define FEATURE_NETC_CACHABLE_BUFFERS_LMEM      (0U)
115 #define FEATURE_NETC_CACHABLE_BUFFERS_CORE      (1U)
116 
117 /*==================================================================================================
118 *                                              ENUMS
119 ==================================================================================================*/
120 
121 /*==================================================================================================
122 *                                  STRUCTURES AND OTHER TYPEDEFS
123 ==================================================================================================*/
124 
125 /*==================================================================================================
126 *                                  GLOBAL VARIABLE DECLARATIONS
127 ==================================================================================================*/
128 
129 /*==================================================================================================
130 *                                       FUNCTION PROTOTYPES
131 ==================================================================================================*/
132 
133 #ifdef __cplusplus
134 }
135 #endif
136 
137 /** @} */
138 
139 #endif
140