1 /*
2  * Copyright 2024 NXP
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef _FSL_NETC_SOC_H_
8 #define _FSL_NETC_SOC_H_
9 
10 #include "netc_hw/fsl_netc_hw.h"
11 
12 #define TMR_PCI_HDR_TYPE0   TMR0_PCI_HDR_TYPE0
13 #define EMDIO_PCI_HDR_TYPE0 EMDIO0_PCI_HDR_TYPE0
14 
15 /*! @brief Station interface index enumerator */
16 typedef enum _netc_hw_si_idx
17 {
18     kNETC_ENETC0PSI0 = (0U << 8U) | (0U << 4U) | 0U, /*!< ENETC0 PSI0, index 0 */
19     kNETC_ENETC1PSI0 = (1U << 8U) | (0U << 4U) | 1U, /*!< ENETC1 PSI0, index 1 */
20     kNETC_ENETC2PSI0 = (2U << 8U) | (0U << 4U) | 2U, /*!< ENETC2 PSI0, index 2 */
21     kNETC_ENETC3PSI0 = (3U << 8U) | (0U << 4U) | 3U, /*!< ENETC3 PSI0, index 3 */
22     kNETC_ENETC3VSI1 = (3U << 8U) | (1U << 4U) | 4U, /*!< ENETC3 VSI1, index 4 */
23     kNETC_ENETC3VSI2 = (3U << 8U) | (2U << 4U) | 5U, /*!< ENETC3 VSI2, index 5 */
24     kNETC_ENETC3VSI3 = (3U << 8U) | (3U << 4U) | 6U, /*!< ENETC3 VSI3, index 6 */
25 } netc_hw_si_idx_t;
26 
27 /*! @brief Ethernet MAC port resource for the NETC module */
28 typedef enum _netc_hw_eth_port_idx
29 {
30     kNETC_ENETC0EthPort   = 0U, /*!< Ethernet MAC port(Eth3) for ENETC0 */
31     kNETC_ENETC1EthPort   = 1U, /*!< Ethernet MAC port(Eth4) for ENETC1 */
32     kNETC_ENETC2EthPort   = 2U, /*!< Ethernet MAC port(Eth5) for ENETC2 */
33     kNETC_SWITCH0EthPort0 = 3U, /*!< Ethernet MAC port0(Eth0) for SWITCH */
34     kNETC_SWITCH0EthPort1 = 4U, /*!< Ethernet MAC port1(Eth1) for SWITCH */
35     kNETC_SWITCH0EthPort2 = 5U, /*!< Ethernet MAC port2(Eth2) for SWITCH */
36 } netc_hw_eth_port_idx_t;
37 
38 /*!
39  * @brief Enumeration for NETC timer external trigger index
40  */
41 typedef enum _netc_timer_exttrig_index
42 {
43     kNETC_TimerExtTrig1 = 0,
44     kNETC_TimerExtTrig2,
45 } netc_timer_exttrig_index_t;
46 
47 /*!
48  * @brief Get register map resource
49  *
50  * @param handle  The enetc hw handle.
51  * @param si      The SI object.
52  */
53 void NETC_SocGetBaseResource(netc_enetc_hw_t *hw, netc_hw_si_idx_t si);
54 
55 /*!
56  * @brief Get func instance from mac port
57  *
58  * @param port  The enetc mac port.
59  * @return uint32_t
60  */
61 uint32_t NETC_SocGetFuncInstance(netc_hw_eth_port_idx_t port);
62 
63 /*!
64  * @brief Preinit VSIs
65  *
66  * @param hw      The enetc hw handle.
67  * @param si      The SI object.
68  * @return status_t
69  */
70 status_t NETC_SocPreInitVsi(netc_enetc_hw_t *hw, netc_hw_si_idx_t si);
71 #endif /* _FSL_NETC_SOC_H_ */
72