#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>
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 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 struct _BufDescriptor BufDescriptor |