Subversion Repositories zxusbnet

Rev

Rev 47 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
47 dimkam 1
#ifndef _W5300_H_
2
#define _W5300_H_
3
/**
4
 * \file    w5300.h
5
 *    Definition register of W5300 and basic I/O functions.
6
 *
7
 * This file defines the memory map and values of W5300 register.\n
8
 * Also, it defines the basic I/O function to access register of W5300.
9
 *
10
 * \author MidnightCow
11
 * \date 15/05/2008
12
 * \version 1.1.0
13
 *
14
 * ----------  -------  -----------  ----------------------------
15
 * Date        Version  Author       Description
16
 * ----------  -------  -----------  ----------------------------
17
 * 24/03/2008  1.0.0    MidnigthCow  Release with W5300 launching
18
 * ----------  -------  -----------  ----------------------------
19
 * 01/05/2008  1.0.1    MidnightCow  Modify a logical error in iinchip_irq(). Refer to M_01052008
20
 * ----------  -------  -----------  ----------------------------
21
 * 15/05/2008  1.1.0    MidnightCow  Refer to M_15052008
22
 *                                   Delete getSn_DPORTR() because \ref Sn_DPORTR is write-only.
23
 *                                   Replace 'Sn_DHAR2' with 'Sn_DIPR' in \ref getSn_DIPR().
24
 * ----------  -------  -----------  ----------------------------
25
 * 08/08/2008  1.2.0    MidnightCow  Refer to M_08082008
26
 *                                   Add IINCHIP_CRITICAL_SECTION_ENTER() & IINCHIP_CRITICAL_SECTION_EXIT() to wiz_read_buf() and wiz_write_buf().
27
 *                                   Modify the description of \ref Sn_SSR and \ref close().</td>
28
 * ----------  -------  -----------  ----------------------------
29
 * 15/03/2012  1.2.1    Dongeun      Solution of ARP problem
30
 *                                   Add ApplySubnet() & ClearSubnet()
31
 *                                   Modify getSUBR() & setSUBR()
32
 * ----------  -------  -----------  ----------------------------
33
 */
34
 
35
 
36
#include "iinchip_conf.h"
37
#include "types.h"
38
 
39
 
40
 
41
/**
42
 *  Mode register.
43
 */
44
#define MR              (__DEF_IINCHIP_MAP_BASE__)
45
#define MR0             MR
46
#define MR1             (MR + 1)
47
 
48
/**
49
  *  Indirect mode address register.
50
 */
51
#define IDM_AR          (__DEF_IINCHIP_MAP_BASE__ + 0x02)
52
#define IDM_AR0         IDM_AR
53
#define IDM_AR1         (IDM_AR + 1)
54
 
55
/**
56
  *  Indirect mode data register.
57
 */
58
#define IDM_DR          (__DEF_IINCHIP_MAP_BASE__ + 0x04)
59
#define IDM_DR0         (__DEF_IINCHIP_MAP_BASE__ + 0x04)
60
#define IDM_DR1         (IDM_DR + 1)
61
 
62
/**
63
 *  Interrupt register
64
 */
65
#define IR              (COMMON_REG_BASE + 0x02)
66
#define IR0             IR
67
#define IR1             (IR + 1)
68
 
69
/**
70
 *  Interrupt mask register
71
 */
72
#define IMR             (COMMON_REG_BASE + 0x04)
73
#define IMR0            IMR
74
#define IMR1            (IMR + 1)
75
 
76
 
77
//#define ICFGR           (COMMON_REG_BASE + 0x06)
78
//#define ICFGR0          ICFGR
79
//#define ICFGR1          (ICFGR0 + 1)
80
 
81
/**
82
 *  Source hardware address register
83
 */
84
#define SHAR            (COMMON_REG_BASE + 0x08)
85
#define SHAR0           SHAR
86
#define SHAR1           (SHAR + 1)
87
#define SHAR2           (SHAR + 2)
88
#define SHAR3           (SHAR + 3)
89
#define SHAR4           (SHAR + 4)
90
#define SHAR5           (SHAR + 5)
91
 
92
 
93
/**
94
 *  Gateway IP address register
95
 */
96
#define GAR             (COMMON_REG_BASE + 0x10)
97
#define GAR0            GAR
98
#define GAR1            (GAR + 1)
99
#define GAR2            (GAR + 2)
100
#define GAR3            (GAR + 3)
101
 
102
/**
103
 *  Subnet mask register
104
 */
105
#define SUBR            (COMMON_REG_BASE + 0x14)
106
#define SUBR0           SUBR
107
#define SUBR1           (SUBR + 1)
108
#define SUBR2           (SUBR + 2)
109
#define SUBR3           (SUBR + 3)
110
 
111
/**
112
 *  Source IP address register
113
 */
114
#define SIPR            (COMMON_REG_BASE + 0x18)
115
#define SIPR0           SIPR
116
#define SIPR1           (SIPR + 1)
117
#define SIPR2           (SIPR + 2)
118
#define SIPR3           (SIPR + 3)
119
 
120
/**
121
 *  Retransmittion timeout-period register
122
 */
123
#define RTR             (COMMON_REG_BASE + 0x1C)
124
#define RTR0            RTR
125
#define RTR1            (RTR + 1)
126
 
