Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)   he.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)   ForeRunnerHE ATM Adapter driver for ATM on Linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)   Copyright (C) 1999-2001  Naval Research Laboratory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)   This library is free software; you can redistribute it and/or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9)   modify it under the terms of the GNU Lesser General Public
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)   License as published by the Free Software Foundation; either
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11)   version 2.1 of the License, or (at your option) any later version.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13)   This library is distributed in the hope that it will be useful,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14)   but WITHOUT ANY WARRANTY; without even the implied warranty of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15)   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16)   Lesser General Public License for more details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18)   You should have received a copy of the GNU Lesser General Public
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19)   License along with this library; if not, write to the Free Software
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20)   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26)   he.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28)   ForeRunnerHE ATM Adapter driver for ATM on Linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29)   Copyright (C) 1999-2000  Naval Research Laboratory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31)   Permission to use, copy, modify and distribute this software and its
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32)   documentation is hereby granted, provided that both the copyright
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33)   notice and this permission notice appear in all copies of the software,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34)   derivative works or modified versions, and any portions thereof, and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35)   that both notices appear in supporting documentation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37)   NRL ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION AND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38)   DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39)   RESULTING FROM THE USE OF THIS SOFTWARE.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) #ifndef _HE_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) #define _HE_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) #define DEV_LABEL       "he"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) #define CONFIG_DEFAULT_VCIBITS	12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) #define CONFIG_DEFAULT_VPIBITS	0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) #define CONFIG_IRQ_SIZE		128
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) #define CONFIG_IRQ_THRESH	(CONFIG_IRQ_SIZE/2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) #define CONFIG_TPDRQ_SIZE	512
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) #define TPDRQ_MASK(x)		(((unsigned long)(x))&((CONFIG_TPDRQ_SIZE<<3)-1))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) #define CONFIG_RBRQ_SIZE	512
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) #define CONFIG_RBRQ_THRESH	400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) #define RBRQ_MASK(x)		(((unsigned long)(x))&((CONFIG_RBRQ_SIZE<<3)-1))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) #define CONFIG_TBRQ_SIZE	512
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) #define CONFIG_TBRQ_THRESH	400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) #define TBRQ_MASK(x)		(((unsigned long)(x))&((CONFIG_TBRQ_SIZE<<2)-1))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) #define CONFIG_RBPL_SIZE	512
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) #define CONFIG_RBPL_THRESH	64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) #define CONFIG_RBPL_BUFSIZE	4096
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) #define RBPL_MASK(x)		(((unsigned long)(x))&((CONFIG_RBPL_SIZE<<3)-1))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) /* 5.1.3 initialize connection memory */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) #define CONFIG_RSRA		0x00000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) #define CONFIG_RCMLBM		0x08000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) #define CONFIG_RCMABR		0x0d800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) #define CONFIG_RSRB		0x0e000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) #define CONFIG_TSRA		0x00000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) #define CONFIG_TSRB		0x08000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) #define CONFIG_TSRC		0x0c000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) #define CONFIG_TSRD		0x0e000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) #define CONFIG_TMABR		0x0f000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) #define CONFIG_TPDBA		0x10000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) #define HE_MAXCIDBITS		12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) /* 2.9.3.3 interrupt encodings */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) struct he_irq {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	volatile u32 isw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) #define IRQ_ALIGNMENT		0x1000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) #define NEXT_ENTRY(base, tail, mask) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 				(((unsigned long)base)|(((unsigned long)(tail+1))&mask))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) #define ITYPE_INVALID		0xffffffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) #define ITYPE_TBRQ_THRESH	(0<<3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) #define ITYPE_TPD_COMPLETE	(1<<3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define ITYPE_RBPS_THRESH	(2<<3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) #define ITYPE_RBPL_THRESH	(3<<3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #define ITYPE_RBRQ_THRESH	(4<<3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) #define ITYPE_RBRQ_TIMER	(5<<3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #define ITYPE_PHY		(6<<3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #define ITYPE_OTHER		0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) #define ITYPE_PARITY		0x81
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #define ITYPE_ABORT		0x82
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #define ITYPE_GROUP(x)		(x & 0x7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) #define ITYPE_TYPE(x)		(x & 0xf8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) #define HE_NUM_GROUPS 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) /* 2.1.4 transmit packet descriptor */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) struct he_tpd {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	/* read by the adapter */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	volatile u32 status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	volatile u32 reserved;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) #define TPD_MAXIOV	3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 	struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 		u32 addr, len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	} iovec[TPD_MAXIOV];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) #define address0 iovec[0].addr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) #define length0 iovec[0].len
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 	/* linux-atm extensions */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 	struct sk_buff *skb;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 	struct atm_vcc *vcc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 	struct list_head entry;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) #define TPD_ALIGNMENT	64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) #define TPD_LEN_MASK	0xffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) #define TPD_ADDR_SHIFT  6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #define TPD_MASK	0xffffffc0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) #define TPD_ADDR(x)	((x) & TPD_MASK)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) #define TPD_INDEX(x)	(TPD_ADDR(x) >> TPD_ADDR_SHIFT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) /* table 2.3 transmit buffer return elements */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) struct he_tbrq {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 	volatile u32 tbre;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) #define TBRQ_ALIGNMENT	CONFIG_TBRQ_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) #define TBRQ_TPD(tbrq)		((tbrq)->tbre & 0xffffffc0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) #define TBRQ_EOS(tbrq)		((tbrq)->tbre & (1<<3))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) #define TBRQ_MULTIPLE(tbrq)	((tbrq)->tbre & (1))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) /* table 2.21 receive buffer return queue element field organization */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) struct he_rbrq {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 	volatile u32 addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 	volatile u32 cidlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) #define RBRQ_ALIGNMENT	CONFIG_RBRQ_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) #define RBRQ_ADDR(rbrq)		((rbrq)->addr & 0xffffffc0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) #define RBRQ_CRC_ERR(rbrq)	((rbrq)->addr & (1<<5))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) #define RBRQ_LEN_ERR(rbrq)	((rbrq)->addr & (1<<4))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) #define RBRQ_END_PDU(rbrq)	((rbrq)->addr & (1<<3))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) #define RBRQ_AAL5_PROT(rbrq)	((rbrq)->addr & (1<<2))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) #define RBRQ_CON_CLOSED(rbrq)	((rbrq)->addr & (1<<1))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) #define RBRQ_HBUF_ERR(rbrq)	((rbrq)->addr & 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) #define RBRQ_CID(rbrq)		(((rbrq)->cidlen >> 16) & 0x1fff)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) #define RBRQ_BUFLEN(rbrq)	((rbrq)->cidlen & 0xffff)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) /* figure 2.3 transmit packet descriptor ready queue */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) struct he_tpdrq {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 	volatile u32 tpd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 	volatile u32 cid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) #define TPDRQ_ALIGNMENT CONFIG_TPDRQ_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) /* table 2.30 host status page detail */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) #define HSP_ALIGNMENT	0x400		/* must align on 1k boundary */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) struct he_hsp {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 	struct he_hsp_entry {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 		volatile u32 tbrq_tail; 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 		volatile u32 reserved1[15];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 		volatile u32 rbrq_tail; 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 		volatile u32 reserved2[15];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 	} group[HE_NUM_GROUPS];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202)  * figure 2.9 receive buffer pools
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204)  * since a virtual address might be more than 32 bits, we store an index
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)  * in the virt member of he_rbp.  NOTE: the lower six bits in the  rbrq
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206)  * addr member are used for buffer status further limiting us to 26 bits.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) struct he_rbp {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 	volatile u32 phys;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 	volatile u32 idx;	/* virt */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) #define RBP_IDX_OFFSET 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217)  * the he dma engine will try to hold an extra 16 buffers in its local
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218)  * caches.  and add a couple buffers for safety.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) #define RBPL_TABLE_SIZE (CONFIG_RBPL_SIZE + 16 + 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) struct he_buff {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) 	struct list_head entry;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) 	dma_addr_t mapping;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 	unsigned long len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) 	u8 data[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) #ifdef notyet
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) struct he_group {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) 	u32 rpbl_size, rpbl_qsize;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) 	struct he_rpb_entry *rbpl_ba;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) #define HE_LOOKUP_VCC(dev, cid) ((dev)->he_vcc_table[(cid)].vcc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) struct he_vcc_table 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) 	struct atm_vcc *vcc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) struct he_cs_stper
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) 	long pcr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) 	int inuse;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) #define HE_NUM_CS_STPER		16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) struct he_dev {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) 	unsigned int number;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) 	unsigned int irq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) 	void __iomem *membase;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) 	char prod_id[30];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) 	char mac_addr[6];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) 	int media;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) 	unsigned int vcibits, vpibits;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) 	unsigned int cells_per_row;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) 	unsigned int bytes_per_row;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) 	unsigned int cells_per_lbuf;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) 	unsigned int r0_numrows, r0_startrow, r0_numbuffs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) 	unsigned int r1_numrows, r1_startrow, r1_numbuffs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) 	unsigned int tx_numrows, tx_startrow, tx_numbuffs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) 	unsigned int buffer_limit;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) 	struct he_vcc_table *he_vcc_table;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) #ifdef notyet
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) 	struct he_group group[HE_NUM_GROUPS];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) 	struct he_cs_stper cs_stper[HE_NUM_CS_STPER];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) 	unsigned total_bw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) 	dma_addr_t irq_phys;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) 	struct he_irq *irq_base, *irq_head, *irq_tail;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) 	volatile unsigned *irq_tailoffset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) 	int irq_peak;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) 	struct tasklet_struct tasklet;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) 	struct dma_pool *tpd_pool;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) 	struct list_head outstanding_tpds;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) 	dma_addr_t tpdrq_phys;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) 	struct he_tpdrq *tpdrq_base, *tpdrq_tail, *tpdrq_head;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) 	spinlock_t global_lock;		/* 8.1.5 pci transaction ordering
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) 					  error problem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) 	dma_addr_t rbrq_phys;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) 	struct he_rbrq *rbrq_base, *rbrq_head;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) 	int rbrq_peak;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) 	struct he_buff **rbpl_virt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) 	unsigned long *rbpl_table;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) 	unsigned long rbpl_hint;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) 	struct dma_pool *rbpl_pool;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) 	dma_addr_t rbpl_phys;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) 	struct he_rbp *rbpl_base, *rbpl_tail;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) 	struct list_head rbpl_outstanding;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) 	int rbpl_peak;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) 	dma_addr_t tbrq_phys;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) 	struct he_tbrq *tbrq_base, *tbrq_head;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) 	int tbrq_peak;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) 	dma_addr_t hsp_phys;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) 	struct he_hsp *hsp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) 	struct pci_dev *pci_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) 	struct atm_dev *atm_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) 	struct he_dev *next;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) #define HE_MAXIOV 20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) struct he_vcc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) 	struct list_head buffers;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) 	int pdu_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) 	int rc_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) 	wait_queue_head_t rx_waitq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) 	wait_queue_head_t tx_waitq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) #define HE_VCC(vcc)	((struct he_vcc *)(vcc->dev_data))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) #define PCI_VENDOR_ID_FORE	0x1127
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) #define PCI_DEVICE_ID_FORE_HE	0x400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) #define GEN_CNTL_0				0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) #define  INT_PROC_ENBL		(1<<25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) #define  SLAVE_ENDIAN_MODE	(1<<16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) #define  MRL_ENB		(1<<5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) #define  MRM_ENB		(1<<4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) #define  INIT_ENB		(1<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) #define  IGNORE_TIMEOUT		(1<<1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) #define  ENBL_64		(1<<0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) #define MIN_PCI_LATENCY		32	/* errata 8.1.3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) #define HE_DEV(dev) ((struct he_dev *) (dev)->dev_data)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) #define he_is622(dev)	((dev)->media & 0x1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) #define he_isMM(dev)	((dev)->media & 0x20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) #define HE_REGMAP_SIZE	0x100000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) #define RESET_CNTL	0x80000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) #define  BOARD_RST_STATUS	(1<<6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) #define HOST_CNTL	0x80004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) #define  PCI_BUS_SIZE64			(1<<27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) #define  DESC_RD_STATIC_64		(1<<26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) #define  DATA_RD_STATIC_64		(1<<25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) #define  DATA_WR_STATIC_64		(1<<24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) #define  ID_CS				(1<<12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) #define  ID_WREN			(1<<11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) #define  ID_DOUT			(1<<10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) #define   ID_DOFFSET			10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) #define  ID_DIN				(1<<9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) #define  ID_CLOCK			(1<<8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) #define  QUICK_RD_RETRY			(1<<7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) #define  QUICK_WR_RETRY			(1<<6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) #define  OUTFF_ENB			(1<<5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) #define  CMDFF_ENB			(1<<4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) #define  PERR_INT_ENB			(1<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) #define  IGNORE_INTR			(1<<0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) #define LB_SWAP		0x80008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) #define  SWAP_RNUM_MAX(x)	(x<<27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) #define  DATA_WR_SWAP		(1<<20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) #define  DESC_RD_SWAP		(1<<19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) #define  DATA_RD_SWAP		(1<<18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) #define  INTR_SWAP		(1<<17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) #define  DESC_WR_SWAP		(1<<16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) #define  SDRAM_INIT		(1<<15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) #define  BIG_ENDIAN_HOST	(1<<14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) #define  XFER_SIZE		(1<<7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) #define LB_MEM_ADDR	0x8000c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) #define LB_MEM_DATA	0x80010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) #define LB_MEM_ACCESS	0x80014
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) #define  LB_MEM_HNDSHK		(1<<30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) #define  LM_MEM_WRITE		(0x7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) #define  LM_MEM_READ		(0x3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) #define SDRAM_CTL	0x80018
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) #define  LB_64_ENB		(1<<3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) #define  LB_TWR			(1<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) #define  LB_TRP			(1<<1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) #define  LB_TRAS		(1<<0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) #define INT_FIFO	0x8001c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) #define  INT_MASK_D		(1<<15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) #define  INT_MASK_C		(1<<14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) #define  INT_MASK_B		(1<<13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) #define  INT_MASK_A		(1<<12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) #define  INT_CLEAR_D		(1<<11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) #define  INT_CLEAR_C		(1<<10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) #define  INT_CLEAR_B		(1<<9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) #define  INT_CLEAR_A		(1<<8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) #define ABORT_ADDR	0x80020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) #define IRQ0_BASE	0x80080
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) #define  IRQ_BASE(x)		(x<<12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) #define  IRQ_MASK		((CONFIG_IRQ_SIZE<<2)-1)	/* was 0x3ff */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) #define  IRQ_TAIL(x)		(((unsigned long)(x)) & IRQ_MASK)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) #define IRQ0_HEAD	0x80084
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) #define  IRQ_SIZE(x)		(x<<22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) #define  IRQ_THRESH(x)		(x<<12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) #define  IRQ_HEAD(x)		(x<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) /* #define  IRQ_PENDING		(1) 		conflict with linux/irq.h */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) #define IRQ0_CNTL	0x80088
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) #define  IRQ_ADDRSEL(x)		(x<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) #define  IRQ_INT_A		(0<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) #define  IRQ_INT_B		(1<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) #define  IRQ_INT_C		(2<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) #define  IRQ_INT_D		(3<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) #define  IRQ_TYPE_ADDR		0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) #define  IRQ_TYPE_LINE		0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) #define IRQ0_DATA	0x8008c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) #define IRQ1_BASE	0x80090
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) #define IRQ1_HEAD	0x80094
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) #define IRQ1_CNTL	0x80098
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) #define IRQ1_DATA	0x8009c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) #define IRQ2_BASE	0x800a0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) #define IRQ2_HEAD	0x800a4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) #define IRQ2_CNTL	0x800a8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) #define IRQ2_DATA	0x800ac
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) #define IRQ3_BASE	0x800b0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) #define IRQ3_HEAD	0x800b4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) #define IRQ3_CNTL	0x800b8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) #define IRQ3_DATA	0x800bc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) #define GRP_10_MAP	0x800c0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) #define GRP_32_MAP	0x800c4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) #define GRP_54_MAP	0x800c8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) #define GRP_76_MAP	0x800cc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) #define	G0_RBPS_S	0x80400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) #define G0_RBPS_T	0x80404
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) #define  RBP_TAIL(x)		((x)<<3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) #define  RBP_MASK(x)		((x)|0x1fff)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) #define G0_RBPS_QI	0x80408
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) #define  RBP_QSIZE(x)		((x)<<14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) #define  RBP_INT_ENB		(1<<13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) #define  RBP_THRESH(x)		(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) #define G0_RBPS_BS	0x8040c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) #define G0_RBPL_S	0x80410
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) #define G0_RBPL_T	0x80414
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) #define G0_RBPL_QI	0x80418 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) #define G0_RBPL_BS	0x8041c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) #define	G1_RBPS_S	0x80420
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) #define G1_RBPS_T	0x80424
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) #define G1_RBPS_QI	0x80428
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) #define G1_RBPS_BS	0x8042c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) #define G1_RBPL_S	0x80430
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) #define G1_RBPL_T	0x80434
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) #define G1_RBPL_QI	0x80438
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) #define G1_RBPL_BS	0x8043c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) #define	G2_RBPS_S	0x80440
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) #define G2_RBPS_T	0x80444
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) #define G2_RBPS_QI	0x80448
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) #define G2_RBPS_BS	0x8044c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) #define G2_RBPL_S	0x80450
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) #define G2_RBPL_T	0x80454
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) #define G2_RBPL_QI	0x80458
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) #define G2_RBPL_BS	0x8045c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) #define	G3_RBPS_S	0x80460
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) #define G3_RBPS_T	0x80464
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) #define G3_RBPS_QI	0x80468
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) #define G3_RBPS_BS	0x8046c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) #define G3_RBPL_S	0x80470
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) #define G3_RBPL_T	0x80474
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) #define G3_RBPL_QI	0x80478
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) #define G3_RBPL_BS	0x8047c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) #define	G4_RBPS_S	0x80480
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) #define G4_RBPS_T	0x80484
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) #define G4_RBPS_QI	0x80488
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) #define G4_RBPS_BS	0x8048c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) #define G4_RBPL_S	0x80490
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) #define G4_RBPL_T	0x80494
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) #define G4_RBPL_QI	0x80498
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) #define G4_RBPL_BS	0x8049c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) #define	G5_RBPS_S	0x804a0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) #define G5_RBPS_T	0x804a4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) #define G5_RBPS_QI	0x804a8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) #define G5_RBPS_BS	0x804ac
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) #define G5_RBPL_S	0x804b0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) #define G5_RBPL_T	0x804b4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) #define G5_RBPL_QI	0x804b8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) #define G5_RBPL_BS	0x804bc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) #define	G6_RBPS_S	0x804c0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) #define G6_RBPS_T	0x804c4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) #define G6_RBPS_QI	0x804c8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) #define G6_RBPS_BS	0x804cc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) #define G6_RBPL_S	0x804d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) #define G6_RBPL_T	0x804d4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) #define G6_RBPL_QI	0x804d8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) #define G6_RBPL_BS	0x804dc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) #define	G7_RBPS_S	0x804e0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) #define G7_RBPS_T	0x804e4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) #define G7_RBPS_QI	0x804e8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) #define G7_RBPS_BS	0x804ec
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) #define G7_RBPL_S	0x804f0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) #define G7_RBPL_T	0x804f4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) #define G7_RBPL_QI	0x804f8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) #define G7_RBPL_BS	0x804fc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) #define G0_RBRQ_ST	0x80500
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) #define G0_RBRQ_H	0x80504
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) #define G0_RBRQ_Q	0x80508
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) #define  RBRQ_THRESH(x)		((x)<<13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) #define  RBRQ_SIZE(x)		(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) #define G0_RBRQ_I	0x8050c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) #define  RBRQ_TIME(x)		((x)<<8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) #define  RBRQ_COUNT(x)		(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) /* fill in 1 ... 7 later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) #define G0_TBRQ_B_T	0x80600
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) #define G0_TBRQ_H	0x80604
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) #define G0_TBRQ_S	0x80608
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) #define G0_TBRQ_THRESH	0x8060c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) #define  TBRQ_THRESH(x)		(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) /* fill in 1 ... 7 later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) #define RH_CONFIG	0x805c0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) #define  PHY_INT_ENB	(1<<10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) #define  OAM_GID(x)	(x<<7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) #define  PTMR_PRE(x)	(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) #define G0_INMQ_S	0x80580
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) #define G0_INMQ_L	0x80584
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) #define G1_INMQ_S	0x80588
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) #define G1_INMQ_L	0x8058c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) #define G2_INMQ_S	0x80590
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) #define G2_INMQ_L	0x80594
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) #define G3_INMQ_S	0x80598
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) #define G3_INMQ_L	0x8059c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) #define G4_INMQ_S	0x805a0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) #define G4_INMQ_L	0x805a4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) #define G5_INMQ_S	0x805a8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) #define G5_INMQ_L	0x805ac
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) #define G6_INMQ_S	0x805b0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) #define G6_INMQ_L	0x805b4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) #define G7_INMQ_S	0x805b8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) #define G7_INMQ_L	0x805bc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) #define TPDRQ_B_H	0x80680
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) #define TPDRQ_T		0x80684
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) #define TPDRQ_S		0x80688
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) #define UBUFF_BA	0x8068c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) #define RLBF0_H		0x806c0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) #define RLBF0_T		0x806c4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) #define RLBF1_H		0x806c8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) #define RLBF1_T		0x806cc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) #define RLBC_H		0x806d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) #define RLBC_T		0x806d4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) #define RLBC_H2		0x806d8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) #define TLBF_H		0x806e0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) #define TLBF_T		0x806e4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) #define RLBF0_C		0x806e8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) #define RLBF1_C		0x806ec
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) #define RXTHRSH		0x806f0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) #define LITHRSH		0x806f4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) #define LBARB		0x80700
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589) #define  SLICE_X(x)		 (x<<28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) #define  ARB_RNUM_MAX(x)	 (x<<23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) #define  TH_PRTY(x)		 (x<<21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) #define  RH_PRTY(x)		 (x<<19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) #define  TL_PRTY(x)		 (x<<17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) #define  RL_PRTY(x)		 (x<<15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595) #define  BUS_MULTI(x)		 (x<<8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) #define  NET_PREF(x)		 (x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) #define SDRAMCON	0x80704
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) #define	 BANK_ON		(1<<14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) #define	 WIDE_DATA		(1<<13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) #define	 TWR_WAIT		(1<<12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) #define	 TRP_WAIT		(1<<11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) #define	 TRAS_WAIT		(1<<10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) #define	 REF_RATE(x)		(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) #define LBSTAT		0x80708
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608) #define RCC_STAT	0x8070c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) #define  RCC_BUSY		(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) #define TCMCONFIG	0x80740
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) #define  TM_DESL2		(1<<10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613) #define	 TM_BANK_WAIT(x)	(x<<6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) #define	 TM_ADD_BANK4(x)	(x<<4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) #define  TM_PAR_CHECK(x)	(x<<3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) #define  TM_RW_WAIT(x)		(x<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) #define  TM_SRAM_TYPE(x)	(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619) #define TSRB_BA		0x80744	
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) #define TSRC_BA		0x80748	
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) #define TMABR_BA	0x8074c	
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) #define TPD_BA		0x80750	
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) #define TSRD_BA		0x80758	
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625) #define TX_CONFIG	0x80760
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) #define  DRF_THRESH(x)		(x<<22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) #define  TX_UT_MODE(x)		(x<<21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) #define  TX_VCI_MASK(x)		(x<<17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) #define  LBFREE_CNT(x)		(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) #define TXAAL5_PROTO	0x80764
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) #define  CPCS_UU(x)		(x<<8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) #define  CPI(x)			(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) #define RCMCONFIG	0x80780
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) #define  RM_DESL2(x)		(x<<10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) #define  RM_BANK_WAIT(x)	(x<<6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638) #define  RM_ADD_BANK(x)		(x<<4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) #define  RM_PAR_CHECK(x)	(x<<3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) #define  RM_RW_WAIT(x)		(x<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) #define  RM_SRAM_TYPE(x)	(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) #define RCMRSRB_BA	0x80784
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) #define RCMLBM_BA	0x80788
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) #define RCMABR_BA	0x8078c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) #define RC_CONFIG	0x807c0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) #define  UT_RD_DELAY(x)		(x<<11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) #define  WRAP_MODE(x)		(x<<10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) #define  RC_UT_MODE(x)		(x<<9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) #define  RX_ENABLE		(1<<8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) #define  RX_VALVP(x)		(x<<4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) #define  RX_VALVC(x)		(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) #define MCC		0x807c4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) #define OEC		0x807c8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) #define DCC		0x807cc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) #define CEC		0x807d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) #define HSP_BA		0x807f0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) #define LB_CONFIG	0x807f4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) #define  LB_SIZE(x)		(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) #define CON_DAT		0x807f8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) #define CON_CTL		0x807fc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) #define  CON_CTL_MBOX		(2<<30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) #define  CON_CTL_TCM		(1<<30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669) #define  CON_CTL_RCM		(0<<30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) #define  CON_CTL_WRITE		(1<<29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) #define  CON_CTL_READ		(0<<29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) #define  CON_CTL_BUSY		(1<<28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) #define  CON_BYTE_DISABLE_3	(1<<22)		/* 24..31 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) #define  CON_BYTE_DISABLE_2	(1<<21)		/* 16..23 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) #define  CON_BYTE_DISABLE_1	(1<<20)		/* 8..15 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) #define  CON_BYTE_DISABLE_0	(1<<19)		/* 0..7 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677) #define  CON_CTL_ADDR(x)	(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) #define FRAMER		0x80800		/* to 0x80bfc */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) /* 3.3 network controller (internal) mailbox registers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) #define CS_STPER0	0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) 	/* ... */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) #define CS_STPER31	0x01f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) #define CS_STTIM0	0x020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) 	/* ... */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689) #define CS_STTIM31	0x03f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) #define CS_TGRLD0	0x040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) 	/* ... */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) #define CS_TGRLD15	0x04f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695) #define CS_ERTHR0	0x050
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696) #define CS_ERTHR1	0x051
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697) #define CS_ERTHR2	0x052
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) #define CS_ERTHR3	0x053
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) #define CS_ERTHR4	0x054
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) #define CS_ERCTL0	0x055
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701) #define  TX_ENABLE		(1<<28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) #define  ER_ENABLE		(1<<27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) #define CS_ERCTL1	0x056
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) #define CS_ERCTL2	0x057
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) #define CS_ERSTAT0	0x058
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) #define CS_ERSTAT1	0x059
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708) #define CS_RTCCT	0x060
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709) #define CS_RTFWC	0x061
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) #define CS_RTFWR	0x062
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) #define CS_RTFTC	0x063
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) #define CS_RTATR	0x064
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) #define CS_TFBSET	0x070
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) #define CS_TFBADD	0x071
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) #define CS_TFBSUB	0x072
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) #define CS_WCRMAX	0x073
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) #define CS_WCRMIN	0x074
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) #define CS_WCRINC	0x075
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) #define CS_WCRDEC	0x076
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) #define CS_WCRCEIL	0x077
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) #define CS_BWDCNT	0x078
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724) #define CS_OTPPER	0x080
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) #define CS_OTWPER	0x081
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) #define CS_OTTLIM	0x082
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) #define CS_OTTCNT	0x083
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729) #define CS_HGRRT0	0x090
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) 	/* ... */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) #define CS_HGRRT7	0x097
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733) #define CS_ORPTRS	0x0a0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) #define RXCON_CLOSE	0x100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 736) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 737) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 738) #define RCM_MEM_SIZE	0x10000		/* 1M of 32-bit registers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) #define TCM_MEM_SIZE	0x20000		/* 2M of 32-bit registers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741) /* 2.5 transmit connection memory registers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743) #define TSR0_CONN_STATE(x)	((x>>28) & 0x7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744) #define TSR0_USE_WMIN		(1<<23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745) #define TSR0_GROUP(x)		((x & 0x7)<<18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746) #define TSR0_ABR		(2<<16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747) #define TSR0_UBR		(1<<16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748) #define TSR0_CBR		(0<<16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749) #define TSR0_PROT		(1<<15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750) #define TSR0_AAL0_SDU		(2<<12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) #define TSR0_AAL0		(1<<12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) #define TSR0_AAL5		(0<<12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753) #define TSR0_HALT_ER		(1<<11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754) #define TSR0_MARK_CI		(1<<10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) #define TSR0_MARK_ER		(1<<9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756) #define TSR0_UPDATE_GER		(1<<8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757) #define TSR0_RC_INDEX(x)	(x & 0x1F)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759) #define TSR1_PCR(x)		((x & 0x7FFF)<<16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760) #define TSR1_MCR(x)		(x & 0x7FFF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762) #define TSR2_ACR(x)		((x & 0x7FFF)<<16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764) #define TSR3_NRM_CNT(x)		((x & 0xFF)<<24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765) #define TSR3_CRM_CNT(x)		(x & 0xFFFF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) #define TSR4_FLUSH_CONN		(1<<31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768) #define TSR4_SESSION_ENDED	(1<<30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769) #define TSR4_CRC10		(1<<28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770) #define TSR4_NULL_CRC10		(1<<27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771) #define TSR4_PROT		(1<<26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772) #define TSR4_AAL0_SDU		(2<<23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773) #define TSR4_AAL0		(1<<23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774) #define TSR4_AAL5		(0<<23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776) #define TSR9_OPEN_CONN		(1<<20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778) #define TSR11_ICR(x)		((x & 0x7FFF)<<16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779) #define TSR11_TRM(x)		((x & 0x7)<<13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780) #define TSR11_NRM(x)		((x & 0x7)<<10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781) #define TSR11_ADTF(x)		(x & 0x3FF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783) #define TSR13_RDF(x)		((x & 0xF)<<23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 784) #define TSR13_RIF(x)		((x & 0xF)<<19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 785) #define TSR13_CDF(x)		((x & 0x7)<<16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 786) #define TSR13_CRM(x)		(x & 0xFFFF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 787) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 788) #define TSR14_DELETE		(1<<31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 789) #define TSR14_ABR_CLOSE		(1<<16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 790) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 791) /* 2.7.1 per connection receieve state registers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 792) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 793) #define RSR0_START_PDU	(1<<10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 794) #define RSR0_OPEN_CONN	(1<<6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 795) #define RSR0_CLOSE_CONN	(0<<6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 796) #define RSR0_PPD_ENABLE	(1<<5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 797) #define RSR0_EPD_ENABLE	(1<<4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 798) #define RSR0_TCP_CKSUM	(1<<3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 799) #define RSR0_AAL5		(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 800) #define RSR0_AAL0		(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 801) #define RSR0_AAL0_SDU		(2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 802) #define RSR0_RAWCELL		(3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 803) #define RSR0_RAWCELL_CRC10	(4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 804) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 805) #define RSR1_AQI_ENABLE	(1<<20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 806) #define RSR1_RBPL_ONLY	(1<<19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 807) #define RSR1_GROUP(x)	((x)<<16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 808) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 809) #define RSR4_AQI_ENABLE (1<<30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 810) #define RSR4_GROUP(x)	((x)<<27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 811) #define RSR4_RBPL_ONLY	(1<<26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 812) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 813) /* 2.1.4 transmit packet descriptor */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 814) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 815) #define	TPD_USERCELL		0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 816) #define	TPD_SEGMENT_OAMF5	0x4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 817) #define	TPD_END2END_OAMF5	0x5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 818) #define	TPD_RMCELL		0x6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 819) #define TPD_CELLTYPE(x)		(x<<3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 820) #define TPD_EOS			(1<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 821) #define TPD_CLP			(1<<1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 822) #define TPD_INT			(1<<0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 823) #define TPD_LST		(1<<31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 824) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 825) /* table 4.3 serial eeprom information */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 826) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 827) #define PROD_ID		0x08	/* char[] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 828) #define  PROD_ID_LEN	30
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 829) #define HW_REV		0x26	/* char[] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 830) #define M_SN		0x3a	/* integer */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 831) #define MEDIA		0x3e	/* integer */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 832) #define  HE155MM	0x26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 833) #define  HE622MM	0x27
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 834) #define  HE155SM	0x46
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 835) #define  HE622SM	0x47
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 836) #define MAC_ADDR	0x42	/* char[] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 837) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 838) #define CS_LOW		0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 839) #define CS_HIGH		ID_CS /* HOST_CNTL_ID_PROM_SEL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 840) #define CLK_LOW		0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 841) #define CLK_HIGH	ID_CLOCK /* HOST_CNTL_ID_PROM_CLOCK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 842) #define SI_HIGH		ID_DIN /* HOST_CNTL_ID_PROM_DATA_IN */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 843) #define EEPROM_DELAY	400 /* microseconds */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 844) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 845) #endif /* _HE_H_ */