The MACB module implements a 10/100 Ethernet MAC compatible with the IEEE 802.3 standard.
Modules | |
Related Project(s) | |
In this section you can find all the projects related to the MACB - Ethernet MAC. | |
Data Structures | |
struct | _AVR32_RxTdDescriptor |
struct | _AVR32_TxTdDescriptor |
struct | macb_packet_t |
Macros | |
#define | ADVERTISE_ALL |
#define | ADVERTISE_FULL (ADVERTISE_100FULL | ADVERTISE_10FULL | ADVERTISE_CSMA) |
#define | AVR32_MACB_SPD_MASK 0x00000001 |
#define | AVR32_OWNERSHIP_BIT 0x00000001 |
Functions | |
unsigned long | lMACBSend (volatile avr32_macb_t *macb, const void *pvFrom, unsigned long ulLength, long lEndOfFrame) |
Send ulLength bytes from pcFrom. More... | |
unsigned long | ulMACBInputLength (void) |
Function to get length of the next frame in the receive buffers. More... | |
unsigned long | ulReadMDIO (volatile avr32_macb_t *macb, unsigned short usAddress) |
void | vClearMACBTxBuffer (void) |
Called by the Tx interrupt, this function traverses the buffers used to hold the frame that has just completed transmission and marks each as free again. More... | |
void | vDisableMACBOperations (volatile avr32_macb_t *macb) |
Disable MACB operations (Tx and Rx). More... | |
void | vMACBRead (void *pvTo, unsigned long ulSectionLength, unsigned long ulTotalFrameLength) |
Frames can be read from the MACB in multiple sections. More... | |
void | vMACBSetMACAddress (const unsigned char *MACAddress) |
Set the MACB Physical address (SA1B & SA1T registers). More... | |
bool | vMACBWaitForInput (unsigned long ulTimeOut) |
Wait for new Ethernet data. More... | |
void | vWriteMDIO (volatile avr32_macb_t *macb, unsigned short usAddress, unsigned short usValue) |
bool | xMACBInit (volatile avr32_macb_t *macb) |
initialize the MACB driver. More... | |
Rx Ring descriptor flags | |
#define | AVR32_MACB_RX_USED_OFFSET 0 |
#define | AVR32_MACB_RX_USED_SIZE 1 |
#define | AVR32_MACB_RX_WRAP_OFFSET 1 |
#define | AVR32_MACB_RX_WRAP_SIZE 1 |
#define | AVR32_MACB_RX_LEN_OFFSET 0 |
#define | AVR32_MACB_RX_LEN_SIZE 12 |
#define | AVR32_MACB_RX_OFFSET_OFFSET 12 |
#define | AVR32_MACB_RX_OFFSET_SIZE 2 |
#define | AVR32_MACB_RX_SOF_OFFSET 14 |
#define | AVR32_MACB_RX_SOF_SIZE 1 |
#define | AVR32_MACB_RX_EOF_OFFSET 15 |
#define | AVR32_MACB_RX_EOF_SIZE 1 |
#define | AVR32_MACB_RX_CFI_OFFSET 16 |
#define | AVR32_MACB_RX_CFI_SIZE 1 |
Tx Ring descriptor flags | |
#define | AVR32_MACB_TX_LEN_OFFSET 0 |
#define | AVR32_MACB_TX_LEN_SIZE 11 |
#define | AVR32_MACB_TX_EOF_OFFSET 15 |
#define | AVR32_MACB_TX_EOF_SIZE 1 |
#define | AVR32_MACB_TX_NOCRC_OFFSET 16 |
#define | AVR32_MACB_TX_NOCRC_SIZE 1 |
#define | AVR32_MACB_TX_EMF_OFFSET 27 |
#define | AVR32_MACB_TX_EMF_SIZE 1 |
#define | AVR32_MACB_TX_UNR_OFFSET 28 |
#define | AVR32_MACB_TX_UNR_SIZE 1 |
#define | AVR32_MACB_TX_MAXRETRY_OFFSET 29 |
#define | AVR32_MACB_TX_MAXRETRY_SIZE 1 |
#define | AVR32_MACB_TX_WRAP_OFFSET 30 |
#define | AVR32_MACB_TX_WRAP_SIZE 1 |
#define | AVR32_MACB_TX_USED_OFFSET 31 |
#define | AVR32_MACB_TX_USED_SIZE 1 |
Generic MII registers. | |
#define | PHY_BMCR 0x00 |
Basic mode control register. More... | |
#define | PHY_BMSR 0x01 |
Basic mode status register. More... | |
#define | PHY_PHYSID1 0x02 |
PHYS ID 1. More... | |
#define | PHY_PHYSID2 0x03 |
PHYS ID 2. More... | |
#define | PHY_ADVERTISE 0x04 |
Advertisement control reg. More... | |
#define | PHY_LPA 0x05 |
Link partner ability reg. More... | |
Basic mode control register. | |
#define | BMCR_RESV 0x007f |
Unused... More... | |
#define | BMCR_CTST 0x0080 |
Collision test. More... | |
#define | BMCR_FULLDPLX 0x0100 |
Full duplex. More... | |
#define | BMCR_ANRESTART 0x0200 |
Auto negotiation restart. More... | |
#define | BMCR_ISOLATE 0x0400 |
Disconnect PHY from MII. More... | |
#define | BMCR_PDOWN 0x0800 |
Powerdown the PHY. More... | |
#define | BMCR_ANENABLE 0x1000 |
Enable auto negotiation. More... | |
#define | BMCR_SPEED100 0x2000 |
Select 100Mbps. More... | |
#define | BMCR_LOOPBACK 0x4000 |
TXD loopback bits. More... | |
#define | BMCR_RESET 0x8000 |
Reset the PHY. More... | |
Basic mode status register. | |
#define | BMSR_ERCAP 0x0001 |
Ext-reg capability. More... | |
#define | BMSR_JCD 0x0002 |
Jabber detected. More... | |
#define | BMSR_LSTATUS 0x0004 |
Link status. More... | |
#define | BMSR_ANEGCAPABLE 0x0008 |
Able to do auto-negotiation. More... | |
#define | BMSR_RFAULT 0x0010 |
Remote fault detected. More... | |
#define | BMSR_ANEGCOMPLETE 0x0020 |
Auto-negotiation complete. More... | |
#define | BMSR_RESV 0x00c0 |
Unused... More... | |
#define | BMSR_ESTATEN 0x0100 |
Extended Status in R15. More... | |
#define | BMSR_100FULL2 0x0200 |
Can do 100BASE-T2 HDX. More... | |
#define | BMSR_100HALF2 0x0400 |
Can do 100BASE-T2 FDX. More... | |
#define | BMSR_10HALF 0x0800 |
Can do 10mbps, half-duplex. More... | |
#define | BMSR_10FULL 0x1000 |
Can do 10mbps, full-duplex. More... | |
#define | BMSR_100HALF 0x2000 |
Can do 100mbps, half-duplex. More... | |
#define | BMSR_100FULL 0x4000 |
Can do 100mbps, full-duplex. More... | |
#define | BMSR_100BASE4 0x8000 |
Can do 100mbps, 4k packets. More... | |
Advertisement control register. | |
#define | ADVERTISE_SLCT 0x001f |
Selector bits. More... | |
#define | ADVERTISE_CSMA 0x0001 |
Only selector supported. More... | |
#define | ADVERTISE_10HALF 0x0020 |
Try for 10mbps half-duplex. More... | |
#define | ADVERTISE_1000XFULL 0x0020 |
Try for 1000BASE-X full-duplex. More... | |
#define | ADVERTISE_10FULL 0x0040 |
Try for 10mbps full-duplex. More... | |
#define | ADVERTISE_1000XHALF 0x0040 |
Try for 1000BASE-X half-duplex. More... | |
#define | ADVERTISE_100HALF 0x0080 |
Try for 100mbps half-duplex. More... | |
#define | ADVERTISE_1000XPAUSE 0x0080 |
Try for 1000BASE-X pause. More... | |
#define | ADVERTISE_100FULL 0x0100 |
Try for 100mbps full-duplex. More... | |
#define | ADVERTISE_1000XPSE_ASYM 0x0100 |
Try for 1000BASE-X asym pause. More... | |
#define | ADVERTISE_100BASE4 0x0200 |
Try for 100mbps 4k packets. More... | |
#define | ADVERTISE_PAUSE_CAP 0x0400 |
Try for pause. More... | |
#define | ADVERTISE_PAUSE_ASYM 0x0800 |
Try for asymmetric pause. More... | |
#define | ADVERTISE_RESV 0x1000 |
Unused... More... | |
#define | ADVERTISE_RFAULT 0x2000 |
Say we can detect faults. More... | |
#define | ADVERTISE_LPACK 0x4000 |
Ack link partners response. More... | |
#define | ADVERTISE_NPAGE 0x8000 |
Next page bit. More... | |
Link partner ability register. | |
#define | LPA_SLCT 0x001f |
Same as advertise selector. More... | |
#define | LPA_10HALF 0x0020 |
Can do 10mbps half-duplex. More... | |
#define | LPA_1000XFULL 0x0020 |
Can do 1000BASE-X full-duplex. More... | |
#define | LPA_10FULL 0x0040 |
Can do 10mbps full-duplex. More... | |
#define | LPA_1000XHALF 0x0040 |
Can do 1000BASE-X half-duplex. More... | |
#define | LPA_100HALF 0x0080 |
Can do 100mbps half-duplex. More... | |
#define | LPA_1000XPAUSE 0x0080 |
Can do 1000BASE-X pause. More... | |
#define | LPA_100FULL 0x0100 |
Can do 100mbps full-duplex. More... | |
#define | LPA_1000XPAUSE_ASYM 0x0100 |
Can do 1000BASE-X pause asym. More... | |
#define | LPA_100BASE4 0x0200 |
Can do 100mbps 4k packets. More... | |
#define | LPA_PAUSE_CAP 0x0400 |
Can pause. More... | |
#define | LPA_PAUSE_ASYM 0x0800 |
Can pause asymmetrically. More... | |
#define | LPA_RESV 0x1000 |
Unused... More... | |
#define | LPA_RFAULT 0x2000 |
Link partner faulted. More... | |
#define | LPA_LPACK 0x4000 |
Link partner acked us. More... | |
#define | LPA_NPAGE 0x8000 |
Next page bit. More... | |
#define | LPA_DUPLEX (LPA_10FULL | LPA_100FULL) |
#define | LPA_100 (LPA_100FULL | LPA_100HALF | LPA_100BASE4) |
typedef struct _AVR32_RxTdDescriptor | AVR32_RxTdDescriptor |
typedef struct _AVR32_RxTdDescriptor * | AVR32P_RxTdDescriptor |
typedef struct _AVR32_TxTdDescriptor | AVR32_TxTdDescriptor |
typedef struct _AVR32_TxTdDescriptor * | AVR32P_TxTdDescriptor |
#define | AVR32_BROADCAST_ADDR ((unsigned int) (1 << 31)) |
#define | AVR32_MULTICAST_HASH ((unsigned int) (1 << 30)) |
#define | AVR32_UNICAST_HASH ((unsigned int) (1 << 29)) |
#define | AVR32_EXTERNAL_ADDR ((unsigned int) (1 << 28)) |
#define | AVR32_SA1_ADDR ((unsigned int) (1 << 26)) |
#define | AVR32_SA2_ADDR ((unsigned int) (1 << 25)) |
#define | AVR32_SA3_ADDR ((unsigned int) (1 << 24)) |
#define | AVR32_SA4_ADDR ((unsigned int) (1 << 23)) |
#define | AVR32_TYPE_ID ((unsigned int) (1 << 22)) |
#define | AVR32_VLAN_TAG ((unsigned int) (1 << 21)) |
#define | AVR32_PRIORITY_TAG ((unsigned int) (1 << 20)) |
#define | AVR32_VLAN_PRIORITY ((unsigned int) (7 << 17)) |
#define | AVR32_CFI_IND ((unsigned int) (1 << 16)) |
#define | AVR32_EOF ((unsigned int) (1 << 15)) |
#define | AVR32_SOF ((unsigned int) (1 << 14)) |
#define | AVR32_RBF_OFFSET ((unsigned int) (3 << 12)) |
#define | AVR32_LENGTH_FRAME ((unsigned int) 0x0FFF) |
#define | AVR32_TRANSMIT_OK ((unsigned int) (1 << 31)) |
#define | AVR32_TRANSMIT_WRAP ((unsigned int) (1 << 30)) |
#define | AVR32_TRANSMIT_ERR ((unsigned int) (1 << 29)) |
#define | AVR32_TRANSMIT_UND ((unsigned int) (1 << 28)) |
#define | AVR32_BUF_EX ((unsigned int) (1 << 27)) |
#define | AVR32_TRANSMIT_NO_CRC ((unsigned int) (1 << 16)) |
#define | AVR32_LAST_BUFFER ((unsigned int) (1 << 15)) |
#define ADVERTISE_1000XFULL 0x0020 |
Try for 1000BASE-X full-duplex.
#define ADVERTISE_1000XHALF 0x0040 |
Try for 1000BASE-X half-duplex.
#define ADVERTISE_1000XPAUSE 0x0080 |
Try for 1000BASE-X pause.
#define ADVERTISE_1000XPSE_ASYM 0x0100 |
Try for 1000BASE-X asym pause.
#define ADVERTISE_100BASE4 0x0200 |
Try for 100mbps 4k packets.
#define ADVERTISE_100FULL 0x0100 |
Try for 100mbps full-duplex.
Referenced by prvProbePHY().
#define ADVERTISE_100HALF 0x0080 |
Try for 100mbps half-duplex.
Referenced by prvProbePHY().
#define ADVERTISE_10FULL 0x0040 |
Try for 10mbps full-duplex.
Referenced by prvProbePHY().
#define ADVERTISE_10HALF 0x0020 |
Try for 10mbps half-duplex.
Referenced by prvProbePHY().
#define ADVERTISE_ALL |
Referenced by prvProbePHY().
#define ADVERTISE_CSMA 0x0001 |
Only selector supported.
Referenced by prvProbePHY().
#define ADVERTISE_FULL (ADVERTISE_100FULL | ADVERTISE_10FULL | ADVERTISE_CSMA) |
#define ADVERTISE_LPACK 0x4000 |
Ack link partners response.
#define ADVERTISE_NPAGE 0x8000 |
Next page bit.
#define ADVERTISE_PAUSE_ASYM 0x0800 |
Try for asymmetric pause.
#define ADVERTISE_PAUSE_CAP 0x0400 |
Try for pause.
#define ADVERTISE_RESV 0x1000 |
Unused...
#define ADVERTISE_RFAULT 0x2000 |
Say we can detect faults.
#define ADVERTISE_SLCT 0x001f |
Selector bits.
#define AVR32_BROADCAST_ADDR ((unsigned int) (1 << 31)) |
Receive status definition.
#define AVR32_BUF_EX ((unsigned int) (1 << 27)) |
#define AVR32_CFI_IND ((unsigned int) (1 << 16)) |
#define AVR32_EOF ((unsigned int) (1 << 15)) |
#define AVR32_EXTERNAL_ADDR ((unsigned int) (1 << 28)) |
#define AVR32_LAST_BUFFER ((unsigned int) (1 << 15)) |
Referenced by lMACBSend(), and vClearMACBTxBuffer().
#define AVR32_LENGTH_FRAME ((unsigned int) 0x0FFF) |
Referenced by lMACBSend(), and ulMACBInputLength().
#define AVR32_MACB_RX_CFI_OFFSET 16 |
#define AVR32_MACB_RX_CFI_SIZE 1 |
#define AVR32_MACB_RX_EOF_OFFSET 15 |
#define AVR32_MACB_RX_EOF_SIZE 1 |
#define AVR32_MACB_RX_LEN_OFFSET 0 |
#define AVR32_MACB_RX_LEN_SIZE 12 |
#define AVR32_MACB_RX_OFFSET_OFFSET 12 |
#define AVR32_MACB_RX_OFFSET_SIZE 2 |
#define AVR32_MACB_RX_SOF_OFFSET 14 |
#define AVR32_MACB_RX_SOF_SIZE 1 |
#define AVR32_MACB_RX_USED_OFFSET 0 |
#define AVR32_MACB_RX_USED_SIZE 1 |
#define AVR32_MACB_RX_WRAP_OFFSET 1 |
#define AVR32_MACB_RX_WRAP_SIZE 1 |
#define AVR32_MACB_SPD_MASK 0x00000001 |
Referenced by prvProbePHY().
#define AVR32_MACB_TX_EMF_OFFSET 27 |
#define AVR32_MACB_TX_EMF_SIZE 1 |
#define AVR32_MACB_TX_EOF_OFFSET 15 |
#define AVR32_MACB_TX_EOF_SIZE 1 |
#define AVR32_MACB_TX_LEN_OFFSET 0 |
#define AVR32_MACB_TX_LEN_SIZE 11 |
#define AVR32_MACB_TX_MAXRETRY_OFFSET 29 |
#define AVR32_MACB_TX_MAXRETRY_SIZE 1 |
#define AVR32_MACB_TX_NOCRC_OFFSET 16 |
#define AVR32_MACB_TX_NOCRC_SIZE 1 |
#define AVR32_MACB_TX_UNR_OFFSET 28 |
#define AVR32_MACB_TX_UNR_SIZE 1 |
#define AVR32_MACB_TX_USED_OFFSET 31 |
#define AVR32_MACB_TX_USED_SIZE 1 |
#define AVR32_MACB_TX_WRAP_OFFSET 30 |
#define AVR32_MACB_TX_WRAP_SIZE 1 |
#define AVR32_MULTICAST_HASH ((unsigned int) (1 << 30)) |
#define AVR32_OWNERSHIP_BIT 0x00000001 |
Mask for frame used.
Referenced by ulMACBInputLength(), vMACBRead(), and vResetMacbRxFrames().
#define AVR32_PRIORITY_TAG ((unsigned int) (1 << 20)) |
#define AVR32_RBF_OFFSET ((unsigned int) (3 << 12)) |
#define AVR32_SA1_ADDR ((unsigned int) (1 << 26)) |
#define AVR32_SA2_ADDR ((unsigned int) (1 << 25)) |
#define AVR32_SA3_ADDR ((unsigned int) (1 << 24)) |
#define AVR32_SA4_ADDR ((unsigned int) (1 << 23)) |
#define AVR32_SOF ((unsigned int) (1 << 14)) |
Referenced by ulMACBInputLength().
#define AVR32_TRANSMIT_ERR ((unsigned int) (1 << 29)) |
#define AVR32_TRANSMIT_NO_CRC ((unsigned int) (1 << 16)) |
#define AVR32_TRANSMIT_OK ((unsigned int) (1 << 31)) |
Referenced by lMACBSend(), prvSetupDescriptors(), and vClearMACBTxBuffer().
#define AVR32_TRANSMIT_UND ((unsigned int) (1 << 28)) |
#define AVR32_TRANSMIT_WRAP ((unsigned int) (1 << 30)) |
Referenced by lMACBSend(), and prvSetupDescriptors().
#define AVR32_TYPE_ID ((unsigned int) (1 << 22)) |
#define AVR32_UNICAST_HASH ((unsigned int) (1 << 29)) |
#define AVR32_VLAN_PRIORITY ((unsigned int) (7 << 17)) |
#define AVR32_VLAN_TAG ((unsigned int) (1 << 21)) |
#define BMCR_ANENABLE 0x1000 |
Enable auto negotiation.
Referenced by ethernet_phy_setup_auto_negotiation().
#define BMCR_ANRESTART 0x0200 |
Auto negotiation restart.
Referenced by ethernet_phy_setup_auto_negotiation().
#define BMCR_CTST 0x0080 |
Collision test.
#define BMCR_FULLDPLX 0x0100 |
Full duplex.
Referenced by ethernet_phy_setup_auto_negotiation().
#define BMCR_ISOLATE 0x0400 |
Disconnect PHY from MII.
#define BMCR_LOOPBACK 0x4000 |
TXD loopback bits.
#define BMCR_PDOWN 0x0800 |
Powerdown the PHY.
#define BMCR_RESET 0x8000 |
Reset the PHY.
Referenced by ethernet_phy_sw_reset().
#define BMCR_RESV 0x007f |
Unused...
#define BMCR_SPEED100 0x2000 |
Select 100Mbps.
Referenced by ethernet_phy_setup_auto_negotiation().
#define BMSR_100BASE4 0x8000 |
Can do 100mbps, 4k packets.
#define BMSR_100FULL 0x4000 |
Can do 100mbps, full-duplex.
#define BMSR_100FULL2 0x0200 |
Can do 100BASE-T2 HDX.
#define BMSR_100HALF 0x2000 |
Can do 100mbps, half-duplex.
#define BMSR_100HALF2 0x0400 |
Can do 100BASE-T2 FDX.
#define BMSR_10FULL 0x1000 |
Can do 10mbps, full-duplex.
#define BMSR_10HALF 0x0800 |
Can do 10mbps, half-duplex.
#define BMSR_ANEGCAPABLE 0x0008 |
Able to do auto-negotiation.
#define BMSR_ANEGCOMPLETE 0x0020 |
Auto-negotiation complete.
#define BMSR_ERCAP 0x0001 |
Ext-reg capability.
#define BMSR_ESTATEN 0x0100 |
Extended Status in R15.
#define BMSR_JCD 0x0002 |
Jabber detected.
#define BMSR_LSTATUS 0x0004 |
Link status.
Referenced by prvProbePHY().
#define BMSR_RESV 0x00c0 |
Unused...
#define BMSR_RFAULT 0x0010 |
Remote fault detected.
#define LPA_100 (LPA_100FULL | LPA_100HALF | LPA_100BASE4) |
#define LPA_1000XFULL 0x0020 |
Can do 1000BASE-X full-duplex.
#define LPA_1000XHALF 0x0040 |
Can do 1000BASE-X half-duplex.
#define LPA_1000XPAUSE 0x0080 |
Can do 1000BASE-X pause.
#define LPA_1000XPAUSE_ASYM 0x0100 |
Can do 1000BASE-X pause asym.
#define LPA_100BASE4 0x0200 |
Can do 100mbps 4k packets.
#define LPA_100FULL 0x0100 |
Can do 100mbps full-duplex.
Referenced by prvProbePHY().
#define LPA_100HALF 0x0080 |
Can do 100mbps half-duplex.
Referenced by prvProbePHY().
#define LPA_10FULL 0x0040 |
Can do 10mbps full-duplex.
Referenced by prvProbePHY().
#define LPA_10HALF 0x0020 |
Can do 10mbps half-duplex.
#define LPA_DUPLEX (LPA_10FULL | LPA_100FULL) |
#define LPA_LPACK 0x4000 |
Link partner acked us.
#define LPA_NPAGE 0x8000 |
Next page bit.
#define LPA_PAUSE_ASYM 0x0800 |
Can pause asymmetrically.
#define LPA_PAUSE_CAP 0x0400 |
Can pause.
#define LPA_RESV 0x1000 |
Unused...
#define LPA_RFAULT 0x2000 |
Link partner faulted.
#define LPA_SLCT 0x001f |
Same as advertise selector.
#define PHY_ADVERTISE 0x04 |
Advertisement control reg.
Referenced by prvProbePHY().
#define PHY_BMCR 0x00 |
Basic mode control register.
Referenced by ethernet_phy_sw_reset(), and prvProbePHY().
#define PHY_BMSR 0x01 |
Basic mode status register.
Referenced by prvProbePHY().
#define PHY_LPA 0x05 |
Link partner ability reg.
Referenced by prvProbePHY().
#define PHY_PHYSID1 0x02 |
PHYS ID 1.
Referenced by prvProbePHY().
#define PHY_PHYSID2 0x03 |
PHYS ID 2.
Referenced by prvProbePHY().
typedef struct _AVR32_RxTdDescriptor AVR32_RxTdDescriptor |
Receive Transfer descriptor structure.
typedef struct _AVR32_TxTdDescriptor AVR32_TxTdDescriptor |
Transmit Transfer descriptor structure.
typedef struct _AVR32_RxTdDescriptor * AVR32P_RxTdDescriptor |
typedef struct _AVR32_TxTdDescriptor * AVR32P_TxTdDescriptor |
unsigned long lMACBSend | ( | volatile avr32_macb_t * | macb, |
const void * | pvFrom, | ||
unsigned long | ulLength, | ||
long | lEndOfFrame | ||
) |
Send ulLength bytes from pcFrom.
This copies the buffer to one of the MACB Tx buffers, then indicates to the MACB that the buffer is ready. If lEndOfFrame is true then the data being copied is the end of the frame and the frame can be transmitted.
*macb | Base address of the MACB |
*pvFrom | Address of the data buffer |
ulLength | Length of the frame |
lEndOfFrame | Flag for End Of Frame |
References AVR32_LAST_BUFFER, AVR32_LENGTH_FRAME, AVR32_TRANSMIT_OK, AVR32_TRANSMIT_WRAP, BUFFER_WAIT_DELAY, ETHERNET_CONF_NB_TX_BUFFERS, ETHERNET_CONF_TX_BUFFER_SIZE, portENTER_CRITICAL, portEXIT_CRITICAL, _AVR32_TxTdDescriptor::status, _AVR32_TxTdDescriptor::U_Status, and vTaskDelay().
Referenced by low_level_output(), macb_example_receive_packet(), macb_example_send_ARP_request(), and macb_example_send_ping_response().
unsigned long ulMACBInputLength | ( | void | ) |
Function to get length of the next frame in the receive buffers.
References _AVR32_RxTdDescriptor::addr, AVR32_LENGTH_FRAME, AVR32_OWNERSHIP_BIT, AVR32_SOF, ETHERNET_CONF_NB_RX_BUFFERS, i, _AVR32_RxTdDescriptor::status, _AVR32_RxTdDescriptor::U_Status, ulNextRxBuffer, and vResetMacbRxFrames().
Referenced by low_level_input(), main(), and vMACBWaitForInput().
unsigned long ulReadMDIO | ( | volatile avr32_macb_t * | macb, |
unsigned short | usAddress | ||
) |
Read a register on MDIO bus (access to the PHY) This function is looping until PHY gets ready
macb | Input. instance of the MACB to use |
usAddress | Input. register to set. |
References EXTPHY_PHY_ADDR, and status.
Referenced by ethernet_phy_setup_auto_negotiation(), ethernet_phy_setup_rmii(), ethernet_phy_sw_reset(), and prvProbePHY().
void vClearMACBTxBuffer | ( | void | ) |
Called by the Tx interrupt, this function traverses the buffers used to hold the frame that has just completed transmission and marks each as free again.
References AVR32_LAST_BUFFER, AVR32_TRANSMIT_OK, ETHERNET_CONF_NB_TX_BUFFERS, _AVR32_TxTdDescriptor::status, and _AVR32_TxTdDescriptor::U_Status.
Referenced by prvMACB_ISR_NonNakedBehaviour().
void vDisableMACBOperations | ( | volatile avr32_macb_t * | macb | ) |
Disable MACB operations (Tx and Rx).
*macb | Base address of the MACB |
References Disable_global_interrupt, Enable_global_interrupt, and Is_global_interrupt_enabled.
Referenced by v_ethernet_stopResources().
void vMACBRead | ( | void * | pvTo, |
unsigned long | ulSectionLength, | ||
unsigned long | ulTotalFrameLength | ||
) |
Frames can be read from the MACB in multiple sections.
Read ulSectionLength bytes from the MACB receive buffers to pcTo. ulTotalFrameLength is the size of the entire frame. Generally vMACBRead will be repetedly called until the sum of all the ulSectionLenths totals the value of ulTotalFrameLength.
*pvTo | Address of the buffer |
ulSectionLength | Length of the buffer |
ulTotalFrameLength | Length of the frame |
References _AVR32_RxTdDescriptor::addr, ADDRESS_MASK, AVR32_OWNERSHIP_BIT, ETHERNET_CONF_NB_RX_BUFFERS, NULL, RX_BUFFER_SIZE, and ulNextRxBuffer.
Referenced by low_level_input(), and main().
void vMACBSetMACAddress | ( | const unsigned char * | MACAddress | ) |
Set the MACB Physical address (SA1B & SA1T registers).
*MACAddress | the MAC address to set. |
Referenced by prv_v_set_default_netconfig(), and prvEthernetConfigureInterface().
bool vMACBWaitForInput | ( | unsigned long | ulTimeOut | ) |
Wait for new Ethernet data.
ulTimeOut | time to wait for an input |
References i, portENTER_CRITICAL, portEXIT_CRITICAL, ulMACBInputLength(), and xSemaphoreTake.
Referenced by ethernetif_input(), and main().
void vWriteMDIO | ( | volatile avr32_macb_t * | macb, |
unsigned short | usAddress, | ||
unsigned short | usValue | ||
) |
Write a given value to a register on MDIO bus (access to the PHY) This function is looping until PHY gets ready
*macb | Input. instance of the MACB to use |
usAddress | Input. register to set. |
usValue | Input. value to write. |
References EXTPHY_PHY_ADDR, and status.
Referenced by ethernet_phy_setup_auto_negotiation(), ethernet_phy_setup_rmii(), ethernet_phy_sw_reset(), prvProbePHY(), and prvSetupMACBInterrupt().
bool xMACBInit | ( | volatile avr32_macb_t * | macb | ) |
initialize the MACB driver.
*macb | Base address of the MACB |
References Disable_global_interrupt, Enable_global_interrupt, ethernet_phy_hw_reset(), ethernet_phy_sw_reset(), Is_global_interrupt_enabled, portENTER_CRITICAL, portEXIT_CRITICAL, prvProbePHY(), prvSetupDescriptors(), prvSetupMACAddress(), prvSetupMACBInterrupt(), status, and true.
Referenced by low_level_init(), and main().