1/****************************************************************************** 2 * 3 * Filename: emac.h 4 * 5 * Definition of routine to set the MAC address. 6 * 7 * Revision information: 8 * 9 * 28AUG2004 kb_admin initial creation 10 * 11 * BEGIN_KBDD_BLOCK 12 * No warranty, expressed or implied, is included with this software. It is 13 * provided "AS IS" and no warranty of any kind including statutory or aspects 14 * relating to merchantability or fitness for any purpose is provided. All 15 * intellectual property rights of others is maintained with the respective 16 * owners. This software is not copyrighted and is intended for reference 17 * only. 18 * END_BLOCK 19 *
| 1/****************************************************************************** 2 * 3 * Filename: emac.h 4 * 5 * Definition of routine to set the MAC address. 6 * 7 * Revision information: 8 * 9 * 28AUG2004 kb_admin initial creation 10 * 11 * BEGIN_KBDD_BLOCK 12 * No warranty, expressed or implied, is included with this software. It is 13 * provided "AS IS" and no warranty of any kind including statutory or aspects 14 * relating to merchantability or fitness for any purpose is provided. All 15 * intellectual property rights of others is maintained with the respective 16 * owners. This software is not copyrighted and is intended for reference 17 * only. 18 * END_BLOCK 19 *
|
20 * $FreeBSD: head/sys/boot/arm/at91/libat91/emac.h 161196 2006-08-10 18:11:22Z imp $
| 20 * $FreeBSD: head/sys/boot/arm/at91/libat91/emac.h 161370 2006-08-16 23:39:58Z imp $
|
21 *****************************************************************************/ 22 23 24#ifndef _EMAC_H_ 25#define _EMAC_H_ 26
| 21 *****************************************************************************/ 22 23 24#ifndef _EMAC_H_ 25#define _EMAC_H_ 26
|
27extern void SetMACAddress(unsigned char addr[6]);
| 27extern void EMAC_SetMACAddress(unsigned char addr[6]);
|
28extern void SetServerIPAddress(unsigned address); 29extern void SetLocalIPAddress(unsigned address); 30extern void EMAC_Init(void); 31extern void TFTP_Download(unsigned address, char *filename); 32 33#define MAX_RX_PACKETS 8 34#define RX_PACKET_SIZE 1536 35#define RX_BUFFER_START 0x21000000 36#define RX_DATA_START (RX_BUFFER_START + (8 * MAX_RX_PACKETS)) 37 38#define ARP_REQUEST 0x0001 39#define ARP_REPLY 0x0002 40#define PROTOCOL_ARP 0x0806 41#define PROTOCOL_IP 0x0800 42#define PROTOCOL_UDP 0x11 43 44#define SWAP16(x) ((((x) & 0xff) << 8) | ((x) >> 8)) 45 46typedef struct { 47 unsigned address; 48 unsigned size; 49} receive_descriptor_t; 50 51typedef struct { 52 53 unsigned char dest_mac[6]; 54 55 unsigned char src_mac[6]; 56 57 unsigned short frame_type; 58 unsigned short hard_type; 59 unsigned short prot_type; 60 unsigned char hard_size; 61 unsigned char prot_size; 62 63 unsigned short operation; 64 65 unsigned char sender_mac[6]; 66 unsigned char sender_ip[4]; 67 68 unsigned char target_mac[6]; 69 unsigned char target_ip[4]; 70 71} __attribute__((__packed__)) arp_header_t; 72 73typedef struct { 74 unsigned char ip_v_hl; 75 unsigned char ip_tos; 76 unsigned short ip_len; 77 unsigned short ip_id; 78 unsigned short ip_off; 79 unsigned char ip_ttl; 80 unsigned char ip_p; 81 unsigned short ip_sum; 82 unsigned char ip_src[4]; 83 unsigned char ip_dst[4]; 84} __attribute__((__packed__)) ip_header_t; 85 86typedef struct { 87 unsigned char dest_mac[6]; 88 unsigned char src_mac[6]; 89 unsigned short proto_mac; 90 unsigned short packet_length; 91 ip_header_t iphdr; 92} __attribute__((__packed__)) transmit_header_t; 93 94typedef struct { 95 unsigned short src_port; 96 unsigned short dst_port; 97 unsigned short udp_len; 98 unsigned short udp_cksum; 99} __attribute__((__packed__)) udp_header_t; 100 101typedef struct { 102 unsigned short opcode; 103 unsigned short block_num; 104 unsigned char data[512]; 105} __attribute__((__packed__)) tftp_header_t; 106 107// Preswap bytes 108#define TFTP_RRQ_OPCODE 0x0100 109#define TFTP_WRQ_OPCODE 0x0200 110#define TFTP_DATA_OPCODE 0x0300 111#define TFTP_ACK_OPCODE 0x0400 112#define TFTP_ERROR_OPCODE 0x0500 113 114/* MII registers definition */ 115#define MII_STS_REG 0x01 116#define MII_STS_LINK_STAT 0x04 117#ifdef BOOT_KB9202 118#define MII_STS2_REG 0x11 119#define MII_STS2_LINK 0x400 120#define MII_STS2_100TX 0x4000 121#define MII_STS2_FDX 0x200 122#else 123#define MII_SPEC_STS_REG 0x11 124#define MII_SSTS_100FDX 0x8000 125#define MII_SSTS_100HDX 0x4000 126#define MII_SSTS_10FDX 0x2000 127#define MII_SSTS_10HDX 0x1000 128#endif 129
| 28extern void SetServerIPAddress(unsigned address); 29extern void SetLocalIPAddress(unsigned address); 30extern void EMAC_Init(void); 31extern void TFTP_Download(unsigned address, char *filename); 32 33#define MAX_RX_PACKETS 8 34#define RX_PACKET_SIZE 1536 35#define RX_BUFFER_START 0x21000000 36#define RX_DATA_START (RX_BUFFER_START + (8 * MAX_RX_PACKETS)) 37 38#define ARP_REQUEST 0x0001 39#define ARP_REPLY 0x0002 40#define PROTOCOL_ARP 0x0806 41#define PROTOCOL_IP 0x0800 42#define PROTOCOL_UDP 0x11 43 44#define SWAP16(x) ((((x) & 0xff) << 8) | ((x) >> 8)) 45 46typedef struct { 47 unsigned address; 48 unsigned size; 49} receive_descriptor_t; 50 51typedef struct { 52 53 unsigned char dest_mac[6]; 54 55 unsigned char src_mac[6]; 56 57 unsigned short frame_type; 58 unsigned short hard_type; 59 unsigned short prot_type; 60 unsigned char hard_size; 61 unsigned char prot_size; 62 63 unsigned short operation; 64 65 unsigned char sender_mac[6]; 66 unsigned char sender_ip[4]; 67 68 unsigned char target_mac[6]; 69 unsigned char target_ip[4]; 70 71} __attribute__((__packed__)) arp_header_t; 72 73typedef struct { 74 unsigned char ip_v_hl; 75 unsigned char ip_tos; 76 unsigned short ip_len; 77 unsigned short ip_id; 78 unsigned short ip_off; 79 unsigned char ip_ttl; 80 unsigned char ip_p; 81 unsigned short ip_sum; 82 unsigned char ip_src[4]; 83 unsigned char ip_dst[4]; 84} __attribute__((__packed__)) ip_header_t; 85 86typedef struct { 87 unsigned char dest_mac[6]; 88 unsigned char src_mac[6]; 89 unsigned short proto_mac; 90 unsigned short packet_length; 91 ip_header_t iphdr; 92} __attribute__((__packed__)) transmit_header_t; 93 94typedef struct { 95 unsigned short src_port; 96 unsigned short dst_port; 97 unsigned short udp_len; 98 unsigned short udp_cksum; 99} __attribute__((__packed__)) udp_header_t; 100 101typedef struct { 102 unsigned short opcode; 103 unsigned short block_num; 104 unsigned char data[512]; 105} __attribute__((__packed__)) tftp_header_t; 106 107// Preswap bytes 108#define TFTP_RRQ_OPCODE 0x0100 109#define TFTP_WRQ_OPCODE 0x0200 110#define TFTP_DATA_OPCODE 0x0300 111#define TFTP_ACK_OPCODE 0x0400 112#define TFTP_ERROR_OPCODE 0x0500 113 114/* MII registers definition */ 115#define MII_STS_REG 0x01 116#define MII_STS_LINK_STAT 0x04 117#ifdef BOOT_KB9202 118#define MII_STS2_REG 0x11 119#define MII_STS2_LINK 0x400 120#define MII_STS2_100TX 0x4000 121#define MII_STS2_FDX 0x200 122#else 123#define MII_SPEC_STS_REG 0x11 124#define MII_SSTS_100FDX 0x8000 125#define MII_SSTS_100HDX 0x4000 126#define MII_SSTS_10FDX 0x2000 127#define MII_SSTS_10HDX 0x1000 128#endif 129
|
| 130extern unsigned char localMACAddr[6]; 131extern unsigned localMAClow, localMAChigh; 132extern unsigned localMACSet, serverMACSet; 133extern receive_descriptor_t *p_rxBD; 134extern unsigned lastSize; 135extern unsigned localIPSet, serverIPSet; 136extern unsigned short serverPort, localPort; 137
|
130#endif /* _EMAC_H_ */
| 138#endif /* _EMAC_H_ */
|