127
/**
128
 *  Retransmittion retry count reigster
129
 */
130
#define RCR             (COMMON_REG_BASE + 0x1E)
131
#define RCR0            RCR
132
#define RCR1            (RCR + 1)
133
 
134
/**
135
 *  Transmit memory size of each SOCKET reigster
136
 */
137
#define TMS01R          (COMMON_REG_BASE + 0x20)
138
#define TMS23R          (TMS01R + 2) /**< Refer to TMS01R. */
139
#define TMS45R          (TMS01R + 4) /**< Refer to TMS01R. */
140
#define TMS67R          (TMS01R + 6) /**< Refer to TMS01R. */
141
 
142
#define TMSR0           TMS01R
143
#define TMSR1           (TMSR0 + 1)
144
#define TMSR2           (TMSR0 + 2)
145
#define TMSR3           (TMSR0 + 3)
146
#define TMSR4           (TMSR0 + 4)
147
#define TMSR5           (TMSR0 + 5)
148
#define TMSR6           (TMSR0 + 6)
149
#define TMSR7           (TMSR0 + 7)
150
 
151
 
152
/**
153
 *  Transmit memory size of each SOCKET reigster
154
 */
155
#define RMS01R          (COMMON_REG_BASE + 0x28)
156
#define RMS23R          (RMS01R + 2)   /**< Refer to RMS01R. */
157
#define RMS45R          (RMS01R + 4)   /**< Refer to RMS01R. */
158
#define RMS67R          (RMS01R + 6)   /**< Refer to RMS01R. */
159
 
160
#define RMSR0           RMS01R
161
#define RMSR1           (RMSR0 + 1)
162
#define RMSR2           (RMSR0 + 2)
163
#define RMSR3           (RMSR0 + 3)
164
#define RMSR4           (RMSR0 + 4)
165
#define RMSR5           (RMSR0 + 5)
166
#define RMSR6           (RMSR0 + 6)
167
#define RMSR7           (RMSR0 + 7)
168
 
169
 
170
 
171
/**
172
 *  Memory type register
173
 */
174
#define MTYPER          (COMMON_REG_BASE + 0x30)
175
#define MTYPER0         MTYPER
176
#define MTYPER1         (MTYPER + 1)
177
 
178
/**
179
 *  Authentication type register
180
 */
181
#define PATR            (COMMON_REG_BASE + 0x32)
182
#define PATR0           PATR
183
#define PATR1           (PATR + 1)
184
 
185
//#define PPPALGOR      (COMMON_REG_BASE + 0x34)
186
//#define PPPALGOR0     PPPALGOR
187
//#define PPPALGOR1     (PPPALGOR + 1)
188
 
189
/**
190
 *  PPP link control protocol request timer register
191
 */
192
#define PTIMER          (COMMON_REG_BASE + 0x36)
193
#define PTIMER0         PTIMER
194
#define PTIMER1         (PTIMER + 1)
195
 
196
/**
197
 *  PPP LCP magic number register
198
 */
199
#define PMAGICR         (COMMON_REG_BASE + 0x38)
200
#define PMAGICR0        PMAGICR
201
#define PMAGICR1        (PMAGICR + 1)
202
 
203
//#define PSTATER       (COMMON_REG_BASE + 0x3A)
204
//#define PSTATER0      PSTATER
205
//#define PSTATER1      (PSTATER + 1)
206
 
207
/**
208
 *  PPPoE session ID register
209
 */
210
#define PSIDR           (COMMON_REG_BASE + 0x3C)
211
#define PSIDR0          PSIDR
212
#define PSIDR1          (PSIDR + 1)
213
 
214
/**
215
 *  PPPoE destination hardware address register
216
 */
217
#define PDHAR           (COMMON_REG_BASE + 0x40)
218
#define PDHAR0          PDHAR
219
#define PDHAR1          (PDHAR + 1)
220
#define PDHAR2          (PDHAR + 2)
221
#define PDHAR3          (PDHAR + 3)
222
#define PDHAR4          (PDHAR + 4)
223
#define PDHAR5          (PDHAR + 5)
224
 
225
/**
226
 *  Unreachable IP address register
227
 *
228
 * RESET : 0.0.0.0 \n
229
 * When trying to transmit UDP data to destination port number which is not open,
230
 * W5300 can receive ICMP (Destination port unreachable) packet. \n
231
 * In this case, IR(IR_DPUR) becomes '1'.
232
 * And destination IP address and unreachable port number of ICMP packet
233
 * can be acquired through UIPR and UPORTR.
234
 */
235
#define UIPR            (COMMON_REG_BASE + 0x48)
236
#define UIPR0           UIPR
237
#define UIPR1           (UIPR + 1)
238
#define UIPR2           (UIPR + 2)
239
#define UIPR3           (UIPR + 3)
240
 
241
/**
242
 *  Unreachable port number register
243
 */
244
#define UPORTR          (COMMON_REG_BASE + 0x4C)
245
#define UPORTR0         UPORTR
246
#define UPORTR1         (UPORTR + 1)
247
 
248
 
249
 
250
/**
251
 *  Fragment MTU register
252
 */
