Home | History | Annotate | Line # | Download | only in booke
etsecreg.h revision 1.6
      1  1.6  nonaka /*	$NetBSD: etsecreg.h,v 1.6 2015/02/17 01:53:21 nonaka Exp $	*/
      2  1.2    matt /*-
      3  1.2    matt  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
      4  1.2    matt  * All rights reserved.
      5  1.2    matt  *
      6  1.2    matt  * This code is derived from software contributed to The NetBSD Foundation
      7  1.2    matt  * by Raytheon BBN Technologies Corp and Defense Advanced Research Projects
      8  1.2    matt  * Agency and which was developed by Matt Thomas of 3am Software Foundry.
      9  1.2    matt  *
     10  1.2    matt  * This material is based upon work supported by the Defense Advanced Research
     11  1.2    matt  * Projects Agency and Space and Naval Warfare Systems Center, Pacific, under
     12  1.2    matt  * Contract No. N66001-09-C-2073.
     13  1.2    matt  * Approved for Public Release, Distribution Unlimited
     14  1.2    matt  *
     15  1.2    matt  * Redistribution and use in source and binary forms, with or without
     16  1.2    matt  * modification, are permitted provided that the following conditions
     17  1.2    matt  * are met:
     18  1.2    matt  * 1. Redistributions of source code must retain the above copyright
     19  1.2    matt  *    notice, this list of conditions and the following disclaimer.
     20  1.2    matt  * 2. Redistributions in binary form must reproduce the above copyright
     21  1.2    matt  *    notice, this list of conditions and the following disclaimer in the
     22  1.2    matt  *    documentation and/or other materials provided with the distribution.
     23  1.2    matt  *
     24  1.2    matt  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     25  1.2    matt  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     26  1.2    matt  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     27  1.2    matt  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     28  1.2    matt  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     29  1.2    matt  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     30  1.2    matt  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     31  1.2    matt  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     32  1.2    matt  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     33  1.2    matt  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     34  1.2    matt  * POSSIBILITY OF SUCH DAMAGE.
     35  1.2    matt  */
     36  1.2    matt 
     37  1.2    matt #ifndef _POWERPC_BOOKE_ETSEC_REG_H_
     38  1.2    matt #define _POWERPC_BOOKE_ETSEC_REG_H_
     39  1.2    matt 
     40  1.2    matt #define	TXBD_R		0x8000		/* Ready (HW Owned) */
     41  1.2    matt #define	TXBD_PADCRC	0x4000		/* B: Pad+CRC */
     42  1.2    matt #define	TXBD_W		0x2000		/* B: Wrap (End of Ring) */
     43  1.2    matt #define	TXBD_I		0x1000		/* B: Interrupt (IEVENT[TXB|TXF]) */
     44  1.2    matt #define	TXBD_L		0x0800		/* B: Last */
     45  1.2    matt #define	TXBD_TC		0x0400		/* B: Tx CRC. (Add CRC) */
     46  1.2    matt #define	TXBD_PRE	0x0200		/* B: custom preamble */
     47  1.2    matt #define	TXBD_DEF	TXBD_PRE	/* A: transmit deferred */
     48  1.2    matt #define	TXBD_HFE	0x0080		/* B: Huge Frame Enable */
     49  1.2    matt #define	TXBD_LC		TXBD_HFE	/* A: Late Coll */
     50  1.2    matt #define	TXBD_CF		0x0040		/* B: Control Frame */
     51  1.2    matt #define	TXBD_RL		TXBD_CF		/* A: Tx Limit */
     52  1.2    matt #define	TXBD_RC		0x003c		/* A: Retry Count */
     53  1.2    matt #define	TXBD_TOE	0x0002		/* B: TOE frame */
     54  1.2    matt #define	TXBD_UN		TXBD_TOE	/* A: Underrun */
     55  1.2    matt #define	TXBD_TR		0x0001		/* A: Truncation */
     56  1.2    matt #define	TXBD_ERRORS	(TXBD_LC|TXBD_RL|TXBD_UN|TXBD_TR)
     57  1.2    matt 
     58  1.2    matt struct txbd {
     59  1.2    matt 	uint16_t txbd_flags;
     60  1.2    matt 	uint16_t txbd_len;
     61  1.2    matt 	uint32_t txbd_bufptr;
     62  1.2    matt };
     63  1.2    matt 
     64  1.2    matt #define	TXFCB_VLN	0x8000	/* VLaN control word valid */
     65  1.2    matt #define	TXFCB_IP	0x4000	/* Layer 3 header is an IP header */
     66  1.2    matt #define	TXFCB_IP6	0x2000	/* IP Header is IPv6 */
     67  1.2    matt #define	TXFCB_TUP	0x1000	/* Layer 4 is TCP or UDP */
     68  1.2    matt #define	TXFCB_UDP	0x0800	/* UDP at layer 4 */
     69  1.2    matt #define	TXFCB_CIP	0x0400	/* Checksum IP header enable */
     70  1.2    matt #define	TXFCB_CTU	0x0200	/* Checksum TCP or UCP header enable */
     71  1.2    matt #define	TXFCB_NPH	0x0100	/* No std Pseudo-Header checksm, use phcs */
     72  1.2    matt 
     73  1.2    matt struct txfcb {
     74  1.2    matt 	uint16_t txfcb_flags;
     75  1.2    matt 	uint8_t txfcb_l4os;	/* layer 4 hdr from start of layer 3 header */
     76  1.2    matt 	uint8_t txfcb_l3os;	/* layer 3 hdr from start of layer 2 header */
     77  1.2    matt 	uint16_t txfcb_phcs;	/* pseudo-header checksum for NPH */
     78  1.2    matt 	uint16_t txfcb_vlctl;	/* vlan control word for insertion for VLN */
     79  1.2    matt };
     80  1.2    matt 
     81  1.2    matt #define	RXBD_E		0x8000		/* Empty (1 = Owned by ETSEC) */
     82  1.2    matt #define	RXBD_RO1	0x4000		/* S/W Ownership */
     83  1.2    matt #define	RXBD_W		0x2000		/* Wrap ring. */
     84  1.2    matt #define	RXBD_I		0x1000		/* Interrupt IEVENT[RXB|RXF] */
     85  1.2    matt #define	RXBD_L		0x0800		/* Last in frame */
     86  1.2    matt #define	RXBD_F		0x0400		/* First in frame */
     87  1.2    matt #define	RXBD_M		0x0100		/* Miss (promiscious match) */
     88  1.2    matt #define	RXBD_BC		0x0080		/* BroadCast match */
     89  1.2    matt #define	RXBD_MC		0x0040		/* MultiCast match */
     90  1.2    matt #define	RXBD_LG		0x0020		/* rx LarGe frame error */
     91  1.2    matt #define	RXBD_NO		0x0010		/* Non-octect aligned frame error */
     92  1.2    matt #define	RXBD_SH		0x0008		/* SHort frame */
     93  1.2    matt #define	RXBD_CR		0x0004		/* rx CRc error */
     94  1.2    matt #define	RXBD_OV		0x0002		/* OVerrun error */
     95  1.2    matt #define	RXBD_TR		0x0001		/* TRuncation error */
     96  1.2    matt #define	RXBD_ERRORS	0x003f
     97  1.2    matt 
     98  1.2    matt struct rxbd {
     99  1.2    matt 	uint16_t rxbd_flags;
    100  1.2    matt 	uint16_t rxbd_len;
    101  1.2    matt 	uint32_t rxbd_bufptr;
    102  1.2    matt };
    103  1.2    matt 
    104  1.2    matt #define	RXFCB_VLN	0x8000	/* VLaN tag recognized */
    105  1.2    matt #define	RXFCB_IP	0x4000	/* IP header found at layer 3 */
    106  1.2    matt #define	RXFCB_IP6	0x2000	/* IPv6 header found */
    107  1.2    matt #define	RXFCB_TUP	0x1000	/* TCP or UDP header found */
    108  1.2    matt #define	RXFCB_CIP	0x0800	/* IPv4 checksum performed */
    109  1.2    matt #define	RXFCB_CTU	0x0400	/* TCP or UDP checksum checked */
    110  1.2    matt #define	RXFCB_EIP	0x0200	/* IPv4 header checksum error */
    111  1.2    matt #define	RXFCB_ETU	0x0100	/* TCP or UDP header checksum error */
    112  1.2    matt #define	RXFCB_PERR	0x000c	/* Parse Error */
    113  1.2    matt #define	RXFCB_PERR_L3	0x0008	/* L3 Parse Error */
    114  1.2    matt 
    115  1.2    matt struct rxfcb {
    116  1.2    matt 	uint16_t rxfcb_flags;
    117  1.2    matt 	uint8_t rxfcb_rq;	/* receive queue index */
    118  1.2    matt 	uint8_t rxfcb_pro;	/* IP Protocol received */
    119  1.2    matt 	uint16_t rxfcb__mbz1;
    120  1.2    matt 	uint16_t rxfcb_vlctl;	/* VLAN control field */
    121  1.2    matt };
    122  1.2    matt 
    123  1.2    matt /* 0x000-0x0ff eTSEC general control/status registers */
    124  1.2    matt #define	TSEC_ID		0x000	/* Controller ID register */
    125  1.2    matt #define	TSEC_ID2	0x004	/* Controller ID register */
    126  1.2    matt #define	IEVENT		0x010	/* Interrupt event register */
    127  1.2    matt #define	IEVENT_BABR	__PPCBIT(0)	/* babbling receive error */
    128  1.2    matt #define	IEVENT_RXC	__PPCBIT(1)	/* receive control interrupt */
    129  1.2    matt #define	IEVENT_BSY	__PPCBIT(2)	/* busy condition interrupt */
    130  1.2    matt #define	IEVENT_EBERR	__PPCBIT(3)	/* internal bus error */
    131  1.2    matt #define	IEVENT_MSR0	__PPCBIT(5)	/* MIB counter overflow */
    132  1.2    matt #define	IEVENT_GTSC	__PPCBIT(6)	/* graceful transmit stop complete */
    133  1.2    matt #define	IEVENT_BABT	__PPCBIT(7)	/* babbing transmit error */
    134  1.2    matt #define	IEVENT_TXC	__PPCBIT(8)	/* transmit control interrupt */
    135  1.2    matt #define	IEVENT_TXE	__PPCBIT(9)	/* transmit error */
    136  1.2    matt #define	IEVENT_TXB	__PPCBIT(10)	/* transmit buffer */
    137  1.2    matt #define	IEVENT_TXF	__PPCBIT(11)	/* transmit frame interrupt */
    138  1.2    matt #define	IEVENT_LC	__PPCBIT(13)	/* late collision */
    139  1.2    matt #define	IEVENT_CRL	__PPCBIT(14)	/* collision retry limit */
    140  1.2    matt #define	IEVENT_XFUN	__PPCBIT(15)	/* transmit fifo underrun */
    141  1.2    matt #define	IEVENT_RXB	__PPCBIT(16)	/* receive buffer */
    142  1.2    matt #define	IEVENT_MAG	__PPCBIT(29)	/* magic packet detected */
    143  1.2    matt #define	IEVENT_MMRD	__PPCBIT(21)	/* MMI manangement read complete */
    144  1.2    matt #define	IEVENT_MMWR	__PPCBIT(22)	/* MMI manangement write complete */
    145  1.2    matt #define	IEVENT_GRSC	__PPCBIT(23)	/* graceful receive stop complete */
    146  1.2    matt #define	IEVENT_RXF	__PPCBIT(24)	/* receive frame interrupt */
    147  1.2    matt #define	IEVENT_FGPI	__PPCBIT(27)	/* filer generated general purpose interrupt */
    148  1.2    matt #define	IEVENT_FIR	__PPCBIT(28)	/* receive queue filer is invalid */
    149  1.2    matt #define	IEVENT_FIQ	__PPCBIT(29)	/* filed frame to invalid receive queue */
    150  1.2    matt #define	IEVENT_DPE	__PPCBIT(30)	/* internal data parity error */
    151  1.2    matt #define	IEVENT_PERR	__PPCBIT(31)	/* Receive parse error for TOE */
    152  1.2    matt #define	IMASK		0x014	/* Interrupt mask register */
    153  1.2    matt #define	EDIS		0x018	/* error disabled register */
    154  1.5    matt #define	EMAPG		0x01c	/* group eror mapping register */
    155  1.2    matt #define	ECNTRL		0x020	/* ethernet control register */
    156  1.2    matt #define	ECNTRL_FIFM	__PPCBIT(16)	/* FIFO mode enable */
    157  1.2    matt #define	ECNTRL_CLRCNT	__PPCBIT(17)	/* Clear all MIB counters */
    158  1.2    matt #define	ECNTRL_AUTOZ	__PPCBIT(18)	/* Auto zero MIB counter on read */
    159  1.2    matt #define	ECNTRL_STEN	__PPCBIT(19)	/* MIB Statistics Enabled */
    160  1.2    matt #define	ECNTRL_GMIIM	__PPCBIT(25)	/* GMII Interface Mode */
    161  1.2    matt #define	ECNTRL_TBIM	__PPCBIT(26)	/* Ten-Bit Interface Mode */
    162  1.2    matt #define	ECNTRL_RPM	__PPCBIT(27)	/* Reduced Pin Mode */
    163  1.2    matt #define	ECNTRL_R100M	__PPCBIT(28)	/* RGMII/RMII 100 Mode */
    164  1.2    matt #define	ECNTRL_RMM	__PPCBIT(29)	/* Reduced Pin Mode for 10/100 */
    165  1.2    matt #define	ECNTRL_SGMIIM	__PPCBIT(30)	/* SGMII Interface Mode */
    166  1.2    matt #define ECNTRL_DEFAULT	ECNTRL_STEN
    167  1.2    matt 
    168  1.2    matt #define	PTV		0x028	/* Pause time value register */
    169  1.2    matt #define	DMACTRL		0x02c	/* DMA control register */
    170  1.2    matt #define	DMACTRL_LE	__PPCBIT(16)	/* Little Endian Descriptor Mode */
    171  1.2    matt #define	DMACTRL_TDSEN	__PPCBIT(24)	/* TX Data Snoop enable */
    172  1.2    matt #define	DMACTRL_TBDSEN	__PPCBIT(25)	/* TxBD Data Snoop enable */
    173  1.2    matt #define	DMACTRL_GRS	__PPCBIT(27)	/* graceful receive stop */
    174  1.2    matt #define	DMACTRL_GTS	__PPCBIT(28)	/* graceful transmit stop */
    175  1.2    matt #define	DMACTRL_TOD	__PPCBIT(29)	/* Transmi On Demand for TxBD ring 0 */
    176  1.2    matt #define	DMACTRL_WWR	__PPCBIT(30)	/* Write With Response */
    177  1.2    matt #define	DMACTRL_WOP	__PPCBIT(31)	/* Wait or pool for TxBD ring 0 */
    178  1.2    matt #define	DMACTRL_DEFAULT	(DMACTRL_WOP|DMACTRL_WWR|DMACTRL_TDSEN|DMACTRL_TBDSEN)
    179  1.2    matt 
    180  1.2    matt #define	TBIPA		0x030	/* TBI phy address register */
    181  1.2    matt 
    182  1.2    matt /* 0x100-0x2ff eTSEC transmit control/status registers */
    183  1.2    matt 
    184  1.2    matt #define TCTRL		0x100 /* Transmit control register */
    185  1.2    matt #define TCTRL_IPCSEN	__PPCBIT(17) /* IP header checksum generation enable */
    186  1.2    matt #define TCTRL_TUCSEN	__PPCBIT(18) /* TCP/UDP header checksum generation enable */
    187  1.2    matt #define TCTRL_VLINS	__PPCBIT(19) /* VLAN tag insertion */
    188  1.2    matt #define TCTRL_THDF	__PPCBIT(29) /* Transmit half duplex */
    189  1.2    matt #define TCTRL_RFC_PAUSE	__PPCBIT(27) /* receive flow control pause frame */
    190  1.2    matt #define TCTRL_TFC_PAUSE	__PPCBIT(28) /* transmit flow control pause frame */
    191  1.2    matt #define TXSCHED		__PPCBITS(29,30) /* transmit ring scheduling algorithm */
    192  1.2    matt 
    193  1.2    matt #define TSTAT		0x104 /* Transmit status register */
    194  1.2    matt #define	TSTAT_THLT0	__PPCBIT(0) /* transmit halt of ring 0 */
    195  1.2    matt #define	TSTAT_THLT1	__PPCBIT(1)
    196  1.2    matt #define	TSTAT_THLT2	__PPCBIT(2)
    197  1.2    matt #define	TSTAT_THLT3	__PPCBIT(3)
    198  1.2    matt #define	TSTAT_THLT4	__PPCBIT(4)
    199  1.2    matt #define	TSTAT_THLT5	__PPCBIT(5)
    200  1.2    matt #define	TSTAT_THLT6	__PPCBIT(6)
    201  1.2    matt #define	TSTAT_THLT7	__PPCBIT(7)
    202  1.2    matt #define	TSTAT_THLTn(n)	(TSTAT_THLT0 >> (n))
    203  1.2    matt #define	TSTAT_THLT	__PPCBITS(0,7)
    204  1.2    matt #define	TSTAT_TXF0	__PPCBIT(16) /* transmit frame event occurred on ring 0 */
    205  1.2    matt #define	TSTAT_TXF1	__PPCBIT(17)
    206  1.2    matt #define	TSTAT_TXF2	__PPCBIT(18)
    207  1.2    matt #define	TSTAT_TXF3	__PPCBIT(19)
    208  1.2    matt #define	TSTAT_TXF4	__PPCBIT(20)
    209  1.2    matt #define	TSTAT_TXF5	__PPCBIT(21)
    210  1.2    matt #define	TSTAT_TXF6	__PPCBIT(22)
    211  1.2    matt #define	TSTAT_TXF7	__PPCBIT(23)
    212  1.2    matt #define	TSTAT_TXF	__PPCBITS(16,23)
    213  1.2    matt #define	TSTAT_TXFn(n)	(TSTAT_TXF0 >> (n))
    214  1.2    matt #define DFVLAN		0x108 /* Default VLAN control word [TSEC3] */
    215  1.2    matt #define TXIC		0x110 /* Transmit interrupt coalescing register */
    216  1.6  nonaka #define	TXIC_ICEN	__PPCBIT(0) /* Interrupt coalescing enable */
    217  1.6  nonaka #define	TXIC_ICCS	__PPCBIT(1) /* Interrupt coalescing timer clock source */
    218  1.6  nonaka #define	TXIC_ICCS_ETSEC		0         /* eTSEC Tx interface clocks */
    219  1.6  nonaka #define	TXIC_ICCS_SYSTEM	TXIC_ICCS /* system clocks */
    220  1.6  nonaka #define	TXIC_ICFT	__PPCBITS(3,10)
    221  1.6  nonaka #define	TXIC_ICFT_SET(n)	__SHIFTIN((n),TXIC_ICFT)
    222  1.6  nonaka #define	TXIC_ICTT	__PPCBITS(16,31)
    223  1.6  nonaka #define	TXIC_ICTT_SET(n)	__SHIFTIN((n),TXIC_ICTT)
    224  1.2    matt #define TQUEUE		0x114 /* Transmit queue control register [TSEC3] */
    225  1.2    matt #define	TQUEUE_EN0	__PPCBIT(16) /* transmit ring enabled */
    226  1.2    matt #define	TQUEUE_EN1	__PPCBIT(17)
    227  1.2    matt #define	TQUEUE_EN2	__PPCBIT(18)
    228  1.2    matt #define	TQUEUE_EN3	__PPCBIT(19)
    229  1.2    matt #define	TQUEUE_EN4	__PPCBIT(20)
    230  1.2    matt #define	TQUEUE_EN5	__PPCBIT(21)
    231  1.2    matt #define	TQUEUE_EN6	__PPCBIT(22)
    232  1.2    matt #define	TQUEUE_EN7	__PPCBIT(23)
    233  1.2    matt #define	TQUEUE_EN	__PPCBITS(16,23)
    234  1.2    matt #define	TQUEUE_ENn(n)	(TQUEUE_EN0 >> (n))
    235  1.2    matt #define TR03WT		0x140 /* TxBD Rings 0-3 round-robin weightings [TSEC3] */
    236  1.2    matt #define TR47WT		0x144 /* TxBD Rings 4-7 round-robin weightings [TSEC3] */
    237  1.2    matt #define TBDBPH		0x180 /* Tx data buffer pointer high bits [TSEC3] */
    238  1.2    matt #define TBPTR0		0x184 /* TxBD pointer for ring 0 */
    239  1.2    matt #define TBPTR1		0x18C /* TxBD pointer for ring 1 [TSEC3] */
    240  1.2    matt #define TBPTR2		0x194 /* TxBD pointer for ring 2 [TSEC3] */
    241  1.2    matt #define TBPTR3		0x19C /* TxBD pointer for ring 3 [TSEC3] */
    242  1.2    matt #define TBPTR4		0x1A4 /* TxBD pointer for ring 4 [TSEC3] */
    243  1.2    matt #define TBPTR5		0x1AC /* TxBD pointer for ring 5 [TSEC3] */
    244  1.2    matt #define TBPTR6		0x1B4 /* TxBD pointer for ring 6 [TSEC3] */
    245  1.2    matt #define TBPTR7		0x1BC /* TxBD pointer for ring 7 [TSEC3] */
    246  1.2    matt #define	TBPTRn(n)	(TBPTR0 + 8*(n))
    247  1.2    matt #define TBASEH		0x200 /* TxBD base address high bits [TSEC3] */
    248  1.2    matt #define TBASE0		0x204 /* TxBD base address of ring 0 */
    249  1.2    matt #define TBASE1		0x20C /* TxBD base address of ring 1 [TSEC3] */
    250  1.2    matt #define TBASE2		0x214 /* TxBD base address of ring 2 [TSEC3] */
    251  1.2    matt #define TBASE3		0x21C /* TxBD base address of ring 3 [TSEC3] */
    252  1.2    matt #define TBASE4		0x224 /* TxBD base address of ring 4 [TSEC3] */
    253  1.2    matt #define TBASE5		0x22C /* TxBD base address of ring 5 [TSEC3] */
    254  1.2    matt #define TBASE6		0x234 /* TxBD base address of ring 6 [TSEC3] */
    255  1.2    matt #define TBASE7		0x23C /* TxBD base address of ring 7 [TSEC3] */
    256  1.2    matt #define	TBASEn(n)	(TBASE0 + 8*(n))
    257  1.2    matt #define TMR_TXTS1_ID	0x280 /* Tx time stamp identification tag (set 1) [TSEC3] */
    258  1.2    matt #define TMR_TXTS2_ID	0x284 /* Tx time stamp identification tag (set 2) [TSEC3] */
    259  1.2    matt #define TMR_TXTS1_H	0x2C0 /* Tx time stamp high (set 1) [TSEC3] */
    260  1.2    matt #define TMR_TXTS1_L	0x2C4 /* Tx time stamp high (set 1) [TSEC3] */
    261  1.2    matt #define TMR_TXTS2_H	0x2C8 /* Tx time stamp high (set 2) [TSEC3] */
    262  1.2    matt #define TMR_TXTS2_L	0x2CC /* Tx time stamp high (set 2) [TSEC3] */
    263  1.2    matt 
    264  1.2    matt /* 0x300-0x4ff eTSEC receive control/status registers */
    265  1.2    matt 
    266  1.2    matt #define RCTRL		0x300 /* Receive control register */
    267  1.2    matt #define	RCTRL_PAL	__PPCBITS(11,15)
    268  1.2    matt #define	RCTRL_VLEX	__PPCBIT(18)
    269  1.2    matt #define	RCTRL_FILREN	__PPCBIT(19)
    270  1.2    matt #define	RCTRL_FSQEN	__PPCBIT(20)
    271  1.2    matt #define	RCTRL_GHTX	__PPCBIT(21)
    272  1.2    matt #define	RCTRL_IPCSEN	__PPCBIT(22)
    273  1.2    matt #define	RCTRL_TUCSEN	__PPCBIT(23)
    274  1.2    matt #define	RCTRL_PRSDEP	__PPCBITS(24,25)
    275  1.2    matt #define	RCTRL_PRSDEP_L4		__SHIFTIN(3,RCTRL_PRSDEP)
    276  1.2    matt #define	RCTRL_PRSDEP_L3		__SHIFTIN(2,RCTRL_PRSDEP)
    277  1.2    matt #define	RCTRL_PRSDEP_L2		__SHIFTIN(1,RCTRL_PRSDEP)
    278  1.2    matt #define	RCTRL_PRSDEP_OFF	__SHIFTIN(0,RCTRL_PRSDEP)
    279  1.2    matt #define	RCTRL_BC_REJ	__PPCBIT(27)
    280  1.2    matt #define	RCTRL_PROM	__PPCBIT(28)
    281  1.2    matt #define	RCTRL_RSF	__PPCBIT(29)
    282  1.2    matt #define	RCTRL_EMEN	__PPCBIT(30)
    283  1.2    matt #define	RCTRL_DEFAULT	(__SHIFTIN(2, RCTRL_PAL)|RCTRL_EMEN)
    284  1.2    matt #define RSTAT		0x304 /* Receive status register */
    285  1.2    matt #define	RSTAT_QHLT0	__PPCBIT(8) /* receive halt of ring 0 */
    286  1.2    matt #define	RSTAT_QHLT1	__PPCBIT(9)
    287  1.2    matt #define	RSTAT_QHLT2	__PPCBIT(10)
    288  1.2    matt #define	RSTAT_QHLT3	__PPCBIT(11)
    289  1.2    matt #define	RSTAT_QHLT4	__PPCBIT(12)
    290  1.2    matt #define	RSTAT_QHLT5	__PPCBIT(13)
    291  1.2    matt #define	RSTAT_QHLT6	__PPCBIT(14)
    292  1.2    matt #define	RSTAT_QHLT7	__PPCBIT(15)
    293  1.2    matt #define	RSTAT_QHLTn(n)	(RSTAT_QHLT0 >> (n))
    294  1.2    matt #define	RSTAT_QHLT	__PPCBITS(8,15)
    295  1.2    matt #define	RSTAT_RXF0	__PPCBIT(24) /* receive frame event occurred on ring 0 */
    296  1.2    matt #define	RSTAT_RXF1	__PPCBIT(25)
    297  1.2    matt #define	RSTAT_RXF2	__PPCBIT(26)
    298  1.2    matt #define	RSTAT_RXF3	__PPCBIT(27)
    299  1.2    matt #define	RSTAT_RXF4	__PPCBIT(28)
    300  1.2    matt #define	RSTAT_RXF5	__PPCBIT(29)
    301  1.2    matt #define	RSTAT_RXF6	__PPCBIT(30)
    302  1.2    matt #define	RSTAT_RXF7	__PPCBIT(31)
    303  1.2    matt #define	RSTAT_RXF	__PPCBITS(24,31)
    304  1.2    matt #define	RSTAT_RXFn(n)	(RSTAT_RXF0 >> (n))
    305  1.2    matt #define RXIC		0x310 /* Receive interrupt coalescing register */
    306  1.6  nonaka #define	RXIC_ICEN	__PPCBIT(0) /* Interrupt coalescing enable */
    307  1.6  nonaka #define	RXIC_ICCS	__PPCBIT(1) /* Interrupt coalescing timer clock source */
    308  1.6  nonaka #define	RXIC_ICCS_ETSEC		0         /* eTSEC Rx interface clocks */
    309  1.6  nonaka #define	RXIC_ICCS_SYSTEM	TXIC_ICCS /* system clocks */
    310  1.6  nonaka #define	RXIC_ICFT	__PPCBITS(3,10)
    311  1.6  nonaka #define	RXIC_ICFT_SET(n)	__SHIFTIN((n),TXIC_ICFT)
    312  1.6  nonaka #define	RXIC_ICTT	__PPCBITS(16,31)
    313  1.6  nonaka #define	RXIC_ICTT_SET(n)	__SHIFTIN((n),TXIC_ICTT)
    314  1.2    matt #define RQUEUE		0x314 /* Receive queue control register. [TSEC3] */
    315  1.2    matt #define	RQUEUE_EX0	__PPCBIT(8) /* data transferred by DMA to ring extracted according to ATTR register */
    316  1.2    matt #define	RQUEUE_EX1	__PPCBIT(9)
    317  1.2    matt #define	RQUEUE_EX2	__PPCBIT(10)
    318  1.2    matt #define	RQUEUE_EX3	__PPCBIT(11)
    319  1.2    matt #define	RQUEUE_EX4	__PPCBIT(12)
    320  1.2    matt #define	RQUEUE_EX5	__PPCBIT(13)
    321  1.2    matt #define	RQUEUE_EX6	__PPCBIT(14)
    322  1.2    matt #define	RQUEUE_EX7	__PPCBIT(15)
    323  1.2    matt #define	RQUEUE_EXn(n)	(RQUEUE_EX0 >> (n))
    324  1.2    matt #define	RQUEUE_EX	__PPCBITS(0,7)
    325  1.2    matt #define	RQUEUE_EN0	__PPCBIT(24) /* ring is queried for reception */
    326  1.2    matt #define	RQUEUE_EN1	__PPCBIT(25)
    327  1.2    matt #define	RQUEUE_EN2	__PPCBIT(26)
    328  1.2    matt #define	RQUEUE_EN3	__PPCBIT(27)
    329  1.2    matt #define	RQUEUE_EN4	__PPCBIT(28)
    330  1.2    matt #define	RQUEUE_EN5	__PPCBIT(29)
    331  1.2    matt #define	RQUEUE_EN6	__PPCBIT(30)
    332  1.2    matt #define	RQUEUE_EN7	__PPCBIT(31)
    333  1.2    matt #define	RQUEUE_EN	__PPCBITS(24,31)
    334  1.2    matt #define	RQUEUE_ENn(n)	(RQUEUE_EN0 >> (n))
    335  1.2    matt #define RBIFX		0x330 /* Receive bit field extract control register [TSEC3] */
    336  1.2    matt #define RQFAR		0x334 /* Receive queue filing table address register [TSEC3] */
    337  1.2    matt #define RQFCR		0x338 /* Receive queue filing table control register [TSEC3] */
    338  1.2    matt #define RQFPR		0x33C /* Receive queue filing table property register [TSEC3] */
    339  1.2    matt #define MRBLR		0x340 /* Maximum receive buffer length register */
    340  1.2    matt #define RBDBPH		0x380 /* Rx data buffer pointer high bits [TSEC3] */
    341  1.2    matt #define RBPTR0		0x384 /* RxBD pointer for ring 0 */
    342  1.2    matt #define RBPTR1		0x38C /* RxBD pointer for ring 1 [TSEC3] */
    343  1.2    matt #define RBPTR2		0x394 /* RxBD pointer for ring 2 [TSEC3] */
    344  1.2    matt #define RBPTR3		0x39C /* RxBD pointer for ring 3 [TSEC3] */
    345  1.2    matt #define RBPTR4		0x3A4 /* RxBD pointer for ring 4 [TSEC3] */
    346  1.2    matt #define RBPTR5		0x3AC /* RxBD pointer for ring 5 [TSEC3] */
    347  1.2    matt #define RBPTR6		0x3B4 /* RxBD pointer for ring 6 [TSEC3] */
    348  1.2    matt #define RBPTR7		0x3BC /* RxBD pointer for ring 7 [TSEC3] */
    349  1.2    matt #define RBASEH		0x400 /* RxBD base address high bits [TSEC3] */
    350  1.2    matt #define RBASE0		0x404 /* RxBD base address of ring 0 */
    351  1.2    matt #define RBASE1		0x40C /* RxBD base address of ring 1 [TSEC3] */
    352  1.2    matt #define RBASE2		0x414 /* RxBD base address of ring 2 [TSEC3] */
    353  1.2    matt #define RBASE3		0x41C /* RxBD base address of ring 3 [TSEC3] */
    354  1.2    matt #define RBASE4		0x424 /* RxBD base address of ring 4 [TSEC3] */
    355  1.2    matt #define RBASE5		0x42C /* RxBD base address of ring 5 [TSEC3] */
    356  1.2    matt #define RBASE6		0x434 /* RxBD base address of ring 6 [TSEC3] */
    357  1.2    matt #define RBASE7		0x43C /* RxBD base address of ring 7 [TSEC3] */
    358  1.2    matt #define RBASEn(n)	(RBASE0 + 4*(n))
    359  1.2    matt #define TMR_RXTS_H	0x4C0 /* Rx timer time stamp register high [TSEC3] */
    360  1.2    matt #define TMR_RXTS_L	0x4C4 /* Rx timer time stamp register low [TSEC3] */
    361  1.2    matt 
    362  1.2    matt /*	0x500-0x5ff MAC registers */
    363  1.2    matt 
    364  1.2    matt #define MACCFG1		0x500 /* MAC configuration register 1 */
    365  1.2    matt #define	MACCFG1_SOFT_RESET	__PPCBIT(0)
    366  1.2    matt #define	MACCFG1_RESET_RX_MAC	__PPCBIT(12)
    367  1.2    matt #define	MACCFG1_RESET_TX_MAC	__PPCBIT(13)
    368  1.2    matt #define	MACCFG1_RESET_RX_FUNC	__PPCBIT(14)
    369  1.2    matt #define	MACCFG1_RESET_TX_FUNC	__PPCBIT(15)
    370  1.2    matt #define	MACCFG1_LOOPBACK	__PPCBIT(23)
    371  1.2    matt #define	MACCFG1_RX_FLOW		__PPCBIT(26)
    372  1.2    matt #define	MACCFG1_TX_FLOW		__PPCBIT(27)
    373  1.2    matt #define	MACCFG1_SYNC_RX_EN	__PPCBIT(28)
    374  1.2    matt #define	MACCFG1_RX_EN		__PPCBIT(29)
    375  1.2    matt #define	MACCFG1_SYNC_TX_EN	__PPCBIT(30)
    376  1.2    matt #define	MACCFG1_TX_EN		__PPCBIT(31)
    377  1.2    matt #define MACCFG2		0x504 /* MAC configuration register 2 */
    378  1.2    matt #define	MACCFG2_PRELEN	__PPCBITS(16,19)
    379  1.2    matt #define	MACCFG2_PRELEN_DEFAULT	__SHIFTIN(7,MACCFG2_PRELEN)
    380  1.2    matt #define	MACCFG2_IFMODE	__PPCBITS(22,23)
    381  1.2    matt #define	MACCFG2_IFMODE_MII	__SHIFTIN(1,MACCFG2_IFMODE)
    382  1.2    matt #define	MACCFG2_IFMODE_GMII	__SHIFTIN(2,MACCFG2_IFMODE)
    383  1.2    matt #define	MACCFG2_PRERXEN	__PPCBIT(24)
    384  1.2    matt #define	MACCFG2_PRETXEN	__PPCBIT(25)
    385  1.2    matt #define	MACCFG2_HG	__PPCBIT(26)
    386  1.2    matt #define	MACCFG2_LENCHK	__PPCBIT(27)
    387  1.2    matt #define	MACCFG2_MPEN	__PPCBIT(28)
    388  1.2    matt #define	MACCFG2_PADCRC	__PPCBIT(29)
    389  1.2    matt #define	MACCFG2_CRCEN	__PPCBIT(30)
    390  1.2    matt #define	MACCFG2_FD	__PPCBIT(31)
    391  1.4    matt #define	MACCFG2_DEFAULT	(MACCFG2_FD|MACCFG2_PADCRC|MACCFG2_PRELEN_DEFAULT)
    392  1.2    matt #define IPGIFG		0x508 /* Inter-packet/inter-frame gap register */
    393  1.2    matt #define HAFDUP		0x50C /* Half-duplex control */
    394  1.2    matt #define MAXFRM		0x510 /* Maximum frame length */
    395  1.2    matt #define MIIMCFG		0x520 /* MII management configuration */
    396  1.2    matt #define	MIIMCFG_RESET	__PPCBIT(0) /* Reset management */
    397  1.2    matt #define	MIIMCFG_NOPRE	__PPCBIT(27) /* Preamble suppess */
    398  1.2    matt #define MIIMCOM		0x524 /* MII management command */
    399  1.2    matt #define	MIIMCOM_SCAN	__PPCBIT(30)
    400  1.2    matt #define	MIIMCOM_READ	__PPCBIT(31)
    401  1.2    matt #define MIIMADD		0x528 /* MII management address */
    402  1.2    matt #define	MIIMADD_PHY	__PPCBITS(19,23)
    403  1.2    matt #define	MIIMADD_REG	__PPCBITS(27,31)
    404  1.2    matt #define MIIMCON		0x52C /* MII management control */
    405  1.2    matt #define MIIMSTAT	0x530 /* MII management status */
    406  1.2    matt #define MIIMIND		0x534 /* MII management indicator */
    407  1.2    matt #define MIIMIND_NOTVALID __PPCBIT(29)
    408  1.2    matt #define MIIMIND_SCAN	__PPCBIT(30)
    409  1.2    matt #define MIIMIND_BUSY	__PPCBIT(31)
    410  1.2    matt #define IFSTAT		0x53C /* Interface status */
    411  1.2    matt #define MACSTNADDR1	0x540 /* MAC station address register 1 */
    412  1.2    matt #define MACSTNADDR2	0x544 /* MAC station address register 2 */
    413  1.2    matt #define MAC01ADDR1	0x548 /* MAC exact match address 1, part 1 [TSEC3] */
    414  1.2    matt #define MAC01ADDR2	0x54C /* MAC exact match address 1, part 2 [TSEC3] */
    415  1.2    matt #define MAC02ADDR1	0x550 /* MAC exact match address 2, part 1 [TSEC3] */
    416  1.2    matt #define MAC02ADDR2	0x554 /* MAC exact match address 2, part 2 [TSEC3] */
    417  1.2    matt #define MAC03ADDR1	0x558 /* MAC exact match address 3, part 1 [TSEC3] */
    418  1.2    matt #define MAC03ADDR2	0x55C /* MAC exact match address 3, part 2 [TSEC3] */
    419  1.2    matt #define MAC04ADDR1	0x560 /* MAC exact match address 4, part 1 [TSEC3] */
    420  1.2    matt #define MAC04ADDR2	0x564 /* MAC exact match address 4, part 2 [TSEC3] */
    421  1.2    matt #define MAC05ADDR1	0x568 /* MAC exact match address 5, part 1 [TSEC3] */
    422  1.2    matt #define MAC05ADDR2	0x56C /* MAC exact match address 5, part 2 [TSEC3] */
    423  1.2    matt #define MAC06ADDR1	0x570 /* MAC exact match address 6, part 1 [TSEC3] */
    424  1.2    matt #define MAC06ADDR2	0x574 /* MAC exact match address 6, part 2 [TSEC3] */
    425  1.2    matt #define MAC07ADDR1	0x578 /* MAC exact match address 7, part 1 [TSEC3] */
    426  1.2    matt #define MAC07ADDR2	0x57C /* MAC exact match address 7, part 2 [TSEC3] */
    427  1.2    matt #define MAC08ADDR1	0x580 /* MAC exact match address 8, part 1 [TSEC3] */
    428  1.2    matt #define MAC08ADDR2	0x584 /* MAC exact match address 8, part 2 [TSEC3] */
    429  1.2    matt #define MAC09ADDR1	0x588 /* MAC exact match address 9, part 1 [TSEC3] */
    430  1.2    matt #define MAC09ADDR2	0x58C /* MAC exact match address 9, part 2 [TSEC3] */
    431  1.2    matt #define MAC10ADDR1	0x590 /* MAC exact match address 10, part 1 [TSEC3] */
    432  1.2    matt #define MAC10ADDR2	0x594 /* MAC exact match address 10, part 2 [TSEC3] */
    433  1.2    matt #define MAC11ADDR1	0x598 /* MAC exact match address 11, part 1 [TSEC3] */
    434  1.2    matt #define MAC11ADDR2	0x59C /* MAC exact match address 11, part 2 [TSEC3] */
    435  1.2    matt #define MAC12ADDR1	0x5A0 /* MAC exact match address 12, part 1 [TSEC3] */
    436  1.2    matt #define MAC12ADDR2	0x5A4 /* MAC exact match address 12, part 2 [TSEC3] */
    437  1.2    matt #define MAC13ADDR1	0x5A8 /* MAC exact match address 13, part 1 [TSEC3] */
    438  1.2    matt #define MAC13ADDR2	0x5AC /* MAC exact match address 13, part 2 [TSEC3] */
    439  1.2    matt #define MAC14ADDR1	0x5B0 /* MAC exact match address 14, part 1 [TSEC3] */
    440  1.2    matt #define MAC14ADDR2	0x5B4 /* MAC exact match address 14, part 2 [TSEC3] */
    441  1.2    matt #define MAC15ADDR1	0x5B8 /* MAC exact match address 15, part 1 [TSEC3] */
    442  1.2    matt #define MAC15ADDR2	0x5BC /* MAC exact match address 15, part 2 [TSEC3] */
    443  1.2    matt #define MACnADDR1(n)	(MAC01ADDR1 + 8*(n))
    444  1.2    matt #define MACnADDR2(n)	(MAC01ADDR2 + 8*(n))
    445  1.2    matt 
    446  1.2    matt /* 0x600-0x7ff RMON MIB registers */
    447  1.2    matt 
    448  1.2    matt /* eTSEC Transmit and Receive Counters */
    449  1.2    matt #define TR64		0x680 /* Transmit and receive 64 byte frame counter */
    450  1.2    matt #define TR127		0x684 /* Transmit and receive 65 to 127-byte frame counter */
    451  1.2    matt #define TR255		0x688 /* Transmit and receive 128 to 255-byte frame counter */
    452  1.2    matt #define TR511		0x68C /* Transmit and receive 256 to 511-byte frame counter */
    453  1.2    matt #define TR1K		0x690 /* Transmit and receive 512 to 1023-byte frame counter */
    454  1.2    matt #define TRMAX		0x694 /* Transmit and receive 1024 to 1518-byte frame counter */
    455  1.2    matt #define TRMGV		0x698 /* Transmit and receive 1519 to 1522-byte good VLAN frame count */
    456  1.2    matt 
    457  1.2    matt /* eTSEC Receive Counters Registers */
    458  1.2    matt #define RBYT		0x69C /* Receive byte counter */
    459  1.2    matt #define RPKT		0x6A0 /* Receive packet counter */
    460  1.2    matt #define RFCS		0x6A4 /* Receive FCS error counter */
    461  1.2    matt #define RMCA		0x6A8 /* Receive multicast packet counter */
    462  1.2    matt #define RBCA		0x6AC /* Receive broadcast packet counter */
    463  1.2    matt #define RXCF		0x6B0 /* Receive control frame packet counter */
    464  1.2    matt #define RXPF		0x6B4 /* Receive PAUSE frame packet counter */
    465  1.2    matt #define RXUO		0x6B8 /* Receive unknown OP code counter */
    466  1.2    matt #define RALN		0x6BC /* Receive alignment error counter */
    467  1.2    matt #define RFLR		0x6C0 /* Receive frame length error counter */
    468  1.2    matt #define RCDE		0x6C4 /* Receive code error counter */
    469  1.2    matt #define RCSE		0x6C8 /* Receive carrier sense error counter */
    470  1.2    matt #define RUND		0x6CC /* Receive undersize packet counter */
    471  1.2    matt #define ROVR		0x6D0 /* Receive oversize packet counter */
    472  1.2    matt #define RFRG		0x6D4 /* Receive fragments counter */
    473  1.2    matt #define RJBR		0x6D8 /* Receive jabber counter */
    474  1.2    matt #define RDRP		0x6DC /* Receive drop counter */
    475  1.2    matt 
    476  1.2    matt /* eTSEC Transmit Counters Registers */
    477  1.2    matt #define TBYT		0x6E0 /* Transmit byte counter */
    478  1.2    matt #define TPKT		0x6E4 /* Transmit packet counter */
    479  1.2    matt #define TMCA		0x6E8 /* Transmit multicast packet counter */
    480  1.2    matt #define TBCA		0x6EC /* Transmit broadcast packet counter */
    481  1.2    matt #define TXPF		0x6F0 /* Transmit PAUSE control frame counter */
    482  1.2    matt #define TDFR		0x6F4 /* Transmit deferral packet counter */
    483  1.2    matt #define TEDF		0x6F8 /* Transmit excessive deferral packet counter */
    484  1.2    matt #define TSCL		0x6FC /* Transmit single collision packet counter */
    485  1.2    matt #define TMCL		0x700 /* Transmit multiple collision packet counter */
    486  1.2    matt #define TLCL		0x704 /* Transmit late collision packet counter */
    487  1.2    matt 
    488  1.2    matt #define TXCL		0x708 /* Transmit excessive collision packet counter */
    489  1.2    matt #define TNCL		0x70C /* Transmit total collision counter */
    490  1.2    matt #define TDRP		0x714 /* Transmit drop frame counter */
    491  1.2    matt #define TJBR		0x718 /* Transmit jabber frame counter */
    492  1.2    matt #define TFCS		0x71C /* Transmit FCS error counter */
    493  1.2    matt #define TXCF		0x720 /* Transmit control frame counter */
    494  1.2    matt #define TOVR		0x724 /* Transmit oversize frame counter */
    495  1.2    matt #define TUND		0x728 /* Transmit undersize frame counter */
    496  1.2    matt #define TFRG		0x72C /* Transmit fragments frame counter */
    497  1.2    matt 
    498  1.2    matt /* eTSEC Counter Control and TOE Statistics Registers */
    499  1.2    matt #define CAR1		0x730 /* Carry register one register 3 */
    500  1.2    matt #define CAR2		0x734 /* Carry register two register 3 */
    501  1.2    matt #define CAM1		0x738 /* Carry register one mask register */
    502  1.2    matt #define CAM2		0x73C /* Carry register two mask register */
    503  1.2    matt #define RREJ		0x740 /* Receive filter rejected packet counter [TSEC3] */
    504  1.2    matt 
    505  1.2    matt /*	0x800-0x8ff Hash table registers */
    506  1.2    matt 
    507  1.2    matt #define IGADDR0		0x800 /* Individual/group address register 0 */
    508  1.2    matt #define IGADDR1		0x804 /* Individual/group address register 1 */
    509  1.2    matt #define IGADDR2		0x808 /* Individual/group address register 2 */
    510  1.2    matt #define IGADDR3		0x80C /* Individual/group address register 3 */
    511  1.2    matt #define IGADDR4		0x810 /* Individual/group address register 4 */
    512  1.2    matt #define IGADDR5		0x814 /* Individual/group address register 5 */
    513  1.2    matt #define IGADDR6		0x818 /* Individual/group address register 6 */
    514  1.2    matt #define IGADDR7		0x81C /* Individual/group address register 7 */
    515  1.2    matt #define	IGADDR(n)	(IGADDR0 + 4*(n))
    516  1.2    matt 
    517  1.2    matt #define GADDR0		0x880 /* Group address register 0 */
    518  1.2    matt #define GADDR1		0x884 /* Group address register 1 */
    519  1.2    matt #define GADDR2		0x888 /* Group address register 2 */
    520  1.2    matt #define GADDR3		0x88C /* Group address register 3 */
    521  1.2    matt #define GADDR4		0x890 /* Group address register 4 */
    522  1.2    matt #define GADDR5		0x894 /* Group address register 5 */
    523  1.2    matt #define GADDR6		0x898 /* Group address register 6 */
    524  1.2    matt #define GADDR7		0x89C /* Group address register 7 */
    525  1.2    matt #define	GADDR(n)	(GADDR0 + 4*(n))
    526  1.2    matt 
    527  1.2    matt /* 0x900-0x9ff unused */
    528  1.2    matt /* 0xa00-0xaff FIFO control/status registers */
    529  1.2    matt 
    530  1.2    matt #define FIFOCFG		0xA00 /* FIFO interface configuration register */
    531  1.2    matt 
    532  1.2    matt /* 0xb00-0xbff DMA system registers */
    533  1.2    matt 
    534  1.2    matt #define ATTR		0xBF8 /* Attribute register */
    535  1.3    matt #define	ATTR_ELCWT	__PPCBITS(17,18)
    536  1.3    matt #define	ATTR_ELCWT_L2	__SHIFTIN(2, ATTR_ELCWT)
    537  1.3    matt #define	ATTR_BDLWT	__PPCBITS(20,21)
    538  1.3    matt #define	ATTR_BDLWT_L2	__SHIFTIN(2, ATTR_BDLWT)
    539  1.2    matt #define ATTR_RDSEN	__PPCBIT(24)
    540  1.2    matt #define ATTR_RBDSEN	__PPCBIT(25)
    541  1.3    matt #define	ATTR_DEFAULT	(ATTR_ELCWT_L2|ATTR_BDLWT_L2|ATTR_RDSEN|ATTR_RBDSEN)
    542  1.2    matt 
    543  1.2    matt #define ATTRELI		0xBFC /* Attribute extract length and extract index register [TSEC3] */
    544  1.2    matt #define	ATTRELI_EL	__PPCBITS(2,12)		/* extracted length */
    545  1.2    matt #define	ATTRELI_EI	__PPCBITS(18,28)	/* extracted index */
    546  1.2    matt #define	ATTRELI_DEFAULT	(__SHIFTIN(72, ATTRELI_EL))
    547  1.2    matt 
    548  1.2    matt /* 0xc00-0xc3f Lossless Flow Control registers */
    549  1.2    matt 
    550  1.2    matt #define RQPRM0		0xC00 /* Receive Queue Parameters register 0 [TSEC3] */
    551  1.2    matt #define RQPRM1		0xC04 /* Receive Queue Parameters register 1 [TSEC3] */
    552  1.2    matt #define RQPRM2		0xC08 /* Receive Queue Parameters register 2 [TSEC3] */
    553  1.2    matt #define RQPRM3		0xC0C /* Receive Queue Parameters register 3 [TSEC3] */
    554  1.2    matt #define RQPRM4		0xC10 /* Receive Queue Parameters register 4 [TSEC3] */
    555  1.2    matt #define RQPRM5		0xC14 /* Receive Queue Parameters register 5 [TSEC3] */
    556  1.2    matt #define RQPRM6		0xC18 /* Receive Queue Parameters register 6 [TSEC3] */
    557  1.2    matt #define RQPRM7		0xC1C /* Receive Queue Parameters register 7 [TSEC3] */
    558  1.2    matt #define	RQPRMn(n)	(RQPRM0 + 4*(n))
    559  1.2    matt 
    560  1.2    matt #define RFBPTR0		0xC44 /* Last Free RxBD pointer for ring 0 [TSEC3] */
    561  1.2    matt #define RFBPTR1		0xC4C /* Last Free RxBD pointer for ring 1 [TSEC3] */
    562  1.2    matt #define RFBPTR2		0xC54 /* Last Free RxBD pointer for ring 2 [TSEC3] */
    563  1.2    matt #define RFBPTR3		0xC58 /* Last Free RxBD pointer for ring 3 [TSEC3] */
    564  1.2    matt #define RFBPTR4		0xC64 /* Last Free RxBD pointer for ring 4 [TSEC3] */
    565  1.2    matt #define RFBPTR5		0xC6C /* Last Free RxBD pointer for ring 5 [TSEC3] */
    566  1.2    matt #define RFBPTR6		0xC74 /* Last Free RxBD pointer for ring 6 [TSEC3] */
    567  1.2    matt #define RFBPTR7		0xC7C /* Last Free RxBD pointer for ring 7 [TSEC3] */
    568  1.2    matt #define	RFBPTRn(n)	(RFBPTR0 + 4*(n))
    569  1.2    matt 
    570  1.2    matt /* 0xc40-0xdff unused */
    571  1.2    matt /* 0xe00-0xeff 1588 Hardware Assist */
    572  1.2    matt 
    573  1.2    matt #define TMR_CTRL	0xE00 /* Timer control register [TSEC3] */
    574  1.2    matt #define TMR_TEVENT	0xE04 /* time stamp event register [TSEC3] */
    575  1.2    matt #define TMR_TEMASK	0xE08 /* Timer event mask register [TSEC3] */
    576  1.2    matt #define TMR_PEVENT	0xE0C /* time stamp event register [TSEC3] */
    577  1.2    matt #define TMR_PEMASK	0xE10 /* Timer event mask register [TSEC3] */
    578  1.2    matt #define TMR_STAT	0xE14 /* time stamp status register [TSEC3] */
    579  1.2    matt #define TMR_CNT_H	0xE18 /* timer counter high register [TSEC3] */
    580  1.2    matt #define TMR_CNT_L	0xE1C /* timer counter low register [TSEC3] */
    581  1.2    matt #define TMR_ADD		0xE20 /* Timer drift compensation addend register [TSEC3] */
    582  1.2    matt #define TMR_ACC		0xE24 /* Timer accumulator register [TSEC3] */
    583  1.2    matt #define TMR_PRSC	0xE28 /* timer prescale [TSEC3] */
    584  1.2    matt #define TMROFF_H	0xE30 /* Timer offset high [TSEC3] */
    585  1.2    matt #define TMROFF_L	0xE34 /* Timer offset low [TSEC3] */
    586  1.2    matt #define TMR_ALARM1_H	0xE40 /* Timer alarm 1 high register [TSEC3] */
    587  1.2    matt #define TMR_ALARM1_L	0xE44 /* Timer alarm 1 high register [TSEC3] */
    588  1.2    matt #define TMR_ALARM2_H	0xE48 /* Timer alarm 2 high register [TSEC3] */
    589  1.2    matt #define TMR_ALARM2_L	0xE4C /* Timer alarm 2 high register [TSEC3] */
    590  1.2    matt #define TMR_FIPER1	0xE80 /* Timer fixed period interval [TSEC3] */
    591  1.2    matt #define TMR_FIPER2	0xE84 /* Timer fixed period interval [TSEC3] */
    592  1.2    matt #define TMR_FIPER	0xE88 /* Timer fixed period interval [TSEC3] */
    593  1.2    matt #define TMR_ETTS1_H	0xEA0 /* Time stamp of general purpose external trigger [TSEC3] */
    594  1.2    matt #define TMR_ETTS1_L	0xEA4 /* Time stamp of general purpose external trigger [TSEC3] */
    595  1.2    matt #define TMR_ETTS2_H	0xEA8 /* Time stamp of general purpose external trigger [TSEC3] */
    596  1.2    matt #define TMR_ETTS2_L	0xEAC /* Time stamp of general purpose external trigger [TSEC3] */
    597  1.2    matt 
    598  1.2    matt #endif /* _POWERPC_BOOKE_ETSECREG_H_ */
    599