efm32gg11_eth_driver.h File Reference

EFM32 Giant Gecko 11 Ethernet MAC driver. More...

Go to the source code of this file.

Data Structures

struct  Efm32gg11TxBufferDesc
 Transmit buffer descriptor. More...
 
struct  Efm32gg11RxBufferDesc
 Receive buffer descriptor. More...
 

Macros

#define EFM32GG11_ETH_TX_BUFFER_COUNT   2
 
#define EFM32GG11_ETH_TX_BUFFER_SIZE   1536
 
#define EFM32GG11_ETH_RX_BUFFER_COUNT   48
 
#define EFM32GG11_ETH_RX_BUFFER_SIZE   128
 
#define EFM32GG11_ETH_IRQ_PRIORITY_GROUPING   4
 
#define EFM32GG11_ETH_IRQ_GROUP_PRIORITY   6
 
#define EFM32GG11_ETH_IRQ_SUB_PRIORITY   0
 
#define ETH_TX_USED   0x80000000
 
#define ETH_TX_WRAP   0x40000000
 
#define ETH_TX_ERROR   0x20000000
 
#define ETH_TX_UNDERRUN   0x10000000
 
#define ETH_TX_EXHAUSTED   0x08000000
 
#define ETH_TX_NO_CRC   0x00010000
 
#define ETH_TX_LAST   0x00008000
 
#define ETH_TX_LENGTH   0x000007FF
 
#define ETH_RX_ADDRESS   0xFFFFFFFC
 
#define ETH_RX_WRAP   0x00000002
 
#define ETH_RX_OWNERSHIP   0x00000001
 
#define ETH_RX_BROADCAST   0x80000000
 
#define ETH_RX_MULTICAST_HASH   0x40000000
 
#define ETH_RX_UNICAST_HASH   0x20000000
 
#define ETH_RX_EXT_ADDR   0x10000000
 
#define ETH_RX_SAR1   0x04000000
 
#define ETH_RX_SAR2   0x02000000
 
#define ETH_RX_SAR3   0x01000000
 
#define ETH_RX_SAR4   0x00800000
 
#define ETH_RX_TYPE_ID   0x00400000
 
#define ETH_RX_VLAN_TAG   0x00200000
 
#define ETH_RX_PRIORITY_TAG   0x00100000
 
#define ETH_RX_VLAN_PRIORITY   0x000E0000
 
#define ETH_RX_CFI   0x00010000
 
#define ETH_RX_EOF   0x00008000
 
#define ETH_RX_SOF   0x00004000
 
#define ETH_RX_OFFSET   0x00003000
 
#define ETH_RX_LENGTH   0x00000FFF
 

Functions

error_t efm32gg11EthInit (NetInterface *interface)
 EFM32GG11 Ethernet MAC initialization. More...
 
void efm32gg11EthInitGpio (NetInterface *interface)
 GPIO configuration. More...
 
void efm32gg11EthInitBufferDesc (NetInterface *interface)
 Initialize buffer descriptors. More...
 
void efm32gg11EthTick (NetInterface *interface)
 EFM32GG11 Ethernet MAC timer handler. More...
 
void efm32gg11EthEnableIrq (NetInterface *interface)
 Enable interrupts. More...
 
void efm32gg11EthDisableIrq (NetInterface *interface)
 Disable interrupts. More...
 
void efm32gg11EthEventHandler (NetInterface *interface)
 EFM32GG11 Ethernet MAC event handler. More...
 
error_t efm32gg11EthSendPacket (NetInterface *interface, const NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary)
 Send a packet. More...
 
error_t efm32gg11EthReceivePacket (NetInterface *interface)
 Receive a packet. More...
 
error_t efm32gg11EthUpdateMacAddrFilter (NetInterface *interface)
 Configure MAC address filtering. More...
 
error_t efm32gg11EthUpdateMacConfig (NetInterface *interface)
 Adjust MAC configuration parameters for proper operation. More...
 
void efm32gg11EthWritePhyReg (uint8_t opcode, uint8_t phyAddr, uint8_t regAddr, uint16_t data)
 Write PHY register. More...
 
uint16_t efm32gg11EthReadPhyReg (uint8_t opcode, uint8_t phyAddr, uint8_t regAddr)
 Read PHY register. More...
 

Variables

const NicDriver efm32gg11EthDriver
 EFM32GG11 Ethernet MAC driver. More...
 

Detailed Description

EFM32 Giant Gecko 11 Ethernet MAC driver.

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 efm32gg11_eth_driver.h.

Macro Definition Documentation

