#include <cfg/os.h>#include <arch/arm.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/phy.h>#include <dev/at91sam7x_emac.h>#include <stdio.h>Data Structures | |
| struct | _EMACINFO |
| Network interface controller information structure. More... | |
| struct | _BufDescriptor |
Defines | |
| #define | NUTDEBUG |
| #define | EMPRINTF(args,...) printf(args,##__VA_ARGS__) |
| #define | NUT_THREAD_NICRXSTACK 768 |
| #define | EMAC_RX_BUFFERS 32 |
| #define | EMAC_RX_BUFSIZ 128 |
| #define | EMAC_TX_BUFFERS 2 |
| #define | EMAC_TX_BUFSIZ 1536 |
| #define | NIC_PHY_ADDR 31 |
| #define | PHY_TXCLK_ISOLATE_BIT 0 |
| #define | PHY_REFCLK_XT2_BIT 0 |
| #define | PHY_TXEN_BIT 1 |
| #define | PHY_TXD0_BIT 2 |
| #define | PHY_TXD1_BIT 3 |
| #define | PHY_CRS_AD4_BIT 4 |
| #define | PHY_RXD0_AD0_BIT 5 |
| #define | PHY_RXD1_AD1_BIT 6 |
| #define | PHY_RXER_RXD4_RPTR_BIT 7 |
| #define | PHY_MDC_BIT 8 |
| #define | PHY_MDIO_BIT 9 |
| #define | PHY_TXD2_BIT 10 |
| #define | PHY_TXD3_BIT 11 |
| #define | PHY_TXER_TXD4_BIT 12 |
| #define | PHY_RXD2_AD2_BIT 13 |
| #define | PHY_RXD3_AD3_BIT 14 |
| #define | PHY_RXDV_TESTMODE_BIT 15 |
| #define | PHY_COL_RMII_BIT 16 |
| #define | PHY_RXCLK_10BTSER_BIT 17 |
| #define | PHY_PWRDN_BIT 18 |
| #define | PHY_MDINTR_BIT 26 |
| #define | PHY_MII_PINS |
| #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. | |
Typedefs | |
| typedef struct _EMACINFO | EMACINFO |
| Network interface controller information type. | |
| typedef struct _BufDescriptor | BufDescriptor |
Functions | |
| outr (EMAC_NCR, inr(EMAC_NCR)&~EMAC_MPE) | |
| outr (EMAC_USRIO, EMAC_CLKEN) | |
| void | EmacRxThread (void *arg) |
| int | EmacOutput (NUTDEVICE *dev, NETBUF *nb) |
| Send Ethernet packet. | |
| int | EmacInit (NUTDEVICE *dev) |
| Initialize Ethernet hardware. | |
Variables | |
| return | rc |
| NUTDEVICE | devAt91Emac |
| Device information structure. | |
| #define NUTDEBUG |
Referenced by NutPppInput(), and SpiMmcMount().
| #define EMPRINTF | ( | args, | |
| ... | |||
| ) | printf(args,##__VA_ARGS__) |
| #define NUT_THREAD_NICRXSTACK 768 |
Referenced by EmacInit().
| #define EMAC_RX_BUFFERS 32 |
| #define EMAC_RX_BUFSIZ 128 |
| #define EMAC_TX_BUFFERS 2 |
| #define EMAC_TX_BUFSIZ 1536 |
| #define NIC_PHY_ADDR 31 |
| #define PHY_TXCLK_ISOLATE_BIT 0 |
| #define PHY_REFCLK_XT2_BIT 0 |
| #define PHY_TXEN_BIT 1 |
| #define PHY_TXD0_BIT 2 |
| #define PHY_TXD1_BIT 3 |
| #define PHY_CRS_AD4_BIT 4 |
| #define PHY_RXD0_AD0_BIT 5 |
| #define PHY_RXD1_AD1_BIT 6 |
| #define PHY_RXER_RXD4_RPTR_BIT 7 |
| #define PHY_MDC_BIT 8 |
| #define PHY_MDIO_BIT 9 |
| #define PHY_TXD2_BIT 10 |
| #define PHY_TXD3_BIT 11 |
| #define PHY_TXER_TXD4_BIT 12 |
| #define PHY_RXD2_AD2_BIT 13 |
| #define PHY_RXD3_AD3_BIT 14 |
| #define PHY_RXDV_TESTMODE_BIT 15 |
| #define PHY_COL_RMII_BIT 16 |
| #define PHY_RXCLK_10BTSER_BIT 17 |
| #define PHY_PWRDN_BIT 18 |
| #define PHY_MDINTR_BIT 26 |
| #define PHY_MII_PINS |
_BV(PHY_REFCLK_XT2_BIT) \ | _BV(PHY_TXEN_BIT) \ | _BV(PHY_TXD0_BIT) \ | _BV(PHY_TXD1_BIT) \ | _BV(PHY_CRS_AD4_BIT) \ | _BV(PHY_RXD0_AD0_BIT) \ | _BV(PHY_RXD1_AD1_BIT) \ | _BV(PHY_RXER_RXD4_RPTR_BIT) \ | _BV(PHY_MDC_BIT) \ | _BV(PHY_MDIO_BIT) \ | _BV(PHY_TXD2_BIT) \ | _BV(PHY_TXD3_BIT) \ | _BV(PHY_TXER_TXD4_BIT) \ | _BV(PHY_RXD2_AD2_BIT) \ | _BV(PHY_RXD3_AD3_BIT) \ | _BV(PHY_RXDV_TESTMODE_BIT) \ | _BV(PHY_COL_RMII_BIT) \ | _BV(PHY_RXCLK_10BTSER_BIT)
| #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.
| typedef struct _BufDescriptor BufDescriptor |