Go to the documentation of this file.
31 #ifndef _MPFSXXX_ETH1_DRIVER_H
32 #define _MPFSXXX_ETH1_DRIVER_H
38 #ifndef MPFSXXX_ETH1_TX_BUFFER_COUNT
39 #define MPFSXXX_ETH1_TX_BUFFER_COUNT 16
40 #elif (MPFSXXX_ETH1_TX_BUFFER_COUNT < 1)
41 #error MPFSXXX_ETH1_TX_BUFFER_COUNT parameter is not valid
45 #ifndef MPFSXXX_ETH1_TX_BUFFER_SIZE
46 #define MPFSXXX_ETH1_TX_BUFFER_SIZE 1536
47 #elif (MPFSXXX_ETH1_TX_BUFFER_SIZE != 1536)
48 #error MPFSXXX_ETH1_TX_BUFFER_SIZE parameter is not valid
52 #ifndef MPFSXXX_ETH1_RX_BUFFER_COUNT
53 #define MPFSXXX_ETH1_RX_BUFFER_COUNT 16
54 #elif (MPFSXXX_ETH1_RX_BUFFER_COUNT < 12)
55 #error MPFSXXX_ETH1_RX_BUFFER_COUNT parameter is not valid
59 #ifndef MPFSXXX_ETH1_RX_BUFFER_SIZE
60 #define MPFSXXX_ETH1_RX_BUFFER_SIZE 1536
61 #elif (MPFSXXX_ETH1_RX_BUFFER_SIZE != 1536)
62 #error MPFSXXX_ETH1_RX_BUFFER_SIZE parameter is not valid
66 #ifndef MPFSXXX_ETH1_DUMMY_BUFFER_COUNT
67 #define MPFSXXX_ETH1_DUMMY_BUFFER_COUNT 2
68 #elif (MPFSXXX_ETH1_DUMMY_BUFFER_COUNT < 1)
69 #error MPFSXXX_ETH1_DUMMY_BUFFER_COUNT parameter is not valid
73 #ifndef MPFSXXX_ETH1_DUMMY_BUFFER_SIZE
74 #define MPFSXXX_ETH1_DUMMY_BUFFER_SIZE 128
75 #elif (MPFSXXX_ETH1_DUMMY_BUFFER_SIZE != 128)
76 #error MPFSXXX_ETH1_DUMMY_BUFFER_SIZE parameter is not valid
80 #ifndef MPFSXXX_ETH1_IRQ_PRIORITY
81 #define MPFSXXX_ETH1_IRQ_PRIORITY 7
82 #elif (MPFSXXX_ETH1_IRQ_PRIORITY < 0)
83 #error MPFSXXX_ETH1_IRQ_PRIORITY parameter is not valid
87 #ifndef MPFSXXX_ETH1_RAM_SECTION
88 #define MPFSXXX_ETH1_RAM_SECTION ".ram_no_cache"
92 #define MAC0 ((MAC_TypeDef *) 0x20110000)
95 #define MAC_TX_USED 0x80000000
96 #define MAC_TX_WRAP 0x40000000
97 #define MAC_TX_RLE_ERROR 0x20000000
98 #define MAC_TX_UNDERRUN_ERROR 0x10000000
99 #define MAC_TX_AHB_ERROR 0x08000000
100 #define MAC_TX_LATE_COL_ERROR 0x04000000
101 #define MAC_TX_CHECKSUM_ERROR 0x00700000
102 #define MAC_TX_NO_CRC 0x00010000
103 #define MAC_TX_LAST 0x00008000
104 #define MAC_TX_LENGTH 0x00003FFF
107 #define MAC_RX_ADDRESS 0xFFFFFFFC
108 #define MAC_RX_WRAP 0x00000002
109 #define MAC_RX_OWNERSHIP 0x00000001
110 #define MAC_RX_BROADCAST 0x80000000
111 #define MAC_RX_MULTICAST_HASH 0x40000000
112 #define MAC_RX_UNICAST_HASH 0x20000000
113 #define MAC_RX_SAR 0x08000000
114 #define MAC_RX_SAR_MASK 0x06000000
115 #define MAC_RX_TYPE_ID 0x01000000
116 #define MAC_RX_SNAP 0x01000000
117 #define MAC_RX_TYPE_ID_MASK 0x00C00000
118 #define MAC_RX_CHECKSUM_VALID 0x00C00000
119 #define MAC_RX_VLAN_TAG 0x00200000
120 #define MAC_RX_PRIORITY_TAG 0x00100000
121 #define MAC_RX_VLAN_PRIORITY 0x000E0000
122 #define MAC_RX_CFI 0x00010000
123 #define MAC_RX_EOF 0x00008000
124 #define MAC_RX_SOF 0x00004000
125 #define MAC_RX_LENGTH_MSB 0x00002000
126 #define MAC_RX_BAD_FCS 0x00002000
127 #define MAC_RX_LENGTH 0x00001FFF
void mpfsxxxEth1InitGpio(NetInterface *interface)
GPIO configuration.
void mpfsxxxEth1InitBufferDesc(NetInterface *interface)
Initialize buffer descriptors.
Structure describing a buffer that spans multiple chunks.
error_t mpfsxxxEth1UpdateMacAddrFilter(NetInterface *interface)
Configure MAC address filtering.
void mpfsxxxEth1Tick(NetInterface *interface)
MPFSxxx Ethernet MAC timer handler.
void mpfsxxxEth1DisableIrq(NetInterface *interface)
Disable interrupts.
void mpfsxxxEth1EventHandler(NetInterface *interface)
MPFSxxx Ethernet MAC event handler.
void mpfsxxxEth1EnableIrq(NetInterface *interface)
Enable interrupts.
uint16_t mpfsxxxEth1ReadPhyReg(uint8_t opcode, uint8_t phyAddr, uint8_t regAddr)
Read PHY register.
Transmit buffer descriptor.
const NicDriver mpfsxxxEth1Driver
MPFSxxx Ethernet MAC driver (MAC0 instance)
void mpfsxxxEth1WritePhyReg(uint8_t opcode, uint8_t phyAddr, uint8_t regAddr, uint16_t data)
Write PHY register.
Receive buffer descriptor.
error_t mpfsxxxEth1ReceivePacket(NetInterface *interface)
Receive a packet.
Network interface controller abstraction layer.
error_t mpfsxxxEth1UpdateMacConfig(NetInterface *interface)
Adjust MAC configuration parameters for proper operation.
error_t mpfsxxxEth1Init(NetInterface *interface)
MPFSxxx Ethernet MAC initialization.
error_t mpfsxxxEth1SendPacket(NetInterface *interface, const NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary)
Send a packet.