sam9x6_eth1_driver.h File Reference

SAM9X60 Ethernet MAC driver (EMAC0 instance) More...

Go to the source code of this file.

Data Structures

struct  Sam9x6Eth1TxBufferDesc
 Transmit buffer descriptor. More...
 
struct  Sam9x6Eth1RxBufferDesc
 Receive buffer descriptor. More...
 

Macros

#define SAM9X6_ETH1_TX_BUFFER_COUNT   8
 
#define SAM9X6_ETH1_TX_BUFFER_SIZE   1536
 
#define SAM9X6_ETH1_RX_BUFFER_COUNT   96
 
#define SAM9X6_ETH1_RX_BUFFER_SIZE   128
 
#define SAM9X6_ETH1_IRQ_PRIORITY   0
 
#define SAM9X6_ETH1_RAM_SECTION   ".region_nocache"
 
#define EMAC0_RMII_MASK
 
#define EMAC_TX_USED   0x80000000
 
#define EMAC_TX_WRAP   0x40000000
 
#define EMAC_TX_ERROR   0x20000000
 
#define EMAC_TX_UNDERRUN   0x10000000
 
#define EMAC_TX_EXHAUSTED   0x08000000
 
#define EMAC_TX_NO_CRC   0x00010000
 
#define EMAC_TX_LAST   0x00008000
 
#define EMAC_TX_LENGTH   0x000007FF
 
#define EMAC_RX_ADDRESS   0xFFFFFFFC
 
#define EMAC_RX_WRAP   0x00000002
 
#define EMAC_RX_OWNERSHIP   0x00000001
 
#define EMAC_RX_BROADCAST   0x80000000
 
#define EMAC_RX_MULTICAST_HASH   0x40000000
 
#define EMAC_RX_UNICAST_HASH   0x20000000
 
#define EMAC_RX_EXT_ADDR   0x10000000
 
#define EMAC_RX_SAR1   0x04000000
 
#define EMAC_RX_SAR2   0x02000000
 
#define EMAC_RX_SAR3   0x01000000
 
#define EMAC_RX_SAR4   0x00800000
 
#define EMAC_RX_TYPE_ID   0x00400000
 
#define EMAC_RX_VLAN_TAG   0x00200000
 
#define EMAC_RX_PRIORITY_TAG   0x00100000
 
#define EMAC_RX_VLAN_PRIORITY   0x000E0000
 
#define EMAC_RX_CFI   0x00010000
 
#define EMAC_RX_EOF   0x00008000
 
#define EMAC_RX_SOF   0x00004000
 
#define EMAC_RX_OFFSET   0x00003000
 
#define EMAC_RX_LENGTH   0x00000FFF
 

Functions

error_t sam9x6Eth1Init (NetInterface *interface)
 SAM9X6 Ethernet MAC initialization. More...
 
void sam9x6Eth1InitGpio (NetInterface *interface)
 GPIO configuration. More...
 
void sam9x6Eth1InitBufferDesc (NetInterface *interface)
 Initialize buffer descriptors. More...
 
void sam9x6Eth1Tick (NetInterface *interface)
 SAM9X6 Ethernet MAC timer handler. More...
 
void sam9x6Eth1EnableIrq (NetInterface *interface)
 Enable interrupts. More...
 
void sam9x6Eth1DisableIrq (NetInterface *interface)
 Disable interrupts. More...
 
void sam9x6Eth1IrqHandler (void)
 SAM9X6 Ethernet MAC interrupt service routine. More...
 
void sam9x6Eth1EventHandler (NetInterface *interface)
 SAM9X6 Ethernet MAC event handler. More...
 
error_t sam9x6Eth1SendPacket (NetInterface *interface, const NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary)
 Send a packet. More...
 
error_t sam9x6Eth1ReceivePacket (NetInterface *interface)
 Receive a packet. More...
 
error_t sam9x6Eth1UpdateMacAddrFilter (NetInterface *interface)
 Configure MAC address filtering. More...
 
error_t sam9x6Eth1UpdateMacConfig (NetInterface *interface)
 Adjust MAC configuration parameters for proper operation. More...
 
void sam9x6Eth1WritePhyReg (uint8_t opcode, uint8_t phyAddr, uint8_t regAddr, uint16_t data)
 Write PHY register. More...
 
uint16_t sam9x6Eth1ReadPhyReg (uint8_t opcode, uint8_t phyAddr, uint8_t regAddr)
 Read PHY register. More...
 
void emacIrqWrapper (void)
 

Variables

