#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 <stdio.h>
Go to the source code of this file.
Data Structures | |
struct | _EMACINFO |
Network interface controller information structure. More... | |
struct | _BufDescriptor |
Defines | |
#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 1000000 |
#define | NIC_PHY_BMCR 0x00 |
Basic mode control register. | |
#define | NIC_PHY_BMCR_COLTEST 0x0080 |
Collision test. | |
#define | NIC_PHY_BMCR_FDUPLEX 0x0100 |
Full duplex mode. | |
#define | NIC_PHY_BMCR_ANEGSTART 0x0200 |
Restart auto negotiation. | |
#define | NIC_PHY_BMCR_ISOLATE 0x0400 |
Isolate from MII. | |
#define | NIC_PHY_BMCR_PWRDN 0x0800 |
Power-down. | |
#define | NIC_PHY_BMCR_ANEGENA 0x1000 |
Enable auto negotiation. | |
#define | NIC_PHY_BMCR_100MBPS 0x2000 |
Select 100 Mbps. | |
#define | NIC_PHY_BMCR_LOOPBACK 0x4000 |
Enable loopback mode. | |
#define | NIC_PHY_BMCR_RESET 0x8000 |
Software reset. | |
#define | NIC_PHY_BMSR 0x01 |
Basic mode status register. | |
#define | NIC_PHY_BMSR_ANCOMPL 0x0020 |
Auto negotiation complete. | |
#define | NIC_PHY_BMSR_LINKSTAT 0x0004 |
Link status. | |
#define | NIC_PHY_ID1 0x02 |
PHY identifier register 1. | |
#define | NIC_PHY_ID2 0x03 |
PHY identifier register 2. | |
#define | NIC_PHY_ANAR 0x04 |
Auto negotiation advertisement register. | |
#define | NIC_PHY_ANLPAR 0x05 |
Auto negotiation link partner availability register. | |
#define | NIC_PHY_ANEG_NP 0x8000 |
Next page available. | |
#define | NIC_PHY_ANEG_ACK 0x4000 |
Ability data reception acknowledged. | |
#define | NIC_PHY_ANEG_RF 0x2000 |
Remote fault. | |
#define | NIC_PHY_ANEG_FCS 0x0400 |
Flow control supported. | |
#define | NIC_PHY_ANEG_T4 0x0200 |
100BASE-T4 supported. | |
#define | NIC_PHY_ANEG_TX_FDX 0x0100 |
100BASE-T full duplex supported. | |
#define | NIC_PHY_ANEG_TX_HDX 0x0080 |
100BASE-T half duplex supported. | |
#define | NIC_PHY_ANEG_10_FDX 0x0040 |
10BASE-T full duplex supported. | |
#define | NIC_PHY_ANEG_10_HDX 0x0020 |
10BASE-T half duplex supported. | |
#define | NIC_PHY_ANEG_BINSEL 0x001F |
Binary encoded protocol selector. | |
#define | NIC_PHY_ANER 0x06 |
Auto negotiation expansion register. | |
#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 NUT_THREAD_NICRXSTACK 320 |
Definition at line 124 of file at91_emac.c.
Referenced by EmacInit().
#define EMAC_RX_BUFFERS 32 |
Definition at line 128 of file at91_emac.c.
#define EMAC_RX_BUFSIZ 128 |
Definition at line 130 of file at91_emac.c.
#define EMAC_TX_BUFFERS 2 |
Definition at line 132 of file at91_emac.c.
#define EMAC_TX_BUFSIZ 1536 |
Definition at line 134 of file at91_emac.c.
#define EMAC_LINK_LOOPS 1000000 |
Definition at line 138 of file at91_emac.c.
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.
Definition at line 186 of file at91_emac.c.
#define NIC_PHY_UID 0xffffffff |
PHY ID.
If set to 0xffffffff, the PHY id will be ignored.
Definition at line 195 of file at91_emac.c.
#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.
Definition at line 205 of file at91_emac.c.
#define RXBUF_OWNERSHIP 0x00000001 |
Definition at line 373 of file at91_emac.c.
#define RXBUF_WRAP 0x00000002 |
Definition at line 374 of file at91_emac.c.
#define RXBUF_ADDRMASK 0xFFFFFFFC |
Definition at line 375 of file at91_emac.c.
#define RXS_BROADCAST_ADDR 0x80000000 |
Broadcast address detected.
Definition at line 377 of file at91_emac.c.
#define RXS_MULTICAST_HASH 0x40000000 |
Multicast hash match.
Definition at line 378 of file at91_emac.c.
#define RXS_UNICAST_HASH 0x20000000 |
Unicast hash match.
Definition at line 379 of file at91_emac.c.
#define RXS_EXTERNAL_ADDR 0x10000000 |
External address match.
Definition at line 380 of file at91_emac.c.
#define RXS_SA1_ADDR 0x04000000 |
Specific address register 1 match.
Definition at line 381 of file at91_emac.c.
#define RXS_SA2_ADDR 0x02000000 |
Specific address register 2 match.
Definition at line 382 of file at91_emac.c.
#define RXS_SA3_ADDR 0x01000000 |
Specific address register 3 match.
Definition at line 383 of file at91_emac.c.
#define RXS_SA4_ADDR 0x00800000 |
Specific address register 4 match.
Definition at line 384 of file at91_emac.c.
#define RXS_TYPE_ID 0x00400000 |
Type ID match.
Definition at line 385 of file at91_emac.c.
#define RXS_VLAN_TAG 0x00200000 |
VLAN tag detected.
Definition at line 386 of file at91_emac.c.
#define RXS_PRIORITY_TAG 0x00100000 |
Priority tag detected.
Definition at line 387 of file at91_emac.c.
#define RXS_VLAN_PRIORITY 0x000E0000 |
VLAN priority.
Definition at line 388 of file at91_emac.c.
#define RXS_CFI_IND 0x00010000 |
Concatenation format indicator.
Definition at line 389 of file at91_emac.c.
#define RXS_EOF 0x00008000 |
End of frame.
Definition at line 390 of file at91_emac.c.
#define RXS_SOF 0x00004000 |
Start of frame.
Definition at line 391 of file at91_emac.c.
#define RXS_RBF_OFFSET 0x00003000 |
Receive buffer offset mask.
Definition at line 392 of file at91_emac.c.
#define RXS_LENGTH_FRAME 0x000007FF |
Length of frame including FCS.
Definition at line 393 of file at91_emac.c.
#define TXS_USED 0x80000000 |
#define TXS_WRAP 0x40000000 |
Last descriptor.
Definition at line 396 of file at91_emac.c.
#define TXS_ERROR 0x20000000 |
Retry limit exceeded.
Definition at line 397 of file at91_emac.c.
#define TXS_UNDERRUN 0x10000000 |
Transmit underrun.
Definition at line 398 of file at91_emac.c.
#define TXS_NO_BUFFER 0x08000000 |
Buffer exhausted.
Definition at line 399 of file at91_emac.c.
#define TXS_NO_CRC 0x00010000 |
CRC not appended.
Definition at line 400 of file at91_emac.c.
#define TXS_LAST_BUFF 0x00008000 |
Last buffer of frame.
Definition at line 401 of file at91_emac.c.
#define MII_DM9161_ID 0x0181b8a0 |
Definition at line 403 of file at91_emac.c.
#define MII_AM79C875_ID 0x00225540 |
Definition at line 404 of file at91_emac.c.
#define MII_MICREL_ID 0x00221610 |
Definition at line 405 of file at91_emac.c.
#define MII_LAN8700_ID 0x0007c0c0 |
Definition at line 406 of file at91_emac.c.
#define MII_LAN8710_ID 0x0007C0F0 |
Definition at line 407 of file at91_emac.c.
Network interface controller information type.
Definition at line 353 of file at91_emac.c.
typedef struct _BufDescriptor BufDescriptor |