/* * @(#)adm8511reg.h 1.1 09/06/20 * Register dehinitsions of ADMtek ADM8511 Fast Ethernet to USB controller. * Codeded by Masayuki Murayama(KHF04453@nifty.ne.jp) * This file is public domain. */ #ifndef __ADM8511_H__ #define __ADM8511_H__ #define EC0 0x00 /* B */ #define EC1 0x01 /* B */ #define EC2 0x02 /* B */ #define MA 0x08 /* 8byte array */ #define EID 0x10 /* B */ #define PAUSETIMER 0x18 /* B pause timer */ #define RPNBFC 0x1a /* B */ #define ORFBFC 0x1b /* B */ #define EP1C 0x1c /* B */ #define RXFC 0x1d /* B */ #define BIST 0x1e /* B */ #define EEOFFSET 0x20 /* B */ #define EEDATA 0x21 /* W */ #define EECTRL 0x23 /* B */ #define PHYA 0x25 /* B */ #define PHYD 0x26 /* W */ #define PHYAC 0x28 /* B */ #define USBSTAT 0x2a /* B */ #define ETHTXSTAT 0x2b /* W */ #define ETHRXSTAT 0x2d /* B */ #define LOSTCNT 0x2e /* W */ #define WF0MASK 0x30 /* 16byte array */ #define WF0OFFSET 0x40 /* W */ #define WF0CRC 0x41 /* W */ #define WF1MASK 0x48 /* 16byte array */ #define WF1OFFSET 0x58 /* W */ #define WF1CRC 0x59 /* W */ #define WF2MASK 0x60 /* 16byte array */ #define WF2OFFSET 0x70 /* W */ #define WF2CRC 0x71 /* W */ #define WCTRL 0x78 /* B */ #define WSTAT 0x7a /* B */ #define IPHYC 0x7b /* B */ #define GPIO54 0x7c /* B */ #define GPIO10 0x7e /* B */ #define GPIO32 0x7f /* B */ #define TEST 0x80 /* B */ #define TM 0x81 /* B */ #define RPN 0x82 /* B */ /* Ethernet control register 0: offset 0 */ #define EC0_TXE 0x80U #define EC0_RXE 0x40U #define EC0_RXFCE 0x20U #define EC0_WOE 0x10U #define EC0_RXSA 0x08U #define EC0_SBO 0x04U #define EC0_RXMA 0x02U #define EC0_RXCS 0x01U #define EC0_BITS \ "\020" \ "\010TXE" \ "\007RXE" \ "\006RXFCE" \ "\005WOE" \ "\004RXSA" \ "\003SBO" \ "\002RXMA" \ "\001RXCS" /* Ethernet control register 1: offset 1 */ #define EC1_FD 0x20U #define EC1_100M 0x10U /* 0:10Mbps 1:100Mbps */ #define EC1_RM 0x08U /* reset mac */ #define EC1_BITS \ "\020" \ "\006FD" \ "\005100M" \ "\004RM" /* Ethernet control register 2: offset 2 */ #define EC2_MEPL 0x80U /* 8515: MTU 0:1528, 1:1638 */ #define EC2_RPNC 0x40U #define EC2_LEEPRS 0x20U #define EC2_EEPRW 0x10U #define EC2_LB 0x08U #define EC2_PROM 0x04U #define EC2_RXBP 0x02U #define EC2_EP3RC 0x01U #define EC2_BITS \ "\020" \ "\010MEPS" \ "\007RPNC" \ "\006LEEPRS" \ "\005EEPRW" \ "\004LB" \ "\003PROM" \ "\002RXBP" \ "\001EP3RC" /* Recieve Packet number based Flow Control register: offset 0x1a */ #define RPNBFC_PN 0x7eU /* */ #define RPNBFC_PN_SHIFT 1 #define RPNBFC_FCP 0x01U /* enable rx flow control */ /* Occupied Recieve FIFO based Flow Control register: offset 0x1b */ #define ORFBFC_RXS 0x7eU /* */ #define ORFBFC_RXS_SHIFT 1 #define ORFBFC_RXS_UNIT 1024U #define ORFBFC_FCRXS 0x01U /* enable rx flow control */ /* EP1 control register: offset 0x1c */ #define EP1C_EP1S0E 0x80U /* send 0 enable */ #define EP1C_ITMA 0x60U /* internal test mode A */ #define EP1C_ITMB 0x1fU /* internal test mode B */ #define EP1C_BITS \ "\020" \ "\010EP1S0E" /* Rx FIFO Control register: offset 0x1d */ #define RXFC_EXT_SRAM 0x02 /* enable external 32k sram */ #define RXFC_RX32PKT 0x01 /* max 32 packet */ /* EEPROM offset register: offset 0x20 */ #define EEOFFSET_MASK 0x3f /* eeprom offset address in word */ /* EEPROM access control register: offset 0x23 */ #define EECTRL_DONE 0x04 #define EECTRL_RD 0x02 #define EECTRL_WR 0x01 #define EECTRL_BITS \ "\020" \ "\003DONE" \ "\002RD" \ "\001WR" /* PHY control register: offset 28 */ #define PHYAC_DO 0x80U /* Done */ #define PHYAC_RDPHY 0x40U /* read phy */ #define PHYAC_WRPHY 0x20U /* write phy */ #define PHYAC_PHYRA 0x1fU /* PHY register address */ #define PHYCTRL_BITS \ "\020" \ "\010DO" \ "\007RDPHY" \ "\006WRPHY" /* Internal PHY control register: offset 7b */ #define IPHYC_EPHY 0x02 #define IPHYC_PHYR 0x01 #define IPHYC_BITS \ "\020" \ "\002EPHY" \ "\001PHYR" /* GPIO45 register: offset 7c */ #define GPIO54_5OE 0x20 #define GPIO54_5O 0x10 #define GPIO54_5I 0x08 #define GPIO54_4OE 0x04 #define GPIO54_4O 0x02 #define GPIO54_4I 0x01 /* GPIO01 register: offset 7e */ #define GPIO10_1OE 0x20 #define GPIO10_1O 0x10 #define GPIO10_1I 0x08 #define GPIO10_0OE 0x04 #define GPIO10_0O 0x02 #define GPIO10_0I 0x01 /* GPIO23 register: offset 7f */ #define GPIO32_3OE 0x20 #define GPIO32_3O 0x10 #define GPIO32_3I 0x08 #define GPIO32_2OE 0x04 #define GPIO32_2O 0x02 #define GPIO32_2I 0x01 /* rx status at the end of received packets */ /* byte 0 and 1 is packet length in little endian */ /* byte 2 is receive status */ #define RSR_DRIBBLE 0x10 #define RSR_CRC 0x08 #define RSR_RUNT 0x04 #define RSR_LONG 0x02 #define RSR_MULTI 0x01 #define RSR_ERRORS \ (RSR_DRIBBLE | RSR_CRC | RSR_RUNT | RSR_LONG | RSR_MULTI) #define RSR_BITS \ "\020" \ "\005DRIBBLE" \ "\004CRC" \ "\003RUNT" \ "\002LONG" \ "\001MULTI" /* byte 3 is reserved */ /* TEST register: offset 80 */ #endif /* __ADM8511_H__ */