mpfsxxx_eth2_driver.h File Reference

PolarFire SoC Gigabit Ethernet MAC driver (MAC1 instance) More...

Go to the source code of this file.

Data Structures

struct  MpfsxxxEth2TxBufferDesc
 Transmit buffer descriptor. More...
 
struct  MpfsxxxEth2RxBufferDesc
 Receive buffer descriptor. More...
 

Macros

#define MPFSXXX_ETH2_TX_BUFFER_COUNT   16
 
#define MPFSXXX_ETH2_TX_BUFFER_SIZE   1536
 
#define MPFSXXX_ETH2_RX_BUFFER_COUNT   16
 
#define MPFSXXX_ETH2_RX_BUFFER_SIZE   1536
 
#define MPFSXXX_ETH2_DUMMY_BUFFER_COUNT   2
 
#define MPFSXXX_ETH2_DUMMY_BUFFER_SIZE   128
 
#define MPFSXXX_ETH2_IRQ_PRIORITY   7
 
#define MPFSXXX_ETH2_RAM_SECTION   ".ram_no_cache"
 
#define MAC1   ((MAC_TypeDef *) 0x20112000)
 
#define MAC_TX_USED   0x80000000
 
#define MAC_TX_WRAP   0x40000000
 
#define MAC_TX_RLE_ERROR   0x20000000
 
#define MAC_TX_UNDERRUN_ERROR   0x10000000
 
#define MAC_TX_AHB_ERROR   0x08000000
 
#define MAC_TX_LATE_COL_ERROR   0x04000000
 
#define MAC_TX_CHECKSUM_ERROR   0x00700000
 
#define MAC_TX_NO_CRC   0x00010000
 
#define MAC_TX_LAST   0x00008000
 
#define MAC_TX_LENGTH   0x00003FFF
 
#define MAC_RX_ADDRESS   0xFFFFFFFC
 
#define MAC_RX_WRAP   0x00000002
 
#define MAC_RX_OWNERSHIP   0x00000001
 
#define MAC_RX_BROADCAST   0x80000000
 
#define MAC_RX_MULTICAST_HASH   0x40000000
 
#define MAC_RX_UNICAST_HASH   0x20000000
 
#define MAC_RX_SAR   0x08000000
 
#define MAC_RX_SAR_MASK   0x06000000
 
#define MAC_RX_TYPE_ID   0x01000000
 
#define MAC_RX_SNAP   0x01000000
 
#define MAC_RX_TYPE_ID_MASK   0x00C00000
 
#define MAC_RX_CHECKSUM_VALID   0x00C00000
 
#define MAC_RX_VLAN_TAG   0x00200000
 
#define MAC_RX_PRIORITY_TAG   0x00100000
 
#define MAC_RX_VLAN_PRIORITY   0x000E0000
 
#define MAC_RX_CFI   0x00010000
 
#define MAC_RX_EOF   0x00008000
 
#define MAC_RX_SOF   0x00004000
 
#define MAC_RX_LENGTH_MSB   0x00002000
 
#define MAC_RX_BAD_FCS   0x00002000
 
#define MAC_RX_LENGTH   0x00001FFF
 

Functions

error_t mpfsxxxEth2Init (NetInterface *interface)
 MPFSxxx Ethernet MAC initialization. More...
 
void mpfsxxxEth2InitGpio (NetInterface *interface)
 GPIO configuration. More...
 
void mpfsxxxEth2InitBufferDesc (NetInterface *interface)
 Initialize buffer descriptors. More...
 
void mpfsxxxEth2Tick (NetInterface *interface)
 MPFSxxx Ethernet MAC timer handler. More...
 
void mpfsxxxEth2EnableIrq (NetInterface *interface)
 Enable interrupts. More...
 
void mpfsxxxEth2DisableIrq (NetInterface *interface)
 Disable interrupts. More...
 
void mpfsxxxEth2EventHandler (NetInterface *interface)
 MPFSxxx Ethernet MAC event handler. More...
 