◆ EFM32GG11_ETH_IRQ_GROUP_PRIORITY

#define EFM32GG11_ETH_IRQ_GROUP_PRIORITY   6

Definition at line 71 of file efm32gg11_eth_driver.h.

◆ EFM32GG11_ETH_IRQ_PRIORITY_GROUPING

#define EFM32GG11_ETH_IRQ_PRIORITY_GROUPING   4

Definition at line 64 of file efm32gg11_eth_driver.h.

◆ EFM32GG11_ETH_IRQ_SUB_PRIORITY

#define EFM32GG11_ETH_IRQ_SUB_PRIORITY   0

Definition at line 78 of file efm32gg11_eth_driver.h.

◆ EFM32GG11_ETH_RX_BUFFER_COUNT

#define EFM32GG11_ETH_RX_BUFFER_COUNT   48

Definition at line 50 of file efm32gg11_eth_driver.h.

◆ EFM32GG11_ETH_RX_BUFFER_SIZE

#define EFM32GG11_ETH_RX_BUFFER_SIZE   128

Definition at line 57 of file efm32gg11_eth_driver.h.

◆ EFM32GG11_ETH_TX_BUFFER_COUNT

#define EFM32GG11_ETH_TX_BUFFER_COUNT   2

Definition at line 36 of file efm32gg11_eth_driver.h.

◆ EFM32GG11_ETH_TX_BUFFER_SIZE

#define EFM32GG11_ETH_TX_BUFFER_SIZE   1536

Definition at line 43 of file efm32gg11_eth_driver.h.

◆ ETH_RX_ADDRESS

#define ETH_RX_ADDRESS   0xFFFFFFFC

Definition at line 94 of file efm32gg11_eth_driver.h.

◆ ETH_RX_BROADCAST

#define ETH_RX_BROADCAST   0x80000000

Definition at line 97 of file efm32gg11_eth_driver.h.

◆ ETH_RX_CFI

#define ETH_RX_CFI   0x00010000

Definition at line 109 of file efm32gg11_eth_driver.h.

◆ ETH_RX_EOF

#define ETH_RX_EOF   0x00008000

Definition at line 110 of file efm32gg11_eth_driver.h.

◆ ETH_RX_EXT_ADDR

#define ETH_RX_EXT_ADDR   0x10000000

Definition at line 100 of file efm32gg11_eth_driver.h.

◆ ETH_RX_LENGTH

#define ETH_RX_LENGTH   0x00000FFF

Definition at line 113 of file efm32gg11_eth_driver.h.

◆ ETH_RX_MULTICAST_HASH

#define ETH_RX_MULTICAST_HASH   0x40000000

Definition at line 98 of file efm32gg11_eth_driver.h.

◆ ETH_RX_OFFSET

#define ETH_RX_OFFSET   0x00003000

Definition at line 112 of file efm32gg11_eth_driver.h.

◆ ETH_RX_OWNERSHIP

#define ETH_RX_OWNERSHIP   0x00000001

Definition at line 96 of file efm32gg11_eth_driver.h.

◆ ETH_RX_PRIORITY_TAG

#define ETH_RX_PRIORITY_TAG   0x00100000

Definition at line 107 of file efm32gg11_eth_driver.h.

◆ ETH_RX_SAR1

#define ETH_RX_SAR1   0x04000000

Definition at line 101 of file efm32gg11_eth_driver.h.

◆ ETH_RX_SAR2

#define ETH_RX_SAR2   0x02000000

Definition at line 102 of file efm32gg11_eth_driver.h.

◆ ETH_RX_SAR3

#define ETH_RX_SAR3   0x01000000

Definition at line 103 of file efm32gg11_eth_driver.h.

◆ ETH_RX_SAR4

#define ETH_RX_SAR4   0x00800000

Definition at line 104 of file efm32gg11_eth_driver.h.

◆ ETH_RX_SOF

#define ETH_RX_SOF   0x00004000

Definition at line 111 of file efm32gg11_eth_driver.h.

◆ ETH_RX_TYPE_ID

#define ETH_RX_TYPE_ID   0x00400000

Definition at line 105 of file efm32gg11_eth_driver.h.

◆ ETH_RX_UNICAST_HASH

#define ETH_RX_UNICAST_HASH   0x20000000

Definition at line 99 of file efm32gg11_eth_driver.h.

◆ ETH_RX_VLAN_PRIORITY

#define ETH_RX_VLAN_PRIORITY   0x000E0000

Definition at line 108 of file efm32gg11_eth_driver.h.

◆ ETH_RX_VLAN_TAG