const NicDriver sam9x6Eth1Driver
 SAM9X6 Ethernet MAC driver (EMAC0 instance) More...
 

Detailed Description

SAM9X60 Ethernet MAC driver (EMAC0 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.4

Definition in file sam9x6_eth1_driver.h.

Macro Definition Documentation

◆ EMAC0_RMII_MASK

#define EMAC0_RMII_MASK
Value:
(PIO_PB10A_EMAC0_E0_TX1 | PIO_PB9A_EMAC0_E0_TX0 | \
PIO_PB7A_EMAC0_E0_TXEN | PIO_PB6A_EMAC0_E0_MDC | PIO_PB5A_EMAC0_E0_MDIO | PIO_PB4A_EMAC0_E0_TXCK | \
PIO_PB3A_EMAC0_E0_RXDV | PIO_PB2A_EMAC0_E0_RXER | PIO_PB1A_EMAC0_E0_RX1 | PIO_PB0A_EMAC0_E0_RX0)

Definition at line 75 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_ADDRESS

#define EMAC_RX_ADDRESS   0xFFFFFFFC

Definition at line 90 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_BROADCAST

#define EMAC_RX_BROADCAST   0x80000000

Definition at line 93 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_CFI

#define EMAC_RX_CFI   0x00010000

Definition at line 105 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_EOF

#define EMAC_RX_EOF   0x00008000

Definition at line 106 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_EXT_ADDR

#define EMAC_RX_EXT_ADDR   0x10000000

Definition at line 96 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_LENGTH

#define EMAC_RX_LENGTH   0x00000FFF

Definition at line 109 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_MULTICAST_HASH

#define EMAC_RX_MULTICAST_HASH   0x40000000

Definition at line 94 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_OFFSET

#define EMAC_RX_OFFSET   0x00003000

Definition at line 108 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_OWNERSHIP

#define EMAC_RX_OWNERSHIP   0x00000001

Definition at line 92 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_PRIORITY_TAG

#define EMAC_RX_PRIORITY_TAG   0x00100000

Definition at line 103 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_SAR1

#define EMAC_RX_SAR1   0x04000000

Definition at line 97 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_SAR2

#define EMAC_RX_SAR2   0x02000000

Definition at line 98 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_SAR3

#define EMAC_RX_SAR3   0x01000000

Definition at line 99 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_SAR4

#define EMAC_RX_SAR4   0x00800000

Definition at line 100 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_SOF

#define EMAC_RX_SOF   0x00004000

Definition at line 107 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_TYPE_ID

#define EMAC_RX_TYPE_ID   0x00400000

Definition at line 101 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_UNICAST_HASH

#define EMAC_RX_UNICAST_HASH   0x20000000

Definition at line 95 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_VLAN_PRIORITY

#define EMAC_RX_VLAN_PRIORITY   0x000E0000

Definition at line 104 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_VLAN_TAG

#define EMAC_RX_VLAN_TAG   0x00200000

Definition at line 102 of file sam9x6_eth1_driver.h.

◆ EMAC_RX_WRAP

#define EMAC_RX_WRAP   0x00000002

Definition at line 91 of file sam9x6_eth1_driver.h.

◆ EMAC_TX_ERROR

#define EMAC_TX_ERROR   0x20000000

Definition at line 82 of file sam9x6_eth1_driver.h.

◆ EMAC_TX_EXHAUSTED

#define EMAC_TX_EXHAUSTED   0x08000000

Definition at line 84 of file sam9x6_eth1_driver.h.

◆ EMAC_TX_LAST

#define EMAC_TX_LAST   0x00008000

Definition at line 86 of file sam9x6_eth1_driver.h.

◆ EMAC_TX_LENGTH

#define EMAC_TX_LENGTH   0x000007FF

Definition at line 87 of file sam9x6_eth1_driver.h.

◆ EMAC_TX_NO_CRC

#define EMAC_TX_NO_CRC   0x00010000

Definition at line 85 of file sam9x6_eth1_driver.h.

◆ EMAC_TX_UNDERRUN

#define EMAC_TX_UNDERRUN   0x10000000

Definition at line 83 of file sam9x6_eth1_driver.h.

◆ EMAC_TX_USED

#define EMAC_TX_USED   0x80000000

Definition at line 80 of file sam9x6_eth1_driver.h.

◆ EMAC_TX_WRAP

#define EMAC_TX_WRAP   0x40000000

Definition at line 81 of file sam9x6_eth1_driver.h.

◆ SAM9X6_ETH1_IRQ_PRIORITY

#define SAM9X6_ETH1_IRQ_PRIORITY   0

Definition at line 64 of file sam9x6_eth1_driver.h.

◆ SAM9X6_ETH1_RAM_SECTION

#define SAM9X6_ETH1_RAM_SECTION   ".region_nocache"

Definition at line 71 of file sam9x6_eth1_driver.h.

◆ SAM9X6_ETH1_RX_BUFFER_COUNT

#define SAM9X6_ETH1_RX_BUFFER_COUNT   96

Definition at line 50 of file sam9x6_eth1_driver.h.

◆ SAM9X6_ETH1_RX_BUFFER_SIZE

#define SAM9X6_ETH1_RX_BUFFER_SIZE   128

Definition at line 57 of file sam9x6_eth1_driver.h.

◆ SAM9X6_ETH1_TX_BUFFER_COUNT

#define SAM9X6_ETH1_TX_BUFFER_COUNT   8

Definition at line 36 of file sam9x6_eth1_driver.h.

◆ SAM9X6_ETH1_TX_BUFFER_SIZE

#define SAM9X6_ETH1_TX_BUFFER_SIZE   1536

Definition at line 43 of file sam9x6_eth1_driver.h.

Function Documentation

◆ emacIrqWrapper()

void emacIrqWrapper ( void  )

◆ sam9x6Eth1DisableIrq()

void sam9x6Eth1DisableIrq ( NetInterface interface)

Disable interrupts.

Parameters
[in]interfaceUnderlying network interface

Definition at line 372 of file sam9x6_eth1_driver.c.

◆ sam9x6Eth1EnableIrq()

void sam9x6Eth1EnableIrq ( NetInterface interface)

Enable interrupts.

Parameters
[in]interfaceUnderlying network interface

Definition at line 343 of file sam9x6_eth1_driver.c.

◆ sam9x6Eth1EventHandler()

void sam9x6Eth1EventHandler ( NetInterface interface)

SAM9X6 Ethernet MAC event handler.

Parameters
[in]interfaceUnderlying network interface

Definition at line 460 of file sam9x6_eth1_driver.c.

◆ sam9x6Eth1Init()

error_t sam9x6Eth1Init ( NetInterface interface)

SAM9X6 Ethernet MAC initialization.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 119 of file sam9x6_eth1_driver.c.

◆ sam9x6Eth1InitBufferDesc()

void sam9x6Eth1InitBufferDesc ( NetInterface interface)

Initialize buffer descriptors.

Parameters
[in]interfaceUnderlying network interface

Definition at line 265 of file sam9x6_eth1_driver.c.

◆ sam9x6Eth1InitGpio()

void sam9x6Eth1InitGpio ( NetInterface interface)

GPIO configuration.

Parameters
[in]interfaceUnderlying network interface

Definition at line 233 of file sam9x6_eth1_driver.c.

◆ sam9x6Eth1IrqHandler()

void sam9x6Eth1IrqHandler ( void  )

SAM9X6 Ethernet MAC interrupt service routine.

Definition at line 400 of file sam9x6_eth1_driver.c.

◆ sam9x6Eth1ReadPhyReg()

uint16_t sam9x6Eth1ReadPhyReg ( 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 903 of file sam9x6_eth1_driver.c.

◆ sam9x6Eth1ReceivePacket()

error_t sam9x6Eth1ReceivePacket ( NetInterface interface)

Receive a packet.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 563 of file sam9x6_eth1_driver.c.

◆ sam9x6Eth1SendPacket()

error_t sam9x6Eth1SendPacket ( 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 496 of file sam9x6_eth1_driver.c.

◆ sam9x6Eth1Tick()

void sam9x6Eth1Tick ( NetInterface interface)

SAM9X6 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 318 of file sam9x6_eth1_driver.c.

◆ sam9x6Eth1UpdateMacAddrFilter()

error_t sam9x6Eth1UpdateMacAddrFilter ( NetInterface interface)

Configure MAC address filtering.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 695 of file sam9x6_eth1_driver.c.

◆ sam9x6Eth1UpdateMacConfig()

error_t sam9x6Eth1UpdateMacConfig ( NetInterface interface)

Adjust MAC configuration parameters for proper operation.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 821 of file sam9x6_eth1_driver.c.

◆ sam9x6Eth1WritePhyReg()

void sam9x6Eth1WritePhyReg ( 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 864 of file sam9x6_eth1_driver.c.

Variable Documentation

◆ sam9x6Eth1Driver

const NicDriver sam9x6Eth1Driver
extern

SAM9X6 Ethernet MAC driver (EMAC0 instance)

Definition at line 92 of file sam9x6_eth1_driver.c.