error_t mpfsxxxEth2SendPacket (NetInterface *interface, const NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary)
 Send a packet. More...
 
error_t mpfsxxxEth2ReceivePacket (NetInterface *interface)
 Receive a packet. More...
 
error_t mpfsxxxEth2UpdateMacAddrFilter (NetInterface *interface)
 Configure MAC address filtering. More...
 
error_t mpfsxxxEth2UpdateMacConfig (NetInterface *interface)
 Adjust MAC configuration parameters for proper operation. More...
 
void mpfsxxxEth2WritePhyReg (uint8_t opcode, uint8_t phyAddr, uint8_t regAddr, uint16_t data)
 Write PHY register. More...
 
uint16_t mpfsxxxEth2ReadPhyReg (uint8_t opcode, uint8_t phyAddr, uint8_t regAddr)
 Read PHY register. More...
 

Variables

const NicDriver mpfsxxxEth2Driver
 MPFSxxx Ethernet MAC driver (MAC1 instance) More...
 

Detailed Description

PolarFire SoC Gigabit Ethernet MAC driver (MAC1 instance)

License

SPDX-License-Identifier: GPL-2.0-or-later

Copyright (C) 2010-2024 Oryx Embedded SARL. All rights reserved.

This file is part of CycloneTCP Open.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Author
Oryx Embedded SARL (www.oryx-embedded.com)
Version
2.4.0

Definition in file mpfsxxx_eth2_driver.h.

Macro Definition Documentation

◆ MAC1

#define MAC1   ((MAC_TypeDef *) 0x20112000)

Definition at line 89 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_ADDRESS

#define MAC_RX_ADDRESS   0xFFFFFFFC

Definition at line 104 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_BAD_FCS

#define MAC_RX_BAD_FCS   0x00002000

Definition at line 123 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_BROADCAST

#define MAC_RX_BROADCAST   0x80000000

Definition at line 107 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_CFI

#define MAC_RX_CFI   0x00010000

Definition at line 119 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_CHECKSUM_VALID

#define MAC_RX_CHECKSUM_VALID   0x00C00000

Definition at line 115 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_EOF

#define MAC_RX_EOF   0x00008000

Definition at line 120 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_LENGTH

#define MAC_RX_LENGTH   0x00001FFF

Definition at line 124 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_LENGTH_MSB

#define MAC_RX_LENGTH_MSB   0x00002000

Definition at line 122 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_MULTICAST_HASH

#define MAC_RX_MULTICAST_HASH   0x40000000

Definition at line 108 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_OWNERSHIP

#define MAC_RX_OWNERSHIP   0x00000001

Definition at line 106 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_PRIORITY_TAG

#define MAC_RX_PRIORITY_TAG   0x00100000

Definition at line 117 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_SAR

#define MAC_RX_SAR   0x08000000

Definition at line 110 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_SAR_MASK

#define MAC_RX_SAR_MASK   0x06000000

Definition at line 111 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_SNAP

#define MAC_RX_SNAP   0x01000000

Definition at line 113 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_SOF

#define MAC_RX_SOF   0x00004000

Definition at line 121 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_TYPE_ID

#define MAC_RX_TYPE_ID   0x01000000

Definition at line 112 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_TYPE_ID_MASK

#define MAC_RX_TYPE_ID_MASK   0x00C00000

Definition at line 114 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_UNICAST_HASH

#define MAC_RX_UNICAST_HASH   0x20000000

Definition at line 109 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_VLAN_PRIORITY

#define MAC_RX_VLAN_PRIORITY   0x000E0000

Definition at line 118 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_VLAN_TAG

#define MAC_RX_VLAN_TAG   0x00200000

Definition at line 116 of file mpfsxxx_eth2_driver.h.

◆ MAC_RX_WRAP

#define MAC_RX_WRAP   0x00000002

Definition at line 105 of file mpfsxxx_eth2_driver.h.

◆ MAC_TX_AHB_ERROR

#define MAC_TX_AHB_ERROR   0x08000000

