123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845 |
- /*
- he.h
- ForeRunnerHE ATM Adapter driver for ATM on Linux
- Copyright (C) 1999-2001 Naval Research Laboratory
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
- This library 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
- Lesser General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
- /*
- he.h
- ForeRunnerHE ATM Adapter driver for ATM on Linux
- Copyright (C) 1999-2000 Naval Research Laboratory
- Permission to use, copy, modify and distribute this software and its
- documentation is hereby granted, provided that both the copyright
- notice and this permission notice appear in all copies of the software,
- derivative works or modified versions, and any portions thereof, and
- that both notices appear in supporting documentation.
- NRL ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION AND
- DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER
- RESULTING FROM THE USE OF THIS SOFTWARE.
- */
- #ifndef _HE_H_
- #define _HE_H_
- #define DEV_LABEL "he"
- #define CONFIG_DEFAULT_VCIBITS 12
- #define CONFIG_DEFAULT_VPIBITS 0
- #define CONFIG_IRQ_SIZE 128
- #define CONFIG_IRQ_THRESH (CONFIG_IRQ_SIZE/2)
- #define CONFIG_TPDRQ_SIZE 512
- #define TPDRQ_MASK(x) (((unsigned long)(x))&((CONFIG_TPDRQ_SIZE<<3)-1))
- #define CONFIG_RBRQ_SIZE 512
- #define CONFIG_RBRQ_THRESH 400
- #define RBRQ_MASK(x) (((unsigned long)(x))&((CONFIG_RBRQ_SIZE<<3)-1))
- #define CONFIG_TBRQ_SIZE 512
- #define CONFIG_TBRQ_THRESH 400
- #define TBRQ_MASK(x) (((unsigned long)(x))&((CONFIG_TBRQ_SIZE<<2)-1))
- #define CONFIG_RBPL_SIZE 512
- #define CONFIG_RBPL_THRESH 64
- #define CONFIG_RBPL_BUFSIZE 4096
- #define RBPL_MASK(x) (((unsigned long)(x))&((CONFIG_RBPL_SIZE<<3)-1))
- /* 5.1.3 initialize connection memory */
- #define CONFIG_RSRA 0x00000
- #define CONFIG_RCMLBM 0x08000
- #define CONFIG_RCMABR 0x0d800
- #define CONFIG_RSRB 0x0e000
- #define CONFIG_TSRA 0x00000
- #define CONFIG_TSRB 0x08000
- #define CONFIG_TSRC 0x0c000
- #define CONFIG_TSRD 0x0e000
- #define CONFIG_TMABR 0x0f000
- #define CONFIG_TPDBA 0x10000
- #define HE_MAXCIDBITS 12
- /* 2.9.3.3 interrupt encodings */
- struct he_irq {
- volatile u32 isw;
- };
- #define IRQ_ALIGNMENT 0x1000
- #define NEXT_ENTRY(base, tail, mask) \
- (((unsigned long)base)|(((unsigned long)(tail+1))&mask))
- #define ITYPE_INVALID 0xffffffff
- #define ITYPE_TBRQ_THRESH (0<<3)
- #define ITYPE_TPD_COMPLETE (1<<3)
- #define ITYPE_RBPS_THRESH (2<<3)
- #define ITYPE_RBPL_THRESH (3<<3)
- #define ITYPE_RBRQ_THRESH (4<<3)
- #define ITYPE_RBRQ_TIMER (5<<3)
- #define ITYPE_PHY (6<<3)
- #define ITYPE_OTHER 0x80
- #define ITYPE_PARITY 0x81
- #define ITYPE_ABORT 0x82
- #define ITYPE_GROUP(x) (x & 0x7)
- #define ITYPE_TYPE(x) (x & 0xf8)
- #define HE_NUM_GROUPS 8
- /* 2.1.4 transmit packet descriptor */
- struct he_tpd {
- /* read by the adapter */
- volatile u32 status;
- volatile u32 reserved;
- #define TPD_MAXIOV 3
- struct {
- u32 addr, len;
- } iovec[TPD_MAXIOV];
- #define address0 iovec[0].addr
- #define length0 iovec[0].len
- /* linux-atm extensions */
- struct sk_buff *skb;
- struct atm_vcc *vcc;
- struct list_head entry;
- };
- #define TPD_ALIGNMENT 64
- #define TPD_LEN_MASK 0xffff
- #define TPD_ADDR_SHIFT 6
- #define TPD_MASK 0xffffffc0
- #define TPD_ADDR(x) ((x) & TPD_MASK)
- #define TPD_INDEX(x) (TPD_ADDR(x) >> TPD_ADDR_SHIFT)
- /* table 2.3 transmit buffer return elements */
- struct he_tbrq {
- volatile u32 tbre;
- };
- #define TBRQ_ALIGNMENT CONFIG_TBRQ_SIZE
- #define TBRQ_TPD(tbrq) ((tbrq)->tbre & 0xffffffc0)
- #define TBRQ_EOS(tbrq) ((tbrq)->tbre & (1<<3))
- #define TBRQ_MULTIPLE(tbrq) ((tbrq)->tbre & (1))
- /* table 2.21 receive buffer return queue element field organization */
- struct he_rbrq {
- volatile u32 addr;
- volatile u32 cidlen;
- };
- #define RBRQ_ALIGNMENT CONFIG_RBRQ_SIZE
- #define RBRQ_ADDR(rbrq) ((rbrq)->addr & 0xffffffc0)
- #define RBRQ_CRC_ERR(rbrq) ((rbrq)->addr & (1<<5))
- #define RBRQ_LEN_ERR(rbrq) ((rbrq)->addr & (1<<4))
- #define RBRQ_END_PDU(rbrq) ((rbrq)->addr & (1<<3))
- #define RBRQ_AAL5_PROT(rbrq) ((rbrq)->addr & (1<<2))
- #define RBRQ_CON_CLOSED(rbrq) ((rbrq)->addr & (1<<1))
- #define RBRQ_HBUF_ERR(rbrq) ((rbrq)->addr & 1)
- #define RBRQ_CID(rbrq) (((rbrq)->cidlen >> 16) & 0x1fff)
- #define RBRQ_BUFLEN(rbrq) ((rbrq)->cidlen & 0xffff)
- /* figure 2.3 transmit packet descriptor ready queue */
- struct he_tpdrq {
- volatile u32 tpd;
- volatile u32 cid;
- };
- #define TPDRQ_ALIGNMENT CONFIG_TPDRQ_SIZE
- /* table 2.30 host status page detail */
- #define HSP_ALIGNMENT 0x400 /* must align on 1k boundary */
- struct he_hsp {
- struct he_hsp_entry {
- volatile u32 tbrq_tail;
- volatile u32 reserved1[15];
- volatile u32 rbrq_tail;
- volatile u32 reserved2[15];
- } group[HE_NUM_GROUPS];
- };
- /*
- * figure 2.9 receive buffer pools
- *
- * since a virtual address might be more than 32 bits, we store an index
- * in the virt member of he_rbp. NOTE: the lower six bits in the rbrq
- * addr member are used for buffer status further limiting us to 26 bits.
- */
- struct he_rbp {
- volatile u32 phys;
- volatile u32 idx; /* virt */
- };
- #define RBP_IDX_OFFSET 6
- /*
- * the he dma engine will try to hold an extra 16 buffers in its local
- * caches. and add a couple buffers for safety.
- */
- #define RBPL_TABLE_SIZE (CONFIG_RBPL_SIZE + 16 + 2)
- struct he_buff {
- struct list_head entry;
- dma_addr_t mapping;
- unsigned long len;
- u8 data[];
- };
- #ifdef notyet
- struct he_group {
- u32 rpbl_size, rpbl_qsize;
- struct he_rpb_entry *rbpl_ba;
- };
- #endif
- #define HE_LOOKUP_VCC(dev, cid) ((dev)->he_vcc_table[(cid)].vcc)
- struct he_vcc_table
- {
- struct atm_vcc *vcc;
- };
- struct he_cs_stper
- {
- long pcr;
- int inuse;
- };
- #define HE_NUM_CS_STPER 16
- struct he_dev {
- unsigned int number;
- unsigned int irq;
- void __iomem *membase;
- char prod_id[30];
- char mac_addr[6];
- int media;
- unsigned int vcibits, vpibits;
- unsigned int cells_per_row;
- unsigned int bytes_per_row;
- unsigned int cells_per_lbuf;
- unsigned int r0_numrows, r0_startrow, r0_numbuffs;
- unsigned int r1_numrows, r1_startrow, r1_numbuffs;
- unsigned int tx_numrows, tx_startrow, tx_numbuffs;
- unsigned int buffer_limit;
- struct he_vcc_table *he_vcc_table;
- #ifdef notyet
- struct he_group group[HE_NUM_GROUPS];
- #endif
- struct he_cs_stper cs_stper[HE_NUM_CS_STPER];
- unsigned total_bw;
- dma_addr_t irq_phys;
- struct he_irq *irq_base, *irq_head, *irq_tail;
- volatile unsigned *irq_tailoffset;
- int irq_peak;
- struct tasklet_struct tasklet;
- struct dma_pool *tpd_pool;
- struct list_head outstanding_tpds;
- dma_addr_t tpdrq_phys;
- struct he_tpdrq *tpdrq_base, *tpdrq_tail, *tpdrq_head;
- spinlock_t global_lock; /* 8.1.5 pci transaction ordering
- error problem */
- dma_addr_t rbrq_phys;
- struct he_rbrq *rbrq_base, *rbrq_head;
- int rbrq_peak;
- struct he_buff **rbpl_virt;
- unsigned long *rbpl_table;
- unsigned long rbpl_hint;
- struct dma_pool *rbpl_pool;
- dma_addr_t rbpl_phys;
- struct he_rbp *rbpl_base, *rbpl_tail;
- struct list_head rbpl_outstanding;
- int rbpl_peak;
- dma_addr_t tbrq_phys;
- struct he_tbrq *tbrq_base, *tbrq_head;
- int tbrq_peak;
- dma_addr_t hsp_phys;
- struct he_hsp *hsp;
- struct pci_dev *pci_dev;
- struct atm_dev *atm_dev;
- struct he_dev *next;
- };
- #define HE_MAXIOV 20
- struct he_vcc
- {
- struct list_head buffers;
- int pdu_len;
- int rc_index;
- wait_queue_head_t rx_waitq;
- wait_queue_head_t tx_waitq;
- };
- #define HE_VCC(vcc) ((struct he_vcc *)(vcc->dev_data))
- #define PCI_VENDOR_ID_FORE 0x1127
- #define PCI_DEVICE_ID_FORE_HE 0x400
- #define GEN_CNTL_0 0x40
- #define INT_PROC_ENBL (1<<25)
- #define SLAVE_ENDIAN_MODE (1<<16)
- #define MRL_ENB (1<<5)
- #define MRM_ENB (1<<4)
- #define INIT_ENB (1<<2)
- #define IGNORE_TIMEOUT (1<<1)
- #define ENBL_64 (1<<0)
- #define MIN_PCI_LATENCY 32 /* errata 8.1.3 */
- #define HE_DEV(dev) ((struct he_dev *) (dev)->dev_data)
- #define he_is622(dev) ((dev)->media & 0x1)
- #define he_isMM(dev) ((dev)->media & 0x20)
- #define HE_REGMAP_SIZE 0x100000
- #define RESET_CNTL 0x80000
- #define BOARD_RST_STATUS (1<<6)
- #define HOST_CNTL 0x80004
- #define PCI_BUS_SIZE64 (1<<27)
- #define DESC_RD_STATIC_64 (1<<26)
- #define DATA_RD_STATIC_64 (1<<25)
- #define DATA_WR_STATIC_64 (1<<24)
- #define ID_CS (1<<12)
- #define ID_WREN (1<<11)
- #define ID_DOUT (1<<10)
- #define ID_DOFFSET 10
- #define ID_DIN (1<<9)
- #define ID_CLOCK (1<<8)
- #define QUICK_RD_RETRY (1<<7)
- #define QUICK_WR_RETRY (1<<6)
- #define OUTFF_ENB (1<<5)
- #define CMDFF_ENB (1<<4)
- #define PERR_INT_ENB (1<<2)
- #define IGNORE_INTR (1<<0)
- #define LB_SWAP 0x80008
- #define SWAP_RNUM_MAX(x) (x<<27)
- #define DATA_WR_SWAP (1<<20)
- #define DESC_RD_SWAP (1<<19)
- #define DATA_RD_SWAP (1<<18)
- #define INTR_SWAP (1<<17)
- #define DESC_WR_SWAP (1<<16)
- #define SDRAM_INIT (1<<15)
- #define BIG_ENDIAN_HOST (1<<14)
- #define XFER_SIZE (1<<7)
- #define LB_MEM_ADDR 0x8000c
- #define LB_MEM_DATA 0x80010
- #define LB_MEM_ACCESS 0x80014
- #define LB_MEM_HNDSHK (1<<30)
- #define LM_MEM_WRITE (0x7)
- #define LM_MEM_READ (0x3)
- #define SDRAM_CTL 0x80018
- #define LB_64_ENB (1<<3)
- #define LB_TWR (1<<2)
- #define LB_TRP (1<<1)
- #define LB_TRAS (1<<0)
- #define INT_FIFO 0x8001c
- #define INT_MASK_D (1<<15)
- #define INT_MASK_C (1<<14)
- #define INT_MASK_B (1<<13)
- #define INT_MASK_A (1<<12)
- #define INT_CLEAR_D (1<<11)
- #define INT_CLEAR_C (1<<10)
- #define INT_CLEAR_B (1<<9)
- #define INT_CLEAR_A (1<<8)
- #define ABORT_ADDR 0x80020
- #define IRQ0_BASE 0x80080
- #define IRQ_BASE(x) (x<<12)
- #define IRQ_MASK ((CONFIG_IRQ_SIZE<<2)-1) /* was 0x3ff */
- #define IRQ_TAIL(x) (((unsigned long)(x)) & IRQ_MASK)
- #define IRQ0_HEAD 0x80084
- #define IRQ_SIZE(x) (x<<22)
- #define IRQ_THRESH(x) (x<<12)
- #define IRQ_HEAD(x) (x<<2)
- /* #define IRQ_PENDING (1) conflict with linux/irq.h */
- #define IRQ0_CNTL 0x80088
- #define IRQ_ADDRSEL(x) (x<<2)
- #define IRQ_INT_A (0<<2)
- #define IRQ_INT_B (1<<2)
- #define IRQ_INT_C (2<<2)
- #define IRQ_INT_D (3<<2)
- #define IRQ_TYPE_ADDR 0x1
- #define IRQ_TYPE_LINE 0x0
- #define IRQ0_DATA 0x8008c
- #define IRQ1_BASE 0x80090
- #define IRQ1_HEAD 0x80094
- #define IRQ1_CNTL 0x80098
- #define IRQ1_DATA 0x8009c
- #define IRQ2_BASE 0x800a0
- #define IRQ2_HEAD 0x800a4
- #define IRQ2_CNTL 0x800a8
- #define IRQ2_DATA 0x800ac
- #define IRQ3_BASE 0x800b0
- #define IRQ3_HEAD 0x800b4
- #define IRQ3_CNTL 0x800b8
- #define IRQ3_DATA 0x800bc
- #define GRP_10_MAP 0x800c0
- #define GRP_32_MAP 0x800c4
- #define GRP_54_MAP 0x800c8
- #define GRP_76_MAP 0x800cc
- #define G0_RBPS_S 0x80400
- #define G0_RBPS_T 0x80404
- #define RBP_TAIL(x) ((x)<<3)
- #define RBP_MASK(x) ((x)|0x1fff)
- #define G0_RBPS_QI 0x80408
- #define RBP_QSIZE(x) ((x)<<14)
- #define RBP_INT_ENB (1<<13)
- #define RBP_THRESH(x) (x)
- #define G0_RBPS_BS 0x8040c
- #define G0_RBPL_S 0x80410
- #define G0_RBPL_T 0x80414
- #define G0_RBPL_QI 0x80418
- #define G0_RBPL_BS 0x8041c
- #define G1_RBPS_S 0x80420
- #define G1_RBPS_T 0x80424
- #define G1_RBPS_QI 0x80428
- #define G1_RBPS_BS 0x8042c
- #define G1_RBPL_S 0x80430
- #define G1_RBPL_T 0x80434
- #define G1_RBPL_QI 0x80438
- #define G1_RBPL_BS 0x8043c
- #define G2_RBPS_S 0x80440
- #define G2_RBPS_T 0x80444
- #define G2_RBPS_QI 0x80448
- #define G2_RBPS_BS 0x8044c
- #define G2_RBPL_S 0x80450
- #define G2_RBPL_T 0x80454
- #define G2_RBPL_QI 0x80458
- #define G2_RBPL_BS 0x8045c
- #define G3_RBPS_S 0x80460
- #define G3_RBPS_T 0x80464
- #define G3_RBPS_QI 0x80468
- #define G3_RBPS_BS 0x8046c
- #define G3_RBPL_S 0x80470
- #define G3_RBPL_T 0x80474
- #define G3_RBPL_QI 0x80478
- #define G3_RBPL_BS 0x8047c
- #define G4_RBPS_S 0x80480
- #define G4_RBPS_T 0x80484
- #define G4_RBPS_QI 0x80488
- #define G4_RBPS_BS 0x8048c
- #define G4_RBPL_S 0x80490
- #define G4_RBPL_T 0x80494
- #define G4_RBPL_QI 0x80498
- #define G4_RBPL_BS 0x8049c
- #define G5_RBPS_S 0x804a0
- #define G5_RBPS_T 0x804a4
- #define G5_RBPS_QI 0x804a8
- #define G5_RBPS_BS 0x804ac
- #define G5_RBPL_S 0x804b0
- #define G5_RBPL_T 0x804b4
- #define G5_RBPL_QI 0x804b8
- #define G5_RBPL_BS 0x804bc
- #define G6_RBPS_S 0x804c0
- #define G6_RBPS_T 0x804c4
- #define G6_RBPS_QI 0x804c8
- #define G6_RBPS_BS 0x804cc
- #define G6_RBPL_S 0x804d0
- #define G6_RBPL_T 0x804d4
- #define G6_RBPL_QI 0x804d8
- #define G6_RBPL_BS 0x804dc
- #define G7_RBPS_S 0x804e0
- #define G7_RBPS_T 0x804e4
- #define G7_RBPS_QI 0x804e8
- #define G7_RBPS_BS 0x804ec
- #define G7_RBPL_S 0x804f0
- #define G7_RBPL_T 0x804f4
- #define G7_RBPL_QI 0x804f8
- #define G7_RBPL_BS 0x804fc
- #define G0_RBRQ_ST 0x80500
- #define G0_RBRQ_H 0x80504
- #define G0_RBRQ_Q 0x80508
- #define RBRQ_THRESH(x) ((x)<<13)
- #define RBRQ_SIZE(x) (x)
- #define G0_RBRQ_I 0x8050c
- #define RBRQ_TIME(x) ((x)<<8)
- #define RBRQ_COUNT(x) (x)
- /* fill in 1 ... 7 later */
- #define G0_TBRQ_B_T 0x80600
- #define G0_TBRQ_H 0x80604
- #define G0_TBRQ_S 0x80608
- #define G0_TBRQ_THRESH 0x8060c
- #define TBRQ_THRESH(x) (x)
- /* fill in 1 ... 7 later */
- #define RH_CONFIG 0x805c0
- #define PHY_INT_ENB (1<<10)
- #define OAM_GID(x) (x<<7)
- #define PTMR_PRE(x) (x)
- #define G0_INMQ_S 0x80580
- #define G0_INMQ_L 0x80584
- #define G1_INMQ_S 0x80588
- #define G1_INMQ_L 0x8058c
- #define G2_INMQ_S 0x80590
- #define G2_INMQ_L 0x80594
- #define G3_INMQ_S 0x80598
- #define G3_INMQ_L 0x8059c
- #define G4_INMQ_S 0x805a0
- #define G4_INMQ_L 0x805a4
- #define G5_INMQ_S 0x805a8
- #define G5_INMQ_L 0x805ac
- #define G6_INMQ_S 0x805b0
- #define G6_INMQ_L 0x805b4
- #define G7_INMQ_S 0x805b8
- #define G7_INMQ_L 0x805bc
- #define TPDRQ_B_H 0x80680
- #define TPDRQ_T 0x80684
- #define TPDRQ_S 0x80688
- #define UBUFF_BA 0x8068c
- #define RLBF0_H 0x806c0
- #define RLBF0_T 0x806c4
- #define RLBF1_H 0x806c8
- #define RLBF1_T 0x806cc
- #define RLBC_H 0x806d0
- #define RLBC_T 0x806d4
- #define RLBC_H2 0x806d8
- #define TLBF_H 0x806e0
- #define TLBF_T 0x806e4
- #define RLBF0_C 0x806e8
- #define RLBF1_C 0x806ec
- #define RXTHRSH 0x806f0
- #define LITHRSH 0x806f4
- #define LBARB 0x80700
- #define SLICE_X(x) (x<<28)
- #define ARB_RNUM_MAX(x) (x<<23)
- #define TH_PRTY(x) (x<<21)
- #define RH_PRTY(x) (x<<19)
- #define TL_PRTY(x) (x<<17)
- #define RL_PRTY(x) (x<<15)
- #define BUS_MULTI(x) (x<<8)
- #define NET_PREF(x) (x)
- #define SDRAMCON 0x80704
- #define BANK_ON (1<<14)
- #define WIDE_DATA (1<<13)
- #define TWR_WAIT (1<<12)
- #define TRP_WAIT (1<<11)
- #define TRAS_WAIT (1<<10)
- #define REF_RATE(x) (x)
- #define LBSTAT 0x80708
- #define RCC_STAT 0x8070c
- #define RCC_BUSY (1)
- #define TCMCONFIG 0x80740
- #define TM_DESL2 (1<<10)
- #define TM_BANK_WAIT(x) (x<<6)
- #define TM_ADD_BANK4(x) (x<<4)
- #define TM_PAR_CHECK(x) (x<<3)
- #define TM_RW_WAIT(x) (x<<2)
- #define TM_SRAM_TYPE(x) (x)
- #define TSRB_BA 0x80744
- #define TSRC_BA 0x80748
- #define TMABR_BA 0x8074c
- #define TPD_BA 0x80750
- #define TSRD_BA 0x80758
- #define TX_CONFIG 0x80760
- #define DRF_THRESH(x) (x<<22)
- #define TX_UT_MODE(x) (x<<21)
- #define TX_VCI_MASK(x) (x<<17)
- #define LBFREE_CNT(x) (x)
- #define TXAAL5_PROTO 0x80764
- #define CPCS_UU(x) (x<<8)
- #define CPI(x) (x)
- #define RCMCONFIG 0x80780
- #define RM_DESL2(x) (x<<10)
- #define RM_BANK_WAIT(x) (x<<6)
- #define RM_ADD_BANK(x) (x<<4)
- #define RM_PAR_CHECK(x) (x<<3)
- #define RM_RW_WAIT(x) (x<<2)
- #define RM_SRAM_TYPE(x) (x)
- #define RCMRSRB_BA 0x80784
- #define RCMLBM_BA 0x80788
- #define RCMABR_BA 0x8078c
- #define RC_CONFIG 0x807c0
- #define UT_RD_DELAY(x) (x<<11)
- #define WRAP_MODE(x) (x<<10)
- #define RC_UT_MODE(x) (x<<9)
- #define RX_ENABLE (1<<8)
- #define RX_VALVP(x) (x<<4)
- #define RX_VALVC(x) (x)
- #define MCC 0x807c4
- #define OEC 0x807c8
- #define DCC 0x807cc
- #define CEC 0x807d0
- #define HSP_BA 0x807f0
- #define LB_CONFIG 0x807f4
- #define LB_SIZE(x) (x)
- #define CON_DAT 0x807f8
- #define CON_CTL 0x807fc
- #define CON_CTL_MBOX (2<<30)
- #define CON_CTL_TCM (1<<30)
- #define CON_CTL_RCM (0<<30)
- #define CON_CTL_WRITE (1<<29)
- #define CON_CTL_READ (0<<29)
- #define CON_CTL_BUSY (1<<28)
- #define CON_BYTE_DISABLE_3 (1<<22) /* 24..31 */
- #define CON_BYTE_DISABLE_2 (1<<21) /* 16..23 */
- #define CON_BYTE_DISABLE_1 (1<<20) /* 8..15 */
- #define CON_BYTE_DISABLE_0 (1<<19) /* 0..7 */
- #define CON_CTL_ADDR(x) (x)
- #define FRAMER 0x80800 /* to 0x80bfc */
- /* 3.3 network controller (internal) mailbox registers */
- #define CS_STPER0 0x0
- /* ... */
- #define CS_STPER31 0x01f
- #define CS_STTIM0 0x020
- /* ... */
- #define CS_STTIM31 0x03f
- #define CS_TGRLD0 0x040
- /* ... */
- #define CS_TGRLD15 0x04f
- #define CS_ERTHR0 0x050
- #define CS_ERTHR1 0x051
- #define CS_ERTHR2 0x052
- #define CS_ERTHR3 0x053
- #define CS_ERTHR4 0x054
- #define CS_ERCTL0 0x055
- #define TX_ENABLE (1<<28)
- #define ER_ENABLE (1<<27)
- #define CS_ERCTL1 0x056
- #define CS_ERCTL2 0x057
- #define CS_ERSTAT0 0x058
- #define CS_ERSTAT1 0x059
- #define CS_RTCCT 0x060
- #define CS_RTFWC 0x061
- #define CS_RTFWR 0x062
- #define CS_RTFTC 0x063
- #define CS_RTATR 0x064
- #define CS_TFBSET 0x070
- #define CS_TFBADD 0x071
- #define CS_TFBSUB 0x072
- #define CS_WCRMAX 0x073
- #define CS_WCRMIN 0x074
- #define CS_WCRINC 0x075
- #define CS_WCRDEC 0x076
- #define CS_WCRCEIL 0x077
- #define CS_BWDCNT 0x078
- #define CS_OTPPER 0x080
- #define CS_OTWPER 0x081
- #define CS_OTTLIM 0x082
- #define CS_OTTCNT 0x083
- #define CS_HGRRT0 0x090
- /* ... */
- #define CS_HGRRT7 0x097
- #define CS_ORPTRS 0x0a0
- #define RXCON_CLOSE 0x100
- #define RCM_MEM_SIZE 0x10000 /* 1M of 32-bit registers */
- #define TCM_MEM_SIZE 0x20000 /* 2M of 32-bit registers */
- /* 2.5 transmit connection memory registers */
- #define TSR0_CONN_STATE(x) ((x>>28) & 0x7)
- #define TSR0_USE_WMIN (1<<23)
- #define TSR0_GROUP(x) ((x & 0x7)<<18)
- #define TSR0_ABR (2<<16)
- #define TSR0_UBR (1<<16)
- #define TSR0_CBR (0<<16)
- #define TSR0_PROT (1<<15)
- #define TSR0_AAL0_SDU (2<<12)
- #define TSR0_AAL0 (1<<12)
- #define TSR0_AAL5 (0<<12)
- #define TSR0_HALT_ER (1<<11)
- #define TSR0_MARK_CI (1<<10)
- #define TSR0_MARK_ER (1<<9)
- #define TSR0_UPDATE_GER (1<<8)
- #define TSR0_RC_INDEX(x) (x & 0x1F)
- #define TSR1_PCR(x) ((x & 0x7FFF)<<16)
- #define TSR1_MCR(x) (x & 0x7FFF)
- #define TSR2_ACR(x) ((x & 0x7FFF)<<16)
- #define TSR3_NRM_CNT(x) ((x & 0xFF)<<24)
- #define TSR3_CRM_CNT(x) (x & 0xFFFF)
- #define TSR4_FLUSH_CONN (1<<31)
- #define TSR4_SESSION_ENDED (1<<30)
- #define TSR4_CRC10 (1<<28)
- #define TSR4_NULL_CRC10 (1<<27)
- #define TSR4_PROT (1<<26)
- #define TSR4_AAL0_SDU (2<<23)
- #define TSR4_AAL0 (1<<23)
- #define TSR4_AAL5 (0<<23)
- #define TSR9_OPEN_CONN (1<<20)
- #define TSR11_ICR(x) ((x & 0x7FFF)<<16)
- #define TSR11_TRM(x) ((x & 0x7)<<13)
- #define TSR11_NRM(x) ((x & 0x7)<<10)
- #define TSR11_ADTF(x) (x & 0x3FF)
- #define TSR13_RDF(x) ((x & 0xF)<<23)
- #define TSR13_RIF(x) ((x & 0xF)<<19)
- #define TSR13_CDF(x) ((x & 0x7)<<16)
- #define TSR13_CRM(x) (x & 0xFFFF)
- #define TSR14_DELETE (1<<31)
- #define TSR14_ABR_CLOSE (1<<16)
- /* 2.7.1 per connection receieve state registers */
- #define RSR0_START_PDU (1<<10)
- #define RSR0_OPEN_CONN (1<<6)
- #define RSR0_CLOSE_CONN (0<<6)
- #define RSR0_PPD_ENABLE (1<<5)
- #define RSR0_EPD_ENABLE (1<<4)
- #define RSR0_TCP_CKSUM (1<<3)
- #define RSR0_AAL5 (0)
- #define RSR0_AAL0 (1)
- #define RSR0_AAL0_SDU (2)
- #define RSR0_RAWCELL (3)
- #define RSR0_RAWCELL_CRC10 (4)
- #define RSR1_AQI_ENABLE (1<<20)
- #define RSR1_RBPL_ONLY (1<<19)
- #define RSR1_GROUP(x) ((x)<<16)
- #define RSR4_AQI_ENABLE (1<<30)
- #define RSR4_GROUP(x) ((x)<<27)
- #define RSR4_RBPL_ONLY (1<<26)
- /* 2.1.4 transmit packet descriptor */
- #define TPD_USERCELL 0x0
- #define TPD_SEGMENT_OAMF5 0x4
- #define TPD_END2END_OAMF5 0x5
- #define TPD_RMCELL 0x6
- #define TPD_CELLTYPE(x) (x<<3)
- #define TPD_EOS (1<<2)
- #define TPD_CLP (1<<1)
- #define TPD_INT (1<<0)
- #define TPD_LST (1<<31)
- /* table 4.3 serial eeprom information */
- #define PROD_ID 0x08 /* char[] */
- #define PROD_ID_LEN 30
- #define HW_REV 0x26 /* char[] */
- #define M_SN 0x3a /* integer */
- #define MEDIA 0x3e /* integer */
- #define HE155MM 0x26
- #define HE622MM 0x27
- #define HE155SM 0x46
- #define HE622SM 0x47
- #define MAC_ADDR 0x42 /* char[] */
- #define CS_LOW 0x0
- #define CS_HIGH ID_CS /* HOST_CNTL_ID_PROM_SEL */
- #define CLK_LOW 0x0
- #define CLK_HIGH ID_CLOCK /* HOST_CNTL_ID_PROM_CLOCK */
- #define SI_HIGH ID_DIN /* HOST_CNTL_ID_PROM_DATA_IN */
- #define EEPROM_DELAY 400 /* microseconds */
- #endif /* _HE_H_ */
|