15b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/*- 25b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 35b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * This software may be used and distributed according to the terms 45b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * of the GNU Public License, incorporated herein by reference. 55b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 65b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Module : sk_g16.h 75b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Version : $Revision: 1.3 $ 85b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 95b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Author : M.Hipp (mhipp@student.uni-tuebingen.de) 105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * changes by : Patrick J.D. Weichmann 115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Date Created : 94/05/25 135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Description : In here are all necessary definitions of 155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * the am7990 (LANCE) chip used for writing a 165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * network device driver which uses this chip 175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * $Log: sk_g16.h,v $ 195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Revision 1.3 2000/07/29 19:22:54 okuji 205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * update the network support to etherboot-4.6.4. 215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project-*/ 235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef SK_G16_H 255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define SK_G16_H 275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Control and Status Register 0 (CSR0) bit definitions 315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * (R=Readable) (W=Writeable) (S=Set on write) (C-Clear on write) 335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_ERR 0x8000 /* Error summary (R) */ 375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_BABL 0x4000 /* Babble transmitter timeout error (RC) */ 385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_CERR 0x2000 /* Collision Error (RC) */ 395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_MISS 0x1000 /* Missed packet (RC) */ 405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_MERR 0x0800 /* Memory Error (RC) */ 415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_RINT 0x0400 /* Receiver Interrupt (RC) */ 425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_TINT 0x0200 /* Transmit Interrupt (RC) */ 435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_IDON 0x0100 /* Initialization Done (RC) */ 445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_INTR 0x0080 /* Interrupt Flag (R) */ 455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_INEA 0x0040 /* Interrupt Enable (RW) */ 465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_RXON 0x0020 /* Receiver on (R) */ 475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_TXON 0x0010 /* Transmitter on (R) */ 485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_TDMD 0x0008 /* Transmit Demand (RS) */ 495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_STOP 0x0004 /* Stop (RS) */ 505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_STRT 0x0002 /* Start (RS) */ 515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_INIT 0x0001 /* Initialize (RS) */ 525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR0_CLRALL 0x7f00 /* mask for all clearable bits */ 545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Control and Status Register 3 (CSR3) bit definitions 575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR3_BSWAP 0x0004 /* Byte Swap (RW) */ 615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR3_ACON 0x0002 /* ALE Control (RW) */ 625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define CSR3_BCON 0x0001 /* Byte Control (RW) */ 635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Initialization Block Mode operation Bit Definitions. 665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MODE_PROM 0x8000 /* Promiscuous Mode */ 695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MODE_INTL 0x0040 /* Internal Loopback */ 705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MODE_DRTY 0x0020 /* Disable Retry */ 715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MODE_COLL 0x0010 /* Force Collision */ 725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MODE_DTCR 0x0008 /* Disable Transmit CRC) */ 735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MODE_LOOP 0x0004 /* Loopback */ 745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MODE_DTX 0x0002 /* Disable the Transmitter */ 755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MODE_DRX 0x0001 /* Disable the Receiver */ 765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define MODE_NORMAL 0x0000 /* Normal operation mode */ 785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Receive message descriptor status bit definitions. 815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_OWN 0x80 /* Owner bit 0 = host, 1 = lance */ 845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_ERR 0x40 /* Error Summary */ 855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_FRAM 0x20 /* Framing Error */ 865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_OFLO 0x10 /* Overflow Error */ 875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_CRC 0x08 /* CRC Error */ 885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_BUFF 0x04 /* Buffer Error */ 895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_STP 0x02 /* Start of Packet */ 905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define RX_ENP 0x01 /* End of Packet */ 915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Transmit message descriptor status bit definitions. 955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_OWN 0x80 /* Owner bit 0 = host, 1 = lance */ 985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_ERR 0x40 /* Error Summary */ 995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_MORE 0x10 /* More the 1 retry needed to Xmit */ 1005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_ONE 0x08 /* One retry needed to Xmit */ 1015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_DEF 0x04 /* Deferred */ 1025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_STP 0x02 /* Start of Packet */ 1035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_ENP 0x01 /* End of Packet */ 1045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 1065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Transmit status (2) (valid if TX_ERR == 1) 1075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_BUFF 0x8000 /* Buffering error (no ENP) */ 1105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_UFLO 0x4000 /* Underflow (late memory) */ 1115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_LCOL 0x1000 /* Late collision */ 1125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_LCAR 0x0400 /* Loss of Carrier */ 1135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_RTRY 0x0200 /* Failed after 16 retransmissions */ 1145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define TX_TDR 0x003f /* Time-domain-reflectometer-value */ 1155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 1185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Structures used for Communication with the LANCE 1195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 1205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* LANCE Initialize Block */ 1225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectstruct init_block 1245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project{ 1255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short mode; /* Mode Register */ 1265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char paddr[6]; /* Physical Address (MAC) */ 1275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char laddr[8]; /* Logical Filter Address (not used) */ 1285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned int rdrp; /* Receive Descriptor Ring pointer */ 1295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned int tdrp; /* Transmit Descriptor Ring pointer */ 1305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 1315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Receive Message Descriptor Entry */ 1345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectstruct rmd 1365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project{ 1375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project union rmd_u 1385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project { 1395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long buffer; /* Address of buffer */ 1405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project struct rmd_s 1415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project { 1425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char unused[3]; 1435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned volatile char status; /* Status Bits */ 1445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project } s; 1455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project } u; 1465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project volatile short blen; /* Buffer Length (two's complement) */ 1475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short mlen; /* Message Byte Count */ 1485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 1495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Transmit Message Descriptor Entry */ 1525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectstruct tmd 1545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project{ 1555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project union tmd_u 1565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project { 1575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned long buffer; /* Address of buffer */ 1585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project struct tmd_s 1595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project { 1605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned char unused[3]; 1615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned volatile char status; /* Status Bits */ 1625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project } s; 1635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project } u; 1645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned short blen; /* Buffer Length (two's complement) */ 1655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project unsigned volatile short status2; /* Error Status Bits */ 1665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}; 1675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 1685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif /* End of SK_G16_H */ 169