253
#define FMTUR           (COMMON_REG_BASE + 0x4E)
254
#define FMTUR0          FMTUR
255
#define FMTUR1          (FMTUR + 1)
256
 
257
//#define Sn_RTCR(n)      (COMMON_REG_BASE + 0x50 + n*2)
258
//#define Sn_RTCR0(n)     Sn_RTCR(n)
259
//#define Sn_RTCR1(n)     (Sn_RTCR(n)+1)
260
 
261
/**
262
 *  PIN 'BRDYn' configure register
263
 */
264
#define Pn_BRDYR(n)     (COMMON_REG_BASE + 0x60 + n*4)
265
#define Pn_BRDYR0(n)    Pn_BRDYR(n)
266
#define Pn_BRDYR1(n)    (Pn_BRDYR(n) + 1)
267
 
268
/**
269
 *  PIN 'BRDYn' buffer depth Register
270
 */
271
#define Pn_BDPTHR(n)    (COMMON_REG_BASE + 0x60 + n*4 + 2)
272
#define Pn_BDPTHR0(n)   Pn_BDPTHR(n)
273
#define Pn_BDPTHR1(n)   (Pn_BDPTHR(n) + 1)
274
 
275
/**
276
 *  W5300 identification register
277
 */
278
#define IDR             (COMMON_REG_BASE + 0xFE)
279
#define IDR0            (COMMON_REG_BASE + 0xFE)
280
#define IDR1            (IDR + 1)
281
 
282
 
283
/**
284
 *  SOCKETn mode register
285
 */
286
#define Sn_MR(n)        (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x00)
287
#define Sn_MR0(n)       Sn_MR(n)
288
#define Sn_MR1(n)       (Sn_MR(n)+1)
289
 
290
/**
291
 *  SOCKETn command register
292
 */                        
293
#define Sn_CR(n)        (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x02)
294
#define Sn_CR0(n)       Sn_CR(n)
295
#define Sn_CR1(n)       (Sn_CR(n) + 1)   
296
 
297
/**
298
 *  SOCKETn interrupt mask register
299
 */
300
#define Sn_IMR(n)       (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x04)
301
#define Sn_IMR0(n)      Sn_IMR(n)
302
#define Sn_IMR1(n)      (Sn_IMR(n)+1)
303
 
304
/**
305
 *  SOCKETn interrupt register
306
 */
307
#define Sn_IR(n)        (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x06)
308
#define Sn_IR0(n)       Sn_IR(n)
309
#define Sn_IR1(n)       (Sn_IR(n)+1)
310
 
311
/**
312
 *  SOCKETn status register
313
 */
314
#define Sn_SSR(n)       (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x08)
315
#define Sn_SSR0(n)      Sn_SSR(n)
316
#define Sn_SSR1(n)      (Sn_SSR(n)+1)
317
 
318
/**
319
 *  SOCKETn source port register
320
 */
321
#define Sn_PORTR(n)     (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x0A)
322
#define Sn_PORTR0(n)    Sn_PORTR(n)
323
#define Sn_PORTR1(n)    (Sn_PORTR(n)+1)
324
 
325
/**
326
 *  SOCKETn destination hardware address register
327
 */
328
#define Sn_DHAR(n)      (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x0C)
329
#define Sn_DHAR0(n)     Sn_DHAR(n)
330
#define Sn_DHAR1(n)     (Sn_DHAR(n)+1)
331
#define Sn_DHAR2(n)     (Sn_DHAR(n)+2)
332
#define Sn_DHAR3(n)     (Sn_DHAR(n)+3)
333
#define Sn_DHAR4(n)     (Sn_DHAR(n)+4)
334
#define Sn_DHAR5(n)     (Sn_DHAR(n)+5)
335
 
336
/**
337
 *  SOCKETn destination port register
338
 */
339
#define Sn_DPORTR(n)    (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x12)
340
#define Sn_DPORTR0(n)   Sn_DPORTR(n)
341
#define Sn_DPORTR1(n)   (Sn_DPORTR(n)+1)
342
 
343
 
344
/**
345
 *  SOCKETn destination IP address register
346
 */
347
#define Sn_DIPR(n)      (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x14)
348
#define Sn_DIPR0(n)     Sn_DIPR(n)
349
#define Sn_DIPR1(n)     (Sn_DIPR(n)+1)
350
#define Sn_DIPR2(n)     (Sn_DIPR(n)+2)
351
#define Sn_DIPR3(n)     (Sn_DIPR(n)+3)
352
 
353
/**
354
 *  SOCKETn maximum segment size register
355
 */
356
#define Sn_MSSR(n)      (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x18)
357
#define Sn_MSSR0(n)     Sn_MSSR(n)
358
#define Sn_MSSR1(n)     (Sn_MSSR(n)+1)
359
 
360
/**
361
 *  SOCKETn protocol of IP header field register
362
 */
363
#define Sn_PROTOR(n)            (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x1A)
364
#define Sn_PROTOR0(n)           Sn_PROTOR(n)
365
#define Sn_PROTOR1(n)   (Sn_PROTOR(n)+1)
366
/**
367
 *  SOCKETn keep alive timer register
368
 */
