io6Library
WIZnet Dual Stack TCP/IP Ethernet Controller Driver
w6100.h
Go to the documentation of this file.
1 //* ****************************************************************************
31 //*****************************************************************************
32 
33 
34 #ifndef _W6100_H_
35 #define _W6100_H_
36 
37 #include <stdint.h>
38 #include "wizchip_conf.h"
39 
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
46 #if (_WIZCHIP_ == W6100)
47 
49 #define _W6100_SPI_READ_ (0x00 << 2)
50 #define _W6100_SPI_WRITE_ (0x01 << 2)
51 
52 #define WIZCHIP_CREG_BLOCK (0x00 <<3)
53 #define WIZCHIP_SREG_BLOCK(N) ((1+4*N)<<3)
54 #define WIZCHIP_TXBUF_BLOCK(N) ((2+4*N)<<3)
55 #define WIZCHIP_RXBUF_BLOCK(N) ((3+4*N)<<3)
56 
57 #define WIZCHIP_OFFSET_INC(ADDR, N) (ADDR + (N<<8))
58 
59 #if (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_)
60  #define IDM_AR0 ((_WIZCHIP_IO_BASE_ + 0x0000))
61  #define IDM_AR1 ((_WIZCHIP_IO_BASE_ + 0x0001))
62  #define IDM_BSR ((_WIZCHIP_IO_BASE_ + 0x0002))
63  #define IDM_DR ((_WIZCHIP_IO_BASE_ + 0x0003))
64  #define _W6100_IO_BASE_ _WIZCHIP_IO_BASE_
65 #elif (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_)
66  #define _W6100_IO_BASE_ 0x00000000
67 #endif
68 
69 
70 //----------- defgroup --------------------------------
71 
209 //-----------------------------------------------------------------------------------
210 
211 //----------------------------- W6100 Common Registers IOMAP -----------------------------
212 
222 #define _CIDR_ (_W6100_IO_BASE_ + (0x0000 << 8) + WIZCHIP_CREG_BLOCK)
223 
228 #define _VER_ (_W6100_IO_BASE_ + (0x0002 << 8) + WIZCHIP_CREG_BLOCK)
229 
247 #define _SYSR_ (_W6100_IO_BASE_ + (0x2000 << 8) + WIZCHIP_CREG_BLOCK)
248 
262 #define _SYCR0_ (_W6100_IO_BASE_ + (0x2004 << 8) + WIZCHIP_CREG_BLOCK)
263 
278 #define _SYCR1_ (WIZCHIP_OFFSET_INC(_SYCR0_,1))
279 
286 #define _TCNTR_ (_W6100_IO_BASE_ + (0x2016 << 8) + WIZCHIP_CREG_BLOCK)
287 
293 #define _TCNTRCLR_ (_W6100_IO_BASE_ + (0x2020 << 8) + WIZCHIP_CREG_BLOCK)
294 
313 #define _IR_ (_W6100_IO_BASE_ + (0x2100 << 8) + WIZCHIP_CREG_BLOCK)
314 
323 #define _SIR_ (_W6100_IO_BASE_ + (0x2101 << 8) + WIZCHIP_CREG_BLOCK)
324 
345 #define _SLIR_ (_W6100_IO_BASE_ + (0x2102 << 8) + WIZCHIP_CREG_BLOCK)
346 
355 #define _IMR_ (_W6100_IO_BASE_ + (0x2104 << 8) + WIZCHIP_CREG_BLOCK)
356 
363 #define _IRCLR_ (_W6100_IO_BASE_ + (0x2108 << 8) + WIZCHIP_CREG_BLOCK)
364 
374 #define _SIMR_ (_W6100_IO_BASE_ + (0x2114 << 8) + WIZCHIP_CREG_BLOCK)
375 
384 #define _SLIMR_ (_W6100_IO_BASE_ + (0x2124 << 8) + WIZCHIP_CREG_BLOCK)
385 
393 #define _SLIRCLR_ (_W6100_IO_BASE_ + (0x2128 << 8) + WIZCHIP_CREG_BLOCK)
394 
404 #define _SLPSR_ (_W6100_IO_BASE_ + (0x212C << 8) + WIZCHIP_CREG_BLOCK)
405 
425 #define _SLCR_ (_W6100_IO_BASE_ + (0x2130 << 8) + WIZCHIP_CREG_BLOCK)
426 
439 #define _PHYSR_ (_W6100_IO_BASE_ + (0x3000 << 8) + WIZCHIP_CREG_BLOCK)
440 
449 #define _PHYRAR_ (_W6100_IO_BASE_ + (0x3008 << 8) + WIZCHIP_CREG_BLOCK)
450 
457 #define _PHYDIR_ (_W6100_IO_BASE_ + (0x300C << 8) + WIZCHIP_CREG_BLOCK)
458 
465 #define _PHYDOR_ (_W6100_IO_BASE_ + (0x3010 << 8) + WIZCHIP_CREG_BLOCK)
466 
475 #define _PHYACR_ (_W6100_IO_BASE_ + (0x3014 << 8) + WIZCHIP_CREG_BLOCK)
476 
486 #define _PHYDIVR_ (_W6100_IO_BASE_ + (0x3018 << 8) + WIZCHIP_CREG_BLOCK)
487 
502 #define _PHYCR0_ (_W6100_IO_BASE_ + (0x301C << 8) + WIZCHIP_CREG_BLOCK)
503 
519 #define _PHYCR1_ WIZCHIP_OFFSET_INC(_PHYCR0_,1)
520 
537 #define _NET4MR_ (_W6100_IO_BASE_ + (0x4000 << 8) + WIZCHIP_CREG_BLOCK)
538 
555 #define _NET6MR_ (_W6100_IO_BASE_ + (0x4004 << 8) + WIZCHIP_CREG_BLOCK)
556 
578 #define _NETMR_ (_W6100_IO_BASE_ + (0x4008 << 8) + WIZCHIP_CREG_BLOCK)
579 
592 #define _NETMR2_ (_W6100_IO_BASE_ + (0x4009 << 8) + WIZCHIP_CREG_BLOCK)
593 
601 #define _PTMR_ (_W6100_IO_BASE_ + (0x4100 << 8) + WIZCHIP_CREG_BLOCK)
602 
609 #define _PMNR_ (_W6100_IO_BASE_ + (0x4104 << 8) + WIZCHIP_CREG_BLOCK)
610 
617 #define _PHAR_ (_W6100_IO_BASE_ + (0x4108 << 8) + WIZCHIP_CREG_BLOCK)
618 
625 #define _PSIDR_ (_W6100_IO_BASE_ + (0x4110 << 8) + WIZCHIP_CREG_BLOCK)
626 
633 #define _PMRUR_ (_W6100_IO_BASE_ + (0x4114 << 8) + WIZCHIP_CREG_BLOCK)
634 
642 #define _SHAR_ (_W6100_IO_BASE_ + (0x4120 << 8) + WIZCHIP_CREG_BLOCK)
643 
651 #define _GAR_ (_W6100_IO_BASE_ + (0x4130 << 8) + WIZCHIP_CREG_BLOCK)
652 #define _GA4R_ (_GAR_)
653 
660 #define _SUBR_ (_W6100_IO_BASE_ + (0x4134 << 8) + WIZCHIP_CREG_BLOCK)
661 #define _SUB4R_ (_SUBR_)
662 
663 
670 #define _SIPR_ (_W6100_IO_BASE_ + (0x4138 << 8) + WIZCHIP_CREG_BLOCK)
671 #define _SIP4R_ (_SIPR_)
672 
673 
680 #define _LLAR_ (_W6100_IO_BASE_ + (0x4140 << 8) + WIZCHIP_CREG_BLOCK)
681 
689 #define _GUAR_ (_W6100_IO_BASE_ + (0x4150 << 8) + WIZCHIP_CREG_BLOCK)
690 
698 #define _SUB6R_ (_W6100_IO_BASE_ + (0x4160 << 8) + WIZCHIP_CREG_BLOCK)
699 
706 #define _GA6R_ (_W6100_IO_BASE_ + (0x4170 << 8) + WIZCHIP_CREG_BLOCK)
707 
715 #define _SLDIP6R_ (_W6100_IO_BASE_ + (0x4180 << 8) + WIZCHIP_CREG_BLOCK)
716 
724 #define _SLDIPR_ (_W6100_IO_BASE_ + (0x418C << 8) + WIZCHIP_CREG_BLOCK)
725 #define _SLDIP4R_ (_SLDIPR_)
726 
727 
735 #define _SLDHAR_ (_W6100_IO_BASE_ + (0x4190 << 8) + WIZCHIP_CREG_BLOCK)
736 
744 #define _PINGIDR_ (_W6100_IO_BASE_ + (0x4198 << 8) + WIZCHIP_CREG_BLOCK)
745 
753 #define _PINGSEQR_ (_W6100_IO_BASE_ + (0x419C << 8) + WIZCHIP_CREG_BLOCK)
754 
761 #define _UIPR_ (_W6100_IO_BASE_ + (0x41A0 << 8) + WIZCHIP_CREG_BLOCK)
762 #define _UIP4R_ (_UIPR_)
763 
764 
770 #define _UPORTR_ (_W6100_IO_BASE_ + (0x41A4 << 8) + WIZCHIP_CREG_BLOCK)
771 #define _UPORT4R_ (_UPORTR_)
772 
778 #define _UIP6R_ (_W6100_IO_BASE_ + (0x41B0 << 8) + WIZCHIP_CREG_BLOCK)
779 
786 #define _UPORT6R_ (_W6100_IO_BASE_ + (0x41C0 << 8) + WIZCHIP_CREG_BLOCK)
787 
797 #define _INTPTMR_ (_W6100_IO_BASE_ + (0x41C5 << 8) + WIZCHIP_CREG_BLOCK)
798 
805 #define _PLR_ (_W6100_IO_BASE_ + (0x41D0 << 8) + WIZCHIP_CREG_BLOCK)
806 
813 #define _PFR_ (_W6100_IO_BASE_ + (0x41D4 << 8) + WIZCHIP_CREG_BLOCK)
814 
821 #define _VLTR_ (_W6100_IO_BASE_ + (0x41D8 << 8) + WIZCHIP_CREG_BLOCK)
822 
829 #define _PLTR_ (_W6100_IO_BASE_ + (0x41DC << 8) + WIZCHIP_CREG_BLOCK)
830 
837 #define _PAR_ (_W6100_IO_BASE_ + (0x41E0 << 8) + WIZCHIP_CREG_BLOCK)
838 
857 #define _ICMP6BLKR_ (_W6100_IO_BASE_ + (0x41F0 << 8) + WIZCHIP_CREG_BLOCK)
858 
866 #define _CHPLCKR_ (_W6100_IO_BASE_ + (0x41F4 << 8) + WIZCHIP_CREG_BLOCK)
867 
876 #define _NETLCKR_ (_W6100_IO_BASE_ + (0x41F5 << 8) + WIZCHIP_CREG_BLOCK)
877 
885 #define _PHYLCKR_ (_W6100_IO_BASE_ + (0x41F6 << 8) + WIZCHIP_CREG_BLOCK)
886 
895 #define _RTR_ (_W6100_IO_BASE_ + (0x4200 << 8) + WIZCHIP_CREG_BLOCK)
896 
905 #define _RCR_ (_W6100_IO_BASE_ + (0x4204 << 8) + WIZCHIP_CREG_BLOCK)
906 
913 #define _SLRTR_ (_W6100_IO_BASE_ + (0x4208 << 8) + WIZCHIP_CREG_BLOCK)
914 
921 #define _SLRCR_ (_W6100_IO_BASE_ + (0x420C << 8) + WIZCHIP_CREG_BLOCK)
922 
929 #define _SLHOPR_ (_W6100_IO_BASE_ + (0x420F << 8) + WIZCHIP_CREG_BLOCK)
930 
935 //----------------------------- W6100 Socket Registers -----------------------------
987 #define _Sn_MR_(N) (_W6100_IO_BASE_ + (0x0000 << 8) + WIZCHIP_SREG_BLOCK(N))
988 
999  #define _Sn_PSR_(N) (_W6100_IO_BASE_ + (0x0004 << 8) + WIZCHIP_SREG_BLOCK(N))
1000 
1022 #define _Sn_CR_(N) (_W6100_IO_BASE_ + (0x0010 << 8) + WIZCHIP_SREG_BLOCK(N))
1023 
1043 #define _Sn_IR_(N) (_W6100_IO_BASE_ + (0x0020 << 8) + WIZCHIP_SREG_BLOCK(N))
1044 
1051 #define _Sn_IMR_(N) (_W6100_IO_BASE_ + (0x0024 << 8) + WIZCHIP_SREG_BLOCK(N))
1052 
1059 #define _Sn_IRCLR_(N) (_W6100_IO_BASE_ + (0x0028 << 8) + WIZCHIP_SREG_BLOCK(N))
1060 
1061 
1062 
1092 #define _Sn_SR_(N) (_W6100_IO_BASE_ + (0x0030 << 8) + WIZCHIP_SREG_BLOCK(N))
1093 
1110 #define _Sn_ESR_(N) (_W6100_IO_BASE_ + (0x0031 << 8) + WIZCHIP_SREG_BLOCK(N))
1111 
1120 #define _Sn_PNR_(N) (_W6100_IO_BASE_ + (0x0100 << 8) + WIZCHIP_SREG_BLOCK(N))
1121 #define _Sn_NHR_(N) (_Sn_PNR_(N))
1122 
1123 
1128 #define _Sn_TOSR_(N) (_W6100_IO_BASE_ + (0x0104 << 8) + WIZCHIP_SREG_BLOCK(N))
1129 
1136 #define _Sn_TTLR_(N) (_W6100_IO_BASE_ + (0x0108 << 8) + WIZCHIP_SREG_BLOCK(N))
1137 #define _Sn_HOPR_(N) (_Sn_TTLR_(N))
1138 
1139 
1145 #define _Sn_FRGR_(N) (_W6100_IO_BASE_ + (0x010C << 8) + WIZCHIP_SREG_BLOCK(N))
1146 
1166 #define _Sn_MSSR_(N) (_W6100_IO_BASE_ + (0x0110 << 8) + WIZCHIP_SREG_BLOCK(N))
1167 
1176 #define _Sn_PORTR_(N) (_W6100_IO_BASE_ + (0x0114 << 8) + WIZCHIP_SREG_BLOCK(N))
1177 
1190 #define _Sn_DHAR_(N) (_W6100_IO_BASE_ + (0x0118 << 8) + WIZCHIP_SREG_BLOCK(N))
1191 
1204 #define _Sn_DIPR_(N) (_W6100_IO_BASE_ + (0x0120 << 8) + WIZCHIP_SREG_BLOCK(N))
1205 #define _Sn_DIP4R_(N) (_Sn_DIPR_(N))
1206 
1207 
1219 #define _Sn_DIP6R_(N) (_W6100_IO_BASE_ + (0x0130 << 8) + WIZCHIP_SREG_BLOCK(N))
1220 
1236 #define _Sn_DPORTR_(N) (_W6100_IO_BASE_ + (0x0140 << 8) + WIZCHIP_SREG_BLOCK(N))
1237 
1251 #define _Sn_MR2_(N) (_W6100_IO_BASE_ + (0x0144 << 8) + WIZCHIP_SREG_BLOCK(N))
1252 
1253 
1262 #define _Sn_RTR_(N) (_W6100_IO_BASE_ + (0x0180 << 8) + WIZCHIP_SREG_BLOCK(N))
1263 
1272 #define _Sn_RCR_(N) (_W6100_IO_BASE_ + (0x0184 << 8) + WIZCHIP_SREG_BLOCK(N))
1273 
1286 #define _Sn_KPALVTR_(N) (_W6100_IO_BASE_ + (0x0188 << 8) + WIZCHIP_SREG_BLOCK(N))
1287 
1298 #define _Sn_TX_BSR_(N) (_W6100_IO_BASE_ + (0x0200 << 8) + WIZCHIP_SREG_BLOCK(N))
1299 
1315 #define _Sn_TX_FSR_(N) (_W6100_IO_BASE_ + (0x0204 << 8) + WIZCHIP_SREG_BLOCK(N))
1316 
1329 #define _Sn_TX_RD_(N) (_W6100_IO_BASE_ + (0x0208 << 8) + WIZCHIP_SREG_BLOCK(N))
1330 
1331 
1349 #define _Sn_TX_WR_(N) (_W6100_IO_BASE_ + (0x020C << 8) + WIZCHIP_SREG_BLOCK(N))
1350 
1361 #define _Sn_RX_BSR_(N) (_W6100_IO_BASE_ + (0x0220 << 8) + WIZCHIP_SREG_BLOCK(N))
1362 
1375 #define _Sn_RX_RSR_(N) (_W6100_IO_BASE_ + (0x0224 << 8) + WIZCHIP_SREG_BLOCK(N))
1376 
1390 #define _Sn_RX_RD_(N) (_W6100_IO_BASE_ + (0x0228 << 8) + WIZCHIP_SREG_BLOCK(N))
1391 
1405 #define _Sn_RX_WR_(N) (_W6100_IO_BASE_ + (0x022C << 8) + WIZCHIP_SREG_BLOCK(N))
1406 
1411 /*----------------------------- W6100 Register values -----------------------------*/
1412 
1413 /* System Status Register Bit Definition */
1423 #define SYSR_CHPL (1 << 7)
1424 
1438 #define SYSR_NETL (1 << 6)
1439 
1449 #define SYSR_PHYL (1 << 5)
1450 
1458 #define SYSR_IND (1 << 5)
1459 
1467 #define SYSR_SPI (1 << 0)
1468 
1469 
1470 /* System Config Register Bit Definition */
1480 #define SYCR0_RST (0x00)
1481 
1491 #define SYCR1_IEN (1 << 7)
1492 
1505 #define SYCR1_CLKSEL (1 << 0)
1506 
1514 #define SYCR1_CLKSEL_25M 1
1515 
1523 #define SYCR1_CLKSEL_100M 0
1524 
1525 
1526 /* Interrupt Register Bit Definition */
1533 #define IR_WOL (1<<7)
1534 
1541 #define IR_UNR6 (1<<4)
1542 
1549 #define IR_IPCONF (1<<2)
1550 
1557 #define IR_UNR4 (1<<1)
1558 
1565 #define IR_PTERM (1<<0)
1566 
1567 
1568 /* SOCKET Interrupt Register Bit Definition */
1575 #define SIR_INT(N) (1<<N)
1576 
1577 
1578 /* SOCKET-less Interrupt Register Bit Definition */
1585 #define SLIR_TOUT (1<<7)
1586 
1595 #define SLIR_ARP4 (1<<6)
1596 
1605 #define SLIR_PING4 (1<<5)
1606 
1615 #define SLIR_ARP6 (1<<4)
1616 
1625 #define SLIR_PING6 (1<<3)
1626 
1636 #define SLIR_NS (1<<2)
1637 
1656 #define SLIR_RS (1<<1)
1657 
1672 #define SLIR_RA (1<<0)
1673 
1674 
1675 /* SOCKET-less & SOCKETn Prefer Source IPv6 Address Register Bit Definition */
1685 #define PSR_AUTO (0x00)
1686 
1694 #define PSR_LLA (0x02)
1695 
1703 #define PSR_GUA (0x03)
1704 
1705 
1706 /* SOCKET-less Command Register Bit Definition */
1718 #define SLCR_ARP4 (1<<6)
1719 
1731 #define SLCR_PING4 (1<<5)
1732 
1744 #define SLCR_ARP6 (1<<4)
1745 
1757 #define SLCR_PING6 (1<<3)
1758 
1770 #define SLCR_NS (1<<2)
1771 
1784 #define SLCR_RS (1<<1)
1785 
1795 #define SLCR_UNA (1<<0)
1796 
1797 
1798 
1799 /* PHY Status Register Bit Definition */
1808 #define PHYSR_CAB (1<<7)
1809 
1810 /* PHY Status Register Bit Definition */
1817 #define PHYSR_CAB_OFF (1<<7)
1818 
1825 #define PHYSR_CAB_ON (0<<7)
1826 
1839 #define PHYSR_MODE (7<<3)
1840 
1847 #define PHYSR_MODE_AUTO (0<<3)
1848 
1855 #define PHYSR_MODE_100F (4<<3)
1856 
1863 #define PHYSR_MODE_100H (5<<3)
1864 
1871 #define PHYSR_MODE_10F (6<<3)
1872 
1879 #define PHYSR_MODE_10H (7<<3)
1880 
1890 #define PHYSR_DPX (1<<2)
1891 
1898 #define PHYSR_DPX_HALF (1<<2)
1899 
1906 #define PHYSR_DPX_FULL (0<<2)
1907 
1916 #define PHYSR_SPD (1<<1)
1917 
1924 #define PHYSR_SPD_10M (1<<1)
1925 
1932 #define PHYSR_SPD_100M (0<<1)
1933 
1942 #define PHYSR_LNK (1<<0)
1943 
1950 #define PHYSR_LNK_UP (1<<0)
1951 
1958 #define PHYSR_LNK_DOWN (0<<0)
1959 
1966 #define PHYACR_READ (0x02)
1967 
1973 #define PHYACR_WRITE (0x01)
1974 
1980 #define PHYDIVR_32 (0x00)
1981 
1987 #define PHYDIVR_64 (0x01)
1988 
1994 #define PHYDIVR_128 (0xFF)
1995 
1996 
1997 /* PHY Command Register Bit Definition */
2007 #define PHYCR0_AUTO (0x00)
2008 
2018 #define PHYCR0_100F (0x04)
2019 
2029 #define PHYCR0_100H (0x05)
2030 
2040 #define PHYCR0_10F (0x06)
2041 
2051 #define PHYCR0_10H (0x07)
2052 
2053 
2064 #define PHYCR1_PWDN (1<<5)
2065 
2074 #define PHYCR1_TE (1<<3)
2075 
2087 #define PHYCR1_RST (1<<0)
2088 
2089 
2090 
2091 /* IPv4 Network Mode Register Bit Definition */
2098 #define NETxMR_UNRB (1<<3)
2099 
2106 #define NETxMR_PARP (1<<2)
2107 
2115 #define NETxMR_RSTB (1<<1)
2116 
2123 #define NETxMR_PB (1<<0)
2124 
2125 
2126 /* Network Mode Register Bit Definition */
2133 #define NETMR_ANB (1<<5)
2134 
2141 #define NETMR_M6B (1<<4)
2142 
2149 #define NETMR_WOL (1<<2)
2150 
2157 #define NETMR_IP6B (1<<1)
2158 
2165 #define NETMR_IP4B (1<<0)
2166 
2167 
2179 #define NETMR2_DHAS (1<<7)
2180 
2187 #define NETMR2_DHAS_ARP (1<<7)
2188 
2195 #define NETMR2_DHAS_ETH (0<<7)
2196 
2207 #define NETMR2_PPPoE (1<<0)
2208 
2209 /* ICMPv6 Block Register Bit Definition */
2216 #define ICMP6BLKR_PING6 (1<<4)
2217 
2224 #define ICMP6BLKR_MLD (1<<3)
2225 
2232 #define ICMP6BLKR_RA (1<<2)
2233 
2240 #define ICMP6BLKR_NA (1<<1)
2241 
2248 #define ICMP6BLKR_NS (1<<0)
2249 
2250 
2251 /* Sn_MR values */
2263 #define Sn_MR_MULTI (1<<7)
2264 
2276 #define Sn_MR_MF (1<<7)
2277 
2287  #define Sn_MR_BRDB (1<<6)
2288 
2299 #define Sn_MR_FPSH (1<<6)
2300 
2312  #define Sn_MR_ND (1<<5)
2313 
2325 #define Sn_MR_MC (1<<5)
2326 
2336 #define Sn_MR_SMB (1<<5)
2337 
2347 #define Sn_MR_MMB (1<<5)
2348 #define Sn_MR_MMB4 (Sn_MR_MMB)
2349 
2350 
2359 #define Sn_MR_UNIB (1<<4)
2360 
2370 #define Sn_MR_MMB6 (1<<4)
2371 
2379 #define Sn_MR_CLOSE (0x00)
2380 
2391 #define Sn_MR_TCP (0x01)
2392 #define Sn_MR_TCP4 (Sn_MR_TCP)
2393 
2394 
2403 #define Sn_MR_UDP (0x02)
2404 #define Sn_MR_UDP4 (Sn_MR_UDP)
2405 
2406 
2415 #define Sn_MR_IPRAW (0x03)
2416 #define Sn_MR_IPRAW4 (Sn_MR_IPRAW)
2417 
2418 
2427 #define Sn_MR_MACRAW (0x07)
2428 
2439 #define Sn_MR_TCP6 (0x09)
2440 
2450 #define Sn_MR_UDP6 (0x0A)
2451 
2461 #define Sn_MR_IPRAW6 (0x0B)
2462 
2485 #define Sn_MR_TCPD (0x0D)
2486 
2499 #define Sn_MR_UDPD (0x0E)
2500 
2501 /* SOCKETn Command Register BIt Definition */
2524 #define Sn_CR_OPEN (0x01)
2525 
2540 #define Sn_CR_LISTEN (0x02)
2541 
2557 #define Sn_CR_CONNECT (0x04)
2558 
2573 #define Sn_CR_CONNECT6 (0x84)
2574 
2594 #define Sn_CR_DISCON (0x08)
2595 
2604 #define Sn_CR_CLOSE (0x10)
2605 
2636 #define Sn_CR_SEND (0x20)
2637 
2663  #define Sn_CR_SEND6 (0xA0)
2664 
2675 #define Sn_CR_SEND_KEEP (0x22)
2676 
2691 #define Sn_CR_RECV (0x40)
2692 
2693 
2694 /* Sn_IR values */
2704 #define Sn_IR_SENDOK (0x10)
2705 
2714 #define Sn_IR_TIMEOUT (0x08)
2715 
2723 #define Sn_IR_RECV (0x04)
2724 
2735 #define Sn_IR_DISCON (0x02)
2736 
2744 #define Sn_IR_CON (0x01)
2745 
2746 /* Sn_SR values */
2755 #define SOCK_CLOSED (0x00)
2756 
2767 #define SOCK_INIT (0x13)
2768 
2781 #define SOCK_LISTEN (0x14)
2782 
2795 #define SOCK_SYNSENT (0x15)
2796 
2808 #define SOCK_SYNRECV (0x16)
2809 
2826 #define SOCK_ESTABLISHED (0x17)
2827 
2839 #define SOCK_FIN_WAIT (0x18)
2840 
2851 #define SOCK_TIME_WAIT (0x1B)
2852 
2863 #define SOCK_CLOSE_WAIT (0x1C)
2864 
2875 #define SOCK_LAST_ACK (0x1D)
2876 
2893 #define SOCK_UDP (0x22)
2894 
2911 #define SOCK_IPRAW4 (0x32)
2912 #define SOCK_IPRAW (SOCK_IPRAW4)
2913 
2914 
2931 #define SOCK_IPRAW6 (0x33)
2932 
2942 #define SOCK_MACRAW (0x42)
2943 
2944 /* Sn_ESR values */
2955 #define Sn_ESR_TCPM (1<<2)
2956 
2963 #define Sn_ESR_TCPM_IPV4 (0<<2)
2964 
2971 #define Sn_ESR_TCPM_IPV6 (1<<2)
2972 
2982 #define Sn_ESR_TCPOP (1<<1)
2983 
2991 #define Sn_ESR_TCPOP_SVR (0<<1)
2992 
3000 #define Sn_ESR_TCPOP_CLT (1<<1)
3001 
3013 #define Sn_ESR_IP6T (1<<0)
3014 
3022 #define Sn_ESR_IP6T_LLA (0<<0)
3023 
3031 #define Sn_ESR_IP6T_GUA (1<<0)
3032 
3033 /* Sn_MR2 values */
3043 #define Sn_MR2_DHAM (1<<1)
3044 
3051 #define Sn_MR2_DHAM_AUTO (0<<1)
3052 
3059 #define Sn_MR2_DHAM_MANUAL (1<<1)
3060 
3073 #define Sn_MR2_FARP (1<<0)
3074 
3075 
3076 /*----------------------------For PHY Control-------------------------------*/
3077 
3104 #define PHYRAR_BMCR (0x00)
3105 
3106 //Basic mode status register, basic register
3135 #define PHYRAR_BMSR (0x01)
3136 
3137 
3138 /********************/
3139 /* BMCR & BMSR Bit definitions */
3140 /********************/
3141 
3142 /*For BMCR register*/
3150 #define BMCR_RST (1<<15)
3151 
3159 #define BMCR_LB (1<<14)
3160 
3161 
3168 #define BMCR_SPD (1<<13)
3169 
3178 #define BMCR_ANE (1<<12)
3179 
3187 #define BMCR_PWDN (1<<11)
3188 
3189 
3197 #define BMCR_ISOL (1<<10)
3198 
3206 #define BMCR_REAN (1<<9)
3207 
3215 #define BMCR_DPX (1<<8)
3216 
3224 #define BMCR_COLT (1<<7)
3225 
3226 /*For BMSR register*/
3227 
3235 #define BMSR_100_T4 (1<<15)
3236 
3243 #define BMSR_100_FDX (1<<14)
3244 
3251 #define BMSR_100_HDX (1<<13)
3252 
3259 #define BMSR_10_FDX (1<<12)
3260 
3267 #define BMSR_10_HDX (1<<11)
3268 
3276 #define BMSR_MF_SUP (1<<6)
3277 
3286 #define BMSR_AN_COMP (1<<5)
3287 
3295 #define BMSR_REMOTE_FAULT (1<<4)
3296 
3303 #define BMSR_AN_ABILITY (1<<3)
3304 
3313 #define BMSR_LINK_STATUS (1<<2)
3314 
3323 #define BMSR_JABBER_DETECT (1<<1)
3324 
3333 #define BMSR_EXT_CAPA (1<<0)
3334 
3335 
3348 #define WIZCHIP_CRITICAL_ENTER() WIZCHIP.CRIS._e_n_t_e_r_()
3349 
3350 
3363 #define WIZCHIP_CRITICAL_EXIT() WIZCHIP.CRIS._e_x_i_t_()
3364 
3365 
3366 
3368 // Basic I/O Function //
3370 //
3371 //
3379 uint8_t WIZCHIP_READ(uint32_t AddrSel);
3380 
3389 void WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb );
3390 
3400 void WIZCHIP_READ_BUF (uint32_t AddrSel, uint8_t* pBuf, datasize_t len);
3401 
3411 void WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t* pBuf, datasize_t len);
3412 
3413 
3414 
3416 // Common Register IO function //
3418 
3422 #define getCIDR() \
3423  ((((uint16_t)WIZCHIP_READ(_CIDR_)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_CIDR_,1)))
3424 
3425 #define getVER() \
3426  ((((uint16_t)WIZCHIP_READ(_VER_)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_VER_,1)))
3427 
3428 #define getSYSR() \
3429  WIZCHIP_READ(_SYSR_)
3430 
3431 #define getSYCR0() \
3432  WIZCHIP_READ(_SYCR0_)
3433 
3434 #define setSYCR0(sycr0) \
3435  WIZCHIP_WRITE(_SYCR0_, (sycr0))
3436 
3437 #define getSYCR1() \
3438  WIZCHIP_READ(_SYCR1_)
3439 
3440 #define setSYCR1(sycr1) \
3441  WIZCHIP_WRITE(_SYCR1_, (sycr1))
3442 
3443 #define getTCNTR() \
3444  ((((uint16_t)WIZCHIP_READ(_TCNTR_)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_TCNTR_,1)))
3445 
3446 #define setTCNTRCLR(tcntrclr) \
3447  WIZCHIP_WRITE(_TCNTRCLR_,(tcntrclr))
3448 
3449 #define getIR() \
3450  WIZCHIP_READ(_IR_)
3451 
3452 #define getSIR() \
3453  WIZCHIP_READ(_SIR_)
3454 
3455 #define getSLIR() \
3456  WIZCHIP_READ(_SLIR_)
3457 
3458 #define setIMR(imr) \
3459  WIZCHIP_WRITE(_IMR_,(imr))
3460 
3461 #define getIMR() \
3462  WIZCHIP_READ(_IMR_)
3463 
3464 #define setIRCLR(irclr) \
3465  WIZCHIP_WRITE(_IRCLR_,(irclr))
3466 #define setIR(ir) setIRCLR(ir)
3467 
3468 #define setSIMR(simr) \
3469  WIZCHIP_WRITE(_SIMR_,(simr))
3470 
3471 #define getSIMR() \
3472  WIZCHIP_READ(_SIMR_)
3473 
3474 #define setSLIMR(slimr) \
3475  WIZCHIP_WRITE(_SLIMR_,(slimr))
3476 
3477 #define getSLIMR() \
3478  WIZCHIP_READ(_SLIMR_)
3479 
3480 #define setSLIRCLR(slirclr) \
3481  WIZCHIP_WRITE(_SLIRCLR_,(slirclr))
3482 #define setSLIR(slir) setSLIRCLR(slir)
3483 
3484 #define setSLPSR(slpsr) \
3485  WIZCHIP_WRITE(_SLPSR_,(slpsr))
3486 
3487 #define getSLPSR() \
3488  WIZCHIP_READ(_SLPSR_)
3489 
3490 #define setSLCR(slcr) \
3491  WIZCHIP_WRITE(_SLCR_,(slcr))
3492 
3493 #define getSLCR() \
3494  WIZCHIP_READ(_SLCR_)
3495 
3496 #define getPHYSR() \
3497  WIZCHIP_READ(_PHYSR_)
3498 
3499 #define setPHYRAR(phyrar) \
3500  WIZCHIP_WRITE(_PHYRAR_,(phyrar))
3501 
3502 #define getPHYRAR() \
3503  WIZCHIP_READ(_PHYRAR_)
3504 
3505 #define setPHYDIR(phydir) \
3506  do{ \
3507  WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_PHYDIR_,1), (uint8_t)((phydir)>>8)); \
3508  WIZCHIP_WRITE(_PHYDIR_, (uint8_t)(phydir)); \
3509  }while(0);
3510 
3511 #define getPHYDOR() \
3512  ((((uint16_t)WIZCHIP_READ(WIZCHIP_OFFSET_INC(_PHYDOR_,1))) << 8) + WIZCHIP_READ(_PHYDOR_))
3513 
3514 #define setPHYACR(phyacr) \
3515  WIZCHIP_WRITE(_PHYACR_,(phyacr))
3516 
3517 #define getPHYACR() \
3518  WIZCHIP_READ(_PHYACR_)
3519 
3520 #define setPHYDIVR(phydivr) \
3521  WIZCHIP_WRITE(_PHYDIVR_,(phydivr))
3522 
3523 #define getPHYDIVR() \
3524  WIZCHIP_READ(_PHYDIVR_)
3525 
3526 #define setPHYCR0(phycr0) \
3527  WIZCHIP_WRITE(_PHYCR0_,(phycr0))
3528 
3529 #define setPHYCR1(phycr1) \
3530  WIZCHIP_WRITE(_PHYCR1_,(phycr1))
3531 
3532 #define getPHYCR1() \
3533  WIZCHIP_READ(_PHYCR1_)
3534 
3535 #define setNET4MR(net4mr) \
3536  WIZCHIP_WRITE(_NET4MR_,(net4mr))
3537 
3538 #define setNET6MR(net6mr) \
3539  WIZCHIP_WRITE(_NET6MR_,(net6mr))
3540 
3541 #define setNETMR(netmr) \
3542  WIZCHIP_WRITE(_NETMR_,(netmr))
3543 
3544 #define setNETMR2(netmr2) \
3545  WIZCHIP_WRITE(_NETMR2_,(netmr2))
3546 
3547 #define getNET4MR() \
3548  WIZCHIP_READ(_NET4MR_)
3549 
3550 #define getNET6MR() \
3551  WIZCHIP_READ(_NET6MR_)
3552 
3553 #define getNETMR() \
3554  WIZCHIP_READ(_NETMR_)
3555 
3556 #define getNETMR2() \
3557  WIZCHIP_READ(_NETMR2_)
3558 
3559 #define setPTMR(ptmr) \
3560  WIZCHIP_WRITE(_PTMR_, (ptmr))
3561 
3562 #define getPTMR() \
3563  WIZCHIP_READ(_PTMR_)
3564 
3565 #define setPMNR(pmnr) \
3566  WIZCHIP_WRITE(_PMNR_, (pmnr))
3567 
3568 #define getPMNR() \
3569  WIZCHIP_READ(_PMNR_)
3570 
3571 #define setPHAR(phar) \
3572  WIZCHIP_WRITE_BUF(_PHAR_,(phar),6)
3573 
3574 #define getPHAR(phar) \
3575  WIZCHIP_READ_BUF(_PHAR_,(phar),6)
3576 
3577 #define setPSIDR(psidr) \
3578  do{ \
3579  WIZCHIP_WRITE(_PSIDR_,(uint8_t)((psidr) >> 8)); \
3580  WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_PSIDR_,1),(uint8_t)(psidr)); \
3581  }while(0);
3582 
3583 #define getPSIDR() \
3584  ((((uint16_t)WIZCHIP_READ(_PSIDR_)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_PSIDR_,1)))
3585 
3586 #define setPMRUR(pmrur) \
3587  do{ \
3588  WIZCHIP_WRITE(_PMRUR_,(uint8_t)((pmrur) >> 8)); \
3589  WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_PMRUR_,1),(uint8_t)(pmrur)); \
3590  }while(0);
3591 
3592 #define getPMRUR() \
3593  ((((uint16_t)WIZCHIP_READ(_PMRUR_)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_PMRUR_,1)))
3594 
3595 #define setSHAR(shar) \
3596  WIZCHIP_WRITE_BUF(_SHAR_,(shar),6)
3597 
3598 #define getSHAR(shar) \
3599  WIZCHIP_READ_BUF(_SHAR_,(shar),6)
3600 
3601 #define setGAR(gar) \
3602  WIZCHIP_WRITE_BUF(_GAR_,(gar),4)
3603 
3604 #define getGAR(gar) \
3605  WIZCHIP_READ_BUF(_GAR_,(gar),4)
3606 
3607 #define setGA4R(ga4r) setGAR(ga4r)
3608 #define getGA4R(ga4r) getGAR(ga4r)
3609 
3610 #define setSUBR(subr) \
3611  WIZCHIP_WRITE_BUF(_SUBR_,(subr),4)
3612 
3613 #define getSUBR(subr) \
3614  WIZCHIP_READ_BUF(_SUBR_,(subr),4)
3615 
3616 #define setSUB4R(sub4r) setSUBR(sub4r)
3617 #define getSUB4R(sub4r) getSUBR(sub4r)
3618 
3619 #define setSIPR(sipr) \
3620  WIZCHIP_WRITE_BUF(_SIPR_,(sipr),4)
3621 
3622 #define getSIPR(sipr) \
3623  WIZCHIP_READ_BUF(_SIPR_,(sipr),4)
3624 
3625 #define setLLAR(llar) \
3626  WIZCHIP_WRITE_BUF(_LLAR_,(llar),16)
3627 
3628 #define getLLAR(llar) \
3629  WIZCHIP_READ_BUF(_LLAR_,(llar),16)
3630 
3631 #define setGUAR(guar) \
3632  WIZCHIP_WRITE_BUF(_GUAR_,(guar),16)
3633 
3634 #define getGUAR(guar) \
3635  WIZCHIP_READ_BUF(_GUAR_,(guar),16)
3636 
3637 #define setSUB6R(sub6r) \
3638  WIZCHIP_WRITE_BUF(_SUB6R_,(sub6r),16)
3639 
3640 #define getSUB6R(sub6r) \
3641  WIZCHIP_READ_BUF(_SUB6R_,(sub6r),16)
3642 
3643 #define setGA6R(ga6r) \
3644  WIZCHIP_WRITE_BUF(_GA6R_,(ga6r),16)
3645 
3646 #define getGA6R(ga6r) \
3647  WIZCHIP_READ_BUF(_GA6R_,(ga6r),16)
3648 
3649 #define setSLDIPR(sldipr) \
3650  WIZCHIP_WRITE_BUF(_SLDIPR_,(sldipr),4)
3651 #define setSLDIP4R(sldip4r) setSLDIPR((sldip4r))
3652 
3653 #define getSLDIPR(sldipr) \
3654  WIZCHIP_READ_BUF(_SLDIPR_,(sldipr),4)
3655 #define getSLDIP4R(sldip4r) getSLDIPR((sldip4r))
3656 
3657 #define setSLDIP6R(sldip6r) \
3658  WIZCHIP_WRITE_BUF(_SLDIP6R_, (sldip6r),16)
3659 
3660 #define getSLDIP6R(sldip6r) \
3661  WIZCHIP_READ_BUF(_SLDIP6R_,(sldip6r),16)
3662 
3663 #define getSLDHAR(sldhar) \
3664  WIZCHIP_READ_BUF(_SLDHAR_,(sldhar),6)
3665 
3666 #define setPINGIDR(pingidr) \
3667  do{ \
3668  WIZCHIP_WRITE(_PINGIDR_,(uint8_t)((pingidr)>>8)); \
3669  WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_PINGIDR_,1),(uint8_t)(pingidr)); \
3670  }while(0);
3671 
3672 #define getPINGIDR() \
3673  (((int16_t)(WIZCHIP_READ(_PINGIDR_) << 8)) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_PINGIDR_,1)))
3674 
3675 #define setPINGSEQR(pingseqr) \
3676  do{ \
3677  WIZCHIP_WRITE(_PINGSEQR_,(uint8_t)((pingseqr)>>8)); \
3678  WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_PINGSEQR_,1),(uint8_t)(pingseqr)); \
3679  }while(0);
3680 
3681 #define getPINGSEQR() \
3682  (((int16_t)(WIZCHIP_READ(_PINGSEQR_) << 8)) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_PINGSEQR_,1)))
3683 
3684 #define getUIPR(uipr) \
3685  WIZCHIP_READ_BUF(_UIPR_, (uipr), 4)
3686 
3687 #define getUIP4R(uip4r) getUIPR(uip4r)
3688 
3689 #define getUPORTR() \
3690  ((((uint16_t)WIZCHIP_READ(_UPORTR_)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_UPORTR_,1)))
3691 
3692 #define getUPORT4R() getUPORTR()
3693 
3694 #define getUIP6R(uip6r) \
3695  WIZCHIP_READ_BUF(_UIP6R_,(uip6r),16)
3696 
3697 #define getUPORT6R(uport6r) \
3698  ((((uint16_t)WIZCHIP_READ(_UPORT6R_)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_UPORT6R_,1)))
3699 
3700 #define setINTPTMR(intptmr) \
3701  do{ \
3702  WIZCHIP_WRITE(_INTPTMR_,(uint8_t)((intptmr) >> 8)); \
3703  WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_INTPTMR_,1),(uint8_t)(intptmr)); \
3704  }while(0);
3705 
3706 #define getINTPTMR() \
3707  ((((uint16_t)WIZCHIP_READ(_INTPTMR_)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_INTPTMR_,1)))
3708 
3709 #define getPLR() \
3710  WIZCHIP_READ(_PLR_)
3711 
3712 #define getPFR() \
3713  WIZCHIP_READ(_PFR_)
3714 
3715 #define getVLTR() \
3716  ( (((uint32_t)WIZCHIP_READ(_VLTR_)) << 24) + \
3717  (((uint32_t)WIZCHIP_READ(WIZCHIP_OFFSET_INC(_VLTR_,1))) << 16) + \
3718  (((uint32_t)WIZCHIP_READ(WIZCHIP_OFFSET_INC(_VLTR_,2))) << 16) + \
3719  (((uint32_t)WIZCHIP_READ(WIZCHIP_OFFSET_INC(_VLTR_,3))) << 16) )
3720 
3721 #define getPLTR() \
3722  ( (((uint32_t)WIZCHIP_READ(_PLTR_)) << 24) + \
3723  (((uint32_t)WIZCHIP_READ(WIZCHIP_OFFSET_INC(_PLTR_,1))) << 16) + \
3724  (((uint32_t)WIZCHIP_READ(WIZCHIP_OFFSET_INC(_PLTR_,2))) << 16) + \
3725  (((uint32_t)WIZCHIP_READ(WIZCHIP_OFFSET_INC(_PLTR_,3))) << 16) )
3726 
3727 #define getPAR(par) \
3728  WIZCHIP_READ_BUF(_PAR_, (par), 16)
3729 
3730 #define setICMP6BLKR(icmp6blkr) \
3731  WIZCHIP_WRITE(_ICMP6BLKR_,(icmp6blkr))
3732 
3733 #define getICMP6BLKR() \
3734  WIZCHIP_READ(_ICMP6BLKR_)
3735 
3736 #define setCHPLCKR(chplckr) \
3737  WIZCHIP_WRITE(_CHPLCKR_, (chplckr))
3738 
3739 #define getCHPLCKR() \
3740  ((getSYSR() & SYSR_CHPL) >> 7)
3741 
3742 #define CHIPLOCK() setCHPLCKR(0xFF)
3743 #define CHIPUNLOCK() setCHPLCKR(0xCE)
3744 
3745 #define setNETLCKR(netlckr) \
3746  WIZCHIP_WRITE(_NETLCKR_, (netlckr))
3747 
3748 #define getNETLCKR() \
3749  ((getSYSR() & SYSR_NETL) >> 6)
3750 
3751 #define NETLOCK() setNETLCKR(0xC5)
3752 #define NETUNLOCK() setNETLCKR(0x3A)
3753 
3754 #define setPHYLCKR(phylckr) \
3755  WIZCHIP_WRITE(_PHYLCKR_,(phylckr))
3756 
3757 #define getPHYLCKR() \
3758  ((getSYSR() & SYSR_PHYL) >> 5)
3759 
3760 #define PHYLOCK() setPHYLCKR(0xFF)
3761 #define PHYUNLOCK() setPHYLCKR(0x53)
3762 
3763 #define setRTR(rtr) \
3764  do{ \
3765  WIZCHIP_WRITE(_RTR_,(uint8_t)((rtr)>>8)); \
3766  WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_RTR_,1),(uint8_t)(rtr)); \
3767  }while(0);
3768 
3769 #define getRTR() \
3770  ((((uint16_t)WIZCHIP_READ(_RTR_)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_RTR_,1)))
3771 
3772 #define setRCR(rcr) \
3773  WIZCHIP_WRITE(_RCR_,(rcr))
3774 
3775 #define getRCR() \
3776  WIZCHIP_READ(_RCR_)
3777 
3778 #define setSLRTR(slrtr) \
3779  do{ \
3780  WIZCHIP_WRITE(_SLRTR_,(uint8_t)((slrtr)>>8)); \
3781  WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_SLRTR_,1),(uint8_t)(slrtr)); \
3782  }while(0);
3783 
3784 #define getSLRTR() \
3785  ((((uint16_t)WIZCHIP_READ(_SLRTR_)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_SLRTR_,1)))
3786 
3787 #define setSLRCR(slrcr) \
3788  WIZCHIP_WRITE(_SLRCR_,(slrcr))
3789 
3790 #define getSLRCR() \
3791  WIZCHIP_READ(_SLRCR_)
3792 
3793 #define setSLHOPR(slhopr) \
3794  WIZCHIP_WRITE(_SLHOPR_,(slhopr))
3795 
3796 #define getSLHOPR() \
3797  WIZCHIP_READ(_SLHOPR_)
3798 
3803 // SOCKETn register I/O function //
3806 
3810 #define setSn_MR(sn,mr) \
3811  WIZCHIP_WRITE(_Sn_MR_(sn),(mr))
3812 #define getSn_MR(sn) \
3813  WIZCHIP_READ(_Sn_MR_(sn))
3814 
3815 #define setSn_PSR(sn,psr) \
3816  WIZCHIP_WRITE(_Sn_PSR_(sn),(psr))
3817 #define getSn_PSR(sn) \
3818  WIZCHIP_READ(_Sn_PSR_(sn))
3819 
3820 #define setSn_CR(sn,cr) \
3821  WIZCHIP_WRITE(_Sn_CR_(sn),(cr))
3822 #define getSn_CR(sn) \
3823  WIZCHIP_READ(_Sn_CR_(sn))
3824 
3825 #define getSn_IR(sn) \
3826  WIZCHIP_READ(_Sn_IR_(sn))
3827 
3828 #define setSn_IMR(sn,imr) \
3829  WIZCHIP_WRITE(_Sn_IMR_(sn),(imr))
3830 #define getSn_IMR(sn) \
3831  WIZCHIP_READ(_Sn_IMR_(sn))
3832 
3833 #define setSn_IRCLR(sn,irclr) \
3834  WIZCHIP_WRITE(_Sn_IRCLR_(sn),(irclr))
3835 #define setSn_IR(sn,ir) setSn_IRCLR(sn,(ir))
3836 
3837 #define getSn_SR(sn) \
3838  WIZCHIP_READ(_Sn_SR_(sn))
3839 
3840 #define getSn_ESR(sn) \
3841  WIZCHIP_READ(_Sn_ESR_(sn))
3842 
3843 #define setSn_PNR(sn,pnr) \
3844  WIZCHIP_WRITE(_Sn_PNR_(sn),(pnr))
3845 #define setSn_NHR(sn,nhr) setSn_PNR(_Sn_PNR_(sn),(nhr))
3846 
3847 #define getSn_PNR(sn) \
3848  WIZCHIP_READ(_Sn_PNR_(sn))
3849 #define getSn_NHR(sn) getSn_PNR(sn)
3850 
3851 #define setSn_TOSR(sn,tosr) \
3852  WIZCHIP_WRITE(_Sn_TOSR_(sn),(tosr))
3853 #define getSn_TOSR(sn) \
3854  WIZCHIP_READ(_Sn_TOSR_(sn))
3855 
3856 #define setSn_TTLR(sn,ttlr) \
3857  WIZCHIP_WRITE(_Sn_TTLR_(sn),(ttlr))
3858 #define getSn_TTLR(sn) \
3859  WIZCHIP_READ(_Sn_TTLR_(sn))
3860 
3861 #define setSn_HOPR(sn,hopr) setSn_TTLR(sn),(ttlr))
3862 #define getSn_HOPR(sn) getSn_TTLR(sn)
3863 
3864 #define setSn_FRGR(sn,frgr) \
3865  do{ \
3866  WIZCHIP_WRITE(_Sn_FRGR_(sn),(uint8_t)((frgr)>>8)); \
3867  WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_Sn_FRGR_(sn),1),(uint8_t)(frgr)); \
3868  }while(0);
3869 #define getSn_FRGR(sn,frgr) \
3870  ((((uint16_t)WIZCHIP_READ(_Sn_FRGR_(sn))) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_Sn_FRGR_(sn),1)))
3871 
3872 #define setSn_MSSR(sn,mssr) \
3873  do{ \
3874  WIZCHIP_WRITE(_Sn_MSSR_(sn),(uint8_t)((mssr)>>8)); \
3875  WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_Sn_MSSR_(sn),1),(uint8_t)(mssr)); \
3876  }while(0);
3877 #define getSn_MSSR(sn) \
3878  ((((uint16_t)WIZCHIP_READ(_Sn_MSSR_(sn))) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_Sn_MSSR_(sn),1)))
3879 
3880 #define setSn_PORTR(sn,portr) \
3881  do{ \
3882  WIZCHIP_WRITE(_Sn_PORTR_(sn),(uint8_t)((portr)>>8)); \
3883  WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_Sn_PORTR_(sn),1),(uint8_t)(portr)); \
3884  }while(0);
3885 #define getSn_PORTR(sn) \
3886  ((((uint16_t)WIZCHIP_READ(_Sn_PORTR_(sn))) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_Sn_PORTR_(sn),1)))
3887 
3888 #define setSn_DHAR(sn,dhar) \
3889  WIZCHIP_WRITE_BUF(_Sn_DHAR_(sn),(dhar),6)
3890 #define getSn_DHAR(sn,dhar) \
3891  WIZCHIP_READ_BUF(_Sn_DHAR_(sn),(dhar),6)
3892 
3893 #define setSn_DIPR(sn,dipr) \
3894  WIZCHIP_WRITE_BUF(_Sn_DIPR_(sn),(dipr),4)
3895 #define getSn_DIPR(sn,dipr) \
3896  WIZCHIP_READ_BUF(_Sn_DIPR_(sn),(dipr),4)
3897 
3898 #define setSn_DIP4R(sn,dipr) setSn_DIPR(sn,(dipr))
3899 #define getSn_DIP4R(sn,dipr) getSn_DIPR(sn,(dipr))
3900 
3901 #define setSn_DIP6R(sn,dip6r) \
3902  WIZCHIP_WRITE_BUF(_Sn_DIP6R_(sn),(dip6r),16)
3903 #define getSn_DIP6R(sn,dip6r) \
3904  WIZCHIP_READ_BUF(_Sn_DIP6R_(sn),(dip6r),16)
3905 
3906 #define setSn_DPORTR(sn,dportr) \
3907  do{ \
3908  WIZCHIP_WRITE(_Sn_DPORTR_(sn),(uint8_t)((dportr)>>8)); \
3909  WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_Sn_DPORTR_(sn),1),(uint8_t)(dportr)); \
3910  }while(0);
3911 #define getSn_DPORTR(sn) \
3912  ((((uint16_t)WIZCHIP_READ(_Sn_DPORTR_(sn))) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_Sn_DPORTR_(sn),1)))
3913 
3914 #define setSn_MR2(sn,mr2) \
3915  WIZCHIP_WRITE(_Sn_MR2_(sn),(mr2))
3916 #define getSn_MR2(sn) \
3917  WIZCHIP_READ(_Sn_MR2_(sn))
3918 
3919 #define setSn_RTR(sn,rtr) \
3920  do{ \
3921  WIZCHIP_WRITE(_Sn_RTR_(sn),(uint8_t)((rtr)>>8)); \
3922  WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_Sn_RTR_(sn),1),(uint8_t)(rtr)); \
3923  }while(0);
3924 #define getSn_RTR(sn) \
3925  ((((uint16_t)WIZCHIP_READ(_Sn_RTR_(sn))) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_Sn_RTR_(sn),1)))
3926 
3927 #define setSn_RCR(sn,rcr) \
3928  WIZCHIP_WRITE(_Sn_RCR_(sn),(rcr))
3929 #define getSn_RCR(sn) \
3930  WIZCHIP_READ(_Sn_RCR_(sn))
3931 
3932 #define setSn_KPALVTR(sn,kpalvtr) \
3933  WIZCHIP_WRITE(_Sn_KPALVTR_(sn),(kpalvtr))
3934 #define getSn_KPALVTR(sn) \
3935  WIZCHIP_READ(_Sn_KPALVTR_(sn))
3936 
3937 #define setSn_TX_BSR(sn, tmsr) \
3938  WIZCHIP_WRITE(_Sn_TX_BSR_(sn),(tmsr))
3939 #define setSn_TXBUF_SIZE(sn, tmsr) setSn_TX_BSR(sn,(tmsr))
3940 
3941 #define getSn_TX_BSR(sn) \
3942  WIZCHIP_READ(_Sn_TX_BSR_(sn))
3943 #define getSn_TXBUF_SIZE(sn) getSn_TX_BSR(sn)
3944 
3945 #define getSn_TxMAX(sn) \
3946  (getSn_TX_BSR(sn) << 10)
3947 
3948 datasize_t getSn_TX_FSR(uint8_t sn);
3949 
3950 #define getSn_TX_RD(sn) \
3951  ((((uint16_t)WIZCHIP_READ(_Sn_TX_RD_(sn))) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_Sn_TX_RD_(sn),1)))
3952 
3953 #define setSn_TX_WR(sn,txwr) \
3954  do{ \
3955  WIZCHIP_WRITE(_Sn_TX_WR_(sn), (uint8_t)((txwr)>>8)); \
3956  WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_Sn_TX_WR_(sn),1), (uint8_t)(txwr)); \
3957  }while(0);
3958 #define getSn_TX_WR(sn) \
3959  (((uint16_t)WIZCHIP_READ(_Sn_TX_WR_(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_Sn_TX_WR_(sn),1)))
3960 
3961 #define setSn_RX_BSR(sn,rmsr) \
3962  WIZCHIP_WRITE(_Sn_RX_BSR_(sn),(rmsr))
3963 #define setSn_RXBUF_SIZE(sn,rmsr) setSn_RX_BSR(sn,(rmsr))
3964 
3965 #define getSn_RX_BSR(sn) \
3966  WIZCHIP_READ(_Sn_RX_BSR_(sn))
3967 #define getSn_RXBUF_SIZE(sn) getSn_RX_BSR(sn)
3968 
3969 #define getSn_RxMAX(sn) \
3970  (getSn_RX_BSR(sn) <<10)
3971 
3972 datasize_t getSn_RX_RSR(uint8_t s);
3973 
3974 #define setSn_RX_RD(sn,rxrd) \
3975  do{ \
3976  WIZCHIP_WRITE(_Sn_RX_RD_(sn), (uint8_t)((rxrd)>>8)); \
3977  WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_Sn_RX_RD_(sn),1), (uint8_t)(rxrd)) ; \
3978  }while(0);
3979 
3980 #define getSn_RX_RD(sn) \
3981  (((uint16_t)WIZCHIP_READ(_Sn_RX_RD_(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_Sn_RX_RD_(sn),1)))
3982 
3983 #define getSn_RX_WR(sn) \
3984  (((uint16_t)WIZCHIP_READ(_Sn_RX_WR_(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_Sn_RX_WR_(sn),1)))
3985 
3990 // Sn_TXBUF & Sn_RXBUF IO function //
3993 
4005 void wiz_send_data(uint8_t sn, uint8_t *wizdata, datasize_t len);
4006 
4019 void wiz_recv_data(uint8_t sn, uint8_t *wizdata, datasize_t len);
4020 
4028 void wiz_recv_ignore(uint8_t sn, datasize_t len);
4029 
4031 #if (_PHY_IO_MODE_ == _PHY_IO_MODE_MII_)
4032 
4041 void wiz_mdio_write(uint8_t phyregaddr, uint16_t var);
4042 
4051 uint16_t wiz_mdio_read(uint8_t phyregaddr);
4053 #endif
4054 
4057 #endif // _WIZCHIP_ == 6100
4058 
4060 
4061 #ifdef __cplusplus
4062 }
4063 #endif
4064 
4065 
4066 #endif //_W6100_H_
wiz_mdio_read
uint16_t wiz_mdio_read(uint8_t phyregaddr)
Read data from the PHY via MDC/MDIO interface.
WIZCHIP_WRITE
void WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb)
It writes 1 byte value to a register.
WIZCHIP_WRITE_BUF
void WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t *pBuf, datasize_t len)
It writes sequential data to registers.
getSn_RX_RSR
datasize_t getSn_RX_RSR(uint8_t s)
WIZCHIP_READ_BUF
void WIZCHIP_READ_BUF(uint32_t AddrSel, uint8_t *pBuf, datasize_t len)
It reads sequentail data from registers.
getSn_TX_FSR
datasize_t getSn_TX_FSR(uint8_t sn)
wiz_send_data
void wiz_send_data(uint8_t sn, uint8_t *wizdata, datasize_t len)
It saves data to be sent in the SOCKETn TX buffer.
wiz_recv_ignore
void wiz_recv_ignore(uint8_t sn, datasize_t len)
It discards the received data in the SOCKETn RX buffer.
wiz_mdio_write
void wiz_mdio_write(uint8_t phyregaddr, uint16_t var)
Write data to the PHY via MDC/MDIO interface.
WIZCHIP_READ
uint8_t WIZCHIP_READ(uint32_t AddrSel)
It reads 1 byte value from a register.
wizchip_conf.h
WIZCHIP Config Header File.
wiz_recv_data
void wiz_recv_data(uint8_t sn, uint8_t *wizdata, datasize_t len)
It reads the received data from the SOCKETn RX buffer and copies the data to your system memory speci...