Definition at line 96 of file mpfsxxx_eth2_driver.h.

◆ MAC_TX_CHECKSUM_ERROR

#define MAC_TX_CHECKSUM_ERROR   0x00700000

Definition at line 98 of file mpfsxxx_eth2_driver.h.

◆ MAC_TX_LAST

#define MAC_TX_LAST   0x00008000

Definition at line 100 of file mpfsxxx_eth2_driver.h.

◆ MAC_TX_LATE_COL_ERROR

#define MAC_TX_LATE_COL_ERROR   0x04000000

Definition at line 97 of file mpfsxxx_eth2_driver.h.

◆ MAC_TX_LENGTH

#define MAC_TX_LENGTH   0x00003FFF

Definition at line 101 of file mpfsxxx_eth2_driver.h.

◆ MAC_TX_NO_CRC

#define MAC_TX_NO_CRC   0x00010000

Definition at line 99 of file mpfsxxx_eth2_driver.h.

◆ MAC_TX_RLE_ERROR

#define MAC_TX_RLE_ERROR   0x20000000

Definition at line 94 of file mpfsxxx_eth2_driver.h.

◆ MAC_TX_UNDERRUN_ERROR

#define MAC_TX_UNDERRUN_ERROR   0x10000000

Definition at line 95 of file mpfsxxx_eth2_driver.h.

◆ MAC_TX_USED

#define MAC_TX_USED   0x80000000

Definition at line 92 of file mpfsxxx_eth2_driver.h.

◆ MAC_TX_WRAP

#define MAC_TX_WRAP   0x40000000

Definition at line 93 of file mpfsxxx_eth2_driver.h.

◆ MPFSXXX_ETH2_DUMMY_BUFFER_COUNT

#define MPFSXXX_ETH2_DUMMY_BUFFER_COUNT   2

Definition at line 64 of file mpfsxxx_eth2_driver.h.

◆ MPFSXXX_ETH2_DUMMY_BUFFER_SIZE

#define MPFSXXX_ETH2_DUMMY_BUFFER_SIZE   128

Definition at line 71 of file mpfsxxx_eth2_driver.h.

◆ MPFSXXX_ETH2_IRQ_PRIORITY

#define MPFSXXX_ETH2_IRQ_PRIORITY   7

Definition at line 78 of file mpfsxxx_eth2_driver.h.

◆ MPFSXXX_ETH2_RAM_SECTION

#define MPFSXXX_ETH2_RAM_SECTION   ".ram_no_cache"

Definition at line 85 of file mpfsxxx_eth2_driver.h.

◆ MPFSXXX_ETH2_RX_BUFFER_COUNT

#define MPFSXXX_ETH2_RX_BUFFER_COUNT   16

Definition at line 50 of file mpfsxxx_eth2_driver.h.

◆ MPFSXXX_ETH2_RX_BUFFER_SIZE

#define MPFSXXX_ETH2_RX_BUFFER_SIZE   1536

Definition at line 57 of file mpfsxxx_eth2_driver.h.

◆ MPFSXXX_ETH2_TX_BUFFER_COUNT

#define MPFSXXX_ETH2_TX_BUFFER_COUNT   16

Definition at line 36 of file mpfsxxx_eth2_driver.h.

◆ MPFSXXX_ETH2_TX_BUFFER_SIZE

#define MPFSXXX_ETH2_TX_BUFFER_SIZE   1536

Definition at line 43 of file mpfsxxx_eth2_driver.h.

Function Documentation

◆ mpfsxxxEth2DisableIrq()

void mpfsxxxEth2DisableIrq ( NetInterface interface)

Disable interrupts.

Parameters
[in]interfaceUnderlying network interface

Definition at line 435 of file mpfsxxx_eth2_driver.c.

◆ mpfsxxxEth2EnableIrq()

void mpfsxxxEth2EnableIrq ( NetInterface interface)

Enable interrupts.

Parameters
[in]interfaceUnderlying network interface

