Nut/OS  5.0.5
API Reference
at91_emac.c File Reference
#include <cfg/os.h>
#include <cfg/dev.h>
#include <arch/arm.h>
#include <cfg/arch/gpio.h>
#include <string.h>
#include <sys/atom.h>
#include <sys/heap.h>
#include <sys/thread.h>
#include <sys/event.h>
#include <sys/timer.h>
#include <sys/confnet.h>
#include <netinet/if_ether.h>
#include <net/ether.h>
#include <net/if_var.h>
#include <dev/irqreg.h>
#include <dev/at91_emac.h>
#include <dev/phy.h>
#include <stdio.h>
#include <arpa/inet.h>
Include dependency graph for at91_emac.c:

Data Structures

struct  _EMACINFO
 Network interface controller information structure. More...
struct  _BufDescriptor

Defines

#define EMPRINTF(args,...)   printf(args,##__VA_ARGS__);fflush(stdout)
#define NUT_THREAD_NICRXSTACK   320
#define EMAC_RX_BUFFERS   32
#define EMAC_RX_BUFSIZ   128
#define EMAC_TX_BUFFERS   2
#define EMAC_TX_BUFSIZ   1536
#define EMAC_LINK_LOOPS   1000
#define NIC_PHY_ADDR   0
 PHY address.
#define NIC_PHY_UID   0xffffffff
 PHY ID.
#define CHECK_ALL_KNOWN_PHY_IDS
 Check all known PHY IDs.
#define RXBUF_OWNERSHIP   0x00000001
#define RXBUF_WRAP   0x00000002
#define RXBUF_ADDRMASK   0xFFFFFFFC
#define RXS_BROADCAST_ADDR   0x80000000
 Broadcast address detected.
#define RXS_MULTICAST_HASH   0x40000000
 Multicast hash match.
#define RXS_UNICAST_HASH   0x20000000
 Unicast hash match.
#define RXS_EXTERNAL_ADDR   0x10000000
 External address match.
#define RXS_SA1_ADDR   0x04000000
 Specific address register 1 match.
#define RXS_SA2_ADDR   0x02000000
 Specific address register 2 match.
#define RXS_SA3_ADDR   0x01000000
 Specific address register 3 match.
#define RXS_SA4_ADDR   0x00800000
 Specific address register 4 match.
#define RXS_TYPE_ID   0x00400000
 Type ID match.
#define RXS_VLAN_TAG   0x00200000
 VLAN tag detected.
#define RXS_PRIORITY_TAG   0x00100000
 Priority tag detected.
#define RXS_VLAN_PRIORITY   0x000E0000
 VLAN priority.
#define RXS_CFI_IND   0x00010000
 Concatenation format indicator.
#define RXS_EOF   0x00008000
 End of frame.
#define RXS_SOF   0x00004000
 Start of frame.
#define RXS_RBF_OFFSET   0x00003000
 Receive buffer offset mask.
#define RXS_LENGTH_FRAME   0x000007FF
 Length of frame including FCS.
#define TXS_USED   0x80000000
 Used buffer.
#define TXS_WRAP   0x40000000
 Last descriptor.
#define TXS_ERROR   0x20000000
 Retry limit exceeded.
#define TXS_UNDERRUN   0x10000000
 Transmit underrun.
#define TXS_NO_BUFFER   0x08000000
 Buffer exhausted.
#define TXS_NO_CRC   0x00010000
 CRC not appended.
#define TXS_LAST_BUFF   0x00008000
 Last buffer of frame.
#define MII_DM9161_ID   0x0181b8a0
#define MII_AM79C875_ID   0x00225540
#define MII_MICREL_ID   0x00221610
#define MII_LAN8700_ID   0x0007c0c0
#define MII_LAN8710_ID   0x0007C0F0

Typedefs

typedef struct _EMACINFO EMACINFO
 Network interface controller information type.
