MakingThings
  • Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

Emac.h

00001 //*----------------------------------------------------------------------------
00002 //*         ATMEL Microcontroller Software Support  -  ROUSSET  -
00003 //*----------------------------------------------------------------------------
00004 //* The software is delivered "AS IS" without warranty or condition of any
00005 //* kind, either express, implied or statutory. This includes without
00006 //* limitation any warranty or condition with respect to merchantability or
00007 //* fitness for any particular purpose, or against the infringements of
00008 //* intellectual property rights of others.
00009 //*----------------------------------------------------------------------------
00010 //* File Name           : Emac.h
00011 //* Object              : Emac header file
00012 //* Creation            : Hi   11/18/2002
00013 //*
00014 //*----------------------------------------------------------------------------
00015 #ifndef AT91C_EMAC_H
00016 #define AT91C_EMAC_H
00017 
00018 #include "lwipopts.h"
00019 
00020 
00021 /* Number of receive buffers */
00022 #define NB_RX_BUFFERS     50
00023 
00024 /* Size of each receive buffer - DO NOT CHANGE. */
00025 #define ETH_RX_BUFFER_SIZE    128         
00026 
00027 /* Number of Transmit buffers */
00028 #define NB_TX_BUFFERS     ( MEMP_NUM_PBUF / 2 ) 
00029 
00030 /* Size of each Transmit buffer. */
00031 #define ETH_TX_BUFFER_SIZE    ( PBUF_POOL_BUFSIZE  )   
00032 
00033 /* Receive Transfer descriptor structure */
00034 typedef struct  _AT91S_RxTdDescriptor {
00035   unsigned int addr;
00036   union
00037   {
00038     unsigned int status;
00039     struct {
00040       unsigned int Length:11;
00041       unsigned int Res0:1;
00042       unsigned int Rxbuf_off:2;
00043       unsigned int StartOfFrame:1;
00044       unsigned int EndOfFrame:1;
00045       unsigned int Cfi:1;
00046       unsigned int VlanPriority:3;
00047       unsigned int PriorityTag:1;
00048       unsigned int VlanTag:1;
00049       unsigned int TypeID:1;
00050       unsigned int Sa4Match:1;
00051       unsigned int Sa3Match:1;
00052       unsigned int Sa2Match:1;
00053       unsigned int Sa1Match:1;
00054       unsigned int Res1:1;
00055       unsigned int ExternalAdd:1;
00056       unsigned int UniCast:1;
00057       unsigned int MultiCast:1;
00058       unsigned int BroadCast:1;
00059     }S_Status;    
00060   }U_Status;
00061 }AT91S_RxTdDescriptor, *AT91PS_RxTdDescriptor;
00062 
00063 
00064 /* Transmit Transfer descriptor structure */
00065 typedef struct _AT91S_TxTdDescriptor {
00066   unsigned int addr;
00067   union
00068   {
00069     unsigned int status;
00070     struct {
00071       unsigned int Length:11;
00072       unsigned int Res0:4;
00073       unsigned int LastBuff:1;
00074       unsigned int NoCrc:1;
00075       unsigned int Res1:10;
00076       unsigned int BufExhausted:1;
00077       unsigned int TransmitUnderrun:1;
00078       unsigned int TransmitError:1;
00079       unsigned int Wrap:1;
00080       unsigned int BuffUsed:1;
00081     }S_Status;    
00082   }U_Status;
00083 }AT91S_TxTdDescriptor, *AT91PS_TxTdDescriptor;
00084 
00085 #define AT91C_OWNERSHIP_BIT   0x00000001
00086 
00087 /* Receive status defintion */
00088 #define AT91C_BROADCAST_ADDR  ((unsigned int) (1 << 31))  //* Broadcat address detected
00089 #define AT91C_MULTICAST_HASH  ((unsigned int) (1 << 30))  //* MultiCast hash match
00090 #define AT91C_UNICAST_HASH      ((unsigned int) (1 << 29))  //* UniCast hash match
00091 #define AT91C_EXTERNAL_ADDR     ((unsigned int) (1 << 28))  //* External Address match
00092 #define AT91C_SA1_ADDR        ((unsigned int) (1 << 26))  //* Specific address 1 match
00093 #define AT91C_SA2_ADDR        ((unsigned int) (1 << 25))  //* Specific address 2 match
00094 #define AT91C_SA3_ADDR        ((unsigned int) (1 << 24))  //* Specific address 3 match
00095 #define AT91C_SA4_ADDR        ((unsigned int) (1 << 23))  //* Specific address 4 match
00096 #define AT91C_TYPE_ID       ((unsigned int) (1 << 22))  //* Type ID match
00097 #define AT91C_VLAN_TAG        ((unsigned int) (1 << 21))  //* VLAN tag detected
00098 #define AT91C_PRIORITY_TAG      ((unsigned int) (1 << 20))  //* PRIORITY tag detected
00099 #define AT91C_VLAN_PRIORITY     ((unsigned int) (7 << 17))  //* PRIORITY Mask
00100 #define AT91C_CFI_IND         ((unsigned int) (1 << 16))  //* CFI indicator
00101 #define AT91C_EOF             ((unsigned int) (1 << 15))  //* EOF
00102 #define AT91C_SOF             ((unsigned int) (1 << 14))  //* SOF
00103 #define AT91C_RBF_OFFSET      ((unsigned int) (3 << 12))  //* Receive Buffer Offset Mask
00104 #define AT91C_LENGTH_FRAME      ((unsigned int) 0x07FF)     //* Length of frame
00105 
00106 /* Transmit Status definition */
00107 #define AT91C_TRANSMIT_OK   ((unsigned int) (1 << 31))  //*
00108 #define AT91C_TRANSMIT_WRAP   ((unsigned int) (1 << 30))  //* Wrap bit: mark the last descriptor
00109 #define AT91C_TRANSMIT_ERR    ((unsigned int) (1 << 29))  //* RLE:transmit error
00110 #define AT91C_TRANSMIT_UND    ((unsigned int) (1 << 28))  //* Transmit Underrun
00111 #define AT91C_BUF_EX        ((unsigned int) (1 << 27))  //* Buffers exhausted in mid frame
00112 #define AT91C_TRANSMIT_NO_CRC ((unsigned int) (1 << 16))  //* No CRC will be appended to the current frame
00113 #define AT91C_LAST_BUFFER     ((unsigned int) (1 << 15))  //*
00114 
00115 #define AT91C_EMAC_CLKEN 0x2
00116 
00117 #endif //* AT91C_EMAC_H

The Make Controller Kit is an open source project maintained by MakingThings.
MakingThings code is released under the Apache 2.0 license.
Bug tracker, development wiki and status can be found at http://dev.makingthings.com.
This document was last updated on 18 May 2009.