]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_Kinetis_K60_Tower_IAR/Freescale_Code/drivers/enet/nbuf.h
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / CORTEX_Kinetis_K60_Tower_IAR / Freescale_Code / drivers / enet / nbuf.h
1 // ----------------------------------------------------------------------\r
2 // File:                nbuf.h\r
3 // Purpose:             Definitions for Network Buffer Allocation.\r
4 // \r
5 // Notes:               \r
6 // \r
7 // ----------------------------------------------------------------------\r
8 \r
9 #ifndef _NBUF_H_\r
10 #define _NBUF_H_\r
11 \r
12 // Define number of MACs\r
13 #define NUM_CHANNELS 1/*b06862*/\r
14 \r
15 // Choose Enhanced Buffer Descriptor or Legacy\r
16 #define ENHANCED_BD\r
17 \r
18 //b06862: define Endianess for Little Endian architectures like ARM.\r
19 //Motorola/Freescale uses Big Endian or Register-Endianess\r
20 #define NBUF_LITTLE_ENDIAN\r
21 \r
22 // Transmit packet directly or copy to dedicated buffers. If packets\r
23 // are not alligned dedicated Tx buffers can be used\r
24 //#define USE_DEDICATED_TX_BUFFERS\r
25 \r
26 // Buffer sizes in bytes (must be divisible by 16)\r
27 #define RX_BUFFER_SIZE                                         256\r
28 #define TX_BUFFER_SIZE                                         256\r
29 \r
30 // Number of Receive and Transmit Buffers and Buffer Descriptors\r
31 #define NUM_RXBDS 20//10\r
32 #define NUM_TXBDS 20//10\r
33 \r
34 // Buffer Descriptor Format\r
35 #ifdef ENHANCED_BD\r
36   typedef struct\r
37   {\r
38         uint16_t status;                    /* control and status */\r
39         uint16_t length;                    /* transfer length */\r
40         uint8_t  *data;                 /* buffer address */\r
41         uint32_t ebd_status;\r
42         uint16_t length_proto_type;\r
43         uint16_t payload_checksum;\r
44         uint32_t bdu;\r
45         uint32_t timestamp;\r
46         uint32_t reserverd_word1;\r
47         uint32_t reserverd_word2;\r
48   } NBUF;\r
49 #else\r
50   typedef struct\r
51   {\r
52         uint16_t status;        /* control and status */\r
53         uint16_t length;        /* transfer length */\r
54         uint8_t  *data;     /* buffer address */\r
55   } NBUF;\r
56 #endif /* ENHANCED_BD */\r
57 \r
58 // ----------------------------------------------------------------------\r
59 // Function Declarations \r
60 // ----------------------------------------------------------------------\r
61 void \r
62 nbuf_alloc(int ch);\r
63   \r
64 void \r
65 nbuf_init(int);\r
66 \r
67 void \r
68 nbuf_start_rx(int);\r
69 \r
70 void \r
71 nbuf_flush(int);\r
72 \r
73 //NM -  return value\r
74 void \r
75 enet_get_received_packet(int, NBUF *);\r
76 \r
77 //NM - return value\r
78 void \r
79 enet_fill_txbds(int, NBUF *);\r
80 \r
81 void \r
82 enet_transmit_packet(int,NBUF *);\r
83 \r
84 #ifdef NBUF_LITTLE_ENDIAN\r
85 \r
86 //For Freescale ARM Architecture\r
87 \r
88 // ----------------------------------------------------------------------\r
89 // TX Buffer Descriptor Bit Definitions\r
90 // ----------------------------------------------------------------------\r
91 #define TX_BD_R                 0x0080\r
92 #define TX_BD_TO1               0x0040\r
93 #define TX_BD_W                 0x0020\r
94 #define TX_BD_TO2               0x0010\r
95 #define TX_BD_L                 0x0008\r
96 #define TX_BD_TC                0x0004\r
97 #define TX_BD_ABC               0x0002\r
98 \r
99 // ----------------------------------------------------------------------\r
100 // TX Enhanced BD Bit Definitions\r
101 // ----------------------------------------------------------------------\r
102 #define TX_BD_INT       0x00000040 \r
103 #define TX_BD_TS        0x00000020 \r
104 #define TX_BD_PINS      0x00000010 \r
105 #define TX_BD_IINS      0x00000008 \r
106 #define TX_BD_TXE       0x00800000 \r
107 #define TX_BD_UE        0x00200000 \r
108 #define TX_BD_EE        0x00100000\r
109 #define TX_BD_FE        0x00080000 \r
110 #define TX_BD_LCE       0x00040000 \r
111 #define TX_BD_OE        0x00020000 \r
112 #define TX_BD_TSE       0x00010000 \r
113 \r
114 #define TX_BD_BDU       0x00000080    \r
115 \r
116 // ----------------------------------------------------------------------\r
117 // RX Buffer Descriptor Bit Definitions\r
118 // ----------------------------------------------------------------------\r
119 \r
120 // Offset 0 flags - status: Big Endian\r
121 #define RX_BD_E                 0x0080\r
122 #define RX_BD_R01               0x0040\r
123 #define RX_BD_W                 0x0020\r
124 #define RX_BD_R02               0x0010\r
125 #define RX_BD_L                 0x0008\r
126 #define RX_BD_M                 0x0001\r
127 #define RX_BD_BC                0x8000\r
128 #define RX_BD_MC                0x4000\r
129 #define RX_BD_LG                0x2000\r
130 #define RX_BD_NO                0x1000\r
131 #define RX_BD_CR                0x0400\r
132 #define RX_BD_OV                0x0200\r
133 #define RX_BD_TR                0x0100\r
134 \r
135 // ----------------------------------------------------------------------\r
136 // RX Enhanced BD Bit Definitions\r
137 // ----------------------------------------------------------------------\r
138 #define RX_BD_ME               0x00000080    \r
139 #define RX_BD_PE               0x00000004    \r
140 #define RX_BD_CE               0x00000002    \r
141 #define RX_BD_UC               0x00000001\r
142     \r
143 #define RX_BD_INT              0x00008000    \r
144 \r
145 #define RX_BD_ICE              0x20000000    \r
146 #define RX_BD_PCR              0x10000000    \r
147 #define RX_BD_VLAN             0x04000000    \r
148 #define RX_BD_IPV6             0x02000000    \r
149 #define RX_BD_FRAG             0x01000000    \r
150 \r
151 #define RX_BD_BDU              0x00000080    \r
152 \r
153 #else\r
154 \r
155 //For Freescale ColdFire Architecture\r
156 // ----------------------------------------------------------------------\r
157 // TX Buffer Descriptor Bit Definitions\r
158 // ----------------------------------------------------------------------\r
159 #define TX_BD_R                 0x8000\r
160 #define TX_BD_TO1               0x4000\r
161 #define TX_BD_W                 0x2000\r
162 #define TX_BD_TO2               0x1000\r
163 #define TX_BD_L                 0x0800\r
164 #define TX_BD_TC                0x0400\r
165 #define TX_BD_ABC               0x0200\r
166 \r
167 // ----------------------------------------------------------------------\r
168 // TX Enhanced BD Bit Definitions\r
169 // ----------------------------------------------------------------------\r
170 #define TX_BD_INT       0x40000000 \r
171 #define TX_BD_TS        0x20000000 \r
172 #define TX_BD_PINS      0x10000000 \r
173 #define TX_BD_IINS      0x08000000 \r
174 #define TX_BD_TXE       0x00008000 \r
175 #define TX_BD_UE        0x00002000 \r
176 #define TX_BD_EE        0x00001000 \r
177 #define TX_BD_FE        0x00000800 \r
178 #define TX_BD_LCE       0x00000400 \r
179 #define TX_BD_OE        0x00000200 \r
180 #define TX_BD_TSE       0x00000100 \r
181 \r
182 #define TX_BD_BDU       0x80000000    \r
183 \r
184 // ----------------------------------------------------------------------\r
185 // RX Buffer Descriptor Bit Definitions\r
186 // ----------------------------------------------------------------------\r
187 \r
188 // Offset 0 flags - status\r
189 #define RX_BD_E                 0x8000\r
190 #define RX_BD_R01               0x4000\r
191 #define RX_BD_W                 0x2000\r
192 #define RX_BD_R02               0x1000\r
193 #define RX_BD_L                 0x0800\r
194 #define RX_BD_M                 0x0100\r
195 #define RX_BD_BC                0x0080\r
196 #define RX_BD_MC                0x0040\r
197 #define RX_BD_LG                0x0020\r
198 #define RX_BD_NO                0x0010\r
199 #define RX_BD_CR                0x0004\r
200 #define RX_BD_OV                0x0002\r
201 #define RX_BD_TR                0x0001\r
202 \r
203 // ----------------------------------------------------------------------\r
204 // RX Enhanced BD Bit Definitions\r
205 // ----------------------------------------------------------------------\r
206 #define RX_BD_ME               0x80000000    \r
207 #define RX_BD_PE               0x04000000    \r
208 #define RX_BD_CE               0x02000000    \r
209 #define RX_BD_UC               0x01000000    \r
210 #define RX_BD_INT              0x00800000    \r
211 #define RX_BD_ICE              0x00000020    \r
212 #define RX_BD_PCR              0x00000010    \r
213 #define RX_BD_VLAN             0x00000004    \r
214 #define RX_BD_IPV6             0x00000002    \r
215 #define RX_BD_FRAG             0x00000001    \r
216 \r
217 #define RX_BD_BDU              0x80000000    \r
218 \r
219 \r
220 #endif\r
221 \r
222 // ----------------------------------------------------------------------\r
223 // Defines for word offsets of various fields of RX Enhanced BDs\r
224 // ----------------------------------------------------------------------\r
225 //#define RX_EBD_HEADER_LENGTH_OFFSET    12\r
226 //#define RX_EBD_PROTOCOL_TYPE_OFFSET    12\r
227 //#define RX_EBD_PAYLOAD_CHKSM_OFFSET    14\r
228 //#define RX_EBD_BDU_OFFSET              16\r
229 //#define RX_EBD_TIMESTAMP_MSB_OFFSET    20\r
230 //#define RX_EBD_TIMESTAMP_LSB_OFFSET    22\r
231 \r
232 \r
233 #endif  /* _NBUF_H_ */\r