/* Copyright (C) 2002 Neil Cafferkey This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef ETHERLINK3_H #define ETHERLINK3_H /* Registers */ /* ========= */ /* All Windows */ #define EL3REG_COMMAND 14 #define EL3REG_STATUS 14 /* Window 0 */ #define EL3REG_MAKERID 0 #define EL3REG_PRODUCTID 2 #define EL3REG_ADAPTERID 2 #define EL3REG_CONFIG 4 #define EL3REG_ADDRCONFIG 6 #define EL3REG_RESCONFIG 8 /* also in window 3 */ #define EL3REG_EEPROMCMD 10 /* window 2 has alternative version */ #define EL3REG_EEPROMDATA 12 /* Window 1 */ #define EL3REG_DATA0 0 #define EL3REG_DATA1 2 #define EL3REG_RXSTATUS 8 #define EL3REG_TIMER 10 #define EL3REG_TXSTATUS 11 #define EL3REG_TXSPACE 12 /* also in window 3 */ /* Window 2 */ #define EL3REG_ADDRESS0 0 #define EL3REG_ADDRESS1 1 #define EL3REG_ADDRESS2 2 #define EL3REG_ADDRESS3 3 #define EL3REG_ADDRESS4 4 #define EL3REG_ADDRESS5 5 #define EL3REG_SRAMDIAG 6 #define EL3REG_MULTIFUNCCONFIG 8 #define EL3REG_ALTEEPROMCMD 10 /* Window 3 */ #define EL3REG_ROMCONTROL 4 #define EL3REG_TXRECLAIM 6 #define EL3REG_RXSPACE 10 /* Window 4 */ #define EL3REG_FIFODIAG 4 #define EL3REG_NETDIAG 6 #define EL3REG_CONTROLLERSTATUS 8 #define EL3REG_MEDIA 10 /* Window 5 */ #define EL3REG_TXSTARTTHRESH 0 #define EL3REG_TXAVAILTHRESH 2 #define EL3REG_RXEARLYTHRESH 6 #define EL3REG_RXFILTER 8 #define EL3REG_INTMASK 10 #define EL3REG_READZEROMASK 12 /* (Some) EEPROM data offsets */ /* ========================== */ #define EL3EEPROM_ADDRESS0 0 #define EL3EEPROM_ADDRESS1 1 #define EL3EEPROM_ADDRESS2 2 #define EL3EEPROM_PRODUCTID 3 #define EL3EEPROM_MANFDATA0 4 #define EL3EEPROM_MANFDATA1 5 #define EL3EEPROM_MANFDATA2 6 #define EL3EEPROM_MAKERID 7 #define EL3EEPROM_ADDRCONFIG 8 #define EL3EEPROM_RESCONFIG 9 #define EL3EEPROM_ALTADDRESS0 10 #define EL3EEPROM_ALTADDRESS1 11 #define EL3EEPROM_ALTADDRESS2 12 #define EL3EEPROM_SOFTWAREINFO 13 #define EL3EEPROM_COMPATIBILITY 14 #define EL3EEPROM_CHECKSUM 15 /* EEPROM commands */ /* =============== */ #define EL3ECMD_WRITEDISABLE (0x0<<4) #define EL3ECMD_WRITEALL (0x1<<4) #define EL3ECMD_ERASEALL (0x2<<4) #define EL3ECMD_WRITEENABLE (0x3<<4) #define EL3ECMD_WRITE (0x4<<4) #define EL3ECMD_READ (0x8<<4) #define EL3ECMD_ERASE (0xc<<4) /* Commands */ /* ======== */ #define EL3CMD_GLOBALRESET (0<<11) #define EL3CMD_SELECTWINDOW (1<<11) #define EL3CMD_STARTCOAX (2<<11) #define EL3CMD_RXDISABLE (3<<11) #define EL3CMD_RXENABLE (4<<11) #define EL3CMD_RXRESET (5<<11) #define EL3CMD_RXDISCARD (8<<11) #define EL3CMD_TXENABLE (9<<11) #define EL3CMD_TXDISABLE (10<<11) #define EL3CMD_TXRESET (11<<11) #define EL3CMD_REQINT (12<<11) #define EL3CMD_ACKINT (13<<11) #define EL3CMD_SETINTMASK (14<<11) #define EL3CMD_SETZEROMASK (15<<11) #define EL3CMD_SETRXFILTER (16<<11) #define EL3CMD_SETRXTHRESH (17<<11) #define EL3CMD_SETTXTHRESH (18<<11) #define EL3CMD_SETTXSTART (19<<11) #define EL3CMD_STATSENABLE (21<<11) #define EL3CMD_STATSDISABLE (22<<11) #define EL3CMD_STOPCOAX (23<<11) #define EL3CMD_POWERUP (27<<11) #define EL3CMD_POWERDOWN (28<<11) #define EL3CMD_POWERAUTO (29<<11) /* Interrupt types */ /* =============== */ #define EL3INTB_UPDATESTATS 7 #define EL3INTB_REQINT 6 #define EL3INTB_RXEARLY 5 #define EL3INTB_RXCOMPLETE 4 #define EL3INTB_TXAVAIL 3 #define EL3INTB_TXCOMPLETE 2 #define EL3INTB_FAILURE 1 #define EL3INTB_ANY 0 #define EL3INTF_UPDATESTATS (1<