Deleted Added
full compact
emac.h (157873) emac.h (161196)
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 157873 2006-04-19 17:16:49Z imp $
20 * $FreeBSD: head/sys/boot/arm/at91/libat91/emac.h 161196 2006-08-10 18:11:22Z 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 low_address, unsigned high_address);
27extern void 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
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#define TFTP_RRQ_OPCODE 1
108#define TFTP_WRQ_OPCODE 2
109#define TFTP_DATA_OPCODE 3
110#define TFTP_ACK_OPCODE 4
111#define TFTP_ERROR_OPCODE 5
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
112
113
113#define TFTP_WAITING_SERVER_MAC 1
114#define TFTP_SEND_REQUEST 2
115#define TFTP_GET_DATA 3
116#define TFTP_COMPLETE 4
117
118/* MII registers definition */
119#define MII_STS_REG 0x01
114/* MII registers definition */
115#define MII_STS_REG 0x01
116#define MII_STS_LINK_STAT 0x04
117#ifdef BOOT_KB9202
120#define MII_STS2_REG 0x11
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
121
122#endif /* _EMAC_H_ */
129
130#endif /* _EMAC_H_ */