369
#define Sn_KPALVTR(n)   Sn_PROTOR(n)
370
 
371
/**
372
 *  SOCKETn IP type of service(TOS) register
373
 */
374
#define Sn_TOSR(n)      (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x1C)
375
#define Sn_TOSR0(n)     Sn_TOSR(n)
376
#define Sn_TOSR1(n)     (Sn_TOSR(n)+1)
377
 
378
/**
379
 *  SOCKETn IP time to live(TTL) register
380
 */
381
#define Sn_TTLR(n)      (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x1E)
382
#define Sn_TTLR0(n)     Sn_TTLR(n)
383
#define Sn_TTLR1(n)     (Sn_TTLR(n)+1)
384
 
385
/**
386
 *  SOCKETn TX write size register
387
 */
388
#define Sn_TX_WRSR(n)           (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x20)
389
#define Sn_TX_WRSR0(n)          Sn_TX_WRSR(n)
390
#define Sn_TX_WRSR1(n)          (Sn_TX_WRSR(n) + 1)
391
#define Sn_TX_WRSR2(n)          (Sn_TX_WRSR(n) + 2)
392
#define Sn_TX_WRSR3(n)          (Sn_TX_WRSR(n) + 3)
393
 
394
/**
395
 *  SOCKETn TX free size register
396
 */
397
#define Sn_TX_FSR(n)       (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x0024)
398
#define Sn_TX_FSR0(n)      Sn_TX_FSR(n)
399
#define Sn_TX_FSR1(n)      (Sn_TX_FSR(n) + 1)
400
#define Sn_TX_FSR2(n)      (Sn_TX_FSR(n) + 2)
401
#define Sn_TX_FSR3(n)      (Sn_TX_FSR(n) + 3)
402
 
403
/**
404
 *  SOCKETn RX received size register
405
 */
406
#define Sn_RX_RSR(n)       (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x0028)
407
#define Sn_RX_RSR0(n)      Sn_RX_RSR(n)
408
#define Sn_RX_RSR1(n)      (Sn_RX_RSR(n) + 1)
409
#define Sn_RX_RSR2(n)      (Sn_RX_RSR(n) + 2)
410
#define Sn_RX_RSR3(n)      (Sn_RX_RSR(n) + 3)
411
 
412
/**
413
 *  SOCKETn fragment register
414
 */
415
#define Sn_FRAGR(n)        (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x002C)
416
#define Sn_FRAGR0(n)       Sn_FRAGR(n)
417
#define Sn_FRAGR1(n)       (Sn_FRAGR(n) + 1)
418
 
419
/**
420
 *  SOCKETn TX FIFO register
421
 */
422
#define Sn_TX_FIFOR(n)     (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x2E)
423
#define Sn_TX_FIFOR0(n)    Sn_TX_FIFOR(n)
424
#define Sn_TX_FIFOR1(n)    (Sn_TX_FIFOR(n) + 1)
425
 
426
/**
427
 *  SOCKET n RX FIFO register
428
 */
429
#define Sn_RX_FIFOR(n)     (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x30)
430
#define Sn_RX_FIFOR0(n)    Sn_RX_FIFOR(n)
431
#define Sn_RX_FIFOR1(n)    (Sn_RX_FIFOR(n) + 1)
432
 
433
 
434
//#define Sn_TX_SADR(n)      (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x32)
435
//#define Sn_TX_SADR0(n)     Sn_TX_SADR(n)
436
//#define Sn_TX_SADR1(n)     (Sn_TX_SADR(n) + 1)
437
 
438
//#define Sn_RX_SADR(n)      (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x34)
439
//#define Sn_RX_SADR0(n)     Sn_RX_SADR(n)
440
//#define Sn_RX_SADR1(n)     (Sn_RX_SADR(n) + 1)
441
 
442
//#define Sn_TX_RD(n)        (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x36)
443
//#define Sn_TX_RD0(n)       (Sn_TX_RD(n) + 1)
444
//#define Sn_TX_RD1(n)       (Sn_TX_RD(n) + 1)
445
 
446
//#define Sn_TX_WR(n)        (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x38)
447
//#define Sn_TX_WR0(n)       Sn_TX_WR(n)
448
//#define Sn_TX_WR1(n)       (Sn_TX_WR(n) + 1)
449
 
450
//#define Sn_TX_ACK(n)       (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x3A)
451
//#define Sn_TX_ACK0(n)      (Sn_TX_ACK(n) + 1)
452
//#define Sn_TX_ACK1(n)      (Sn_TX_ACK(n) + 1)
453
 
454
//#define Sn_RX_RD(n)           (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x3C)
455
//#define Sn_RX_RD0(n)        Sn_RX_RD(n)
456
//#define Sn_RX_RD1(n)        (Sn_RX_RD(n) + 1)
457
 
458
//#define Sn_RX_WR(n)        (SOCKET_REG_BASE + n * SOCKET_REG_SIZE + 0x3E)
459
//#define Sn_RX_WR0(n)        Sn_RX_WR(n)
460
//#define Sn_RX_WR1(n)       (Sn_RX_WR(n) + 1)
461
 
462
 
463
 
