162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci he.h 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci ForeRunnerHE ATM Adapter driver for ATM on Linux 662306a36Sopenharmony_ci Copyright (C) 1999-2001 Naval Research Laboratory 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci This library is free software; you can redistribute it and/or 962306a36Sopenharmony_ci modify it under the terms of the GNU Lesser General Public 1062306a36Sopenharmony_ci License as published by the Free Software Foundation; either 1162306a36Sopenharmony_ci version 2.1 of the License, or (at your option) any later version. 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci This library is distributed in the hope that it will be useful, 1462306a36Sopenharmony_ci but WITHOUT ANY WARRANTY; without even the implied warranty of 1562306a36Sopenharmony_ci MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1662306a36Sopenharmony_ci Lesser General Public License for more details. 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci You should have received a copy of the GNU Lesser General Public 1962306a36Sopenharmony_ci License along with this library; if not, write to the Free Software 2062306a36Sopenharmony_ci Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci*/ 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci/* 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci he.h 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci ForeRunnerHE ATM Adapter driver for ATM on Linux 2962306a36Sopenharmony_ci Copyright (C) 1999-2000 Naval Research Laboratory 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci Permission to use, copy, modify and distribute this software and its 3262306a36Sopenharmony_ci documentation is hereby granted, provided that both the copyright 3362306a36Sopenharmony_ci notice and this permission notice appear in all copies of the software, 3462306a36Sopenharmony_ci derivative works or modified versions, and any portions thereof, and 3562306a36Sopenharmony_ci that both notices appear in supporting documentation. 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci NRL ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION AND 3862306a36Sopenharmony_ci DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER 3962306a36Sopenharmony_ci RESULTING FROM THE USE OF THIS SOFTWARE. 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci */ 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci#ifndef _HE_H_ 4462306a36Sopenharmony_ci#define _HE_H_ 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci#define DEV_LABEL "he" 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci#define CONFIG_DEFAULT_VCIBITS 12 4962306a36Sopenharmony_ci#define CONFIG_DEFAULT_VPIBITS 0 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci#define CONFIG_IRQ_SIZE 128 5262306a36Sopenharmony_ci#define CONFIG_IRQ_THRESH (CONFIG_IRQ_SIZE/2) 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci#define CONFIG_TPDRQ_SIZE 512 5562306a36Sopenharmony_ci#define TPDRQ_MASK(x) (((unsigned long)(x))&((CONFIG_TPDRQ_SIZE<<3)-1)) 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci#define CONFIG_RBRQ_SIZE 512 5862306a36Sopenharmony_ci#define CONFIG_RBRQ_THRESH 400 5962306a36Sopenharmony_ci#define RBRQ_MASK(x) (((unsigned long)(x))&((CONFIG_RBRQ_SIZE<<3)-1)) 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci#define CONFIG_TBRQ_SIZE 512 6262306a36Sopenharmony_ci#define CONFIG_TBRQ_THRESH 400 6362306a36Sopenharmony_ci#define TBRQ_MASK(x) (((unsigned long)(x))&((CONFIG_TBRQ_SIZE<<2)-1)) 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci#define CONFIG_RBPL_SIZE 512 6662306a36Sopenharmony_ci#define CONFIG_RBPL_THRESH 64 6762306a36Sopenharmony_ci#define CONFIG_RBPL_BUFSIZE 4096 6862306a36Sopenharmony_ci#define RBPL_MASK(x) (((unsigned long)(x))&((CONFIG_RBPL_SIZE<<3)-1)) 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci/* 5.1.3 initialize connection memory */ 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci#define CONFIG_RSRA 0x00000 7362306a36Sopenharmony_ci#define CONFIG_RCMLBM 0x08000 7462306a36Sopenharmony_ci#define CONFIG_RCMABR 0x0d800 7562306a36Sopenharmony_ci#define CONFIG_RSRB 0x0e000 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci#define CONFIG_TSRA 0x00000 7862306a36Sopenharmony_ci#define CONFIG_TSRB 0x08000 7962306a36Sopenharmony_ci#define CONFIG_TSRC 0x0c000 8062306a36Sopenharmony_ci#define CONFIG_TSRD 0x0e000 8162306a36Sopenharmony_ci#define CONFIG_TMABR 0x0f000 8262306a36Sopenharmony_ci#define CONFIG_TPDBA 0x10000 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_ci#define HE_MAXCIDBITS 12 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ci/* 2.9.3.3 interrupt encodings */ 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_cistruct he_irq { 8962306a36Sopenharmony_ci volatile u32 isw; 9062306a36Sopenharmony_ci}; 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci#define IRQ_ALIGNMENT 0x1000 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci#define NEXT_ENTRY(base, tail, mask) \ 9562306a36Sopenharmony_ci (((unsigned long)base)|(((unsigned long)(tail+1))&mask)) 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci#define ITYPE_INVALID 0xffffffff 9862306a36Sopenharmony_ci#define ITYPE_TBRQ_THRESH (0<<3) 9962306a36Sopenharmony_ci#define ITYPE_TPD_COMPLETE (1<<3) 10062306a36Sopenharmony_ci#define ITYPE_RBPS_THRESH (2<<3) 10162306a36Sopenharmony_ci#define ITYPE_RBPL_THRESH (3<<3) 10262306a36Sopenharmony_ci#define ITYPE_RBRQ_THRESH (4<<3) 10362306a36Sopenharmony_ci#define ITYPE_RBRQ_TIMER (5<<3) 10462306a36Sopenharmony_ci#define ITYPE_PHY (6<<3) 10562306a36Sopenharmony_ci#define ITYPE_OTHER 0x80 10662306a36Sopenharmony_ci#define ITYPE_PARITY 0x81 10762306a36Sopenharmony_ci#define ITYPE_ABORT 0x82 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci#define ITYPE_GROUP(x) (x & 0x7) 11062306a36Sopenharmony_ci#define ITYPE_TYPE(x) (x & 0xf8) 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci#define HE_NUM_GROUPS 8 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci/* 2.1.4 transmit packet descriptor */ 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_cistruct he_tpd { 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ci /* read by the adapter */ 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci volatile u32 status; 12162306a36Sopenharmony_ci volatile u32 reserved; 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci#define TPD_MAXIOV 3 12462306a36Sopenharmony_ci struct { 12562306a36Sopenharmony_ci u32 addr, len; 12662306a36Sopenharmony_ci } iovec[TPD_MAXIOV]; 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci#define address0 iovec[0].addr 12962306a36Sopenharmony_ci#define length0 iovec[0].len 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci /* linux-atm extensions */ 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_ci struct sk_buff *skb; 13462306a36Sopenharmony_ci struct atm_vcc *vcc; 13562306a36Sopenharmony_ci 13662306a36Sopenharmony_ci struct list_head entry; 13762306a36Sopenharmony_ci}; 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci#define TPD_ALIGNMENT 64 14062306a36Sopenharmony_ci#define TPD_LEN_MASK 0xffff 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci#define TPD_ADDR_SHIFT 6 14362306a36Sopenharmony_ci#define TPD_MASK 0xffffffc0 14462306a36Sopenharmony_ci#define TPD_ADDR(x) ((x) & TPD_MASK) 14562306a36Sopenharmony_ci#define TPD_INDEX(x) (TPD_ADDR(x) >> TPD_ADDR_SHIFT) 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ci/* table 2.3 transmit buffer return elements */ 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_cistruct he_tbrq { 15162306a36Sopenharmony_ci volatile u32 tbre; 15262306a36Sopenharmony_ci}; 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ci#define TBRQ_ALIGNMENT CONFIG_TBRQ_SIZE 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci#define TBRQ_TPD(tbrq) ((tbrq)->tbre & 0xffffffc0) 15762306a36Sopenharmony_ci#define TBRQ_EOS(tbrq) ((tbrq)->tbre & (1<<3)) 15862306a36Sopenharmony_ci#define TBRQ_MULTIPLE(tbrq) ((tbrq)->tbre & (1)) 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci/* table 2.21 receive buffer return queue element field organization */ 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_cistruct he_rbrq { 16362306a36Sopenharmony_ci volatile u32 addr; 16462306a36Sopenharmony_ci volatile u32 cidlen; 16562306a36Sopenharmony_ci}; 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci#define RBRQ_ALIGNMENT CONFIG_RBRQ_SIZE 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ci#define RBRQ_ADDR(rbrq) ((rbrq)->addr & 0xffffffc0) 17062306a36Sopenharmony_ci#define RBRQ_CRC_ERR(rbrq) ((rbrq)->addr & (1<<5)) 17162306a36Sopenharmony_ci#define RBRQ_LEN_ERR(rbrq) ((rbrq)->addr & (1<<4)) 17262306a36Sopenharmony_ci#define RBRQ_END_PDU(rbrq) ((rbrq)->addr & (1<<3)) 17362306a36Sopenharmony_ci#define RBRQ_AAL5_PROT(rbrq) ((rbrq)->addr & (1<<2)) 17462306a36Sopenharmony_ci#define RBRQ_CON_CLOSED(rbrq) ((rbrq)->addr & (1<<1)) 17562306a36Sopenharmony_ci#define RBRQ_HBUF_ERR(rbrq) ((rbrq)->addr & 1) 17662306a36Sopenharmony_ci#define RBRQ_CID(rbrq) (((rbrq)->cidlen >> 16) & 0x1fff) 17762306a36Sopenharmony_ci#define RBRQ_BUFLEN(rbrq) ((rbrq)->cidlen & 0xffff) 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci/* figure 2.3 transmit packet descriptor ready queue */ 18062306a36Sopenharmony_ci 18162306a36Sopenharmony_cistruct he_tpdrq { 18262306a36Sopenharmony_ci volatile u32 tpd; 18362306a36Sopenharmony_ci volatile u32 cid; 18462306a36Sopenharmony_ci}; 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_ci#define TPDRQ_ALIGNMENT CONFIG_TPDRQ_SIZE 18762306a36Sopenharmony_ci 18862306a36Sopenharmony_ci/* table 2.30 host status page detail */ 18962306a36Sopenharmony_ci 19062306a36Sopenharmony_ci#define HSP_ALIGNMENT 0x400 /* must align on 1k boundary */ 19162306a36Sopenharmony_ci 19262306a36Sopenharmony_cistruct he_hsp { 19362306a36Sopenharmony_ci struct he_hsp_entry { 19462306a36Sopenharmony_ci volatile u32 tbrq_tail; 19562306a36Sopenharmony_ci volatile u32 reserved1[15]; 19662306a36Sopenharmony_ci volatile u32 rbrq_tail; 19762306a36Sopenharmony_ci volatile u32 reserved2[15]; 19862306a36Sopenharmony_ci } group[HE_NUM_GROUPS]; 19962306a36Sopenharmony_ci}; 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ci/* 20262306a36Sopenharmony_ci * figure 2.9 receive buffer pools 20362306a36Sopenharmony_ci * 20462306a36Sopenharmony_ci * since a virtual address might be more than 32 bits, we store an index 20562306a36Sopenharmony_ci * in the virt member of he_rbp. NOTE: the lower six bits in the rbrq 20662306a36Sopenharmony_ci * addr member are used for buffer status further limiting us to 26 bits. 20762306a36Sopenharmony_ci */ 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_cistruct he_rbp { 21062306a36Sopenharmony_ci volatile u32 phys; 21162306a36Sopenharmony_ci volatile u32 idx; /* virt */ 21262306a36Sopenharmony_ci}; 21362306a36Sopenharmony_ci 21462306a36Sopenharmony_ci#define RBP_IDX_OFFSET 6 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci/* 21762306a36Sopenharmony_ci * the he dma engine will try to hold an extra 16 buffers in its local 21862306a36Sopenharmony_ci * caches. and add a couple buffers for safety. 21962306a36Sopenharmony_ci */ 22062306a36Sopenharmony_ci 22162306a36Sopenharmony_ci#define RBPL_TABLE_SIZE (CONFIG_RBPL_SIZE + 16 + 2) 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_cistruct he_buff { 22462306a36Sopenharmony_ci struct list_head entry; 22562306a36Sopenharmony_ci dma_addr_t mapping; 22662306a36Sopenharmony_ci unsigned long len; 22762306a36Sopenharmony_ci u8 data[]; 22862306a36Sopenharmony_ci}; 22962306a36Sopenharmony_ci 23062306a36Sopenharmony_ci#ifdef notyet 23162306a36Sopenharmony_cistruct he_group { 23262306a36Sopenharmony_ci u32 rpbl_size, rpbl_qsize; 23362306a36Sopenharmony_ci struct he_rpb_entry *rbpl_ba; 23462306a36Sopenharmony_ci}; 23562306a36Sopenharmony_ci#endif 23662306a36Sopenharmony_ci 23762306a36Sopenharmony_ci#define HE_LOOKUP_VCC(dev, cid) ((dev)->he_vcc_table[(cid)].vcc) 23862306a36Sopenharmony_ci 23962306a36Sopenharmony_cistruct he_vcc_table 24062306a36Sopenharmony_ci{ 24162306a36Sopenharmony_ci struct atm_vcc *vcc; 24262306a36Sopenharmony_ci}; 24362306a36Sopenharmony_ci 24462306a36Sopenharmony_cistruct he_cs_stper 24562306a36Sopenharmony_ci{ 24662306a36Sopenharmony_ci long pcr; 24762306a36Sopenharmony_ci int inuse; 24862306a36Sopenharmony_ci}; 24962306a36Sopenharmony_ci 25062306a36Sopenharmony_ci#define HE_NUM_CS_STPER 16 25162306a36Sopenharmony_ci 25262306a36Sopenharmony_cistruct he_dev { 25362306a36Sopenharmony_ci unsigned int number; 25462306a36Sopenharmony_ci unsigned int irq; 25562306a36Sopenharmony_ci void __iomem *membase; 25662306a36Sopenharmony_ci 25762306a36Sopenharmony_ci char prod_id[30]; 25862306a36Sopenharmony_ci char mac_addr[6]; 25962306a36Sopenharmony_ci int media; 26062306a36Sopenharmony_ci 26162306a36Sopenharmony_ci unsigned int vcibits, vpibits; 26262306a36Sopenharmony_ci unsigned int cells_per_row; 26362306a36Sopenharmony_ci unsigned int bytes_per_row; 26462306a36Sopenharmony_ci unsigned int cells_per_lbuf; 26562306a36Sopenharmony_ci unsigned int r0_numrows, r0_startrow, r0_numbuffs; 26662306a36Sopenharmony_ci unsigned int r1_numrows, r1_startrow, r1_numbuffs; 26762306a36Sopenharmony_ci unsigned int tx_numrows, tx_startrow, tx_numbuffs; 26862306a36Sopenharmony_ci unsigned int buffer_limit; 26962306a36Sopenharmony_ci 27062306a36Sopenharmony_ci struct he_vcc_table *he_vcc_table; 27162306a36Sopenharmony_ci 27262306a36Sopenharmony_ci#ifdef notyet 27362306a36Sopenharmony_ci struct he_group group[HE_NUM_GROUPS]; 27462306a36Sopenharmony_ci#endif 27562306a36Sopenharmony_ci struct he_cs_stper cs_stper[HE_NUM_CS_STPER]; 27662306a36Sopenharmony_ci unsigned total_bw; 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_ci dma_addr_t irq_phys; 27962306a36Sopenharmony_ci struct he_irq *irq_base, *irq_head, *irq_tail; 28062306a36Sopenharmony_ci volatile unsigned *irq_tailoffset; 28162306a36Sopenharmony_ci int irq_peak; 28262306a36Sopenharmony_ci 28362306a36Sopenharmony_ci struct tasklet_struct tasklet; 28462306a36Sopenharmony_ci struct dma_pool *tpd_pool; 28562306a36Sopenharmony_ci struct list_head outstanding_tpds; 28662306a36Sopenharmony_ci 28762306a36Sopenharmony_ci dma_addr_t tpdrq_phys; 28862306a36Sopenharmony_ci struct he_tpdrq *tpdrq_base, *tpdrq_tail, *tpdrq_head; 28962306a36Sopenharmony_ci 29062306a36Sopenharmony_ci spinlock_t global_lock; /* 8.1.5 pci transaction ordering 29162306a36Sopenharmony_ci error problem */ 29262306a36Sopenharmony_ci dma_addr_t rbrq_phys; 29362306a36Sopenharmony_ci struct he_rbrq *rbrq_base, *rbrq_head; 29462306a36Sopenharmony_ci int rbrq_peak; 29562306a36Sopenharmony_ci 29662306a36Sopenharmony_ci struct he_buff **rbpl_virt; 29762306a36Sopenharmony_ci unsigned long *rbpl_table; 29862306a36Sopenharmony_ci unsigned long rbpl_hint; 29962306a36Sopenharmony_ci struct dma_pool *rbpl_pool; 30062306a36Sopenharmony_ci dma_addr_t rbpl_phys; 30162306a36Sopenharmony_ci struct he_rbp *rbpl_base, *rbpl_tail; 30262306a36Sopenharmony_ci struct list_head rbpl_outstanding; 30362306a36Sopenharmony_ci int rbpl_peak; 30462306a36Sopenharmony_ci 30562306a36Sopenharmony_ci dma_addr_t tbrq_phys; 30662306a36Sopenharmony_ci struct he_tbrq *tbrq_base, *tbrq_head; 30762306a36Sopenharmony_ci int tbrq_peak; 30862306a36Sopenharmony_ci 30962306a36Sopenharmony_ci dma_addr_t hsp_phys; 31062306a36Sopenharmony_ci struct he_hsp *hsp; 31162306a36Sopenharmony_ci 31262306a36Sopenharmony_ci struct pci_dev *pci_dev; 31362306a36Sopenharmony_ci struct atm_dev *atm_dev; 31462306a36Sopenharmony_ci struct he_dev *next; 31562306a36Sopenharmony_ci}; 31662306a36Sopenharmony_ci 31762306a36Sopenharmony_ci#define HE_MAXIOV 20 31862306a36Sopenharmony_ci 31962306a36Sopenharmony_cistruct he_vcc 32062306a36Sopenharmony_ci{ 32162306a36Sopenharmony_ci struct list_head buffers; 32262306a36Sopenharmony_ci int pdu_len; 32362306a36Sopenharmony_ci int rc_index; 32462306a36Sopenharmony_ci 32562306a36Sopenharmony_ci wait_queue_head_t rx_waitq; 32662306a36Sopenharmony_ci wait_queue_head_t tx_waitq; 32762306a36Sopenharmony_ci}; 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_ci#define HE_VCC(vcc) ((struct he_vcc *)(vcc->dev_data)) 33062306a36Sopenharmony_ci 33162306a36Sopenharmony_ci#define PCI_VENDOR_ID_FORE 0x1127 33262306a36Sopenharmony_ci#define PCI_DEVICE_ID_FORE_HE 0x400 33362306a36Sopenharmony_ci 33462306a36Sopenharmony_ci#define GEN_CNTL_0 0x40 33562306a36Sopenharmony_ci#define INT_PROC_ENBL (1<<25) 33662306a36Sopenharmony_ci#define SLAVE_ENDIAN_MODE (1<<16) 33762306a36Sopenharmony_ci#define MRL_ENB (1<<5) 33862306a36Sopenharmony_ci#define MRM_ENB (1<<4) 33962306a36Sopenharmony_ci#define INIT_ENB (1<<2) 34062306a36Sopenharmony_ci#define IGNORE_TIMEOUT (1<<1) 34162306a36Sopenharmony_ci#define ENBL_64 (1<<0) 34262306a36Sopenharmony_ci 34362306a36Sopenharmony_ci#define MIN_PCI_LATENCY 32 /* errata 8.1.3 */ 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_ci#define HE_DEV(dev) ((struct he_dev *) (dev)->dev_data) 34662306a36Sopenharmony_ci 34762306a36Sopenharmony_ci#define he_is622(dev) ((dev)->media & 0x1) 34862306a36Sopenharmony_ci#define he_isMM(dev) ((dev)->media & 0x20) 34962306a36Sopenharmony_ci 35062306a36Sopenharmony_ci#define HE_REGMAP_SIZE 0x100000 35162306a36Sopenharmony_ci 35262306a36Sopenharmony_ci#define RESET_CNTL 0x80000 35362306a36Sopenharmony_ci#define BOARD_RST_STATUS (1<<6) 35462306a36Sopenharmony_ci 35562306a36Sopenharmony_ci#define HOST_CNTL 0x80004 35662306a36Sopenharmony_ci#define PCI_BUS_SIZE64 (1<<27) 35762306a36Sopenharmony_ci#define DESC_RD_STATIC_64 (1<<26) 35862306a36Sopenharmony_ci#define DATA_RD_STATIC_64 (1<<25) 35962306a36Sopenharmony_ci#define DATA_WR_STATIC_64 (1<<24) 36062306a36Sopenharmony_ci#define ID_CS (1<<12) 36162306a36Sopenharmony_ci#define ID_WREN (1<<11) 36262306a36Sopenharmony_ci#define ID_DOUT (1<<10) 36362306a36Sopenharmony_ci#define ID_DOFFSET 10 36462306a36Sopenharmony_ci#define ID_DIN (1<<9) 36562306a36Sopenharmony_ci#define ID_CLOCK (1<<8) 36662306a36Sopenharmony_ci#define QUICK_RD_RETRY (1<<7) 36762306a36Sopenharmony_ci#define QUICK_WR_RETRY (1<<6) 36862306a36Sopenharmony_ci#define OUTFF_ENB (1<<5) 36962306a36Sopenharmony_ci#define CMDFF_ENB (1<<4) 37062306a36Sopenharmony_ci#define PERR_INT_ENB (1<<2) 37162306a36Sopenharmony_ci#define IGNORE_INTR (1<<0) 37262306a36Sopenharmony_ci 37362306a36Sopenharmony_ci#define LB_SWAP 0x80008 37462306a36Sopenharmony_ci#define SWAP_RNUM_MAX(x) (x<<27) 37562306a36Sopenharmony_ci#define DATA_WR_SWAP (1<<20) 37662306a36Sopenharmony_ci#define DESC_RD_SWAP (1<<19) 37762306a36Sopenharmony_ci#define DATA_RD_SWAP (1<<18) 37862306a36Sopenharmony_ci#define INTR_SWAP (1<<17) 37962306a36Sopenharmony_ci#define DESC_WR_SWAP (1<<16) 38062306a36Sopenharmony_ci#define SDRAM_INIT (1<<15) 38162306a36Sopenharmony_ci#define BIG_ENDIAN_HOST (1<<14) 38262306a36Sopenharmony_ci#define XFER_SIZE (1<<7) 38362306a36Sopenharmony_ci 38462306a36Sopenharmony_ci#define LB_MEM_ADDR 0x8000c 38562306a36Sopenharmony_ci#define LB_MEM_DATA 0x80010 38662306a36Sopenharmony_ci 38762306a36Sopenharmony_ci#define LB_MEM_ACCESS 0x80014 38862306a36Sopenharmony_ci#define LB_MEM_HNDSHK (1<<30) 38962306a36Sopenharmony_ci#define LM_MEM_WRITE (0x7) 39062306a36Sopenharmony_ci#define LM_MEM_READ (0x3) 39162306a36Sopenharmony_ci 39262306a36Sopenharmony_ci#define SDRAM_CTL 0x80018 39362306a36Sopenharmony_ci#define LB_64_ENB (1<<3) 39462306a36Sopenharmony_ci#define LB_TWR (1<<2) 39562306a36Sopenharmony_ci#define LB_TRP (1<<1) 39662306a36Sopenharmony_ci#define LB_TRAS (1<<0) 39762306a36Sopenharmony_ci 39862306a36Sopenharmony_ci#define INT_FIFO 0x8001c 39962306a36Sopenharmony_ci#define INT_MASK_D (1<<15) 40062306a36Sopenharmony_ci#define INT_MASK_C (1<<14) 40162306a36Sopenharmony_ci#define INT_MASK_B (1<<13) 40262306a36Sopenharmony_ci#define INT_MASK_A (1<<12) 40362306a36Sopenharmony_ci#define INT_CLEAR_D (1<<11) 40462306a36Sopenharmony_ci#define INT_CLEAR_C (1<<10) 40562306a36Sopenharmony_ci#define INT_CLEAR_B (1<<9) 40662306a36Sopenharmony_ci#define INT_CLEAR_A (1<<8) 40762306a36Sopenharmony_ci 40862306a36Sopenharmony_ci#define ABORT_ADDR 0x80020 40962306a36Sopenharmony_ci 41062306a36Sopenharmony_ci#define IRQ0_BASE 0x80080 41162306a36Sopenharmony_ci#define IRQ_BASE(x) (x<<12) 41262306a36Sopenharmony_ci#define IRQ_MASK ((CONFIG_IRQ_SIZE<<2)-1) /* was 0x3ff */ 41362306a36Sopenharmony_ci#define IRQ_TAIL(x) (((unsigned long)(x)) & IRQ_MASK) 41462306a36Sopenharmony_ci#define IRQ0_HEAD 0x80084 41562306a36Sopenharmony_ci#define IRQ_SIZE(x) (x<<22) 41662306a36Sopenharmony_ci#define IRQ_THRESH(x) (x<<12) 41762306a36Sopenharmony_ci#define IRQ_HEAD(x) (x<<2) 41862306a36Sopenharmony_ci/* #define IRQ_PENDING (1) conflict with linux/irq.h */ 41962306a36Sopenharmony_ci#define IRQ0_CNTL 0x80088 42062306a36Sopenharmony_ci#define IRQ_ADDRSEL(x) (x<<2) 42162306a36Sopenharmony_ci#define IRQ_INT_A (0<<2) 42262306a36Sopenharmony_ci#define IRQ_INT_B (1<<2) 42362306a36Sopenharmony_ci#define IRQ_INT_C (2<<2) 42462306a36Sopenharmony_ci#define IRQ_INT_D (3<<2) 42562306a36Sopenharmony_ci#define IRQ_TYPE_ADDR 0x1 42662306a36Sopenharmony_ci#define IRQ_TYPE_LINE 0x0 42762306a36Sopenharmony_ci#define IRQ0_DATA 0x8008c 42862306a36Sopenharmony_ci 42962306a36Sopenharmony_ci#define IRQ1_BASE 0x80090 43062306a36Sopenharmony_ci#define IRQ1_HEAD 0x80094 43162306a36Sopenharmony_ci#define IRQ1_CNTL 0x80098 43262306a36Sopenharmony_ci#define IRQ1_DATA 0x8009c 43362306a36Sopenharmony_ci 43462306a36Sopenharmony_ci#define IRQ2_BASE 0x800a0 43562306a36Sopenharmony_ci#define IRQ2_HEAD 0x800a4 43662306a36Sopenharmony_ci#define IRQ2_CNTL 0x800a8 43762306a36Sopenharmony_ci#define IRQ2_DATA 0x800ac 43862306a36Sopenharmony_ci 43962306a36Sopenharmony_ci#define IRQ3_BASE 0x800b0 44062306a36Sopenharmony_ci#define IRQ3_HEAD 0x800b4 44162306a36Sopenharmony_ci#define IRQ3_CNTL 0x800b8 44262306a36Sopenharmony_ci#define IRQ3_DATA 0x800bc 44362306a36Sopenharmony_ci 44462306a36Sopenharmony_ci#define GRP_10_MAP 0x800c0 44562306a36Sopenharmony_ci#define GRP_32_MAP 0x800c4 44662306a36Sopenharmony_ci#define GRP_54_MAP 0x800c8 44762306a36Sopenharmony_ci#define GRP_76_MAP 0x800cc 44862306a36Sopenharmony_ci 44962306a36Sopenharmony_ci#define G0_RBPS_S 0x80400 45062306a36Sopenharmony_ci#define G0_RBPS_T 0x80404 45162306a36Sopenharmony_ci#define RBP_TAIL(x) ((x)<<3) 45262306a36Sopenharmony_ci#define RBP_MASK(x) ((x)|0x1fff) 45362306a36Sopenharmony_ci#define G0_RBPS_QI 0x80408 45462306a36Sopenharmony_ci#define RBP_QSIZE(x) ((x)<<14) 45562306a36Sopenharmony_ci#define RBP_INT_ENB (1<<13) 45662306a36Sopenharmony_ci#define RBP_THRESH(x) (x) 45762306a36Sopenharmony_ci#define G0_RBPS_BS 0x8040c 45862306a36Sopenharmony_ci#define G0_RBPL_S 0x80410 45962306a36Sopenharmony_ci#define G0_RBPL_T 0x80414 46062306a36Sopenharmony_ci#define G0_RBPL_QI 0x80418 46162306a36Sopenharmony_ci#define G0_RBPL_BS 0x8041c 46262306a36Sopenharmony_ci 46362306a36Sopenharmony_ci#define G1_RBPS_S 0x80420 46462306a36Sopenharmony_ci#define G1_RBPS_T 0x80424 46562306a36Sopenharmony_ci#define G1_RBPS_QI 0x80428 46662306a36Sopenharmony_ci#define G1_RBPS_BS 0x8042c 46762306a36Sopenharmony_ci#define G1_RBPL_S 0x80430 46862306a36Sopenharmony_ci#define G1_RBPL_T 0x80434 46962306a36Sopenharmony_ci#define G1_RBPL_QI 0x80438 47062306a36Sopenharmony_ci#define G1_RBPL_BS 0x8043c 47162306a36Sopenharmony_ci 47262306a36Sopenharmony_ci#define G2_RBPS_S 0x80440 47362306a36Sopenharmony_ci#define G2_RBPS_T 0x80444 47462306a36Sopenharmony_ci#define G2_RBPS_QI 0x80448 47562306a36Sopenharmony_ci#define G2_RBPS_BS 0x8044c 47662306a36Sopenharmony_ci#define G2_RBPL_S 0x80450 47762306a36Sopenharmony_ci#define G2_RBPL_T 0x80454 47862306a36Sopenharmony_ci#define G2_RBPL_QI 0x80458 47962306a36Sopenharmony_ci#define G2_RBPL_BS 0x8045c 48062306a36Sopenharmony_ci 48162306a36Sopenharmony_ci#define G3_RBPS_S 0x80460 48262306a36Sopenharmony_ci#define G3_RBPS_T 0x80464 48362306a36Sopenharmony_ci#define G3_RBPS_QI 0x80468 48462306a36Sopenharmony_ci#define G3_RBPS_BS 0x8046c 48562306a36Sopenharmony_ci#define G3_RBPL_S 0x80470 48662306a36Sopenharmony_ci#define G3_RBPL_T 0x80474 48762306a36Sopenharmony_ci#define G3_RBPL_QI 0x80478 48862306a36Sopenharmony_ci#define G3_RBPL_BS 0x8047c 48962306a36Sopenharmony_ci 49062306a36Sopenharmony_ci#define G4_RBPS_S 0x80480 49162306a36Sopenharmony_ci#define G4_RBPS_T 0x80484 49262306a36Sopenharmony_ci#define G4_RBPS_QI 0x80488 49362306a36Sopenharmony_ci#define G4_RBPS_BS 0x8048c 49462306a36Sopenharmony_ci#define G4_RBPL_S 0x80490 49562306a36Sopenharmony_ci#define G4_RBPL_T 0x80494 49662306a36Sopenharmony_ci#define G4_RBPL_QI 0x80498 49762306a36Sopenharmony_ci#define G4_RBPL_BS 0x8049c 49862306a36Sopenharmony_ci 49962306a36Sopenharmony_ci#define G5_RBPS_S 0x804a0 50062306a36Sopenharmony_ci#define G5_RBPS_T 0x804a4 50162306a36Sopenharmony_ci#define G5_RBPS_QI 0x804a8 50262306a36Sopenharmony_ci#define G5_RBPS_BS 0x804ac 50362306a36Sopenharmony_ci#define G5_RBPL_S 0x804b0 50462306a36Sopenharmony_ci#define G5_RBPL_T 0x804b4 50562306a36Sopenharmony_ci#define G5_RBPL_QI 0x804b8 50662306a36Sopenharmony_ci#define G5_RBPL_BS 0x804bc 50762306a36Sopenharmony_ci 50862306a36Sopenharmony_ci#define G6_RBPS_S 0x804c0 50962306a36Sopenharmony_ci#define G6_RBPS_T 0x804c4 51062306a36Sopenharmony_ci#define G6_RBPS_QI 0x804c8 51162306a36Sopenharmony_ci#define G6_RBPS_BS 0x804cc 51262306a36Sopenharmony_ci#define G6_RBPL_S 0x804d0 51362306a36Sopenharmony_ci#define G6_RBPL_T 0x804d4 51462306a36Sopenharmony_ci#define G6_RBPL_QI 0x804d8 51562306a36Sopenharmony_ci#define G6_RBPL_BS 0x804dc 51662306a36Sopenharmony_ci 51762306a36Sopenharmony_ci#define G7_RBPS_S 0x804e0 51862306a36Sopenharmony_ci#define G7_RBPS_T 0x804e4 51962306a36Sopenharmony_ci#define G7_RBPS_QI 0x804e8 52062306a36Sopenharmony_ci#define G7_RBPS_BS 0x804ec 52162306a36Sopenharmony_ci 52262306a36Sopenharmony_ci#define G7_RBPL_S 0x804f0 52362306a36Sopenharmony_ci#define G7_RBPL_T 0x804f4 52462306a36Sopenharmony_ci#define G7_RBPL_QI 0x804f8 52562306a36Sopenharmony_ci#define G7_RBPL_BS 0x804fc 52662306a36Sopenharmony_ci 52762306a36Sopenharmony_ci#define G0_RBRQ_ST 0x80500 52862306a36Sopenharmony_ci#define G0_RBRQ_H 0x80504 52962306a36Sopenharmony_ci#define G0_RBRQ_Q 0x80508 53062306a36Sopenharmony_ci#define RBRQ_THRESH(x) ((x)<<13) 53162306a36Sopenharmony_ci#define RBRQ_SIZE(x) (x) 53262306a36Sopenharmony_ci#define G0_RBRQ_I 0x8050c 53362306a36Sopenharmony_ci#define RBRQ_TIME(x) ((x)<<8) 53462306a36Sopenharmony_ci#define RBRQ_COUNT(x) (x) 53562306a36Sopenharmony_ci 53662306a36Sopenharmony_ci/* fill in 1 ... 7 later */ 53762306a36Sopenharmony_ci 53862306a36Sopenharmony_ci#define G0_TBRQ_B_T 0x80600 53962306a36Sopenharmony_ci#define G0_TBRQ_H 0x80604 54062306a36Sopenharmony_ci#define G0_TBRQ_S 0x80608 54162306a36Sopenharmony_ci#define G0_TBRQ_THRESH 0x8060c 54262306a36Sopenharmony_ci#define TBRQ_THRESH(x) (x) 54362306a36Sopenharmony_ci 54462306a36Sopenharmony_ci/* fill in 1 ... 7 later */ 54562306a36Sopenharmony_ci 54662306a36Sopenharmony_ci#define RH_CONFIG 0x805c0 54762306a36Sopenharmony_ci#define PHY_INT_ENB (1<<10) 54862306a36Sopenharmony_ci#define OAM_GID(x) (x<<7) 54962306a36Sopenharmony_ci#define PTMR_PRE(x) (x) 55062306a36Sopenharmony_ci 55162306a36Sopenharmony_ci#define G0_INMQ_S 0x80580 55262306a36Sopenharmony_ci#define G0_INMQ_L 0x80584 55362306a36Sopenharmony_ci#define G1_INMQ_S 0x80588 55462306a36Sopenharmony_ci#define G1_INMQ_L 0x8058c 55562306a36Sopenharmony_ci#define G2_INMQ_S 0x80590 55662306a36Sopenharmony_ci#define G2_INMQ_L 0x80594 55762306a36Sopenharmony_ci#define G3_INMQ_S 0x80598 55862306a36Sopenharmony_ci#define G3_INMQ_L 0x8059c 55962306a36Sopenharmony_ci#define G4_INMQ_S 0x805a0 56062306a36Sopenharmony_ci#define G4_INMQ_L 0x805a4 56162306a36Sopenharmony_ci#define G5_INMQ_S 0x805a8 56262306a36Sopenharmony_ci#define G5_INMQ_L 0x805ac 56362306a36Sopenharmony_ci#define G6_INMQ_S 0x805b0 56462306a36Sopenharmony_ci#define G6_INMQ_L 0x805b4 56562306a36Sopenharmony_ci#define G7_INMQ_S 0x805b8 56662306a36Sopenharmony_ci#define G7_INMQ_L 0x805bc 56762306a36Sopenharmony_ci 56862306a36Sopenharmony_ci#define TPDRQ_B_H 0x80680 56962306a36Sopenharmony_ci#define TPDRQ_T 0x80684 57062306a36Sopenharmony_ci#define TPDRQ_S 0x80688 57162306a36Sopenharmony_ci 57262306a36Sopenharmony_ci#define UBUFF_BA 0x8068c 57362306a36Sopenharmony_ci 57462306a36Sopenharmony_ci#define RLBF0_H 0x806c0 57562306a36Sopenharmony_ci#define RLBF0_T 0x806c4 57662306a36Sopenharmony_ci#define RLBF1_H 0x806c8 57762306a36Sopenharmony_ci#define RLBF1_T 0x806cc 57862306a36Sopenharmony_ci#define RLBC_H 0x806d0 57962306a36Sopenharmony_ci#define RLBC_T 0x806d4 58062306a36Sopenharmony_ci#define RLBC_H2 0x806d8 58162306a36Sopenharmony_ci#define TLBF_H 0x806e0 58262306a36Sopenharmony_ci#define TLBF_T 0x806e4 58362306a36Sopenharmony_ci#define RLBF0_C 0x806e8 58462306a36Sopenharmony_ci#define RLBF1_C 0x806ec 58562306a36Sopenharmony_ci#define RXTHRSH 0x806f0 58662306a36Sopenharmony_ci#define LITHRSH 0x806f4 58762306a36Sopenharmony_ci 58862306a36Sopenharmony_ci#define LBARB 0x80700 58962306a36Sopenharmony_ci#define SLICE_X(x) (x<<28) 59062306a36Sopenharmony_ci#define ARB_RNUM_MAX(x) (x<<23) 59162306a36Sopenharmony_ci#define TH_PRTY(x) (x<<21) 59262306a36Sopenharmony_ci#define RH_PRTY(x) (x<<19) 59362306a36Sopenharmony_ci#define TL_PRTY(x) (x<<17) 59462306a36Sopenharmony_ci#define RL_PRTY(x) (x<<15) 59562306a36Sopenharmony_ci#define BUS_MULTI(x) (x<<8) 59662306a36Sopenharmony_ci#define NET_PREF(x) (x) 59762306a36Sopenharmony_ci 59862306a36Sopenharmony_ci#define SDRAMCON 0x80704 59962306a36Sopenharmony_ci#define BANK_ON (1<<14) 60062306a36Sopenharmony_ci#define WIDE_DATA (1<<13) 60162306a36Sopenharmony_ci#define TWR_WAIT (1<<12) 60262306a36Sopenharmony_ci#define TRP_WAIT (1<<11) 60362306a36Sopenharmony_ci#define TRAS_WAIT (1<<10) 60462306a36Sopenharmony_ci#define REF_RATE(x) (x) 60562306a36Sopenharmony_ci 60662306a36Sopenharmony_ci#define LBSTAT 0x80708 60762306a36Sopenharmony_ci 60862306a36Sopenharmony_ci#define RCC_STAT 0x8070c 60962306a36Sopenharmony_ci#define RCC_BUSY (1) 61062306a36Sopenharmony_ci 61162306a36Sopenharmony_ci#define TCMCONFIG 0x80740 61262306a36Sopenharmony_ci#define TM_DESL2 (1<<10) 61362306a36Sopenharmony_ci#define TM_BANK_WAIT(x) (x<<6) 61462306a36Sopenharmony_ci#define TM_ADD_BANK4(x) (x<<4) 61562306a36Sopenharmony_ci#define TM_PAR_CHECK(x) (x<<3) 61662306a36Sopenharmony_ci#define TM_RW_WAIT(x) (x<<2) 61762306a36Sopenharmony_ci#define TM_SRAM_TYPE(x) (x) 61862306a36Sopenharmony_ci 61962306a36Sopenharmony_ci#define TSRB_BA 0x80744 62062306a36Sopenharmony_ci#define TSRC_BA 0x80748 62162306a36Sopenharmony_ci#define TMABR_BA 0x8074c 62262306a36Sopenharmony_ci#define TPD_BA 0x80750 62362306a36Sopenharmony_ci#define TSRD_BA 0x80758 62462306a36Sopenharmony_ci 62562306a36Sopenharmony_ci#define TX_CONFIG 0x80760 62662306a36Sopenharmony_ci#define DRF_THRESH(x) (x<<22) 62762306a36Sopenharmony_ci#define TX_UT_MODE(x) (x<<21) 62862306a36Sopenharmony_ci#define TX_VCI_MASK(x) (x<<17) 62962306a36Sopenharmony_ci#define LBFREE_CNT(x) (x) 63062306a36Sopenharmony_ci 63162306a36Sopenharmony_ci#define TXAAL5_PROTO 0x80764 63262306a36Sopenharmony_ci#define CPCS_UU(x) (x<<8) 63362306a36Sopenharmony_ci#define CPI(x) (x) 63462306a36Sopenharmony_ci 63562306a36Sopenharmony_ci#define RCMCONFIG 0x80780 63662306a36Sopenharmony_ci#define RM_DESL2(x) (x<<10) 63762306a36Sopenharmony_ci#define RM_BANK_WAIT(x) (x<<6) 63862306a36Sopenharmony_ci#define RM_ADD_BANK(x) (x<<4) 63962306a36Sopenharmony_ci#define RM_PAR_CHECK(x) (x<<3) 64062306a36Sopenharmony_ci#define RM_RW_WAIT(x) (x<<2) 64162306a36Sopenharmony_ci#define RM_SRAM_TYPE(x) (x) 64262306a36Sopenharmony_ci 64362306a36Sopenharmony_ci#define RCMRSRB_BA 0x80784 64462306a36Sopenharmony_ci#define RCMLBM_BA 0x80788 64562306a36Sopenharmony_ci#define RCMABR_BA 0x8078c 64662306a36Sopenharmony_ci 64762306a36Sopenharmony_ci#define RC_CONFIG 0x807c0 64862306a36Sopenharmony_ci#define UT_RD_DELAY(x) (x<<11) 64962306a36Sopenharmony_ci#define WRAP_MODE(x) (x<<10) 65062306a36Sopenharmony_ci#define RC_UT_MODE(x) (x<<9) 65162306a36Sopenharmony_ci#define RX_ENABLE (1<<8) 65262306a36Sopenharmony_ci#define RX_VALVP(x) (x<<4) 65362306a36Sopenharmony_ci#define RX_VALVC(x) (x) 65462306a36Sopenharmony_ci 65562306a36Sopenharmony_ci#define MCC 0x807c4 65662306a36Sopenharmony_ci#define OEC 0x807c8 65762306a36Sopenharmony_ci#define DCC 0x807cc 65862306a36Sopenharmony_ci#define CEC 0x807d0 65962306a36Sopenharmony_ci 66062306a36Sopenharmony_ci#define HSP_BA 0x807f0 66162306a36Sopenharmony_ci 66262306a36Sopenharmony_ci#define LB_CONFIG 0x807f4 66362306a36Sopenharmony_ci#define LB_SIZE(x) (x) 66462306a36Sopenharmony_ci 66562306a36Sopenharmony_ci#define CON_DAT 0x807f8 66662306a36Sopenharmony_ci#define CON_CTL 0x807fc 66762306a36Sopenharmony_ci#define CON_CTL_MBOX (2<<30) 66862306a36Sopenharmony_ci#define CON_CTL_TCM (1<<30) 66962306a36Sopenharmony_ci#define CON_CTL_RCM (0<<30) 67062306a36Sopenharmony_ci#define CON_CTL_WRITE (1<<29) 67162306a36Sopenharmony_ci#define CON_CTL_READ (0<<29) 67262306a36Sopenharmony_ci#define CON_CTL_BUSY (1<<28) 67362306a36Sopenharmony_ci#define CON_BYTE_DISABLE_3 (1<<22) /* 24..31 */ 67462306a36Sopenharmony_ci#define CON_BYTE_DISABLE_2 (1<<21) /* 16..23 */ 67562306a36Sopenharmony_ci#define CON_BYTE_DISABLE_1 (1<<20) /* 8..15 */ 67662306a36Sopenharmony_ci#define CON_BYTE_DISABLE_0 (1<<19) /* 0..7 */ 67762306a36Sopenharmony_ci#define CON_CTL_ADDR(x) (x) 67862306a36Sopenharmony_ci 67962306a36Sopenharmony_ci#define FRAMER 0x80800 /* to 0x80bfc */ 68062306a36Sopenharmony_ci 68162306a36Sopenharmony_ci/* 3.3 network controller (internal) mailbox registers */ 68262306a36Sopenharmony_ci 68362306a36Sopenharmony_ci#define CS_STPER0 0x0 68462306a36Sopenharmony_ci /* ... */ 68562306a36Sopenharmony_ci#define CS_STPER31 0x01f 68662306a36Sopenharmony_ci 68762306a36Sopenharmony_ci#define CS_STTIM0 0x020 68862306a36Sopenharmony_ci /* ... */ 68962306a36Sopenharmony_ci#define CS_STTIM31 0x03f 69062306a36Sopenharmony_ci 69162306a36Sopenharmony_ci#define CS_TGRLD0 0x040 69262306a36Sopenharmony_ci /* ... */ 69362306a36Sopenharmony_ci#define CS_TGRLD15 0x04f 69462306a36Sopenharmony_ci 69562306a36Sopenharmony_ci#define CS_ERTHR0 0x050 69662306a36Sopenharmony_ci#define CS_ERTHR1 0x051 69762306a36Sopenharmony_ci#define CS_ERTHR2 0x052 69862306a36Sopenharmony_ci#define CS_ERTHR3 0x053 69962306a36Sopenharmony_ci#define CS_ERTHR4 0x054 70062306a36Sopenharmony_ci#define CS_ERCTL0 0x055 70162306a36Sopenharmony_ci#define TX_ENABLE (1<<28) 70262306a36Sopenharmony_ci#define ER_ENABLE (1<<27) 70362306a36Sopenharmony_ci#define CS_ERCTL1 0x056 70462306a36Sopenharmony_ci#define CS_ERCTL2 0x057 70562306a36Sopenharmony_ci#define CS_ERSTAT0 0x058 70662306a36Sopenharmony_ci#define CS_ERSTAT1 0x059 70762306a36Sopenharmony_ci 70862306a36Sopenharmony_ci#define CS_RTCCT 0x060 70962306a36Sopenharmony_ci#define CS_RTFWC 0x061 71062306a36Sopenharmony_ci#define CS_RTFWR 0x062 71162306a36Sopenharmony_ci#define CS_RTFTC 0x063 71262306a36Sopenharmony_ci#define CS_RTATR 0x064 71362306a36Sopenharmony_ci 71462306a36Sopenharmony_ci#define CS_TFBSET 0x070 71562306a36Sopenharmony_ci#define CS_TFBADD 0x071 71662306a36Sopenharmony_ci#define CS_TFBSUB 0x072 71762306a36Sopenharmony_ci#define CS_WCRMAX 0x073 71862306a36Sopenharmony_ci#define CS_WCRMIN 0x074 71962306a36Sopenharmony_ci#define CS_WCRINC 0x075 72062306a36Sopenharmony_ci#define CS_WCRDEC 0x076 72162306a36Sopenharmony_ci#define CS_WCRCEIL 0x077 72262306a36Sopenharmony_ci#define CS_BWDCNT 0x078 72362306a36Sopenharmony_ci 72462306a36Sopenharmony_ci#define CS_OTPPER 0x080 72562306a36Sopenharmony_ci#define CS_OTWPER 0x081 72662306a36Sopenharmony_ci#define CS_OTTLIM 0x082 72762306a36Sopenharmony_ci#define CS_OTTCNT 0x083 72862306a36Sopenharmony_ci 72962306a36Sopenharmony_ci#define CS_HGRRT0 0x090 73062306a36Sopenharmony_ci /* ... */ 73162306a36Sopenharmony_ci#define CS_HGRRT7 0x097 73262306a36Sopenharmony_ci 73362306a36Sopenharmony_ci#define CS_ORPTRS 0x0a0 73462306a36Sopenharmony_ci 73562306a36Sopenharmony_ci#define RXCON_CLOSE 0x100 73662306a36Sopenharmony_ci 73762306a36Sopenharmony_ci 73862306a36Sopenharmony_ci#define RCM_MEM_SIZE 0x10000 /* 1M of 32-bit registers */ 73962306a36Sopenharmony_ci#define TCM_MEM_SIZE 0x20000 /* 2M of 32-bit registers */ 74062306a36Sopenharmony_ci 74162306a36Sopenharmony_ci/* 2.5 transmit connection memory registers */ 74262306a36Sopenharmony_ci 74362306a36Sopenharmony_ci#define TSR0_CONN_STATE(x) ((x>>28) & 0x7) 74462306a36Sopenharmony_ci#define TSR0_USE_WMIN (1<<23) 74562306a36Sopenharmony_ci#define TSR0_GROUP(x) ((x & 0x7)<<18) 74662306a36Sopenharmony_ci#define TSR0_ABR (2<<16) 74762306a36Sopenharmony_ci#define TSR0_UBR (1<<16) 74862306a36Sopenharmony_ci#define TSR0_CBR (0<<16) 74962306a36Sopenharmony_ci#define TSR0_PROT (1<<15) 75062306a36Sopenharmony_ci#define TSR0_AAL0_SDU (2<<12) 75162306a36Sopenharmony_ci#define TSR0_AAL0 (1<<12) 75262306a36Sopenharmony_ci#define TSR0_AAL5 (0<<12) 75362306a36Sopenharmony_ci#define TSR0_HALT_ER (1<<11) 75462306a36Sopenharmony_ci#define TSR0_MARK_CI (1<<10) 75562306a36Sopenharmony_ci#define TSR0_MARK_ER (1<<9) 75662306a36Sopenharmony_ci#define TSR0_UPDATE_GER (1<<8) 75762306a36Sopenharmony_ci#define TSR0_RC_INDEX(x) (x & 0x1F) 75862306a36Sopenharmony_ci 75962306a36Sopenharmony_ci#define TSR1_PCR(x) ((x & 0x7FFF)<<16) 76062306a36Sopenharmony_ci#define TSR1_MCR(x) (x & 0x7FFF) 76162306a36Sopenharmony_ci 76262306a36Sopenharmony_ci#define TSR2_ACR(x) ((x & 0x7FFF)<<16) 76362306a36Sopenharmony_ci 76462306a36Sopenharmony_ci#define TSR3_NRM_CNT(x) ((x & 0xFF)<<24) 76562306a36Sopenharmony_ci#define TSR3_CRM_CNT(x) (x & 0xFFFF) 76662306a36Sopenharmony_ci 76762306a36Sopenharmony_ci#define TSR4_FLUSH_CONN (1<<31) 76862306a36Sopenharmony_ci#define TSR4_SESSION_ENDED (1<<30) 76962306a36Sopenharmony_ci#define TSR4_CRC10 (1<<28) 77062306a36Sopenharmony_ci#define TSR4_NULL_CRC10 (1<<27) 77162306a36Sopenharmony_ci#define TSR4_PROT (1<<26) 77262306a36Sopenharmony_ci#define TSR4_AAL0_SDU (2<<23) 77362306a36Sopenharmony_ci#define TSR4_AAL0 (1<<23) 77462306a36Sopenharmony_ci#define TSR4_AAL5 (0<<23) 77562306a36Sopenharmony_ci 77662306a36Sopenharmony_ci#define TSR9_OPEN_CONN (1<<20) 77762306a36Sopenharmony_ci 77862306a36Sopenharmony_ci#define TSR11_ICR(x) ((x & 0x7FFF)<<16) 77962306a36Sopenharmony_ci#define TSR11_TRM(x) ((x & 0x7)<<13) 78062306a36Sopenharmony_ci#define TSR11_NRM(x) ((x & 0x7)<<10) 78162306a36Sopenharmony_ci#define TSR11_ADTF(x) (x & 0x3FF) 78262306a36Sopenharmony_ci 78362306a36Sopenharmony_ci#define TSR13_RDF(x) ((x & 0xF)<<23) 78462306a36Sopenharmony_ci#define TSR13_RIF(x) ((x & 0xF)<<19) 78562306a36Sopenharmony_ci#define TSR13_CDF(x) ((x & 0x7)<<16) 78662306a36Sopenharmony_ci#define TSR13_CRM(x) (x & 0xFFFF) 78762306a36Sopenharmony_ci 78862306a36Sopenharmony_ci#define TSR14_DELETE (1<<31) 78962306a36Sopenharmony_ci#define TSR14_ABR_CLOSE (1<<16) 79062306a36Sopenharmony_ci 79162306a36Sopenharmony_ci/* 2.7.1 per connection receieve state registers */ 79262306a36Sopenharmony_ci 79362306a36Sopenharmony_ci#define RSR0_START_PDU (1<<10) 79462306a36Sopenharmony_ci#define RSR0_OPEN_CONN (1<<6) 79562306a36Sopenharmony_ci#define RSR0_CLOSE_CONN (0<<6) 79662306a36Sopenharmony_ci#define RSR0_PPD_ENABLE (1<<5) 79762306a36Sopenharmony_ci#define RSR0_EPD_ENABLE (1<<4) 79862306a36Sopenharmony_ci#define RSR0_TCP_CKSUM (1<<3) 79962306a36Sopenharmony_ci#define RSR0_AAL5 (0) 80062306a36Sopenharmony_ci#define RSR0_AAL0 (1) 80162306a36Sopenharmony_ci#define RSR0_AAL0_SDU (2) 80262306a36Sopenharmony_ci#define RSR0_RAWCELL (3) 80362306a36Sopenharmony_ci#define RSR0_RAWCELL_CRC10 (4) 80462306a36Sopenharmony_ci 80562306a36Sopenharmony_ci#define RSR1_AQI_ENABLE (1<<20) 80662306a36Sopenharmony_ci#define RSR1_RBPL_ONLY (1<<19) 80762306a36Sopenharmony_ci#define RSR1_GROUP(x) ((x)<<16) 80862306a36Sopenharmony_ci 80962306a36Sopenharmony_ci#define RSR4_AQI_ENABLE (1<<30) 81062306a36Sopenharmony_ci#define RSR4_GROUP(x) ((x)<<27) 81162306a36Sopenharmony_ci#define RSR4_RBPL_ONLY (1<<26) 81262306a36Sopenharmony_ci 81362306a36Sopenharmony_ci/* 2.1.4 transmit packet descriptor */ 81462306a36Sopenharmony_ci 81562306a36Sopenharmony_ci#define TPD_USERCELL 0x0 81662306a36Sopenharmony_ci#define TPD_SEGMENT_OAMF5 0x4 81762306a36Sopenharmony_ci#define TPD_END2END_OAMF5 0x5 81862306a36Sopenharmony_ci#define TPD_RMCELL 0x6 81962306a36Sopenharmony_ci#define TPD_CELLTYPE(x) (x<<3) 82062306a36Sopenharmony_ci#define TPD_EOS (1<<2) 82162306a36Sopenharmony_ci#define TPD_CLP (1<<1) 82262306a36Sopenharmony_ci#define TPD_INT (1<<0) 82362306a36Sopenharmony_ci#define TPD_LST (1<<31) 82462306a36Sopenharmony_ci 82562306a36Sopenharmony_ci/* table 4.3 serial eeprom information */ 82662306a36Sopenharmony_ci 82762306a36Sopenharmony_ci#define PROD_ID 0x08 /* char[] */ 82862306a36Sopenharmony_ci#define PROD_ID_LEN 30 82962306a36Sopenharmony_ci#define HW_REV 0x26 /* char[] */ 83062306a36Sopenharmony_ci#define M_SN 0x3a /* integer */ 83162306a36Sopenharmony_ci#define MEDIA 0x3e /* integer */ 83262306a36Sopenharmony_ci#define HE155MM 0x26 83362306a36Sopenharmony_ci#define HE622MM 0x27 83462306a36Sopenharmony_ci#define HE155SM 0x46 83562306a36Sopenharmony_ci#define HE622SM 0x47 83662306a36Sopenharmony_ci#define MAC_ADDR 0x42 /* char[] */ 83762306a36Sopenharmony_ci 83862306a36Sopenharmony_ci#define CS_LOW 0x0 83962306a36Sopenharmony_ci#define CS_HIGH ID_CS /* HOST_CNTL_ID_PROM_SEL */ 84062306a36Sopenharmony_ci#define CLK_LOW 0x0 84162306a36Sopenharmony_ci#define CLK_HIGH ID_CLOCK /* HOST_CNTL_ID_PROM_CLOCK */ 84262306a36Sopenharmony_ci#define SI_HIGH ID_DIN /* HOST_CNTL_ID_PROM_DATA_IN */ 84362306a36Sopenharmony_ci#define EEPROM_DELAY 400 /* microseconds */ 84462306a36Sopenharmony_ci 84562306a36Sopenharmony_ci#endif /* _HE_H_ */ 846