typedef struct _BufDescriptor BufDescriptor

Functions

void EmacRxThread (void *arg)
 NIC receiver thread.
int EmacOutput (NUTDEVICE *dev, NETBUF *nb)
 Send Ethernet packet.
int EmacInit (NUTDEVICE *dev)
 Initialize Ethernet hardware.

Variables

NUTDEVICE devAt91Emac
 Device information structure.

Define Documentation

#define EMPRINTF (   args,
  ... 
)    printf(args,##__VA_ARGS__);fflush(stdout)

Referenced by EmacInit(), and EmacRxThread().

#define NUT_THREAD_NICRXSTACK   320

Referenced by EmacInit().

#define EMAC_RX_BUFFERS   32
#define EMAC_RX_BUFSIZ   128
#define EMAC_TX_BUFFERS   2
#define EMAC_TX_BUFSIZ   1536
#define EMAC_LINK_LOOPS   1000

Referenced by EmacInit(), and EmacRxThread().

#define NIC_PHY_ADDR   0

PHY address.

Any other than 0 seems to create problems with Atmel's evaluation kits.

#define NIC_PHY_UID   0xffffffff

PHY ID.

If set to 0xffffffff, the PHY id will be ignored.

#define CHECK_ALL_KNOWN_PHY_IDS

Check all known PHY IDs.

If defined, perform the old PHY checks. This ensures compatibility at the cost of bloat. Should be removed later on when all boards have their PHY ids in their configuration.

#define RXBUF_OWNERSHIP   0x00000001
#define RXBUF_WRAP   0x00000002
#define RXBUF_ADDRMASK   0xFFFFFFFC
#define RXS_BROADCAST_ADDR   0x80000000

Broadcast address detected.

#define RXS_MULTICAST_HASH   0x40000000

Multicast hash match.

#define RXS_UNICAST_HASH   0x20000000

Unicast hash match.

#define RXS_EXTERNAL_ADDR   0x10000000

External address match.

#define RXS_SA1_ADDR   0x04000000

Specific address register 1 match.

#define RXS_SA2_ADDR   0x02000000

Specific address register 2 match.

#define RXS_SA3_ADDR   0x01000000

Specific address register 3 match.

#define RXS_SA4_ADDR   0x00800000

Specific address register 4 match.

#define RXS_TYPE_ID   0x00400000

Type ID match.

#define RXS_VLAN_TAG   0x00200000

VLAN tag detected.

#define RXS_PRIORITY_TAG   0x00100000

Priority tag detected.

#define RXS_VLAN_PRIORITY   0x000E0000

VLAN priority.

#define RXS_CFI_IND   0x00010000

Concatenation format indicator.

#define RXS_EOF   0x00008000

End of frame.

#define RXS_SOF   0x00004000

Start of frame.

#define RXS_RBF_OFFSET   0x00003000

Receive buffer offset mask.

#define RXS_LENGTH_FRAME   0x000007FF

Length of frame including FCS.

#define TXS_USED   0x80000000

Used buffer.

Referenced by EmacOutput().

#define TXS_WRAP   0x40000000

Last descriptor.

#define TXS_ERROR   0x20000000

Retry limit exceeded.

#define TXS_UNDERRUN   0x10000000

Transmit underrun.

#define TXS_NO_BUFFER   0x08000000

Buffer exhausted.

#define TXS_NO_CRC   0x00010000

CRC not appended.

#define TXS_LAST_BUFF   0x00008000

Last buffer of frame.

#define MII_DM9161_ID   0x0181b8a0
#define MII_AM79C875_ID   0x00225540
#define MII_MICREL_ID   0x00221610
#define MII_LAN8700_ID   0x0007c0c0
#define MII_LAN8710_ID   0x0007C0F0

Typedef Documentation

typedef struct _EMACINFO EMACINFO

Network interface controller information type.

typedef struct _BufDescriptor BufDescriptor