464
/************************************/
465
/* The bit of MR regsiter defintion */
466
/************************************/
467
#define MR_DBW             (1 << 15)            /**< Data bus width bit of MR. */
468
#define MR_MPF             (1 << 14)            /**< Mac layer pause frame bit of MR. */
469
#define MR_WDF(X)          ((X & 0x07) << 11)   /**< Write data fetch time bit of  MR. */
470
#define MR_RDH             (1 << 10)            /**< Read data hold time bit of MR. */
471
#define MR_FS              (1 << 8)             /**< FIFO swap bit of MR. */
472
#define MR_RST             (1 << 7)             /**< S/W reset bit of MR. */
473
#define MR_MT              (1 << 5)             /**< Memory test bit of MR. */
474
#define MR_PB              (1 << 4)             /**< Ping block bit of MR. */
475
#define MR_PPPoE           (1 << 3)             /**< PPPoE bit of MR. */
476
#define MR_DBS             (1 << 2)             /**< Data bus swap of MR. */
477
#define MR_IND             (1 << 0)             /**< Indirect mode bit of MR. */
478
 
479
 
480
/************************************/
481
/* The bit of IR regsiter defintion */
482
/************************************/
483
#define IR_IPCF            (1 << 7)             /**< IP conflict bit of IR. */
484
#define IR_DPUR            (1 << 6)             /**< Destination port unreachable bit of IR. */
485
#define IR_PPPT            (1 << 5)             /**< PPPoE terminate bit of IR. */
486
#define IR_FMTU            (1 << 4)             /**< Fragment MTU bit of IR. */
487
#define IR_SnINT(n)        (0x01 << n)          /**< SOCKETn interrupt occurrence bit of IR. */
488
 
489
/*****************************************/
490
/* The bit of Pn_BRDYR regsiter defintion*/
491
/*****************************************/
492
#define Pn_PEN             (1 << 7)             /**< PIN 'BRDYn' enable bit of Pn_BRDYR. */
493
#define Pn_MT              (1 << 6)             /**< PIN memory type bit of Pn_BRDYR. */
494
#define Pn_PPL             (1 << 5)             /**< PIN Polarity bit of Pn_BRDYR. */
495
#define Pn_SN(n)           ((n & 0x07) << 0)    /**< PIN Polarity bit of Pn_BRDYR. */
496
 
497
 
498
/***************************************/
499
/* The bit of Sn_MR regsiter defintion */
500
/***************************************/
501
#define Sn_MR_ALIGN        (1 << 8)             /**< Alignment bit of Sn_MR. */
502
#define Sn_MR_MULTI        (1 << 7)             /**< Multicasting bit of Sn_MR. */
503
#define Sn_MR_MF           (1 << 6)             /**< MAC filter bit of Sn_MR. */
504
#define Sn_MR_IGMPv        (1 << 5)             /**< IGMP version bit of Sn_MR. */
505
#define Sn_MR_ND           (1 << 5)             /**< No delayed ack bit of Sn_MR. */
506
#define Sn_MR_CLOSE        0x00                 /**< Protocol bits of Sn_MR. */
507
#define Sn_MR_TCP          0x01                 /**< Protocol bits of Sn_MR. */
508
#define Sn_MR_UDP          0x02                 /**< Protocol bits of Sn_MR. */
509
#define Sn_MR_IPRAW        0x03                 /**< Protocol bits of Sn_MR. */
510
#define Sn_MR_MACRAW       0x04                 /**< Protocol bits of Sn_MR. */
511
#define Sn_MR_PPPoE        0x05                 /**< Protocol bits of Sn_MR. */
512
 
513
 
514
/******************************/
515
/* The values of CR defintion */
516
/******************************/
517
#define Sn_CR_OPEN         0x01                 /**< OPEN command value of Sn_CR. */
518
#define Sn_CR_LISTEN       0x02                 /**< LISTEN command value of Sn_CR. */
519
#define Sn_CR_CONNECT      0x04                 /**< CONNECT command value of Sn_CR. */
520
#define Sn_CR_DISCON       0x08                 /**< DISCONNECT command value of Sn_CR. */
521
#define Sn_CR_CLOSE        0x10                 /**< CLOSE command value of Sn_CR. */
522
#define Sn_CR_SEND         0x20                 /**< SEND command value of Sn_CR. */
523
#define Sn_CR_SEND_MAC     0x21                 /**< SEND_MAC command value of Sn_CR. */ 
524
#define Sn_CR_SEND_KEEP    0x22                 /**< SEND_KEEP command value of Sn_CR */
525
#define Sn_CR_RECV         0x40                 /**< RECV command value of Sn_CR */
526
#define Sn_CR_PCON         0x23                 /**< PCON command value of Sn_CR */
527
#define Sn_CR_PDISCON      0x24                 /**< PDISCON command value of Sn_CR */ 
528
#define Sn_CR_PCR          0x25                 /**< PCR command value of Sn_CR */
529
#define Sn_CR_PCN          0x26                 /**< PCN command value of Sn_CR */
530
#define Sn_CR_PCJ          0x27                 /**< PCJ command value of Sn_CR */
531
 
532
 
