^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) * Copyright (c) 2000 ATecoM GmbH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * The author may be reached at ecd@atecom.com.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * This program is free software; you can redistribute it and/or modify it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * under the terms of the GNU General Public License as published by the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) * Free Software Foundation; either version 2 of the License, or (at your
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) * option) any later version.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) * You should have received a copy of the GNU General Public License along
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) * with this program; if not, write to the Free Software Foundation, Inc.,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) * 675 Mass Ave, Cambridge, MA 02139, USA.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) *******************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #ifndef _IDT77252_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #define _IDT77252_H 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #include <linux/ptrace.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #include <linux/skbuff.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #include <linux/workqueue.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #include <linux/mutex.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) /* Makros */
^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) #define VPCI2VC(card, vpi, vci) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) (((vpi) << card->vcibits) | ((vci) & card->vcimask))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) /* DEBUGGING definitions */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) #define DBG_RAW_CELL 0x00000400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) #define DBG_TINY 0x00000200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) #define DBG_GENERAL 0x00000100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) #define DBG_XGENERAL 0x00000080
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) #define DBG_INIT 0x00000040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) #define DBG_DEINIT 0x00000020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) #define DBG_INTERRUPT 0x00000010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) #define DBG_OPEN_CONN 0x00000008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) #define DBG_CLOSE_CONN 0x00000004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) #define DBG_RX_DATA 0x00000002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) #define DBG_TX_DATA 0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) #ifdef CONFIG_ATM_IDT77252_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) #define CPRINTK(args...) do { if (debug & DBG_CLOSE_CONN) printk(args); } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) #define OPRINTK(args...) do { if (debug & DBG_OPEN_CONN) printk(args); } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) #define IPRINTK(args...) do { if (debug & DBG_INIT) printk(args); } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) #define INTPRINTK(args...) do { if (debug & DBG_INTERRUPT) printk(args); } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) #define DIPRINTK(args...) do { if (debug & DBG_DEINIT) printk(args); } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) #define TXPRINTK(args...) do { if (debug & DBG_TX_DATA) printk(args); } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) #define RXPRINTK(args...) do { if (debug & DBG_RX_DATA) printk(args); } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) #define XPRINTK(args...) do { if (debug & DBG_XGENERAL) printk(args); } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) #define DPRINTK(args...) do { if (debug & DBG_GENERAL) printk(args); } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) #define NPRINTK(args...) do { if (debug & DBG_TINY) printk(args); } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) #define RPRINTK(args...) do { if (debug & DBG_RAW_CELL) printk(args); } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) #define CPRINTK(args...) do { } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) #define OPRINTK(args...) do { } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) #define IPRINTK(args...) do { } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) #define INTPRINTK(args...) do { } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) #define DIPRINTK(args...) do { } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) #define TXPRINTK(args...) do { } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) #define RXPRINTK(args...) do { } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) #define XPRINTK(args...) do { } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) #define DPRINTK(args...) do { } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) #define NPRINTK(args...) do { } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) #define RPRINTK(args...) do { } while(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) #define SCHED_UBR0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) #define SCHED_UBR 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) #define SCHED_VBR 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) #define SCHED_ABR 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) #define SCHED_CBR 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define SCQFULL_TIMEOUT HZ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) /* Free Buffer Queue Layout */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #define SAR_FB_SIZE_0 (2048 - 256)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) #define SAR_FB_SIZE_1 (4096 - 256)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #define SAR_FB_SIZE_2 (8192 - 256)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) #define SAR_FB_SIZE_3 (16384 - 256)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) #define SAR_FBQ0_LOW 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) #define SAR_FBQ0_HIGH 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #define SAR_FBQ1_LOW 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) #define SAR_FBQ1_HIGH 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) #define SAR_FBQ2_LOW 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) #define SAR_FBQ2_HIGH 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) #define SAR_FBQ3_LOW 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) #define SAR_FBQ3_HIGH 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) #if 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #define SAR_TST_RESERVED 44 /* Num TST reserved for UBR/ABR/VBR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) #define SAR_TST_RESERVED 0 /* Num TST reserved for UBR/ABR/VBR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) #define TCT_CBR 0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) #define TCT_UBR 0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) #define TCT_VBR 0x40000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) #define TCT_ABR 0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) #define TCT_TYPE 0xc0000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) #define TCT_RR 0x20000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) #define TCT_LMCR 0x08000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) #define TCT_SCD_MASK 0x0007ffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) #define TCT_TSIF 0x00004000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) #define TCT_HALT 0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) #define TCT_IDLE 0x40000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) #define TCT_FLAG_UBR 0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) /* Structure describing an IDT77252 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) /* */
^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) struct scqe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) u32 word_1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) u32 word_2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) u32 word_3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) u32 word_4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) #define SCQ_ENTRIES 64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) #define SCQ_SIZE (SCQ_ENTRIES * sizeof(struct scqe))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) #define SCQ_MASK (SCQ_SIZE - 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) struct scq_info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) struct scqe *base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) struct scqe *next;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) struct scqe *last;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) dma_addr_t paddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) spinlock_t lock;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) atomic_t used;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) unsigned long trans_start;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) unsigned long scd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) spinlock_t skblock;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) struct sk_buff_head transmit;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) struct sk_buff_head pending;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) struct rx_pool {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) struct sk_buff_head queue;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) unsigned int len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) struct aal1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) unsigned int total;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) unsigned int count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) struct sk_buff *data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) unsigned char sequence;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) struct vc_map;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) struct rate_estimator {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) struct timer_list timer;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) unsigned int interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) unsigned int ewma_log;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) u64 cells;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) u64 last_cells;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) long avcps;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) u32 cps;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) u32 maxcps;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) struct vc_map *vc;
^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) struct vc_map {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) unsigned int index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) unsigned long flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) #define VCF_TX 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) #define VCF_RX 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) #define VCF_IDLE 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) #define VCF_RSV 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) unsigned int class;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) u8 init_er;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) u8 lacr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) u8 max_er;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) unsigned int ntste;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) spinlock_t lock;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) struct atm_vcc *tx_vcc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) struct atm_vcc *rx_vcc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) struct idt77252_dev *card;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) struct scq_info *scq; /* To keep track of the SCQ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) struct rate_estimator *estimator;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) int scd_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) union {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) struct rx_pool rx_pool;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) struct aal1 aal1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) } rcv;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) /* RCTE - Receive Connection Table Entry */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) struct rct_entry
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) u32 word_1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) u32 buffer_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) u32 dma_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) u32 aal5_crc32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) /* RSQ - Receive Status Queue */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) #define SAR_RSQE_VALID 0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) #define SAR_RSQE_IDLE 0x40000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) #define SAR_RSQE_BUF_MASK 0x00030000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) #define SAR_RSQE_BUF_ASGN 0x00008000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) #define SAR_RSQE_NZGFC 0x00004000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) #define SAR_RSQE_EPDU 0x00002000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) #define SAR_RSQE_BUF_CONT 0x00001000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) #define SAR_RSQE_EFCIE 0x00000800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) #define SAR_RSQE_CLP 0x00000400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) #define SAR_RSQE_CRC 0x00000200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) #define SAR_RSQE_CELLCNT 0x000001FF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) #define RSQSIZE 8192
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) #define RSQ_NUM_ENTRIES (RSQSIZE / 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) #define RSQ_ALIGNMENT 8192
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) struct rsq_entry {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) u32 word_1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) u32 word_2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) u32 word_3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) u32 word_4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) struct rsq_info {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) struct rsq_entry *base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) struct rsq_entry *next;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) struct rsq_entry *last;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) dma_addr_t paddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) /* TSQ - Transmit Status Queue */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) #define SAR_TSQE_INVALID 0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) #define SAR_TSQE_TIMESTAMP 0x00FFFFFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) #define SAR_TSQE_TYPE 0x60000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) #define SAR_TSQE_TYPE_TIMER 0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) #define SAR_TSQE_TYPE_TSR 0x20000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) #define SAR_TSQE_TYPE_IDLE 0x40000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) #define SAR_TSQE_TYPE_TBD_COMP 0x60000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) #define SAR_TSQE_TAG(stat) (((stat) >> 24) & 0x1f)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) #define TSQSIZE 8192
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) #define TSQ_NUM_ENTRIES 1024
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) #define TSQ_ALIGNMENT 8192
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) struct tsq_entry
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) u32 word_1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) u32 word_2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) struct tsq_info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) struct tsq_entry *base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) struct tsq_entry *next;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) struct tsq_entry *last;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) dma_addr_t paddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) struct tst_info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) struct vc_map *vc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) u32 tste;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) #define TSTE_MASK 0x601fffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) #define TSTE_OPC_MASK 0x60000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) #define TSTE_OPC_NULL 0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) #define TSTE_OPC_CBR 0x20000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) #define TSTE_OPC_VAR 0x40000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) #define TSTE_OPC_JMP 0x60000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) #define TSTE_PUSH_IDLE 0x01000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) #define TSTE_PUSH_ACTIVE 0x02000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) #define TST_SWITCH_DONE 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) #define TST_SWITCH_PENDING 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) #define TST_SWITCH_WAIT 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) #define FBQ_SHIFT 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) #define FBQ_SIZE (1 << FBQ_SHIFT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) #define FBQ_MASK (FBQ_SIZE - 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) struct sb_pool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) unsigned int index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) struct sk_buff *skb[FBQ_SIZE];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) #define POOL_HANDLE(queue, index) (((queue + 1) << 16) | (index))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) #define POOL_QUEUE(handle) (((handle) >> 16) - 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) #define POOL_INDEX(handle) ((handle) & 0xffff)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) struct idt77252_dev
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) struct tsq_info tsq; /* Transmit Status Queue */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) struct rsq_info rsq; /* Receive Status Queue */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) struct pci_dev *pcidev; /* PCI handle (desriptor) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) struct atm_dev *atmdev; /* ATM device desriptor */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) void __iomem *membase; /* SAR's memory base address */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) unsigned long srambase; /* SAR's sram base address */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) void __iomem *fbq[4]; /* FBQ fill addresses */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) struct mutex mutex;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) spinlock_t cmd_lock; /* for r/w utility/sram */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) unsigned long softstat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) unsigned long flags; /* see blow */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) struct work_struct tqueue;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) unsigned long tct_base; /* TCT base address in SRAM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) unsigned long rct_base; /* RCT base address in SRAM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) unsigned long rt_base; /* Rate Table base in SRAM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) unsigned long scd_base; /* SCD base address in SRAM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) unsigned long tst[2]; /* TST base address in SRAM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) unsigned long abrst_base; /* ABRST base address in SRAM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) unsigned long fifo_base; /* RX FIFO base in SRAM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) unsigned long irqstat[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) unsigned int sramsize; /* SAR's sram size */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) unsigned int tct_size; /* total TCT entries */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) unsigned int rct_size; /* total RCT entries */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) unsigned int scd_size; /* length of SCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) unsigned int tst_size; /* total TST entries */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) unsigned int tst_free; /* free TSTEs in TST */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) unsigned int abrst_size; /* size of ABRST in words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) unsigned int fifo_size; /* size of RX FIFO in words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) unsigned int vpibits; /* Bits used for VPI index */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) unsigned int vcibits; /* Bits used for VCI index */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) unsigned int vcimask; /* Mask for VCI index */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) unsigned int utopia_pcr; /* Utopia Itf's Cell Rate */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) unsigned int link_pcr; /* PHY's Peek Cell Rate */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) struct vc_map **vcs; /* Open Connections */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) struct vc_map **scd2vc; /* SCD to Connection map */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) struct tst_info *soft_tst; /* TST to Connection map */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) unsigned int tst_index; /* Current TST in use */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) struct timer_list tst_timer;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) spinlock_t tst_lock;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) unsigned long tst_state;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) struct sb_pool sbpool[4]; /* Pool of RX skbuffs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) struct sk_buff *raw_cell_head; /* Pointer to raw cell queue */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) u32 *raw_cell_hnd; /* Pointer to RCQ handle */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) dma_addr_t raw_cell_paddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) int index; /* SAR's ID */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) int revision; /* chip revision */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) char name[16]; /* Device name */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) struct idt77252_dev *next;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) /* definition for flag field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) #define IDT77252_BIT_INIT 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) #define IDT77252_BIT_INTERRUPT 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) #define ATM_CELL_PAYLOAD 48
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) #define FREEBUF_ALIGNMENT 16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) /* Makros */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) #define ALIGN_ADDRESS(addr, alignment) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) ((((u32)(addr)) + (((u32)(alignment))-1)) & ~(((u32)(alignment)) - 1))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) /* ABR SAR Network operation Register */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) #define SAR_REG_DR0 (card->membase + 0x00)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) #define SAR_REG_DR1 (card->membase + 0x04)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) #define SAR_REG_DR2 (card->membase + 0x08)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) #define SAR_REG_DR3 (card->membase + 0x0C)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) #define SAR_REG_CMD (card->membase + 0x10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) #define SAR_REG_CFG (card->membase + 0x14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) #define SAR_REG_STAT (card->membase + 0x18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) #define SAR_REG_RSQB (card->membase + 0x1C)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) #define SAR_REG_RSQT (card->membase + 0x20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) #define SAR_REG_RSQH (card->membase + 0x24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) #define SAR_REG_CDC (card->membase + 0x28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) #define SAR_REG_VPEC (card->membase + 0x2C)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) #define SAR_REG_ICC (card->membase + 0x30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) #define SAR_REG_RAWCT (card->membase + 0x34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) #define SAR_REG_TMR (card->membase + 0x38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) #define SAR_REG_TSTB (card->membase + 0x3C)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) #define SAR_REG_TSQB (card->membase + 0x40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) #define SAR_REG_TSQT (card->membase + 0x44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) #define SAR_REG_TSQH (card->membase + 0x48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) #define SAR_REG_GP (card->membase + 0x4C)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) #define SAR_REG_VPM (card->membase + 0x50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) #define SAR_REG_RXFD (card->membase + 0x54)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) #define SAR_REG_RXFT (card->membase + 0x58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) #define SAR_REG_RXFH (card->membase + 0x5C)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) #define SAR_REG_RAWHND (card->membase + 0x60)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) #define SAR_REG_RXSTAT (card->membase + 0x64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) #define SAR_REG_ABRSTD (card->membase + 0x68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) #define SAR_REG_ABRRQ (card->membase + 0x6C)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) #define SAR_REG_VBRRQ (card->membase + 0x70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) #define SAR_REG_RTBL (card->membase + 0x74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) #define SAR_REG_MDFCT (card->membase + 0x78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) #define SAR_REG_TXSTAT (card->membase + 0x7C)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) #define SAR_REG_TCMDQ (card->membase + 0x80)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) #define SAR_REG_IRCP (card->membase + 0x84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) #define SAR_REG_FBQP0 (card->membase + 0x88)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) #define SAR_REG_FBQP1 (card->membase + 0x8C)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) #define SAR_REG_FBQP2 (card->membase + 0x90)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) #define SAR_REG_FBQP3 (card->membase + 0x94)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) #define SAR_REG_FBQS0 (card->membase + 0x98)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) #define SAR_REG_FBQS1 (card->membase + 0x9C)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) #define SAR_REG_FBQS2 (card->membase + 0xA0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) #define SAR_REG_FBQS3 (card->membase + 0xA4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) #define SAR_REG_FBQWP0 (card->membase + 0xA8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) #define SAR_REG_FBQWP1 (card->membase + 0xAC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) #define SAR_REG_FBQWP2 (card->membase + 0xB0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) #define SAR_REG_FBQWP3 (card->membase + 0xB4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) #define SAR_REG_NOW (card->membase + 0xB8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) /* Commands */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) #define SAR_CMD_NO_OPERATION 0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) #define SAR_CMD_OPENCLOSE_CONNECTION 0x20000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) #define SAR_CMD_WRITE_SRAM 0x40000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) #define SAR_CMD_READ_SRAM 0x50000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) #define SAR_CMD_READ_UTILITY 0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) #define SAR_CMD_WRITE_UTILITY 0x90000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) #define SAR_CMD_OPEN_CONNECTION (SAR_CMD_OPENCLOSE_CONNECTION | 0x00080000)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) #define SAR_CMD_CLOSE_CONNECTION SAR_CMD_OPENCLOSE_CONNECTION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) /* Configuration Register bits */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) #define SAR_CFG_SWRST 0x80000000 /* Software reset */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) #define SAR_CFG_LOOP 0x40000000 /* Internal Loopback */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) #define SAR_CFG_RXPTH 0x20000000 /* Receive Path Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) #define SAR_CFG_IDLE_CLP 0x10000000 /* SAR set CLP Bits of Null Cells */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) #define SAR_CFG_TX_FIFO_SIZE_1 0x04000000 /* TX FIFO Size = 1 cell */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) #define SAR_CFG_TX_FIFO_SIZE_2 0x08000000 /* TX FIFO Size = 2 cells */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) #define SAR_CFG_TX_FIFO_SIZE_4 0x0C000000 /* TX FIFO Size = 4 cells */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) #define SAR_CFG_TX_FIFO_SIZE_9 0x00000000 /* TX FIFO Size = 9 cells (full) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) #define SAR_CFG_NO_IDLE 0x02000000 /* SAR sends no Null Cells */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) #define SAR_CFG_RSVD1 0x01000000 /* Reserved */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) #define SAR_CFG_RXSTQ_SIZE_2k 0x00000000 /* RX Stat Queue Size = 2048 byte */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) #define SAR_CFG_RXSTQ_SIZE_4k 0x00400000 /* RX Stat Queue Size = 4096 byte */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) #define SAR_CFG_RXSTQ_SIZE_8k 0x00800000 /* RX Stat Queue Size = 8192 byte */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) #define SAR_CFG_RXSTQ_SIZE_R 0x00C00000 /* RX Stat Queue Size = reserved */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) #define SAR_CFG_ICAPT 0x00200000 /* accept Invalid Cells */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) #define SAR_CFG_IGGFC 0x00100000 /* Ignore GFC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) #define SAR_CFG_VPVCS_0 0x00000000 /* VPI/VCI Select bit range */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) #define SAR_CFG_VPVCS_1 0x00040000 /* VPI/VCI Select bit range */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) #define SAR_CFG_VPVCS_2 0x00080000 /* VPI/VCI Select bit range */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) #define SAR_CFG_VPVCS_8 0x000C0000 /* VPI/VCI Select bit range */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) #define SAR_CFG_CNTBL_1k 0x00000000 /* Connection Table Size */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) #define SAR_CFG_CNTBL_4k 0x00010000 /* Connection Table Size */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) #define SAR_CFG_CNTBL_16k 0x00020000 /* Connection Table Size */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) #define SAR_CFG_CNTBL_512 0x00030000 /* Connection Table Size */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) #define SAR_CFG_VPECA 0x00008000 /* VPI/VCI Error Cell Accept */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) #define SAR_CFG_RXINT_NOINT 0x00000000 /* No Interrupt on PDU received */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) #define SAR_CFG_RXINT_NODELAY 0x00001000 /* Interrupt without delay to host*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) #define SAR_CFG_RXINT_256US 0x00002000 /* Interrupt with delay 256 usec */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) #define SAR_CFG_RXINT_505US 0x00003000 /* Interrupt with delay 505 usec */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) #define SAR_CFG_RXINT_742US 0x00004000 /* Interrupt with delay 742 usec */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) #define SAR_CFG_RAWIE 0x00000800 /* Raw Cell Queue Interrupt Enable*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) #define SAR_CFG_RQFIE 0x00000400 /* RSQ Almost Full Int Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) #define SAR_CFG_RSVD2 0x00000200 /* Reserved */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) #define SAR_CFG_CACHE 0x00000100 /* DMA on Cache Line Boundary */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) #define SAR_CFG_TMOIE 0x00000080 /* Timer Roll Over Int Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) #define SAR_CFG_FBIE 0x00000040 /* Free Buffer Queue Int Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) #define SAR_CFG_TXEN 0x00000020 /* Transmit Operation Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) #define SAR_CFG_TXINT 0x00000010 /* Transmit status Int Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) #define SAR_CFG_TXUIE 0x00000008 /* Transmit underrun Int Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) #define SAR_CFG_UMODE 0x00000004 /* Utopia Mode Select */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) #define SAR_CFG_TXSFI 0x00000002 /* Transmit status Full Int Enable*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) #define SAR_CFG_PHYIE 0x00000001 /* PHY Interrupt Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) #define SAR_CFG_TX_FIFO_SIZE_MASK 0x0C000000 /* TX FIFO Size Mask */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) #define SAR_CFG_RXSTQSIZE_MASK 0x00C00000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) #define SAR_CFG_CNTBL_MASK 0x00030000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) #define SAR_CFG_RXINT_MASK 0x00007000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) /* Status Register bits */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) #define SAR_STAT_FRAC_3 0xF0000000 /* Fraction of Free Buffer Queue 3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) #define SAR_STAT_FRAC_2 0x0F000000 /* Fraction of Free Buffer Queue 2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) #define SAR_STAT_FRAC_1 0x00F00000 /* Fraction of Free Buffer Queue 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) #define SAR_STAT_FRAC_0 0x000F0000 /* Fraction of Free Buffer Queue 0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) #define SAR_STAT_TSIF 0x00008000 /* Transmit Status Indicator */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) #define SAR_STAT_TXICP 0x00004000 /* Transmit Status Indicator */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) #define SAR_STAT_RSVD1 0x00002000 /* Reserved */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) #define SAR_STAT_TSQF 0x00001000 /* Transmit Status Queue full */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) #define SAR_STAT_TMROF 0x00000800 /* Timer overflow */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) #define SAR_STAT_PHYI 0x00000400 /* PHY device Interrupt flag */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) #define SAR_STAT_CMDBZ 0x00000200 /* ABR SAR Command Busy Flag */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) #define SAR_STAT_FBQ3A 0x00000100 /* Free Buffer Queue 3 Attention */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) #define SAR_STAT_FBQ2A 0x00000080 /* Free Buffer Queue 2 Attention */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) #define SAR_STAT_RSQF 0x00000040 /* Receive Status Queue full */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) #define SAR_STAT_EPDU 0x00000020 /* End Of PDU Flag */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) #define SAR_STAT_RAWCF 0x00000010 /* Raw Cell Flag */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) #define SAR_STAT_FBQ1A 0x00000008 /* Free Buffer Queue 1 Attention */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) #define SAR_STAT_FBQ0A 0x00000004 /* Free Buffer Queue 0 Attention */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) #define SAR_STAT_RSQAF 0x00000002 /* Receive Status Queue almost full*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) #define SAR_STAT_RSVD2 0x00000001 /* Reserved */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) /* General Purpose Register bits */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) #define SAR_GP_TXNCC_MASK 0xff000000 /* Transmit Negative Credit Count */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) #define SAR_GP_EEDI 0x00010000 /* EEPROM Data In */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) #define SAR_GP_BIGE 0x00008000 /* Big Endian Operation */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) #define SAR_GP_RM_NORMAL 0x00000000 /* Normal handling of RM cells */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) #define SAR_GP_RM_TO_RCQ 0x00002000 /* put RM cells into Raw Cell Queue */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) #define SAR_GP_RM_RSVD 0x00004000 /* Reserved */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) #define SAR_GP_RM_INHIBIT 0x00006000 /* Inhibit update of Connection tab */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) #define SAR_GP_PHY_RESET 0x00000008 /* PHY Reset */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) #define SAR_GP_EESCLK 0x00000004 /* EEPROM SCLK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) #define SAR_GP_EECS 0x00000002 /* EEPROM Chip Select */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) #define SAR_GP_EEDO 0x00000001 /* EEPROM Data Out */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) /* SAR local SRAM layout for 128k work SRAM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) #define SAR_SRAM_SCD_SIZE 12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) #define SAR_SRAM_TCT_SIZE 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) #define SAR_SRAM_RCT_SIZE 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619) #define SAR_SRAM_TCT_128_BASE 0x00000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) #define SAR_SRAM_TCT_128_TOP 0x01fff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) #define SAR_SRAM_RCT_128_BASE 0x02000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) #define SAR_SRAM_RCT_128_TOP 0x02fff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) #define SAR_SRAM_FB0_128_BASE 0x03000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) #define SAR_SRAM_FB0_128_TOP 0x033ff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625) #define SAR_SRAM_FB1_128_BASE 0x03400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) #define SAR_SRAM_FB1_128_TOP 0x037ff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) #define SAR_SRAM_FB2_128_BASE 0x03800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) #define SAR_SRAM_FB2_128_TOP 0x03bff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) #define SAR_SRAM_FB3_128_BASE 0x03c00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) #define SAR_SRAM_FB3_128_TOP 0x03fff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) #define SAR_SRAM_SCD_128_BASE 0x04000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) #define SAR_SRAM_SCD_128_TOP 0x07fff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) #define SAR_SRAM_TST1_128_BASE 0x08000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) #define SAR_SRAM_TST1_128_TOP 0x0bfff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) #define SAR_SRAM_TST2_128_BASE 0x0c000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) #define SAR_SRAM_TST2_128_TOP 0x0ffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) #define SAR_SRAM_ABRSTD_128_BASE 0x10000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638) #define SAR_SRAM_ABRSTD_128_TOP 0x13fff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) #define SAR_SRAM_RT_128_BASE 0x14000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) #define SAR_SRAM_RT_128_TOP 0x15fff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) #define SAR_SRAM_FIFO_128_BASE 0x18000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) #define SAR_SRAM_FIFO_128_TOP 0x1ffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) /* SAR local SRAM layout for 32k work SRAM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) #define SAR_SRAM_TCT_32_BASE 0x00000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) #define SAR_SRAM_TCT_32_TOP 0x00fff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) #define SAR_SRAM_RCT_32_BASE 0x01000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) #define SAR_SRAM_RCT_32_TOP 0x017ff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) #define SAR_SRAM_FB0_32_BASE 0x01800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) #define SAR_SRAM_FB0_32_TOP 0x01bff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) #define SAR_SRAM_FB1_32_BASE 0x01c00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) #define SAR_SRAM_FB1_32_TOP 0x01fff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) #define SAR_SRAM_FB2_32_BASE 0x02000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) #define SAR_SRAM_FB2_32_TOP 0x023ff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) #define SAR_SRAM_FB3_32_BASE 0x02400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) #define SAR_SRAM_FB3_32_TOP 0x027ff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) #define SAR_SRAM_SCD_32_BASE 0x02800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) #define SAR_SRAM_SCD_32_TOP 0x03fff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) #define SAR_SRAM_TST1_32_BASE 0x04000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) #define SAR_SRAM_TST1_32_TOP 0x04fff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) #define SAR_SRAM_TST2_32_BASE 0x05000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669) #define SAR_SRAM_TST2_32_TOP 0x05fff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) #define SAR_SRAM_ABRSTD_32_BASE 0x06000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) #define SAR_SRAM_ABRSTD_32_TOP 0x067ff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) #define SAR_SRAM_RT_32_BASE 0x06800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) #define SAR_SRAM_RT_32_TOP 0x06fff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) #define SAR_SRAM_FIFO_32_BASE 0x07000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) #define SAR_SRAM_FIFO_32_TOP 0x07fff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680) /* TSR - Transmit Status Request */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) #define SAR_TSR_TYPE_TSR 0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) #define SAR_TSR_TYPE_TBD 0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686) #define SAR_TSR_TSIF 0x20000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) #define SAR_TSR_TAG_MASK 0x01F00000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) /* TBD - Transmit Buffer Descriptor */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696) #define SAR_TBD_EPDU 0x40000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697) #define SAR_TBD_TSIF 0x20000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) #define SAR_TBD_OAM 0x10000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) #define SAR_TBD_AAL0 0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) #define SAR_TBD_AAL34 0x04000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701) #define SAR_TBD_AAL5 0x08000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) #define SAR_TBD_GTSI 0x02000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) #define SAR_TBD_TAG_MASK 0x01F00000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) #define SAR_TBD_VPI_MASK 0x0FF00000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) #define SAR_TBD_VCI_MASK 0x000FFFF0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) #define SAR_TBD_VC_MASK (SAR_TBD_VPI_MASK | SAR_TBD_VCI_MASK)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709) #define SAR_TBD_VPI_SHIFT 20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) #define SAR_TBD_VCI_SHIFT 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) /* RXFD - Receive FIFO Descriptor */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) #define SAR_RXFD_SIZE_MASK 0x0F000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) #define SAR_RXFD_SIZE_512 0x00000000 /* 512 words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) #define SAR_RXFD_SIZE_1K 0x01000000 /* 1k words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) #define SAR_RXFD_SIZE_2K 0x02000000 /* 2k words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723) #define SAR_RXFD_SIZE_4K 0x03000000 /* 4k words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724) #define SAR_RXFD_SIZE_8K 0x04000000 /* 8k words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) #define SAR_RXFD_SIZE_16K 0x05000000 /* 16k words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) #define SAR_RXFD_SIZE_32K 0x06000000 /* 32k words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) #define SAR_RXFD_SIZE_64K 0x07000000 /* 64k words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) #define SAR_RXFD_SIZE_128K 0x08000000 /* 128k words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729) #define SAR_RXFD_SIZE_256K 0x09000000 /* 256k words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) #define SAR_RXFD_ADDR_MASK 0x001ffc00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) /* ABRSTD - ABR + VBR Schedule Tables */
^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)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) #define SAR_ABRSTD_SIZE_MASK 0x07000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740) #define SAR_ABRSTD_SIZE_512 0x00000000 /* 512 words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741) #define SAR_ABRSTD_SIZE_1K 0x01000000 /* 1k words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742) #define SAR_ABRSTD_SIZE_2K 0x02000000 /* 2k words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743) #define SAR_ABRSTD_SIZE_4K 0x03000000 /* 4k words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744) #define SAR_ABRSTD_SIZE_8K 0x04000000 /* 8k words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745) #define SAR_ABRSTD_SIZE_16K 0x05000000 /* 16k words */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746) #define SAR_ABRSTD_ADDR_MASK 0x001ffc00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) /* RCTE - Receive Connection Table Entry */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) #define SAR_RCTE_IL_MASK 0xE0000000 /* inactivity limit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756) #define SAR_RCTE_IC_MASK 0x1C000000 /* inactivity count */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757) #define SAR_RCTE_RSVD 0x02000000 /* reserved */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758) #define SAR_RCTE_LCD 0x01000000 /* last cell data */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759) #define SAR_RCTE_CI_VC 0x00800000 /* EFCI in previous cell of VC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760) #define SAR_RCTE_FBP_01 0x00000000 /* 1. cell->FBQ0, others->FBQ1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) #define SAR_RCTE_FBP_1 0x00200000 /* use FBQ 1 for all cells */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762) #define SAR_RCTE_FBP_2 0x00400000 /* use FBQ 2 for all cells */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763) #define SAR_RCTE_FBP_3 0x00600000 /* use FBQ 3 for all cells */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764) #define SAR_RCTE_NZ_GFC 0x00100000 /* non zero GFC in all cell of VC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765) #define SAR_RCTE_CONNECTOPEN 0x00080000 /* VC is open */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766) #define SAR_RCTE_AAL_MASK 0x00070000 /* mask for AAL type field s.b. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) #define SAR_RCTE_RAWCELLINTEN 0x00008000 /* raw cell interrupt enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768) #define SAR_RCTE_RXCONCELLADDR 0x00004000 /* RX constant cell address */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769) #define SAR_RCTE_BUFFSTAT_MASK 0x00003000 /* buffer status */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770) #define SAR_RCTE_EFCI 0x00000800 /* EFCI Congestion flag */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771) #define SAR_RCTE_CLP 0x00000400 /* Cell Loss Priority flag */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772) #define SAR_RCTE_CRC 0x00000200 /* Received CRC Error */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773) #define SAR_RCTE_CELLCNT_MASK 0x000001FF /* cell Count */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775) #define SAR_RCTE_AAL0 0x00000000 /* AAL types for ALL field */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776) #define SAR_RCTE_AAL34 0x00010000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777) #define SAR_RCTE_AAL5 0x00020000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778) #define SAR_RCTE_RCQ 0x00030000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779) #define SAR_RCTE_OAM 0x00040000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781) #define TCMDQ_START 0x01000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782) #define TCMDQ_LACR 0x02000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783) #define TCMDQ_START_LACR 0x03000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 784) #define TCMDQ_INIT_ER 0x04000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 785) #define TCMDQ_HALT 0x05000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 786)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 787)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 788) struct idt77252_skb_prv {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 789) struct scqe tbd; /* Transmit Buffer Descriptor */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 790) dma_addr_t paddr; /* DMA handle */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 791) u32 pool; /* sb_pool handle */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 792) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 793)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 794) #define IDT77252_PRV_TBD(skb) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 795) (((struct idt77252_skb_prv *)(ATM_SKB(skb)+1))->tbd)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 796) #define IDT77252_PRV_PADDR(skb) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 797) (((struct idt77252_skb_prv *)(ATM_SKB(skb)+1))->paddr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 798) #define IDT77252_PRV_POOL(skb) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 799) (((struct idt77252_skb_prv *)(ATM_SKB(skb)+1))->pool)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 800)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 801) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 802) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 803) /* PCI related items */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 804) /* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 805) /*****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 806)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 807) #ifndef PCI_VENDOR_ID_IDT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 808) #define PCI_VENDOR_ID_IDT 0x111D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 809) #endif /* PCI_VENDOR_ID_IDT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 810)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 811) #ifndef PCI_DEVICE_ID_IDT_IDT77252
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 812) #define PCI_DEVICE_ID_IDT_IDT77252 0x0003
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 813) #endif /* PCI_DEVICE_ID_IDT_IDT772052 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 814)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 815)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 816) #endif /* !(_IDT77252_H) */