Definition at line 407 of file mpfsxxx_eth2_driver.c.

◆ mpfsxxxEth2EventHandler()

void mpfsxxxEth2EventHandler ( NetInterface interface)

MPFSxxx Ethernet MAC event handler.

Parameters
[in]interfaceUnderlying network interface

Definition at line 524 of file mpfsxxx_eth2_driver.c.

◆ mpfsxxxEth2Init()

error_t mpfsxxxEth2Init ( NetInterface interface)

MPFSxxx Ethernet MAC initialization.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 110 of file mpfsxxx_eth2_driver.c.

◆ mpfsxxxEth2InitBufferDesc()

void mpfsxxxEth2InitBufferDesc ( NetInterface interface)

Initialize buffer descriptors.

Parameters
[in]interfaceUnderlying network interface

Definition at line 258 of file mpfsxxx_eth2_driver.c.

◆ mpfsxxxEth2InitGpio()

void mpfsxxxEth2InitGpio ( NetInterface interface)

GPIO configuration.

Parameters
[in]interfaceUnderlying network interface

Definition at line 244 of file mpfsxxx_eth2_driver.c.

◆ mpfsxxxEth2ReadPhyReg()

uint16_t mpfsxxxEth2ReadPhyReg ( uint8_t  opcode,
uint8_t  phyAddr,
uint8_t  regAddr 
)

Read PHY register.

Parameters
[in]opcodeAccess type (2 bits)
[in]phyAddrPHY address (5 bits)
[in]regAddrRegister address (5 bits)
Returns
Register value

Definition at line 1011 of file mpfsxxx_eth2_driver.c.

◆ mpfsxxxEth2ReceivePacket()

error_t mpfsxxxEth2ReceivePacket ( NetInterface interface)

Receive a packet.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 628 of file mpfsxxx_eth2_driver.c.

◆ mpfsxxxEth2SendPacket()

error_t mpfsxxxEth2SendPacket ( NetInterface interface,
const NetBuffer buffer,
size_t  offset,
NetTxAncillary ancillary 
)

Send a packet.

Parameters
[in]interfaceUnderlying network interface
[in]bufferMulti-part buffer containing the data to send
[in]offsetOffset to the first data byte
[in]ancillaryAdditional options passed to the stack along with the packet
Returns
Error code

Definition at line 561 of file mpfsxxx_eth2_driver.c.

◆ mpfsxxxEth2Tick()

void mpfsxxxEth2Tick ( NetInterface interface)

MPFSxxx Ethernet MAC timer handler.

This routine is periodically called by the TCP/IP stack to handle periodic operations such as polling the link state

Parameters
[in]interfaceUnderlying network interface

Definition at line 382 of file mpfsxxx_eth2_driver.c.

◆ mpfsxxxEth2UpdateMacAddrFilter()

error_t mpfsxxxEth2UpdateMacAddrFilter ( NetInterface interface)

Configure MAC address filtering.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 760 of file mpfsxxx_eth2_driver.c.

◆ mpfsxxxEth2UpdateMacConfig()

error_t mpfsxxxEth2UpdateMacConfig ( NetInterface interface)

Adjust MAC configuration parameters for proper operation.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 918 of file mpfsxxx_eth2_driver.c.

◆ mpfsxxxEth2WritePhyReg()

void mpfsxxxEth2WritePhyReg ( uint8_t  opcode,
uint8_t  phyAddr,
uint8_t  regAddr,
uint16_t  data 
)

Write PHY register.

Parameters
[in]opcodeAccess type (2 bits)
[in]phyAddrPHY address (5 bits)
[in]regAddrRegister address (5 bits)
[in]dataRegister value

Definition at line 970 of file mpfsxxx_eth2_driver.c.

Variable Documentation

◆ mpfsxxxEth2Driver

const NicDriver mpfsxxxEth2Driver
extern

MPFSxxx Ethernet MAC driver (MAC1 instance)

Definition at line 83 of file mpfsxxx_eth2_driver.c.