533
/*********************************/
534
/* The values of Sn_IR defintion */
535
/*********************************/
536
#define Sn_IR_PRECV        0x80                 /**< PPP receive bit of Sn_IR */
537
#define Sn_IR_PFAIL        0x40                 /**< PPP fail bit of Sn_IR */
538
#define Sn_IR_PNEXT        0x20                 /**< PPP next phase bit of Sn_IR */
539
#define Sn_IR_SENDOK       0x10                 /**< Send OK bit of Sn_IR */
540
#define Sn_IR_TIMEOUT      0x08                 /**< Timout bit of Sn_IR */
541
#define Sn_IR_RECV         0x04                 /**< Receive bit of Sn_IR */
542
#define Sn_IR_DISCON       0x02                 /**< Disconnect bit of Sn_IR */
543
#define Sn_IR_CON          0x01                 /**< Connect bit of Sn_IR */
544
 
545
/**********************************/
546
/* The values of Sn_SSR defintion */
547
/**********************************/
548
#define SOCK_CLOSED        0x00                 /**< SOCKETn is released */
549
#define SOCK_ARP           0x01                 /**< ARP-request is transmitted in order to acquire destination hardware address. */
550
#define SOCK_INIT          0x13                 /**< SOCKETn is open as TCP mode. */
551
#define SOCK_LISTEN        0x14                 /**< SOCKETn operates as "TCP SERVER" and waits for connection-request (SYN packet) from "TCP CLIENT". */
552
#define SOCK_SYNSENT       0x15                 /**< Connect-request(SYN packet) is transmitted to "TCP SERVER". */
553
#define SOCK_SYNRECV       0x16                 /**< Connect-request(SYN packet) is received from "TCP CLIENT". */
554
#define SOCK_ESTABLISHED   0x17                 /**< TCP connection is established. */
555
#define SOCK_FIN_WAIT      0x18                 /**< SOCKETn is closing. */
556
#define SOCK_CLOSING       0x1A                 /**< SOCKETn is closing. */
557
#define SOCK_TIME_WAIT     0x1B                 /**< SOCKETn is closing. */
558
#define SOCK_CLOSE_WAIT    0x1C                 /**< Disconnect-request(FIN packet) is received from the peer. */
559
#define SOCK_LAST_ACK      0x1D                 /**< SOCKETn is closing. */
560
#define SOCK_UDP           0x22                 /**< SOCKETn is open as UDP mode. */
561
#define SOCK_IPRAW         0x32                 /**< SOCKETn is open as IPRAW mode. */
562
#define SOCK_MACRAW        0x42                 /**< SOCKET0 is open as MACRAW mode. */
563
#define SOCK_PPPoE         0x5F                 /**< SOCKET0 is open as PPPoE mode. */
564
 
565
/* IP PROTOCOL */
566
#define IPPROTO_IP         0   /* Dummy for IP */
567
#define IPPROTO_ICMP       1   /* Control message protocol */
568
#define IPPROTO_IGMP       2   /* Internet group management protocol */
569
#define IPPROTO_GGP        3   /* Gateway^2 (deprecated) */
570
#define IPPROTO_TCP        6   /* TCP */
571
#define IPPROTO_PUP        12  /* PUP */
572
#define IPPROTO_UDP        17  /* UDP */
573
#define IPPROTO_IDP        22  /* XNS idp */
574
#define IPPROTO_ND         77  /* UNOFFICIAL net disk protocol */
575
#define IPPROTO_RAW        255 /* Raw IP packet */
576
 
577
/***********************
578
 * Basic I/O  Function *
579
 ***********************/
580
/**
581
 * It reads a value from a register
582
 */
583
uint8 IINCHIP_READ(uint16 addr);
584
 
585
/**
586
 * It writes a value to a register
587
 */
588
void     IINCHIP_WRITE(uint16 addr,uint8 data);
589
 
590
/**
591
 * It gets MR value.
592
 */
593
uint16   getMR(void);
594
 
595
/**
596
 * It sets MR value
597
 */
598
void     setMR(uint16 val);
599
 
600
 
601
/***********************************
602
 * COMMON Register Access Function *
603
 ***********************************/
604
 
605
/**
606
 * It gets IR value
607
 */
608
uint16   getIR(void);
609
 
610
/**
611
 * It sets IR value
612
 */
613
void     setIR(uint16 val);
614
 
615
/**
616
 * It gets IMR value
617
 */
618
uint16   getIMR(void);
619
 
620
/**
621
 * It sets IMR value
622
 */
623
void     setIMR(uint16 mask);
624
 
625
/**
626
 * It gets the source hardware address
627
 */
628
void     getSHAR(uint8 * addr);
629
 
630
/**
631
 * It sets the source hardware address
632
 */
633
void     setSHAR(uint8 * addr);
634
 
635
/**
636
 * It gets the gateway IP address
637
 */
638
void     getGAR(uint8 * addr);
639
 
640
/**
641
 * It sets the gateway IP address
642
 */
643
void     setGAR(uint8 * addr);    // set gateway address
644
 
645
/**
646
 * It gets the subnet mask address
647
 */
648
void     getSUBR(uint8 * addr);
649
 
650
/**
651
 * It sets the subnet mask address to global variable
652
 */
