emac_init.c (161370) | emac_init.c (163533) |
---|---|
1/*- 2 * Copyright (c) 2006 M. Warner Losh. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. --- 10 unchanged lines hidden (view full) --- 19 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 20 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * 24 * This software is derived from software provide by Kwikbyte who specifically 25 * disclaimed copyright on the code. 26 * | 1/*- 2 * Copyright (c) 2006 M. Warner Losh. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. --- 10 unchanged lines hidden (view full) --- 19 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 20 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * 24 * This software is derived from software provide by Kwikbyte who specifically 25 * disclaimed copyright on the code. 26 * |
27 * $FreeBSD: head/sys/boot/arm/at91/libat91/emac_init.c 161370 2006-08-16 23:39:58Z imp $ | 27 * $FreeBSD: head/sys/boot/arm/at91/libat91/emac_init.c 163533 2006-10-20 09:12:05Z imp $ |
28 */ 29 30/****************************************************************************** 31 * 32 * Filename: emac.c 33 * 34 * Instantiation of routines for MAC/ethernet functions supporting tftp. 35 * --- 15 unchanged lines hidden (view full) --- 51 52#include "at91rm9200.h" 53#include "at91rm9200_lowlevel.h" 54#include "emac.h" 55#include "lib.h" 56 57/* ****************************** GLOBALS *************************************/ 58 | 28 */ 29 30/****************************************************************************** 31 * 32 * Filename: emac.c 33 * 34 * Instantiation of routines for MAC/ethernet functions supporting tftp. 35 * --- 15 unchanged lines hidden (view full) --- 51 52#include "at91rm9200.h" 53#include "at91rm9200_lowlevel.h" 54#include "emac.h" 55#include "lib.h" 56 57/* ****************************** GLOBALS *************************************/ 58 |
59unsigned lastSize; 60unsigned localMACSet, serverMACSet; | 59unsigned localMACSet; |
61unsigned char localMACAddr[6]; 62unsigned localMAClow, localMAChigh; | 60unsigned char localMACAddr[6]; 61unsigned localMAClow, localMAChigh; |
63unsigned localIPSet, serverIPSet; 64unsigned short serverPort, localPort; 65receive_descriptor_t *p_rxBD; | |
66 67/* ********************** PRIVATE FUNCTIONS/DATA ******************************/ 68 69/* 70 * .KB_C_FN_DEFINITION_START 71 * void EMAC_SetMACAddress(unsigned low_address, unsigned high_address) 72 * This global function sets the MAC address. low_address is the first 73 * four bytes while high_address is the last 2 bytes of the 48-bit value. 74 * .KB_C_FN_DEFINITION_END 75 */ 76void 77EMAC_SetMACAddress(unsigned char mac[6]) 78{ 79 AT91PS_PMC pPMC = AT91C_BASE_PMC; 80 AT91PS_EMAC pEmac = AT91C_BASE_EMAC; 81 82 /* enable the peripheral clock before using EMAC */ 83 pPMC->PMC_PCER = ((unsigned) 1 << AT91C_ID_EMAC); 84 | 62 63/* ********************** PRIVATE FUNCTIONS/DATA ******************************/ 64 65/* 66 * .KB_C_FN_DEFINITION_START 67 * void EMAC_SetMACAddress(unsigned low_address, unsigned high_address) 68 * This global function sets the MAC address. low_address is the first 69 * four bytes while high_address is the last 2 bytes of the 48-bit value. 70 * .KB_C_FN_DEFINITION_END 71 */ 72void 73EMAC_SetMACAddress(unsigned char mac[6]) 74{ 75 AT91PS_PMC pPMC = AT91C_BASE_PMC; 76 AT91PS_EMAC pEmac = AT91C_BASE_EMAC; 77 78 /* enable the peripheral clock before using EMAC */ 79 pPMC->PMC_PCER = ((unsigned) 1 << AT91C_ID_EMAC); 80 |
85 p_memcpy(localMACAddr, mac, 6); | 81 memcpy(localMACAddr, mac, 6); |
86 localMAClow = (mac[2] << 24) | (mac[3] << 16) | (mac[4] << 8) | mac[5]; 87 localMAChigh = (mac[0] << 8) | mac[1]; 88 localMACSet = 1; 89 90 AT91C_BASE_PMC->PMC_PCER = 1u << AT91C_ID_EMAC; 91 AT91C_BASE_PIOA->PIO_ASR = 92 AT91C_PA14_ERXER | AT91C_PA12_ERX0 | AT91C_PA13_ERX1 | 93 AT91C_PA8_ETXEN | AT91C_PA16_EMDIO | AT91C_PA9_ETX0 | --- 20 unchanged lines hidden (view full) --- 114#ifdef BOOT_TSC 115 AT91C_EMAC_RMII | 116#endif 117 AT91C_EMAC_CLK_HCLK_32 | AT91C_EMAC_CAF; 118 // the sequence write EMAC_SA1L and write EMAC_SA1H must be respected 119 pEmac->EMAC_SA1L = localMAClow; 120 pEmac->EMAC_SA1H = localMAChigh; 121} | 82 localMAClow = (mac[2] << 24) | (mac[3] << 16) | (mac[4] << 8) | mac[5]; 83 localMAChigh = (mac[0] << 8) | mac[1]; 84 localMACSet = 1; 85 86 AT91C_BASE_PMC->PMC_PCER = 1u << AT91C_ID_EMAC; 87 AT91C_BASE_PIOA->PIO_ASR = 88 AT91C_PA14_ERXER | AT91C_PA12_ERX0 | AT91C_PA13_ERX1 | 89 AT91C_PA8_ETXEN | AT91C_PA16_EMDIO | AT91C_PA9_ETX0 | --- 20 unchanged lines hidden (view full) --- 110#ifdef BOOT_TSC 111 AT91C_EMAC_RMII | 112#endif 113 AT91C_EMAC_CLK_HCLK_32 | AT91C_EMAC_CAF; 114 // the sequence write EMAC_SA1L and write EMAC_SA1H must be respected 115 pEmac->EMAC_SA1L = localMAClow; 116 pEmac->EMAC_SA1H = localMAChigh; 117} |
122 123/* 124 * .KB_C_FN_DEFINITION_START 125 * void EMAC_Init(void) 126 * This global function initializes variables used in tftp transfers. 127 * .KB_C_FN_DEFINITION_END 128 */ 129void 130EMAC_Init(void) 131{ 132 p_rxBD = (receive_descriptor_t*)RX_BUFFER_START; 133 localMACSet = 0; 134 serverMACSet = 0; 135 localIPSet = 0; 136 serverIPSet = 0; 137 localPort = SWAP16(0x8002); 138 lastSize = 0; 139} | |