#define ETH_RX_VLAN_TAG   0x00200000

Definition at line 106 of file efm32gg11_eth_driver.h.

◆ ETH_RX_WRAP

#define ETH_RX_WRAP   0x00000002

Definition at line 95 of file efm32gg11_eth_driver.h.

◆ ETH_TX_ERROR

#define ETH_TX_ERROR   0x20000000

Definition at line 86 of file efm32gg11_eth_driver.h.

◆ ETH_TX_EXHAUSTED

#define ETH_TX_EXHAUSTED   0x08000000

Definition at line 88 of file efm32gg11_eth_driver.h.

◆ ETH_TX_LAST

#define ETH_TX_LAST   0x00008000

Definition at line 90 of file efm32gg11_eth_driver.h.

◆ ETH_TX_LENGTH

#define ETH_TX_LENGTH   0x000007FF

Definition at line 91 of file efm32gg11_eth_driver.h.

◆ ETH_TX_NO_CRC

#define ETH_TX_NO_CRC   0x00010000

Definition at line 89 of file efm32gg11_eth_driver.h.

◆ ETH_TX_UNDERRUN

#define ETH_TX_UNDERRUN   0x10000000

Definition at line 87 of file efm32gg11_eth_driver.h.

◆ ETH_TX_USED

#define ETH_TX_USED   0x80000000

Definition at line 84 of file efm32gg11_eth_driver.h.

◆ ETH_TX_WRAP

#define ETH_TX_WRAP   0x40000000

Definition at line 85 of file efm32gg11_eth_driver.h.

Function Documentation

◆ efm32gg11EthDisableIrq()

void efm32gg11EthDisableIrq ( NetInterface interface)

Disable interrupts.

Parameters
[in]interfaceUnderlying network interface

Definition at line 437 of file efm32gg11_eth_driver.c.

◆ efm32gg11EthEnableIrq()

void efm32gg11EthEnableIrq ( NetInterface interface)

Enable interrupts.

Parameters
[in]interfaceUnderlying network interface

Definition at line 409 of file efm32gg11_eth_driver.c.

◆ efm32gg11EthEventHandler()

void efm32gg11EthEventHandler ( NetInterface interface)

EFM32GG11 Ethernet MAC event handler.

Parameters
[in]interfaceUnderlying network interface

Definition at line 523 of file efm32gg11_eth_driver.c.

◆ efm32gg11EthInit()

error_t efm32gg11EthInit ( NetInterface interface)

EFM32GG11 Ethernet MAC initialization.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 117 of file efm32gg11_eth_driver.c.

◆ efm32gg11EthInitBufferDesc()

void efm32gg11EthInitBufferDesc ( NetInterface interface)

Initialize buffer descriptors.

Parameters
[in]interfaceUnderlying network interface

Definition at line 331 of file efm32gg11_eth_driver.c.

◆ efm32gg11EthInitGpio()

void efm32gg11EthInitGpio ( NetInterface interface)

GPIO configuration.

Parameters
[in]interfaceUnderlying network interface

Definition at line 235 of file efm32gg11_eth_driver.c.

◆ efm32gg11EthReadPhyReg()

uint16_t efm32gg11EthReadPhyReg ( 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 970 of file efm32gg11_eth_driver.c.

◆ efm32gg11EthReceivePacket()

error_t efm32gg11EthReceivePacket ( NetInterface interface)

Receive a packet.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 627 of file efm32gg11_eth_driver.c.

◆ efm32gg11EthSendPacket()

error_t efm32gg11EthSendPacket ( 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 560 of file efm32gg11_eth_driver.c.

◆ efm32gg11EthTick()

void efm32gg11EthTick ( NetInterface interface)

EFM32GG11 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 384 of file efm32gg11_eth_driver.c.

◆ efm32gg11EthUpdateMacAddrFilter()

error_t efm32gg11EthUpdateMacAddrFilter ( NetInterface interface)

Configure MAC address filtering.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 759 of file efm32gg11_eth_driver.c.

◆ efm32gg11EthUpdateMacConfig()

error_t efm32gg11EthUpdateMacConfig ( NetInterface interface)

Adjust MAC configuration parameters for proper operation.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 885 of file efm32gg11_eth_driver.c.

◆ efm32gg11EthWritePhyReg()

void efm32gg11EthWritePhyReg ( 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 928 of file efm32gg11_eth_driver.c.

Variable Documentation

◆ efm32gg11EthDriver

const NicDriver efm32gg11EthDriver
extern

EFM32GG11 Ethernet MAC driver.

Definition at line 90 of file efm32gg11_eth_driver.c.