653
void     setSUBR(uint8 * addr); // set subnet mask address
654
 
655
/**
656
 * It sets the subnet mask address from global variable
657
 */
658
void     ApplySubnet(); // set subnet mask address to SUBR
659
 
660
/**
661
 * It sets the subnet mask address "0.0.0.0"
662
 */
663
void     ClearSubnet(); // set subnet mask address "0.0.0.0"
664
 
665
/**
666
 * It gets the source IP address
667
 */
668
void     getSIPR(uint8 * addr);
669
 
670
/**
671
 * It sets the source IP address
672
 */
673
void     setSIPR(uint8 * addr); // set local IP address
674
 
675
/**
676
 * It gets RTR value
677
 */
678
uint16   getRTR(void);
679
 
680
/**
681
 * It sets RTR value
682
 */
683
void     setRTR(uint16 timeout); // set retry duration for data transmission, connection, closing ...
684
 
685
/**
686
 * It gets RCR value
687
 */
688
uint8    getRCR(void);
689
/**
690
 * It sets RCR value
691
 */
692
void     setRCR(uint8 retry);
693
 
694
/**
695
 * It gets PATR value
696
 */
697
uint16   getPATR(void);
698
 
699
/**
700
 * It gets PTIMER value
701
 */
702
uint8    getPTIMER(void);
703
 
704
/**
705
 * It sets PTIMER value
706
 */
707
void     setPTIMER(uint8 time);
708
 
709
/**
710
 * It gets PMAGICR value
711
 */
712
uint8    getPMAGICR(void);
713
 
714
/**
715
 * It sets PTIMER value
716
 */
717
void     setPMAGICR(uint8 magic);
718
 
719
/**
720
 *  It gets PSIDR value
721
 */
722
uint16   getPSIDR(void);
723
 
724
/**
725
 *  It gets the PPPoE server hardware address
726
 */
727
void     getPDHAR(uint8* addr);
728
 
729
/**
730
 *  It gets the unreachable destination IP address of ICMP message.
731
 */
732
void     getUIPR(uint8* addr);
733
 
734
/**
735
 *  It gets the unreachable destination port number of ICMP message.
736
 */
737
uint16   getUPORTR(void);
738
 
739
/**
740
 *  It gets the fragmented MTU value of ICMP message.
741
 */
742
uint16   getFMTUR(void);
743
 
744
/**
745
 *  It gets Pn_BRDYR value.
746
 */
747
uint8    getPn_BRDYR(uint8 p);
748
 
749
/**
750
 *  It sets Pn_BRDYR value.
751
 */
752
void     setPn_BRDYR(uint8 p, uint8 cfg);
753
 
754
/**
755
 *  It gets the buffer depth of PIN "BRDYn".
756
 */
757
uint16   getPn_BDPTHR(uint8 p);
758
 
759
/**
760
 *  It sets the buffer depth of PIN "BRDYn".
761
 */
762
void     setPn_BDPTHR(uint8 p, uint16 depth);
763
 
764
/**
765
 *  It gets the ID of W5300.
766
 */
767
uint16   getIDR(void);
768
 
769
 
770
 
771
/***********************************
772
 * SOCKET Register Access Function *
773
 ***********************************/
774
 
775
/**
776
 *  It gets Sn_MR value.
777
 */
778
uint16   getSn_MR(SOCKET s);
779
 
780
/**
781
 *  It sets Sn_MR value.
782
 */
783
void     setSn_MR(SOCKET s, uint16 mode);
784
 
785
/**
786
 *  It gets Sn_CR value.
787
 */
788
uint8    getSn_CR(SOCKET s);
789
/**
790
 *  It sets Sn_CR value.
791
 */
792
void     setSn_CR(SOCKET s, uint8 com);
793
 
794
/**
795
 *  It gets Sn_IMR value.
796
 */
797
uint8    getSn_IMR(SOCKET s);
798
 
799
/**
800
 *  It sets Sn_IMR value.
801
 */
802
void     setSn_IMR(SOCKET s, uint8 mask);
803
 
804
/**
805
 *  It gets Sn_IR value.
806
 */
807
uint8    getSn_IR(SOCKET s);
808
 
809
/**
810
 *  It sets Sn_IR value.
811
 */
812
void     setSn_IR(SOCKET s, uint8 ir);
813
 
814
/**
815
 *  It gets Sn_SSR value.
816
 */
817
uint8    getSn_SSR(SOCKET s);
818
 
819
/**
820
 *  It gets Sn_DHAR value.
821
 */
822
void     getSn_DHAR(SOCKET s, uint8* addr);
823
 
824
/**
825
 *  It sets Sn_DHAR value.
826
 */
827
void     setSn_DHAR(SOCKET s, uint8* addr);
828
 
829
// M_15052008 : Delete this function.
830
/*
831
 *  It gets Sn_DPORTR value.
832
 */
833
//uint16   getSn_DPORTR(SOCKET s);
834
 
835
/**
836
 *  It sets Sn_DPORTR value.
837
 */
838
void     setSn_DPORTR(SOCKET s, uint16 port);
839
 
840
/**
841
 *  It gets Sn_DIPR value.
842
 */
843
void     getSn_DIPR(SOCKET s, uint8* addr);
844
 
845
/**
846
 *  It sets Sn_DIPR value.
847
 */
848
void     setSn_DIPR(SOCKET s, uint8* addr);
849
 
850
/**
851
 *  It gets Sn_MSSR value.
852
 */
853
uint16   getSn_MSSR(SOCKET s);
854
 
855
/**
856
 *  It sets Sn_MSSR value.
857
 */
858
void     setSn_MSSR(SOCKET s, uint16 mss);
859
 
860
/**
861
 *  It gets Sn_KPALVTR value.
862
 */
863
uint8    getSn_KPALVTR(SOCKET s);
864
 
865
/**
866
 *  It sets Sn_KPALVTR value.
867
 */
868
void     setSn_KPALVTR(SOCKET s, uint8 time);
869
 
870
/**
871
 *  It gets Sn_TX_WRSR value.
872
 */
873
uint32   getSn_TX_WRSR(SOCKET s);
874
 
875
/**
876
 *  It gets Sn_KPALVTR value.
877
 */
878
void     setSn_TX_WRSR(SOCKET s, uint32 size);
879
 
880
/**
881
 *  It gets Sn_TX_FSR value.
882
 */
883
uint32   getSn_TX_FSR(SOCKET s);
884
 
885
/**
886
 *  It gets Sn_RX_RSR value.
887
 */
888
uint32   getSn_RX_RSR(SOCKET s);
889
 
890
/**
891
 *  It sets Sn_TX_FIFOR value.
892
 */
893
void     setSn_TX_FIFOR(SOCKET s, uint16 data);
894
 
895
/**
896
 *  It gets Sn_RX_FIFOR value.
897
 */
898
uint16   getSn_RX_FIFOR(SOCKET s);
899
 
900
/**
901
 *  It gets Sn_PROTOR value.
902
 */
903
uint8    getSn_PROTOR(SOCKET s);
904
 
905
/**
906
 *  It sets Sn_PROTOR value.
907
 */
908
void     setSn_PROTOR(SOCKET s, uint8 pronum);
909
 
910
/**
911
 *  It gets Sn_TOSR value.
912
 */
913
uint8    getSn_TOSR(SOCKET s);
914
 
915
/**
916
 *  It sets Sn_TOSR value.
917
 */
918
void     setSn_TOSR(SOCKET s, uint8 tos);
919
 
920
/**
921
 *  It gets Sn_TTLR value.
922
 */
923
uint8    getSn_TTLR(SOCKET s);
924
 
925
/**
926
 *  It sets Sn_TTLR value.
927
 */
928
void     setSn_TTLR(SOCKET s, uint8 ttl);
929
 
930
/**
931
 *  It gets Sn_FRAGR value.
932
 */
933
uint8    getSn_FRAGR(SOCKET s);
934
/**
935
 *  It sets Sn_FRAGR value.
936
 */
937
void     setSn_FRAGR(SOCKET s, uint8 frag);
938
 
939
 
940
 
941
/*******
942
 * ETC *
943
 *******/
944
 
945
/* Initialization & Interrupt request routine */
946
 
947
/**
948
 *  It initializes W5300.
949
 */
950
void     iinchip_init(void);
951
 
952
/**
953
 *  It handles the interrupt of W5300.
954
 */
955
#ifdef __DEF_IINCHIP_INT__
956
   void     iinchip_irq(void);
957
#endif
958
 
959
 
960
/* Interanl memory operation */
961
 
962
/**
963
 *  It allocate internal TX/RX meory of each SOCKET.
964
 */
965
uint8    sysinit(uint8* tx_size, uint8* rx_size); // setting tx/rx buf size
966
 
967
 
968
/**
969
 *  It copies data to interna TX memory
970
 */
971
uint32   wiz_write_buf(SOCKET s,uint8* buf,uint32 len);
972
 
973
 
974
/**
975
 *  It copies data to your buffer from interna RX memory
976
 */
977
uint32   wiz_read_buf(SOCKET s, uint8* buf,uint32 len);
978
 
979
 
980
/**
981
 *  It gets the max size of internal TX memory of each SOCKET
982
 */
983
uint32   getIINCHIP_TxMAX(SOCKET s);
984
 
985
/**
986
 *  It gets the max size of internal RX memory of each SOCKET
987
 */
988
uint32   getIINCHIP_RxMAX(SOCKET s);
989
 
990
 
991
 
992
#ifdef __DEF_IINCHIP_PPP__
993
   /**
994
    *  It initializes to PPPoE of W5300
995
    */
996
   uint8    pppinit(uint8 *id, uint8 idlen, uint8 *passwd, uint8 passwdlen);
997
   /**
998
    *  It terminates PPPoE connection
999
    */  
1000
   void    pppterm(uint8 *mac, uint16 sessionid);
1001
#endif
1002
 
1003
/**
1004
 *  Delay function
1005
 */
1006
void  wait_1us(uint32 us);
1007
/**
1008
 *  Delay function
1009
 */
1010
void  wait_1ms(uint32 ms);
1011
/**
1012
 *  Delay function
1013
 */
1014
void  wait_10ms(uint32 ms);
1015
#endif