xref: /freebsd/sys/dev/axgbe/xgbe-common.h (revision 2b8df536a68169953a9fa470b78a021156d997aa)
144b781cfSAndrew Turner /*
244b781cfSAndrew Turner  * AMD 10Gb Ethernet driver
344b781cfSAndrew Turner  *
47113afc8SEmmanuel Vadot  * Copyright (c) 2014-2016,2020 Advanced Micro Devices, Inc.
57113afc8SEmmanuel Vadot  *
644b781cfSAndrew Turner  * This file is available to you under your choice of the following two
744b781cfSAndrew Turner  * licenses:
844b781cfSAndrew Turner  *
944b781cfSAndrew Turner  * License 1: GPLv2
1044b781cfSAndrew Turner  *
1144b781cfSAndrew Turner  * This file is free software; you may copy, redistribute and/or modify
1244b781cfSAndrew Turner  * it under the terms of the GNU General Public License as published by
1344b781cfSAndrew Turner  * the Free Software Foundation, either version 2 of the License, or (at
1444b781cfSAndrew Turner  * your option) any later version.
1544b781cfSAndrew Turner  *
1644b781cfSAndrew Turner  * This file is distributed in the hope that it will be useful, but
1744b781cfSAndrew Turner  * WITHOUT ANY WARRANTY; without even the implied warranty of
1844b781cfSAndrew Turner  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1944b781cfSAndrew Turner  * General Public License for more details.
2044b781cfSAndrew Turner  *
2144b781cfSAndrew Turner  * You should have received a copy of the GNU General Public License
2244b781cfSAndrew Turner  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
2344b781cfSAndrew Turner  *
2444b781cfSAndrew Turner  * This file incorporates work covered by the following copyright and
2544b781cfSAndrew Turner  * permission notice:
2644b781cfSAndrew Turner  *     The Synopsys DWC ETHER XGMAC Software Driver and documentation
2744b781cfSAndrew Turner  *     (hereinafter "Software") is an unsupported proprietary work of Synopsys,
2844b781cfSAndrew Turner  *     Inc. unless otherwise expressly agreed to in writing between Synopsys
2944b781cfSAndrew Turner  *     and you.
3044b781cfSAndrew Turner  *
3144b781cfSAndrew Turner  *     The Software IS NOT an item of Licensed Software or Licensed Product
3244b781cfSAndrew Turner  *     under any End User Software License Agreement or Agreement for Licensed
3344b781cfSAndrew Turner  *     Product with Synopsys or any supplement thereto.  Permission is hereby
3444b781cfSAndrew Turner  *     granted, free of charge, to any person obtaining a copy of this software
3544b781cfSAndrew Turner  *     annotated with this license and the Software, to deal in the Software
3644b781cfSAndrew Turner  *     without restriction, including without limitation the rights to use,
3744b781cfSAndrew Turner  *     copy, modify, merge, publish, distribute, sublicense, and/or sell copies
3844b781cfSAndrew Turner  *     of the Software, and to permit persons to whom the Software is furnished
3944b781cfSAndrew Turner  *     to do so, subject to the following conditions:
4044b781cfSAndrew Turner  *
4144b781cfSAndrew Turner  *     The above copyright notice and this permission notice shall be included
4244b781cfSAndrew Turner  *     in all copies or substantial portions of the Software.
4344b781cfSAndrew Turner  *
4444b781cfSAndrew Turner  *     THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS"
4544b781cfSAndrew Turner  *     BASIS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
4644b781cfSAndrew Turner  *     TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
4744b781cfSAndrew Turner  *     PARTICULAR PURPOSE ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS
4844b781cfSAndrew Turner  *     BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
4944b781cfSAndrew Turner  *     CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
5044b781cfSAndrew Turner  *     SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
5144b781cfSAndrew Turner  *     INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
5244b781cfSAndrew Turner  *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
5344b781cfSAndrew Turner  *     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
5444b781cfSAndrew Turner  *     THE POSSIBILITY OF SUCH DAMAGE.
5544b781cfSAndrew Turner  *
5644b781cfSAndrew Turner  *
5744b781cfSAndrew Turner  * License 2: Modified BSD
5844b781cfSAndrew Turner  *
5944b781cfSAndrew Turner  * Redistribution and use in source and binary forms, with or without
6044b781cfSAndrew Turner  * modification, are permitted provided that the following conditions are met:
6144b781cfSAndrew Turner  *     * Redistributions of source code must retain the above copyright
6244b781cfSAndrew Turner  *       notice, this list of conditions and the following disclaimer.
6344b781cfSAndrew Turner  *     * Redistributions in binary form must reproduce the above copyright
6444b781cfSAndrew Turner  *       notice, this list of conditions and the following disclaimer in the
6544b781cfSAndrew Turner  *       documentation and/or other materials provided with the distribution.
6644b781cfSAndrew Turner  *     * Neither the name of Advanced Micro Devices, Inc. nor the
6744b781cfSAndrew Turner  *       names of its contributors may be used to endorse or promote products
6844b781cfSAndrew Turner  *       derived from this software without specific prior written permission.
6944b781cfSAndrew Turner  *
7044b781cfSAndrew Turner  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
7144b781cfSAndrew Turner  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7244b781cfSAndrew Turner  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
7344b781cfSAndrew Turner  * ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
7444b781cfSAndrew Turner  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
7544b781cfSAndrew Turner  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
7644b781cfSAndrew Turner  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
7744b781cfSAndrew Turner  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
7844b781cfSAndrew Turner  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
7944b781cfSAndrew Turner  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8044b781cfSAndrew Turner  *
8144b781cfSAndrew Turner  * This file incorporates work covered by the following copyright and
8244b781cfSAndrew Turner  * permission notice:
8344b781cfSAndrew Turner  *     The Synopsys DWC ETHER XGMAC Software Driver and documentation
8444b781cfSAndrew Turner  *     (hereinafter "Software") is an unsupported proprietary work of Synopsys,
8544b781cfSAndrew Turner  *     Inc. unless otherwise expressly agreed to in writing between Synopsys
8644b781cfSAndrew Turner  *     and you.
8744b781cfSAndrew Turner  *
8844b781cfSAndrew Turner  *     The Software IS NOT an item of Licensed Software or Licensed Product
8944b781cfSAndrew Turner  *     under any End User Software License Agreement or Agreement for Licensed
9044b781cfSAndrew Turner  *     Product with Synopsys or any supplement thereto.  Permission is hereby
9144b781cfSAndrew Turner  *     granted, free of charge, to any person obtaining a copy of this software
9244b781cfSAndrew Turner  *     annotated with this license and the Software, to deal in the Software
9344b781cfSAndrew Turner  *     without restriction, including without limitation the rights to use,
9444b781cfSAndrew Turner  *     copy, modify, merge, publish, distribute, sublicense, and/or sell copies
9544b781cfSAndrew Turner  *     of the Software, and to permit persons to whom the Software is furnished
9644b781cfSAndrew Turner  *     to do so, subject to the following conditions:
9744b781cfSAndrew Turner  *
9844b781cfSAndrew Turner  *     The above copyright notice and this permission notice shall be included
9944b781cfSAndrew Turner  *     in all copies or substantial portions of the Software.
10044b781cfSAndrew Turner  *
10144b781cfSAndrew Turner  *     THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS"
10244b781cfSAndrew Turner  *     BASIS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
10344b781cfSAndrew Turner  *     TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
10444b781cfSAndrew Turner  *     PARTICULAR PURPOSE ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS
10544b781cfSAndrew Turner  *     BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
10644b781cfSAndrew Turner  *     CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
10744b781cfSAndrew Turner  *     SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
10844b781cfSAndrew Turner  *     INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
10944b781cfSAndrew Turner  *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
11044b781cfSAndrew Turner  *     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
11144b781cfSAndrew Turner  *     THE POSSIBILITY OF SUCH DAMAGE.
11244b781cfSAndrew Turner  */
11344b781cfSAndrew Turner 
11444b781cfSAndrew Turner #ifndef __XGBE_COMMON_H__
11544b781cfSAndrew Turner #define __XGBE_COMMON_H__
11644b781cfSAndrew Turner 
1179c6d6488SAndrew Turner #include <sys/bus.h>
1189c6d6488SAndrew Turner #include <sys/rman.h>
1199c6d6488SAndrew Turner 
12044b781cfSAndrew Turner /* DMA register offsets */
12144b781cfSAndrew Turner #define DMA_MR				0x3000
12244b781cfSAndrew Turner #define DMA_SBMR			0x3004
12344b781cfSAndrew Turner #define DMA_ISR				0x3008
12444b781cfSAndrew Turner #define DMA_AXIARCR			0x3010
12544b781cfSAndrew Turner #define DMA_AXIAWCR			0x3018
1267113afc8SEmmanuel Vadot #define DMA_AXIAWARCR			0x301c
12744b781cfSAndrew Turner #define DMA_DSR0			0x3020
12844b781cfSAndrew Turner #define DMA_DSR1			0x3024
1297113afc8SEmmanuel Vadot #define DMA_DSR2			0x3028
1307113afc8SEmmanuel Vadot #define DMA_DSR3			0x302C
1317113afc8SEmmanuel Vadot #define DMA_DSR4			0x3030
1327113afc8SEmmanuel Vadot #define DMA_TXEDMACR			0x3040
1337113afc8SEmmanuel Vadot #define DMA_RXEDMACR			0x3044
13444b781cfSAndrew Turner 
13544b781cfSAndrew Turner /* DMA register entry bit positions and sizes */
13644b781cfSAndrew Turner #define DMA_ISR_MACIS_INDEX		17
13744b781cfSAndrew Turner #define DMA_ISR_MACIS_WIDTH		1
13844b781cfSAndrew Turner #define DMA_ISR_MTLIS_INDEX		16
13944b781cfSAndrew Turner #define DMA_ISR_MTLIS_WIDTH		1
1407113afc8SEmmanuel Vadot #define DMA_MR_INTM_INDEX		12
1417113afc8SEmmanuel Vadot #define DMA_MR_INTM_WIDTH		2
14244b781cfSAndrew Turner #define DMA_MR_SWR_INDEX		0
14344b781cfSAndrew Turner #define DMA_MR_SWR_WIDTH		1
1447113afc8SEmmanuel Vadot #define DMA_RXEDMACR_RDPS_INDEX		0
1457113afc8SEmmanuel Vadot #define DMA_RXEDMACR_RDPS_WIDTH		3
1467113afc8SEmmanuel Vadot #define DMA_SBMR_AAL_INDEX		12
1477113afc8SEmmanuel Vadot #define DMA_SBMR_AAL_WIDTH		1
14844b781cfSAndrew Turner #define DMA_SBMR_EAME_INDEX		11
14944b781cfSAndrew Turner #define DMA_SBMR_EAME_WIDTH		1
1507113afc8SEmmanuel Vadot #define DMA_SBMR_BLEN_INDEX		1
1517113afc8SEmmanuel Vadot #define DMA_SBMR_BLEN_WIDTH		7
1527113afc8SEmmanuel Vadot #define DMA_SBMR_RD_OSR_LMT_INDEX	16
1537113afc8SEmmanuel Vadot #define DMA_SBMR_RD_OSR_LMT_WIDTH	6
15444b781cfSAndrew Turner #define DMA_SBMR_UNDEF_INDEX		0
15544b781cfSAndrew Turner #define DMA_SBMR_UNDEF_WIDTH		1
1567113afc8SEmmanuel Vadot #define DMA_SBMR_WR_OSR_LMT_INDEX	24
1577113afc8SEmmanuel Vadot #define DMA_SBMR_WR_OSR_LMT_WIDTH	6
1587113afc8SEmmanuel Vadot #define DMA_TXEDMACR_TDPS_INDEX		0
1597113afc8SEmmanuel Vadot #define DMA_TXEDMACR_TDPS_WIDTH		3
16044b781cfSAndrew Turner 
16144b781cfSAndrew Turner /* DMA register values */
1627113afc8SEmmanuel Vadot #define DMA_SBMR_BLEN_256		256
1637113afc8SEmmanuel Vadot #define DMA_SBMR_BLEN_128		128
1647113afc8SEmmanuel Vadot #define DMA_SBMR_BLEN_64		64
1657113afc8SEmmanuel Vadot #define DMA_SBMR_BLEN_32		32
1667113afc8SEmmanuel Vadot #define DMA_SBMR_BLEN_16		16
1677113afc8SEmmanuel Vadot #define DMA_SBMR_BLEN_8			8
1687113afc8SEmmanuel Vadot #define DMA_SBMR_BLEN_4			4
16944b781cfSAndrew Turner #define DMA_DSR_RPS_WIDTH		4
17044b781cfSAndrew Turner #define DMA_DSR_TPS_WIDTH		4
17144b781cfSAndrew Turner #define DMA_DSR_Q_WIDTH			(DMA_DSR_RPS_WIDTH + DMA_DSR_TPS_WIDTH)
17244b781cfSAndrew Turner #define DMA_DSR0_RPS_START		8
17344b781cfSAndrew Turner #define DMA_DSR0_TPS_START		12
17444b781cfSAndrew Turner #define DMA_DSRX_FIRST_QUEUE		3
17544b781cfSAndrew Turner #define DMA_DSRX_INC			4
17644b781cfSAndrew Turner #define DMA_DSRX_QPR			4
17744b781cfSAndrew Turner #define DMA_DSRX_RPS_START		0
17844b781cfSAndrew Turner #define DMA_DSRX_TPS_START		4
17944b781cfSAndrew Turner #define DMA_TPS_STOPPED			0x00
18044b781cfSAndrew Turner #define DMA_TPS_SUSPENDED		0x06
18144b781cfSAndrew Turner 
18244b781cfSAndrew Turner /* DMA channel register offsets
18344b781cfSAndrew Turner  *   Multiple channels can be active.  The first channel has registers
18444b781cfSAndrew Turner  *   that begin at 0x3100.  Each subsequent channel has registers that
18544b781cfSAndrew Turner  *   are accessed using an offset of 0x80 from the previous channel.
18644b781cfSAndrew Turner  */
18744b781cfSAndrew Turner #define DMA_CH_BASE			0x3100
18844b781cfSAndrew Turner #define DMA_CH_INC			0x80
18944b781cfSAndrew Turner 
19044b781cfSAndrew Turner #define DMA_CH_CR			0x00
19144b781cfSAndrew Turner #define DMA_CH_TCR			0x04
19244b781cfSAndrew Turner #define DMA_CH_RCR			0x08
19344b781cfSAndrew Turner #define DMA_CH_TDLR_HI			0x10
19444b781cfSAndrew Turner #define DMA_CH_TDLR_LO			0x14
19544b781cfSAndrew Turner #define DMA_CH_RDLR_HI			0x18
19644b781cfSAndrew Turner #define DMA_CH_RDLR_LO			0x1c
19744b781cfSAndrew Turner #define DMA_CH_TDTR_LO			0x24
19844b781cfSAndrew Turner #define DMA_CH_RDTR_LO			0x2c
19944b781cfSAndrew Turner #define DMA_CH_TDRLR			0x30
20044b781cfSAndrew Turner #define DMA_CH_RDRLR			0x34
20144b781cfSAndrew Turner #define DMA_CH_IER			0x38
20244b781cfSAndrew Turner #define DMA_CH_RIWT			0x3c
20344b781cfSAndrew Turner #define DMA_CH_CATDR_LO			0x44
20444b781cfSAndrew Turner #define DMA_CH_CARDR_LO			0x4c
20544b781cfSAndrew Turner #define DMA_CH_CATBR_HI			0x50
20644b781cfSAndrew Turner #define DMA_CH_CATBR_LO			0x54
20744b781cfSAndrew Turner #define DMA_CH_CARBR_HI			0x58
20844b781cfSAndrew Turner #define DMA_CH_CARBR_LO			0x5c
20944b781cfSAndrew Turner #define DMA_CH_SR			0x60
2107113afc8SEmmanuel Vadot #define DMA_CH_DSR			0x64
2117113afc8SEmmanuel Vadot #define DMA_CH_DCFL			0x68
2127113afc8SEmmanuel Vadot #define DMA_CH_MFC			0x6c
2137113afc8SEmmanuel Vadot #define DMA_CH_TDTRO			0x70
2147113afc8SEmmanuel Vadot #define DMA_CH_RDTRO			0x74
2157113afc8SEmmanuel Vadot #define DMA_CH_TDWRO			0x78
2167113afc8SEmmanuel Vadot #define DMA_CH_RDWRO			0x7C
21744b781cfSAndrew Turner 
21844b781cfSAndrew Turner /* DMA channel register entry bit positions and sizes */
21944b781cfSAndrew Turner #define DMA_CH_CR_PBLX8_INDEX		16
22044b781cfSAndrew Turner #define DMA_CH_CR_PBLX8_WIDTH		1
22144b781cfSAndrew Turner #define DMA_CH_CR_SPH_INDEX		24
22244b781cfSAndrew Turner #define DMA_CH_CR_SPH_WIDTH		1
2237113afc8SEmmanuel Vadot #define DMA_CH_IER_AIE20_INDEX		15
2247113afc8SEmmanuel Vadot #define DMA_CH_IER_AIE20_WIDTH		1
2257113afc8SEmmanuel Vadot #define DMA_CH_IER_AIE_INDEX		14
22644b781cfSAndrew Turner #define DMA_CH_IER_AIE_WIDTH		1
22744b781cfSAndrew Turner #define DMA_CH_IER_FBEE_INDEX		12
22844b781cfSAndrew Turner #define DMA_CH_IER_FBEE_WIDTH		1
2297113afc8SEmmanuel Vadot #define DMA_CH_IER_NIE20_INDEX		16
2307113afc8SEmmanuel Vadot #define DMA_CH_IER_NIE20_WIDTH		1
2317113afc8SEmmanuel Vadot #define DMA_CH_IER_NIE_INDEX		15
23244b781cfSAndrew Turner #define DMA_CH_IER_NIE_WIDTH		1
23344b781cfSAndrew Turner #define DMA_CH_IER_RBUE_INDEX		7
23444b781cfSAndrew Turner #define DMA_CH_IER_RBUE_WIDTH		1
23544b781cfSAndrew Turner #define DMA_CH_IER_RIE_INDEX		6
23644b781cfSAndrew Turner #define DMA_CH_IER_RIE_WIDTH		1
23744b781cfSAndrew Turner #define DMA_CH_IER_RSE_INDEX		8
23844b781cfSAndrew Turner #define DMA_CH_IER_RSE_WIDTH		1
23944b781cfSAndrew Turner #define DMA_CH_IER_TBUE_INDEX		2
24044b781cfSAndrew Turner #define DMA_CH_IER_TBUE_WIDTH		1
24144b781cfSAndrew Turner #define DMA_CH_IER_TIE_INDEX		0
24244b781cfSAndrew Turner #define DMA_CH_IER_TIE_WIDTH		1
24344b781cfSAndrew Turner #define DMA_CH_IER_TXSE_INDEX		1
24444b781cfSAndrew Turner #define DMA_CH_IER_TXSE_WIDTH		1
24544b781cfSAndrew Turner #define DMA_CH_RCR_PBL_INDEX		16
24644b781cfSAndrew Turner #define DMA_CH_RCR_PBL_WIDTH		6
24744b781cfSAndrew Turner #define DMA_CH_RCR_RBSZ_INDEX		1
24844b781cfSAndrew Turner #define DMA_CH_RCR_RBSZ_WIDTH		14
24944b781cfSAndrew Turner #define DMA_CH_RCR_SR_INDEX		0
25044b781cfSAndrew Turner #define DMA_CH_RCR_SR_WIDTH		1
25144b781cfSAndrew Turner #define DMA_CH_RIWT_RWT_INDEX		0
25244b781cfSAndrew Turner #define DMA_CH_RIWT_RWT_WIDTH		8
25344b781cfSAndrew Turner #define DMA_CH_SR_FBE_INDEX		12
25444b781cfSAndrew Turner #define DMA_CH_SR_FBE_WIDTH		1
25544b781cfSAndrew Turner #define DMA_CH_SR_RBU_INDEX		7
25644b781cfSAndrew Turner #define DMA_CH_SR_RBU_WIDTH		1
25744b781cfSAndrew Turner #define DMA_CH_SR_RI_INDEX		6
25844b781cfSAndrew Turner #define DMA_CH_SR_RI_WIDTH		1
25944b781cfSAndrew Turner #define DMA_CH_SR_RPS_INDEX		8
26044b781cfSAndrew Turner #define DMA_CH_SR_RPS_WIDTH		1
26144b781cfSAndrew Turner #define DMA_CH_SR_TBU_INDEX		2
26244b781cfSAndrew Turner #define DMA_CH_SR_TBU_WIDTH		1
26344b781cfSAndrew Turner #define DMA_CH_SR_TI_INDEX		0
26444b781cfSAndrew Turner #define DMA_CH_SR_TI_WIDTH		1
26544b781cfSAndrew Turner #define DMA_CH_SR_TPS_INDEX		1
26644b781cfSAndrew Turner #define DMA_CH_SR_TPS_WIDTH		1
26744b781cfSAndrew Turner #define DMA_CH_TCR_OSP_INDEX		4
26844b781cfSAndrew Turner #define DMA_CH_TCR_OSP_WIDTH		1
26944b781cfSAndrew Turner #define DMA_CH_TCR_PBL_INDEX		16
27044b781cfSAndrew Turner #define DMA_CH_TCR_PBL_WIDTH		6
27144b781cfSAndrew Turner #define DMA_CH_TCR_ST_INDEX		0
27244b781cfSAndrew Turner #define DMA_CH_TCR_ST_WIDTH		1
27344b781cfSAndrew Turner #define DMA_CH_TCR_TSE_INDEX		12
27444b781cfSAndrew Turner #define DMA_CH_TCR_TSE_WIDTH		1
27544b781cfSAndrew Turner 
27644b781cfSAndrew Turner /* DMA channel register values */
27744b781cfSAndrew Turner #define DMA_OSP_DISABLE			0x00
27844b781cfSAndrew Turner #define DMA_OSP_ENABLE			0x01
27944b781cfSAndrew Turner #define DMA_PBL_1			1
28044b781cfSAndrew Turner #define DMA_PBL_2			2
28144b781cfSAndrew Turner #define DMA_PBL_4			4
28244b781cfSAndrew Turner #define DMA_PBL_8			8
28344b781cfSAndrew Turner #define DMA_PBL_16			16
28444b781cfSAndrew Turner #define DMA_PBL_32			32
28544b781cfSAndrew Turner #define DMA_PBL_64			64      /* 8 x 8 */
28644b781cfSAndrew Turner #define DMA_PBL_128			128     /* 8 x 16 */
28744b781cfSAndrew Turner #define DMA_PBL_256			256     /* 8 x 32 */
28844b781cfSAndrew Turner #define DMA_PBL_X8_DISABLE		0x00
28944b781cfSAndrew Turner #define DMA_PBL_X8_ENABLE		0x01
29044b781cfSAndrew Turner 
29144b781cfSAndrew Turner /* MAC register offsets */
29244b781cfSAndrew Turner #define MAC_TCR				0x0000
29344b781cfSAndrew Turner #define MAC_RCR				0x0004
29444b781cfSAndrew Turner #define MAC_PFR				0x0008
29544b781cfSAndrew Turner #define MAC_WTR				0x000c
29644b781cfSAndrew Turner #define MAC_HTR0			0x0010
2977113afc8SEmmanuel Vadot #define MAC_HTR1			0x0014
2987113afc8SEmmanuel Vadot #define MAC_HTR2			0x0018
2997113afc8SEmmanuel Vadot #define MAC_HTR3			0x001c
3007113afc8SEmmanuel Vadot #define MAC_HTR4			0x0020
3017113afc8SEmmanuel Vadot #define MAC_HTR5			0x0024
3027113afc8SEmmanuel Vadot #define MAC_HTR6			0x0028
3037113afc8SEmmanuel Vadot #define MAC_HTR7			0x002c
30444b781cfSAndrew Turner #define MAC_VLANTR			0x0050
30544b781cfSAndrew Turner #define MAC_VLANHTR			0x0058
30644b781cfSAndrew Turner #define MAC_VLANIR			0x0060
30744b781cfSAndrew Turner #define MAC_IVLANIR			0x0064
30844b781cfSAndrew Turner #define MAC_RETMR			0x006c
30944b781cfSAndrew Turner #define MAC_Q0TFCR			0x0070
3107113afc8SEmmanuel Vadot #define MAC_Q1TFCR			0x0074
3117113afc8SEmmanuel Vadot #define MAC_Q2TFCR			0x0078
3127113afc8SEmmanuel Vadot #define MAC_Q3TFCR			0x007c
3137113afc8SEmmanuel Vadot #define MAC_Q4TFCR			0x0080
3147113afc8SEmmanuel Vadot #define MAC_Q5TFCR			0x0084
3157113afc8SEmmanuel Vadot #define MAC_Q6TFCR			0x0088
3167113afc8SEmmanuel Vadot #define MAC_Q7TFCR			0x008c
31744b781cfSAndrew Turner #define MAC_RFCR			0x0090
31844b781cfSAndrew Turner #define MAC_RQC0R			0x00a0
31944b781cfSAndrew Turner #define MAC_RQC1R			0x00a4
32044b781cfSAndrew Turner #define MAC_RQC2R			0x00a8
32144b781cfSAndrew Turner #define MAC_RQC3R			0x00ac
32244b781cfSAndrew Turner #define MAC_ISR				0x00b0
32344b781cfSAndrew Turner #define MAC_IER				0x00b4
32444b781cfSAndrew Turner #define MAC_RTSR			0x00b8
32544b781cfSAndrew Turner #define MAC_PMTCSR			0x00c0
32644b781cfSAndrew Turner #define MAC_RWKPFR			0x00c4
32744b781cfSAndrew Turner #define MAC_LPICSR			0x00d0
32844b781cfSAndrew Turner #define MAC_LPITCR			0x00d4
3297113afc8SEmmanuel Vadot #define MAC_TIR				0x00e0
33044b781cfSAndrew Turner #define MAC_VR				0x0110
33144b781cfSAndrew Turner #define MAC_DR				0x0114
33244b781cfSAndrew Turner #define MAC_HWF0R			0x011c
33344b781cfSAndrew Turner #define MAC_HWF1R			0x0120
33444b781cfSAndrew Turner #define MAC_HWF2R			0x0124
3357113afc8SEmmanuel Vadot #define MAC_MDIOSCAR			0x0200
3367113afc8SEmmanuel Vadot #define MAC_MDIOSCCDR			0x0204
3377113afc8SEmmanuel Vadot #define MAC_MDIOISR			0x0214
3387113afc8SEmmanuel Vadot #define MAC_MDIOIER			0x0218
3397113afc8SEmmanuel Vadot #define MAC_MDIOCL22R			0x0220
34044b781cfSAndrew Turner #define MAC_GPIOCR			0x0278
34144b781cfSAndrew Turner #define MAC_GPIOSR			0x027c
34244b781cfSAndrew Turner #define MAC_MACA0HR			0x0300
34344b781cfSAndrew Turner #define MAC_MACA0LR			0x0304
34444b781cfSAndrew Turner #define MAC_MACA1HR			0x0308
34544b781cfSAndrew Turner #define MAC_MACA1LR			0x030c
34644b781cfSAndrew Turner #define MAC_RSSCR			0x0c80
34744b781cfSAndrew Turner #define MAC_RSSAR			0x0c88
34844b781cfSAndrew Turner #define MAC_RSSDR			0x0c8c
34944b781cfSAndrew Turner #define MAC_TSCR			0x0d00
35044b781cfSAndrew Turner #define MAC_SSIR			0x0d04
35144b781cfSAndrew Turner #define MAC_STSR			0x0d08
35244b781cfSAndrew Turner #define MAC_STNR			0x0d0c
35344b781cfSAndrew Turner #define MAC_STSUR			0x0d10
35444b781cfSAndrew Turner #define MAC_STNUR			0x0d14
35544b781cfSAndrew Turner #define MAC_TSAR			0x0d18
35644b781cfSAndrew Turner #define MAC_TSSR			0x0d20
35744b781cfSAndrew Turner #define MAC_TXSNR			0x0d30
35844b781cfSAndrew Turner #define MAC_TXSSR			0x0d34
35944b781cfSAndrew Turner 
36044b781cfSAndrew Turner #define MAC_QTFCR_INC			4
36144b781cfSAndrew Turner #define MAC_MACA_INC			4
36244b781cfSAndrew Turner #define MAC_HTR_INC			4
36344b781cfSAndrew Turner 
36444b781cfSAndrew Turner #define MAC_RQC2_INC			4
36544b781cfSAndrew Turner #define MAC_RQC2_Q_PER_REG		4
36644b781cfSAndrew Turner 
36744b781cfSAndrew Turner /* MAC register entry bit positions and sizes */
36844b781cfSAndrew Turner #define MAC_HWF0R_ADDMACADRSEL_INDEX	18
36944b781cfSAndrew Turner #define MAC_HWF0R_ADDMACADRSEL_WIDTH	5
37044b781cfSAndrew Turner #define MAC_HWF0R_ARPOFFSEL_INDEX	9
37144b781cfSAndrew Turner #define MAC_HWF0R_ARPOFFSEL_WIDTH	1
37244b781cfSAndrew Turner #define MAC_HWF0R_EEESEL_INDEX		13
37344b781cfSAndrew Turner #define MAC_HWF0R_EEESEL_WIDTH		1
37444b781cfSAndrew Turner #define MAC_HWF0R_GMIISEL_INDEX		1
37544b781cfSAndrew Turner #define MAC_HWF0R_GMIISEL_WIDTH		1
37644b781cfSAndrew Turner #define MAC_HWF0R_MGKSEL_INDEX		7
37744b781cfSAndrew Turner #define MAC_HWF0R_MGKSEL_WIDTH		1
37844b781cfSAndrew Turner #define MAC_HWF0R_MMCSEL_INDEX		8
37944b781cfSAndrew Turner #define MAC_HWF0R_MMCSEL_WIDTH		1
38044b781cfSAndrew Turner #define MAC_HWF0R_RWKSEL_INDEX		6
38144b781cfSAndrew Turner #define MAC_HWF0R_RWKSEL_WIDTH		1
38244b781cfSAndrew Turner #define MAC_HWF0R_RXCOESEL_INDEX	16
38344b781cfSAndrew Turner #define MAC_HWF0R_RXCOESEL_WIDTH	1
38444b781cfSAndrew Turner #define MAC_HWF0R_SAVLANINS_INDEX	27
38544b781cfSAndrew Turner #define MAC_HWF0R_SAVLANINS_WIDTH	1
38644b781cfSAndrew Turner #define MAC_HWF0R_SMASEL_INDEX		5
38744b781cfSAndrew Turner #define MAC_HWF0R_SMASEL_WIDTH		1
38844b781cfSAndrew Turner #define MAC_HWF0R_TSSEL_INDEX		12
38944b781cfSAndrew Turner #define MAC_HWF0R_TSSEL_WIDTH		1
39044b781cfSAndrew Turner #define MAC_HWF0R_TSSTSSEL_INDEX	25
39144b781cfSAndrew Turner #define MAC_HWF0R_TSSTSSEL_WIDTH	2
39244b781cfSAndrew Turner #define MAC_HWF0R_TXCOESEL_INDEX	14
39344b781cfSAndrew Turner #define MAC_HWF0R_TXCOESEL_WIDTH	1
39444b781cfSAndrew Turner #define MAC_HWF0R_VLHASH_INDEX		4
39544b781cfSAndrew Turner #define MAC_HWF0R_VLHASH_WIDTH		1
3967113afc8SEmmanuel Vadot #define MAC_HWF0R_VXN_INDEX		29
3977113afc8SEmmanuel Vadot #define MAC_HWF0R_VXN_WIDTH		1
39844b781cfSAndrew Turner #define MAC_HWF1R_ADDR64_INDEX		14
39944b781cfSAndrew Turner #define MAC_HWF1R_ADDR64_WIDTH		2
40044b781cfSAndrew Turner #define MAC_HWF1R_ADVTHWORD_INDEX	13
40144b781cfSAndrew Turner #define MAC_HWF1R_ADVTHWORD_WIDTH	1
40244b781cfSAndrew Turner #define MAC_HWF1R_DBGMEMA_INDEX		19
40344b781cfSAndrew Turner #define MAC_HWF1R_DBGMEMA_WIDTH		1
40444b781cfSAndrew Turner #define MAC_HWF1R_DCBEN_INDEX		16
40544b781cfSAndrew Turner #define MAC_HWF1R_DCBEN_WIDTH		1
40644b781cfSAndrew Turner #define MAC_HWF1R_HASHTBLSZ_INDEX	24
40744b781cfSAndrew Turner #define MAC_HWF1R_HASHTBLSZ_WIDTH	3
40844b781cfSAndrew Turner #define MAC_HWF1R_L3L4FNUM_INDEX	27
40944b781cfSAndrew Turner #define MAC_HWF1R_L3L4FNUM_WIDTH	4
41044b781cfSAndrew Turner #define MAC_HWF1R_NUMTC_INDEX		21
41144b781cfSAndrew Turner #define MAC_HWF1R_NUMTC_WIDTH		3
41244b781cfSAndrew Turner #define MAC_HWF1R_RSSEN_INDEX		20
41344b781cfSAndrew Turner #define MAC_HWF1R_RSSEN_WIDTH		1
41444b781cfSAndrew Turner #define MAC_HWF1R_RXFIFOSIZE_INDEX	0
41544b781cfSAndrew Turner #define MAC_HWF1R_RXFIFOSIZE_WIDTH	5
41644b781cfSAndrew Turner #define MAC_HWF1R_SPHEN_INDEX		17
41744b781cfSAndrew Turner #define MAC_HWF1R_SPHEN_WIDTH		1
41844b781cfSAndrew Turner #define MAC_HWF1R_TSOEN_INDEX		18
41944b781cfSAndrew Turner #define MAC_HWF1R_TSOEN_WIDTH		1
42044b781cfSAndrew Turner #define MAC_HWF1R_TXFIFOSIZE_INDEX	6
42144b781cfSAndrew Turner #define MAC_HWF1R_TXFIFOSIZE_WIDTH	5
42244b781cfSAndrew Turner #define MAC_HWF2R_AUXSNAPNUM_INDEX	28
42344b781cfSAndrew Turner #define MAC_HWF2R_AUXSNAPNUM_WIDTH	3
42444b781cfSAndrew Turner #define MAC_HWF2R_PPSOUTNUM_INDEX	24
42544b781cfSAndrew Turner #define MAC_HWF2R_PPSOUTNUM_WIDTH	3
42644b781cfSAndrew Turner #define MAC_HWF2R_RXCHCNT_INDEX		12
42744b781cfSAndrew Turner #define MAC_HWF2R_RXCHCNT_WIDTH		4
42844b781cfSAndrew Turner #define MAC_HWF2R_RXQCNT_INDEX		0
42944b781cfSAndrew Turner #define MAC_HWF2R_RXQCNT_WIDTH		4
43044b781cfSAndrew Turner #define MAC_HWF2R_TXCHCNT_INDEX		18
43144b781cfSAndrew Turner #define MAC_HWF2R_TXCHCNT_WIDTH		4
43244b781cfSAndrew Turner #define MAC_HWF2R_TXQCNT_INDEX		6
43344b781cfSAndrew Turner #define MAC_HWF2R_TXQCNT_WIDTH		4
43444b781cfSAndrew Turner #define MAC_IER_TSIE_INDEX		12
43544b781cfSAndrew Turner #define MAC_IER_TSIE_WIDTH		1
43644b781cfSAndrew Turner #define MAC_ISR_MMCRXIS_INDEX		9
43744b781cfSAndrew Turner #define MAC_ISR_MMCRXIS_WIDTH		1
43844b781cfSAndrew Turner #define MAC_ISR_MMCTXIS_INDEX		10
43944b781cfSAndrew Turner #define MAC_ISR_MMCTXIS_WIDTH		1
44044b781cfSAndrew Turner #define MAC_ISR_PMTIS_INDEX		4
44144b781cfSAndrew Turner #define MAC_ISR_PMTIS_WIDTH		1
4427113afc8SEmmanuel Vadot #define MAC_ISR_SMI_INDEX		1
4437113afc8SEmmanuel Vadot #define MAC_ISR_SMI_WIDTH		1
44444b781cfSAndrew Turner #define MAC_ISR_TSIS_INDEX		12
44544b781cfSAndrew Turner #define MAC_ISR_TSIS_WIDTH		1
44644b781cfSAndrew Turner #define MAC_MACA1HR_AE_INDEX		31
44744b781cfSAndrew Turner #define MAC_MACA1HR_AE_WIDTH		1
4487113afc8SEmmanuel Vadot #define MAC_MDIOIER_SNGLCOMPIE_INDEX	12
4497113afc8SEmmanuel Vadot #define MAC_MDIOIER_SNGLCOMPIE_WIDTH	1
4507113afc8SEmmanuel Vadot #define MAC_MDIOISR_SNGLCOMPINT_INDEX	12
4517113afc8SEmmanuel Vadot #define MAC_MDIOISR_SNGLCOMPINT_WIDTH	1
4527113afc8SEmmanuel Vadot #define MAC_MDIOSCAR_DA_INDEX		21
4537113afc8SEmmanuel Vadot #define MAC_MDIOSCAR_DA_WIDTH		5
4547113afc8SEmmanuel Vadot #define MAC_MDIOSCAR_PA_INDEX		16
4557113afc8SEmmanuel Vadot #define MAC_MDIOSCAR_PA_WIDTH		5
4567113afc8SEmmanuel Vadot #define MAC_MDIOSCAR_RA_INDEX		0
4577113afc8SEmmanuel Vadot #define MAC_MDIOSCAR_RA_WIDTH		16
4587113afc8SEmmanuel Vadot #define MAC_MDIOSCCDR_BUSY_INDEX	22
4597113afc8SEmmanuel Vadot #define MAC_MDIOSCCDR_BUSY_WIDTH	1
4607113afc8SEmmanuel Vadot #define MAC_MDIOSCCDR_CMD_INDEX		16
4617113afc8SEmmanuel Vadot #define MAC_MDIOSCCDR_CMD_WIDTH		2
4627113afc8SEmmanuel Vadot #define MAC_MDIOSCCDR_CR_INDEX		19
4637113afc8SEmmanuel Vadot #define MAC_MDIOSCCDR_CR_WIDTH		3
4647113afc8SEmmanuel Vadot #define MAC_MDIOSCCDR_DATA_INDEX	0
4657113afc8SEmmanuel Vadot #define MAC_MDIOSCCDR_DATA_WIDTH	16
4667113afc8SEmmanuel Vadot #define MAC_MDIOSCCDR_SADDR_INDEX	18
4677113afc8SEmmanuel Vadot #define MAC_MDIOSCCDR_SADDR_WIDTH	1
46844b781cfSAndrew Turner #define MAC_PFR_HMC_INDEX		2
46944b781cfSAndrew Turner #define MAC_PFR_HMC_WIDTH		1
47044b781cfSAndrew Turner #define MAC_PFR_HPF_INDEX		10
47144b781cfSAndrew Turner #define MAC_PFR_HPF_WIDTH		1
47244b781cfSAndrew Turner #define MAC_PFR_HUC_INDEX		1
47344b781cfSAndrew Turner #define MAC_PFR_HUC_WIDTH		1
47444b781cfSAndrew Turner #define MAC_PFR_PM_INDEX		4
47544b781cfSAndrew Turner #define MAC_PFR_PM_WIDTH		1
47644b781cfSAndrew Turner #define MAC_PFR_PR_INDEX		0
47744b781cfSAndrew Turner #define MAC_PFR_PR_WIDTH		1
47844b781cfSAndrew Turner #define MAC_PFR_VTFE_INDEX		16
47944b781cfSAndrew Turner #define MAC_PFR_VTFE_WIDTH		1
4807113afc8SEmmanuel Vadot #define MAC_PFR_VUCC_INDEX		22
4817113afc8SEmmanuel Vadot #define MAC_PFR_VUCC_WIDTH		1
482*2b8df536SStephan de Wit #define MAC_PFR_RA_INDEX		31
483*2b8df536SStephan de Wit #define MAC_PFR_RA_WIDTH		1
48444b781cfSAndrew Turner #define MAC_PMTCSR_MGKPKTEN_INDEX	1
48544b781cfSAndrew Turner #define MAC_PMTCSR_MGKPKTEN_WIDTH	1
48644b781cfSAndrew Turner #define MAC_PMTCSR_PWRDWN_INDEX		0
48744b781cfSAndrew Turner #define MAC_PMTCSR_PWRDWN_WIDTH		1
48844b781cfSAndrew Turner #define MAC_PMTCSR_RWKFILTRST_INDEX	31
48944b781cfSAndrew Turner #define MAC_PMTCSR_RWKFILTRST_WIDTH	1
49044b781cfSAndrew Turner #define MAC_PMTCSR_RWKPKTEN_INDEX	2
49144b781cfSAndrew Turner #define MAC_PMTCSR_RWKPKTEN_WIDTH	1
49244b781cfSAndrew Turner #define MAC_Q0TFCR_PT_INDEX		16
49344b781cfSAndrew Turner #define MAC_Q0TFCR_PT_WIDTH		16
49444b781cfSAndrew Turner #define MAC_Q0TFCR_TFE_INDEX		1
49544b781cfSAndrew Turner #define MAC_Q0TFCR_TFE_WIDTH		1
49644b781cfSAndrew Turner #define MAC_RCR_ACS_INDEX		1
49744b781cfSAndrew Turner #define MAC_RCR_ACS_WIDTH		1
49844b781cfSAndrew Turner #define MAC_RCR_CST_INDEX		2
49944b781cfSAndrew Turner #define MAC_RCR_CST_WIDTH		1
50044b781cfSAndrew Turner #define MAC_RCR_DCRCC_INDEX		3
50144b781cfSAndrew Turner #define MAC_RCR_DCRCC_WIDTH		1
50244b781cfSAndrew Turner #define MAC_RCR_HDSMS_INDEX		12
50344b781cfSAndrew Turner #define MAC_RCR_HDSMS_WIDTH		3
50444b781cfSAndrew Turner #define MAC_RCR_IPC_INDEX		9
50544b781cfSAndrew Turner #define MAC_RCR_IPC_WIDTH		1
50644b781cfSAndrew Turner #define MAC_RCR_JE_INDEX		8
50744b781cfSAndrew Turner #define MAC_RCR_JE_WIDTH		1
50844b781cfSAndrew Turner #define MAC_RCR_LM_INDEX		10
50944b781cfSAndrew Turner #define MAC_RCR_LM_WIDTH		1
51044b781cfSAndrew Turner #define MAC_RCR_RE_INDEX		0
51144b781cfSAndrew Turner #define MAC_RCR_RE_WIDTH		1
5127113afc8SEmmanuel Vadot #define MAC_RCR_ARPEN_INDEX		31
5137113afc8SEmmanuel Vadot #define MAC_RCR_ARPEN_WIDTH		1
51444b781cfSAndrew Turner #define MAC_RFCR_PFCE_INDEX		8
51544b781cfSAndrew Turner #define MAC_RFCR_PFCE_WIDTH		1
51644b781cfSAndrew Turner #define MAC_RFCR_RFE_INDEX		0
51744b781cfSAndrew Turner #define MAC_RFCR_RFE_WIDTH		1
51844b781cfSAndrew Turner #define MAC_RFCR_UP_INDEX		1
51944b781cfSAndrew Turner #define MAC_RFCR_UP_WIDTH		1
52044b781cfSAndrew Turner #define MAC_RQC0R_RXQ0EN_INDEX		0
52144b781cfSAndrew Turner #define MAC_RQC0R_RXQ0EN_WIDTH		2
52244b781cfSAndrew Turner #define MAC_RSSAR_ADDRT_INDEX		2
52344b781cfSAndrew Turner #define MAC_RSSAR_ADDRT_WIDTH		1
52444b781cfSAndrew Turner #define MAC_RSSAR_CT_INDEX		1
52544b781cfSAndrew Turner #define MAC_RSSAR_CT_WIDTH		1
52644b781cfSAndrew Turner #define MAC_RSSAR_OB_INDEX		0
52744b781cfSAndrew Turner #define MAC_RSSAR_OB_WIDTH		1
52844b781cfSAndrew Turner #define MAC_RSSAR_RSSIA_INDEX		8
52944b781cfSAndrew Turner #define MAC_RSSAR_RSSIA_WIDTH		8
53044b781cfSAndrew Turner #define MAC_RSSCR_IP2TE_INDEX		1
53144b781cfSAndrew Turner #define MAC_RSSCR_IP2TE_WIDTH		1
53244b781cfSAndrew Turner #define MAC_RSSCR_RSSE_INDEX		0
53344b781cfSAndrew Turner #define MAC_RSSCR_RSSE_WIDTH		1
53444b781cfSAndrew Turner #define MAC_RSSCR_TCP4TE_INDEX		2
53544b781cfSAndrew Turner #define MAC_RSSCR_TCP4TE_WIDTH		1
53644b781cfSAndrew Turner #define MAC_RSSCR_UDP4TE_INDEX		3
53744b781cfSAndrew Turner #define MAC_RSSCR_UDP4TE_WIDTH		1
53844b781cfSAndrew Turner #define MAC_RSSDR_DMCH_INDEX		0
53944b781cfSAndrew Turner #define MAC_RSSDR_DMCH_WIDTH		4
54044b781cfSAndrew Turner #define MAC_SSIR_SNSINC_INDEX		8
54144b781cfSAndrew Turner #define MAC_SSIR_SNSINC_WIDTH		8
54244b781cfSAndrew Turner #define MAC_SSIR_SSINC_INDEX		16
54344b781cfSAndrew Turner #define MAC_SSIR_SSINC_WIDTH		8
54444b781cfSAndrew Turner #define MAC_TCR_SS_INDEX		29
54544b781cfSAndrew Turner #define MAC_TCR_SS_WIDTH		2
54644b781cfSAndrew Turner #define MAC_TCR_TE_INDEX		0
54744b781cfSAndrew Turner #define MAC_TCR_TE_WIDTH		1
5487113afc8SEmmanuel Vadot #define MAC_TCR_VNE_INDEX		24
5497113afc8SEmmanuel Vadot #define MAC_TCR_VNE_WIDTH		1
5507113afc8SEmmanuel Vadot #define MAC_TCR_VNM_INDEX		25
5517113afc8SEmmanuel Vadot #define MAC_TCR_VNM_WIDTH		1
5527113afc8SEmmanuel Vadot #define MAC_TIR_TNID_INDEX		0
5537113afc8SEmmanuel Vadot #define MAC_TIR_TNID_WIDTH		16
55444b781cfSAndrew Turner #define MAC_TSCR_AV8021ASMEN_INDEX	28
55544b781cfSAndrew Turner #define MAC_TSCR_AV8021ASMEN_WIDTH	1
55644b781cfSAndrew Turner #define MAC_TSCR_SNAPTYPSEL_INDEX	16
55744b781cfSAndrew Turner #define MAC_TSCR_SNAPTYPSEL_WIDTH	2
55844b781cfSAndrew Turner #define MAC_TSCR_TSADDREG_INDEX		5
55944b781cfSAndrew Turner #define MAC_TSCR_TSADDREG_WIDTH		1
56044b781cfSAndrew Turner #define MAC_TSCR_TSCFUPDT_INDEX		1
56144b781cfSAndrew Turner #define MAC_TSCR_TSCFUPDT_WIDTH		1
56244b781cfSAndrew Turner #define MAC_TSCR_TSCTRLSSR_INDEX	9
56344b781cfSAndrew Turner #define MAC_TSCR_TSCTRLSSR_WIDTH	1
56444b781cfSAndrew Turner #define MAC_TSCR_TSENA_INDEX		0
56544b781cfSAndrew Turner #define MAC_TSCR_TSENA_WIDTH		1
56644b781cfSAndrew Turner #define MAC_TSCR_TSENALL_INDEX		8
56744b781cfSAndrew Turner #define MAC_TSCR_TSENALL_WIDTH		1
56844b781cfSAndrew Turner #define MAC_TSCR_TSEVNTENA_INDEX	14
56944b781cfSAndrew Turner #define MAC_TSCR_TSEVNTENA_WIDTH	1
57044b781cfSAndrew Turner #define MAC_TSCR_TSINIT_INDEX		2
57144b781cfSAndrew Turner #define MAC_TSCR_TSINIT_WIDTH		1
57244b781cfSAndrew Turner #define MAC_TSCR_TSIPENA_INDEX		11
57344b781cfSAndrew Turner #define MAC_TSCR_TSIPENA_WIDTH		1
57444b781cfSAndrew Turner #define MAC_TSCR_TSIPV4ENA_INDEX	13
57544b781cfSAndrew Turner #define MAC_TSCR_TSIPV4ENA_WIDTH	1
57644b781cfSAndrew Turner #define MAC_TSCR_TSIPV6ENA_INDEX	12
57744b781cfSAndrew Turner #define MAC_TSCR_TSIPV6ENA_WIDTH	1
57844b781cfSAndrew Turner #define MAC_TSCR_TSMSTRENA_INDEX	15
57944b781cfSAndrew Turner #define MAC_TSCR_TSMSTRENA_WIDTH	1
58044b781cfSAndrew Turner #define MAC_TSCR_TSVER2ENA_INDEX	10
58144b781cfSAndrew Turner #define MAC_TSCR_TSVER2ENA_WIDTH	1
58244b781cfSAndrew Turner #define MAC_TSCR_TXTSSTSM_INDEX		24
58344b781cfSAndrew Turner #define MAC_TSCR_TXTSSTSM_WIDTH		1
58444b781cfSAndrew Turner #define MAC_TSSR_TXTSC_INDEX		15
58544b781cfSAndrew Turner #define MAC_TSSR_TXTSC_WIDTH		1
58644b781cfSAndrew Turner #define MAC_TXSNR_TXTSSTSMIS_INDEX	31
58744b781cfSAndrew Turner #define MAC_TXSNR_TXTSSTSMIS_WIDTH	1
58844b781cfSAndrew Turner #define MAC_VLANHTR_VLHT_INDEX		0
58944b781cfSAndrew Turner #define MAC_VLANHTR_VLHT_WIDTH		16
59044b781cfSAndrew Turner #define MAC_VLANIR_VLTI_INDEX		20
59144b781cfSAndrew Turner #define MAC_VLANIR_VLTI_WIDTH		1
59244b781cfSAndrew Turner #define MAC_VLANIR_CSVL_INDEX		19
59344b781cfSAndrew Turner #define MAC_VLANIR_CSVL_WIDTH		1
59444b781cfSAndrew Turner #define MAC_VLANTR_DOVLTC_INDEX		20
59544b781cfSAndrew Turner #define MAC_VLANTR_DOVLTC_WIDTH		1
59644b781cfSAndrew Turner #define MAC_VLANTR_ERSVLM_INDEX		19
59744b781cfSAndrew Turner #define MAC_VLANTR_ERSVLM_WIDTH		1
59844b781cfSAndrew Turner #define MAC_VLANTR_ESVL_INDEX		18
59944b781cfSAndrew Turner #define MAC_VLANTR_ESVL_WIDTH		1
60044b781cfSAndrew Turner #define MAC_VLANTR_ETV_INDEX		16
60144b781cfSAndrew Turner #define MAC_VLANTR_ETV_WIDTH		1
60244b781cfSAndrew Turner #define MAC_VLANTR_EVLS_INDEX		21
60344b781cfSAndrew Turner #define MAC_VLANTR_EVLS_WIDTH		2
60444b781cfSAndrew Turner #define MAC_VLANTR_EVLRXS_INDEX		24
60544b781cfSAndrew Turner #define MAC_VLANTR_EVLRXS_WIDTH		1
60644b781cfSAndrew Turner #define MAC_VLANTR_VL_INDEX		0
60744b781cfSAndrew Turner #define MAC_VLANTR_VL_WIDTH		16
60844b781cfSAndrew Turner #define MAC_VLANTR_VTHM_INDEX		25
60944b781cfSAndrew Turner #define MAC_VLANTR_VTHM_WIDTH		1
61044b781cfSAndrew Turner #define MAC_VLANTR_VTIM_INDEX		17
61144b781cfSAndrew Turner #define MAC_VLANTR_VTIM_WIDTH		1
61244b781cfSAndrew Turner #define MAC_VR_DEVID_INDEX		8
61344b781cfSAndrew Turner #define MAC_VR_DEVID_WIDTH		8
61444b781cfSAndrew Turner #define MAC_VR_SNPSVER_INDEX		0
61544b781cfSAndrew Turner #define MAC_VR_SNPSVER_WIDTH		8
61644b781cfSAndrew Turner #define MAC_VR_USERVER_INDEX		16
61744b781cfSAndrew Turner #define MAC_VR_USERVER_WIDTH		8
61844b781cfSAndrew Turner 
61944b781cfSAndrew Turner /* MMC register offsets */
62044b781cfSAndrew Turner #define MMC_CR				0x0800
62144b781cfSAndrew Turner #define MMC_RISR			0x0804
62244b781cfSAndrew Turner #define MMC_TISR			0x0808
62344b781cfSAndrew Turner #define MMC_RIER			0x080c
62444b781cfSAndrew Turner #define MMC_TIER			0x0810
62544b781cfSAndrew Turner #define MMC_TXOCTETCOUNT_GB_LO		0x0814
62644b781cfSAndrew Turner #define MMC_TXOCTETCOUNT_GB_HI		0x0818
62744b781cfSAndrew Turner #define MMC_TXFRAMECOUNT_GB_LO		0x081c
62844b781cfSAndrew Turner #define MMC_TXFRAMECOUNT_GB_HI		0x0820
62944b781cfSAndrew Turner #define MMC_TXBROADCASTFRAMES_G_LO	0x0824
63044b781cfSAndrew Turner #define MMC_TXBROADCASTFRAMES_G_HI	0x0828
63144b781cfSAndrew Turner #define MMC_TXMULTICASTFRAMES_G_LO	0x082c
63244b781cfSAndrew Turner #define MMC_TXMULTICASTFRAMES_G_HI	0x0830
63344b781cfSAndrew Turner #define MMC_TX64OCTETS_GB_LO		0x0834
63444b781cfSAndrew Turner #define MMC_TX64OCTETS_GB_HI		0x0838
63544b781cfSAndrew Turner #define MMC_TX65TO127OCTETS_GB_LO	0x083c
63644b781cfSAndrew Turner #define MMC_TX65TO127OCTETS_GB_HI	0x0840
63744b781cfSAndrew Turner #define MMC_TX128TO255OCTETS_GB_LO	0x0844
63844b781cfSAndrew Turner #define MMC_TX128TO255OCTETS_GB_HI	0x0848
63944b781cfSAndrew Turner #define MMC_TX256TO511OCTETS_GB_LO	0x084c
64044b781cfSAndrew Turner #define MMC_TX256TO511OCTETS_GB_HI	0x0850
64144b781cfSAndrew Turner #define MMC_TX512TO1023OCTETS_GB_LO	0x0854
64244b781cfSAndrew Turner #define MMC_TX512TO1023OCTETS_GB_HI	0x0858
64344b781cfSAndrew Turner #define MMC_TX1024TOMAXOCTETS_GB_LO	0x085c
64444b781cfSAndrew Turner #define MMC_TX1024TOMAXOCTETS_GB_HI	0x0860
64544b781cfSAndrew Turner #define MMC_TXUNICASTFRAMES_GB_LO	0x0864
64644b781cfSAndrew Turner #define MMC_TXUNICASTFRAMES_GB_HI	0x0868
64744b781cfSAndrew Turner #define MMC_TXMULTICASTFRAMES_GB_LO	0x086c
64844b781cfSAndrew Turner #define MMC_TXMULTICASTFRAMES_GB_HI	0x0870
64944b781cfSAndrew Turner #define MMC_TXBROADCASTFRAMES_GB_LO	0x0874
65044b781cfSAndrew Turner #define MMC_TXBROADCASTFRAMES_GB_HI	0x0878
65144b781cfSAndrew Turner #define MMC_TXUNDERFLOWERROR_LO		0x087c
65244b781cfSAndrew Turner #define MMC_TXUNDERFLOWERROR_HI		0x0880
65344b781cfSAndrew Turner #define MMC_TXOCTETCOUNT_G_LO		0x0884
65444b781cfSAndrew Turner #define MMC_TXOCTETCOUNT_G_HI		0x0888
65544b781cfSAndrew Turner #define MMC_TXFRAMECOUNT_G_LO		0x088c
65644b781cfSAndrew Turner #define MMC_TXFRAMECOUNT_G_HI		0x0890
65744b781cfSAndrew Turner #define MMC_TXPAUSEFRAMES_LO		0x0894
65844b781cfSAndrew Turner #define MMC_TXPAUSEFRAMES_HI		0x0898
65944b781cfSAndrew Turner #define MMC_TXVLANFRAMES_G_LO		0x089c
66044b781cfSAndrew Turner #define MMC_TXVLANFRAMES_G_HI		0x08a0
66144b781cfSAndrew Turner #define MMC_RXFRAMECOUNT_GB_LO		0x0900
66244b781cfSAndrew Turner #define MMC_RXFRAMECOUNT_GB_HI		0x0904
66344b781cfSAndrew Turner #define MMC_RXOCTETCOUNT_GB_LO		0x0908
66444b781cfSAndrew Turner #define MMC_RXOCTETCOUNT_GB_HI		0x090c
66544b781cfSAndrew Turner #define MMC_RXOCTETCOUNT_G_LO		0x0910
66644b781cfSAndrew Turner #define MMC_RXOCTETCOUNT_G_HI		0x0914
66744b781cfSAndrew Turner #define MMC_RXBROADCASTFRAMES_G_LO	0x0918
66844b781cfSAndrew Turner #define MMC_RXBROADCASTFRAMES_G_HI	0x091c
66944b781cfSAndrew Turner #define MMC_RXMULTICASTFRAMES_G_LO	0x0920
67044b781cfSAndrew Turner #define MMC_RXMULTICASTFRAMES_G_HI	0x0924
67144b781cfSAndrew Turner #define MMC_RXCRCERROR_LO		0x0928
67244b781cfSAndrew Turner #define MMC_RXCRCERROR_HI		0x092c
67344b781cfSAndrew Turner #define MMC_RXRUNTERROR			0x0930
67444b781cfSAndrew Turner #define MMC_RXJABBERERROR		0x0934
67544b781cfSAndrew Turner #define MMC_RXUNDERSIZE_G		0x0938
67644b781cfSAndrew Turner #define MMC_RXOVERSIZE_G		0x093c
67744b781cfSAndrew Turner #define MMC_RX64OCTETS_GB_LO		0x0940
67844b781cfSAndrew Turner #define MMC_RX64OCTETS_GB_HI		0x0944
67944b781cfSAndrew Turner #define MMC_RX65TO127OCTETS_GB_LO	0x0948
68044b781cfSAndrew Turner #define MMC_RX65TO127OCTETS_GB_HI	0x094c
68144b781cfSAndrew Turner #define MMC_RX128TO255OCTETS_GB_LO	0x0950
68244b781cfSAndrew Turner #define MMC_RX128TO255OCTETS_GB_HI	0x0954
68344b781cfSAndrew Turner #define MMC_RX256TO511OCTETS_GB_LO	0x0958
68444b781cfSAndrew Turner #define MMC_RX256TO511OCTETS_GB_HI	0x095c
68544b781cfSAndrew Turner #define MMC_RX512TO1023OCTETS_GB_LO	0x0960
68644b781cfSAndrew Turner #define MMC_RX512TO1023OCTETS_GB_HI	0x0964
68744b781cfSAndrew Turner #define MMC_RX1024TOMAXOCTETS_GB_LO	0x0968
68844b781cfSAndrew Turner #define MMC_RX1024TOMAXOCTETS_GB_HI	0x096c
68944b781cfSAndrew Turner #define MMC_RXUNICASTFRAMES_G_LO	0x0970
69044b781cfSAndrew Turner #define MMC_RXUNICASTFRAMES_G_HI	0x0974
69144b781cfSAndrew Turner #define MMC_RXLENGTHERROR_LO		0x0978
69244b781cfSAndrew Turner #define MMC_RXLENGTHERROR_HI		0x097c
69344b781cfSAndrew Turner #define MMC_RXOUTOFRANGETYPE_LO		0x0980
69444b781cfSAndrew Turner #define MMC_RXOUTOFRANGETYPE_HI		0x0984
69544b781cfSAndrew Turner #define MMC_RXPAUSEFRAMES_LO		0x0988
69644b781cfSAndrew Turner #define MMC_RXPAUSEFRAMES_HI		0x098c
69744b781cfSAndrew Turner #define MMC_RXFIFOOVERFLOW_LO		0x0990
69844b781cfSAndrew Turner #define MMC_RXFIFOOVERFLOW_HI		0x0994
69944b781cfSAndrew Turner #define MMC_RXVLANFRAMES_GB_LO		0x0998
70044b781cfSAndrew Turner #define MMC_RXVLANFRAMES_GB_HI		0x099c
70144b781cfSAndrew Turner #define MMC_RXWATCHDOGERROR		0x09a0
70244b781cfSAndrew Turner 
70344b781cfSAndrew Turner /* MMC register entry bit positions and sizes */
70444b781cfSAndrew Turner #define MMC_CR_CR_INDEX				0
70544b781cfSAndrew Turner #define MMC_CR_CR_WIDTH				1
70644b781cfSAndrew Turner #define MMC_CR_CSR_INDEX			1
70744b781cfSAndrew Turner #define MMC_CR_CSR_WIDTH			1
70844b781cfSAndrew Turner #define MMC_CR_ROR_INDEX			2
70944b781cfSAndrew Turner #define MMC_CR_ROR_WIDTH			1
71044b781cfSAndrew Turner #define MMC_CR_MCF_INDEX			3
71144b781cfSAndrew Turner #define MMC_CR_MCF_WIDTH			1
71244b781cfSAndrew Turner #define MMC_CR_MCT_INDEX			4
71344b781cfSAndrew Turner #define MMC_CR_MCT_WIDTH			2
71444b781cfSAndrew Turner #define MMC_RIER_ALL_INTERRUPTS_INDEX		0
71544b781cfSAndrew Turner #define MMC_RIER_ALL_INTERRUPTS_WIDTH		23
71644b781cfSAndrew Turner #define MMC_RISR_RXFRAMECOUNT_GB_INDEX		0
71744b781cfSAndrew Turner #define MMC_RISR_RXFRAMECOUNT_GB_WIDTH		1
71844b781cfSAndrew Turner #define MMC_RISR_RXOCTETCOUNT_GB_INDEX		1
71944b781cfSAndrew Turner #define MMC_RISR_RXOCTETCOUNT_GB_WIDTH		1
72044b781cfSAndrew Turner #define MMC_RISR_RXOCTETCOUNT_G_INDEX		2
72144b781cfSAndrew Turner #define MMC_RISR_RXOCTETCOUNT_G_WIDTH		1
72244b781cfSAndrew Turner #define MMC_RISR_RXBROADCASTFRAMES_G_INDEX	3
72344b781cfSAndrew Turner #define MMC_RISR_RXBROADCASTFRAMES_G_WIDTH	1
72444b781cfSAndrew Turner #define MMC_RISR_RXMULTICASTFRAMES_G_INDEX	4
72544b781cfSAndrew Turner #define MMC_RISR_RXMULTICASTFRAMES_G_WIDTH	1
72644b781cfSAndrew Turner #define MMC_RISR_RXCRCERROR_INDEX		5
72744b781cfSAndrew Turner #define MMC_RISR_RXCRCERROR_WIDTH		1
72844b781cfSAndrew Turner #define MMC_RISR_RXRUNTERROR_INDEX		6
72944b781cfSAndrew Turner #define MMC_RISR_RXRUNTERROR_WIDTH		1
73044b781cfSAndrew Turner #define MMC_RISR_RXJABBERERROR_INDEX		7
73144b781cfSAndrew Turner #define MMC_RISR_RXJABBERERROR_WIDTH		1
73244b781cfSAndrew Turner #define MMC_RISR_RXUNDERSIZE_G_INDEX		8
73344b781cfSAndrew Turner #define MMC_RISR_RXUNDERSIZE_G_WIDTH		1
73444b781cfSAndrew Turner #define MMC_RISR_RXOVERSIZE_G_INDEX		9
73544b781cfSAndrew Turner #define MMC_RISR_RXOVERSIZE_G_WIDTH		1
73644b781cfSAndrew Turner #define MMC_RISR_RX64OCTETS_GB_INDEX		10
73744b781cfSAndrew Turner #define MMC_RISR_RX64OCTETS_GB_WIDTH		1
73844b781cfSAndrew Turner #define MMC_RISR_RX65TO127OCTETS_GB_INDEX	11
73944b781cfSAndrew Turner #define MMC_RISR_RX65TO127OCTETS_GB_WIDTH	1
74044b781cfSAndrew Turner #define MMC_RISR_RX128TO255OCTETS_GB_INDEX	12
74144b781cfSAndrew Turner #define MMC_RISR_RX128TO255OCTETS_GB_WIDTH	1
74244b781cfSAndrew Turner #define MMC_RISR_RX256TO511OCTETS_GB_INDEX	13
74344b781cfSAndrew Turner #define MMC_RISR_RX256TO511OCTETS_GB_WIDTH	1
74444b781cfSAndrew Turner #define MMC_RISR_RX512TO1023OCTETS_GB_INDEX	14
74544b781cfSAndrew Turner #define MMC_RISR_RX512TO1023OCTETS_GB_WIDTH	1
74644b781cfSAndrew Turner #define MMC_RISR_RX1024TOMAXOCTETS_GB_INDEX	15
74744b781cfSAndrew Turner #define MMC_RISR_RX1024TOMAXOCTETS_GB_WIDTH	1
74844b781cfSAndrew Turner #define MMC_RISR_RXUNICASTFRAMES_G_INDEX	16
74944b781cfSAndrew Turner #define MMC_RISR_RXUNICASTFRAMES_G_WIDTH	1
75044b781cfSAndrew Turner #define MMC_RISR_RXLENGTHERROR_INDEX		17
75144b781cfSAndrew Turner #define MMC_RISR_RXLENGTHERROR_WIDTH		1
75244b781cfSAndrew Turner #define MMC_RISR_RXOUTOFRANGETYPE_INDEX		18
75344b781cfSAndrew Turner #define MMC_RISR_RXOUTOFRANGETYPE_WIDTH		1
75444b781cfSAndrew Turner #define MMC_RISR_RXPAUSEFRAMES_INDEX		19
75544b781cfSAndrew Turner #define MMC_RISR_RXPAUSEFRAMES_WIDTH		1
75644b781cfSAndrew Turner #define MMC_RISR_RXFIFOOVERFLOW_INDEX		20
75744b781cfSAndrew Turner #define MMC_RISR_RXFIFOOVERFLOW_WIDTH		1
75844b781cfSAndrew Turner #define MMC_RISR_RXVLANFRAMES_GB_INDEX		21
75944b781cfSAndrew Turner #define MMC_RISR_RXVLANFRAMES_GB_WIDTH		1
76044b781cfSAndrew Turner #define MMC_RISR_RXWATCHDOGERROR_INDEX		22
76144b781cfSAndrew Turner #define MMC_RISR_RXWATCHDOGERROR_WIDTH		1
76244b781cfSAndrew Turner #define MMC_TIER_ALL_INTERRUPTS_INDEX		0
76344b781cfSAndrew Turner #define MMC_TIER_ALL_INTERRUPTS_WIDTH		18
76444b781cfSAndrew Turner #define MMC_TISR_TXOCTETCOUNT_GB_INDEX		0
76544b781cfSAndrew Turner #define MMC_TISR_TXOCTETCOUNT_GB_WIDTH		1
76644b781cfSAndrew Turner #define MMC_TISR_TXFRAMECOUNT_GB_INDEX		1
76744b781cfSAndrew Turner #define MMC_TISR_TXFRAMECOUNT_GB_WIDTH		1
76844b781cfSAndrew Turner #define MMC_TISR_TXBROADCASTFRAMES_G_INDEX	2
76944b781cfSAndrew Turner #define MMC_TISR_TXBROADCASTFRAMES_G_WIDTH	1
77044b781cfSAndrew Turner #define MMC_TISR_TXMULTICASTFRAMES_G_INDEX	3
77144b781cfSAndrew Turner #define MMC_TISR_TXMULTICASTFRAMES_G_WIDTH	1
77244b781cfSAndrew Turner #define MMC_TISR_TX64OCTETS_GB_INDEX		4
77344b781cfSAndrew Turner #define MMC_TISR_TX64OCTETS_GB_WIDTH		1
77444b781cfSAndrew Turner #define MMC_TISR_TX65TO127OCTETS_GB_INDEX	5
77544b781cfSAndrew Turner #define MMC_TISR_TX65TO127OCTETS_GB_WIDTH	1
77644b781cfSAndrew Turner #define MMC_TISR_TX128TO255OCTETS_GB_INDEX	6
77744b781cfSAndrew Turner #define MMC_TISR_TX128TO255OCTETS_GB_WIDTH	1
77844b781cfSAndrew Turner #define MMC_TISR_TX256TO511OCTETS_GB_INDEX	7
77944b781cfSAndrew Turner #define MMC_TISR_TX256TO511OCTETS_GB_WIDTH	1
78044b781cfSAndrew Turner #define MMC_TISR_TX512TO1023OCTETS_GB_INDEX	8
78144b781cfSAndrew Turner #define MMC_TISR_TX512TO1023OCTETS_GB_WIDTH	1
78244b781cfSAndrew Turner #define MMC_TISR_TX1024TOMAXOCTETS_GB_INDEX	9
78344b781cfSAndrew Turner #define MMC_TISR_TX1024TOMAXOCTETS_GB_WIDTH	1
78444b781cfSAndrew Turner #define MMC_TISR_TXUNICASTFRAMES_GB_INDEX	10
78544b781cfSAndrew Turner #define MMC_TISR_TXUNICASTFRAMES_GB_WIDTH	1
78644b781cfSAndrew Turner #define MMC_TISR_TXMULTICASTFRAMES_GB_INDEX	11
78744b781cfSAndrew Turner #define MMC_TISR_TXMULTICASTFRAMES_GB_WIDTH	1
78844b781cfSAndrew Turner #define MMC_TISR_TXBROADCASTFRAMES_GB_INDEX	12
78944b781cfSAndrew Turner #define MMC_TISR_TXBROADCASTFRAMES_GB_WIDTH	1
79044b781cfSAndrew Turner #define MMC_TISR_TXUNDERFLOWERROR_INDEX		13
79144b781cfSAndrew Turner #define MMC_TISR_TXUNDERFLOWERROR_WIDTH		1
79244b781cfSAndrew Turner #define MMC_TISR_TXOCTETCOUNT_G_INDEX		14
79344b781cfSAndrew Turner #define MMC_TISR_TXOCTETCOUNT_G_WIDTH		1
79444b781cfSAndrew Turner #define MMC_TISR_TXFRAMECOUNT_G_INDEX		15
79544b781cfSAndrew Turner #define MMC_TISR_TXFRAMECOUNT_G_WIDTH		1
79644b781cfSAndrew Turner #define MMC_TISR_TXPAUSEFRAMES_INDEX		16
79744b781cfSAndrew Turner #define MMC_TISR_TXPAUSEFRAMES_WIDTH		1
79844b781cfSAndrew Turner #define MMC_TISR_TXVLANFRAMES_G_INDEX		17
79944b781cfSAndrew Turner #define MMC_TISR_TXVLANFRAMES_G_WIDTH		1
80044b781cfSAndrew Turner 
80144b781cfSAndrew Turner /* MTL register offsets */
80244b781cfSAndrew Turner #define MTL_OMR				0x1000
80344b781cfSAndrew Turner #define MTL_FDCR			0x1008
80444b781cfSAndrew Turner #define MTL_FDSR			0x100c
80544b781cfSAndrew Turner #define MTL_FDDR			0x1010
80644b781cfSAndrew Turner #define MTL_ISR				0x1020
80744b781cfSAndrew Turner #define MTL_RQDCM0R			0x1030
8087113afc8SEmmanuel Vadot #define MTL_RQDCM1R			0x1034
8097113afc8SEmmanuel Vadot #define MTL_RQDCM2R			0x1038
81044b781cfSAndrew Turner #define MTL_TCPM0R			0x1040
81144b781cfSAndrew Turner #define MTL_TCPM1R			0x1044
81244b781cfSAndrew Turner 
81344b781cfSAndrew Turner #define MTL_RQDCM_INC			4
81444b781cfSAndrew Turner #define MTL_RQDCM_Q_PER_REG		4
81544b781cfSAndrew Turner #define MTL_TCPM_INC			4
81644b781cfSAndrew Turner #define MTL_TCPM_TC_PER_REG		4
81744b781cfSAndrew Turner 
81844b781cfSAndrew Turner /* MTL register entry bit positions and sizes */
81944b781cfSAndrew Turner #define MTL_OMR_ETSALG_INDEX		5
82044b781cfSAndrew Turner #define MTL_OMR_ETSALG_WIDTH		2
82144b781cfSAndrew Turner #define MTL_OMR_RAA_INDEX		2
82244b781cfSAndrew Turner #define MTL_OMR_RAA_WIDTH		1
82344b781cfSAndrew Turner 
82444b781cfSAndrew Turner /* MTL queue register offsets
82544b781cfSAndrew Turner  *   Multiple queues can be active.  The first queue has registers
82644b781cfSAndrew Turner  *   that begin at 0x1100.  Each subsequent queue has registers that
82744b781cfSAndrew Turner  *   are accessed using an offset of 0x80 from the previous queue.
82844b781cfSAndrew Turner  */
82944b781cfSAndrew Turner #define MTL_Q_BASE			0x1100
83044b781cfSAndrew Turner #define MTL_Q_INC			0x80
83144b781cfSAndrew Turner 
83244b781cfSAndrew Turner #define MTL_Q_TQOMR			0x00
83344b781cfSAndrew Turner #define MTL_Q_TQUR			0x04
83444b781cfSAndrew Turner #define MTL_Q_TQDR			0x08
8357113afc8SEmmanuel Vadot #define MTL_Q_TC0ETSCR			0x10
8367113afc8SEmmanuel Vadot #define MTL_Q_TC0ETSSR			0x14
8377113afc8SEmmanuel Vadot #define MTL_Q_TC0QWR			0x18
83844b781cfSAndrew Turner #define MTL_Q_RQOMR			0x40
83944b781cfSAndrew Turner #define MTL_Q_RQMPOCR			0x44
84044b781cfSAndrew Turner #define MTL_Q_RQDR			0x48
8417113afc8SEmmanuel Vadot #define MTL_Q_RQCR			0x4c
84244b781cfSAndrew Turner #define MTL_Q_RQFCR			0x50
84344b781cfSAndrew Turner #define MTL_Q_IER			0x70
84444b781cfSAndrew Turner #define MTL_Q_ISR			0x74
84544b781cfSAndrew Turner 
84644b781cfSAndrew Turner /* MTL queue register entry bit positions and sizes */
84744b781cfSAndrew Turner #define MTL_Q_RQDR_PRXQ_INDEX		16
84844b781cfSAndrew Turner #define MTL_Q_RQDR_PRXQ_WIDTH		14
84944b781cfSAndrew Turner #define MTL_Q_RQDR_RXQSTS_INDEX		4
85044b781cfSAndrew Turner #define MTL_Q_RQDR_RXQSTS_WIDTH		2
85144b781cfSAndrew Turner #define MTL_Q_RQFCR_RFA_INDEX		1
85244b781cfSAndrew Turner #define MTL_Q_RQFCR_RFA_WIDTH		6
85344b781cfSAndrew Turner #define MTL_Q_RQFCR_RFD_INDEX		17
85444b781cfSAndrew Turner #define MTL_Q_RQFCR_RFD_WIDTH		6
85544b781cfSAndrew Turner #define MTL_Q_RQOMR_EHFC_INDEX		7
85644b781cfSAndrew Turner #define MTL_Q_RQOMR_EHFC_WIDTH		1
85744b781cfSAndrew Turner #define MTL_Q_RQOMR_RQS_INDEX		16
85844b781cfSAndrew Turner #define MTL_Q_RQOMR_RQS_WIDTH		9
85944b781cfSAndrew Turner #define MTL_Q_RQOMR_RSF_INDEX		5
86044b781cfSAndrew Turner #define MTL_Q_RQOMR_RSF_WIDTH		1
86144b781cfSAndrew Turner #define MTL_Q_RQOMR_RTC_INDEX		0
86244b781cfSAndrew Turner #define MTL_Q_RQOMR_RTC_WIDTH		2
8637113afc8SEmmanuel Vadot #define MTL_Q_TQDR_TRCSTS_INDEX		1
8647113afc8SEmmanuel Vadot #define MTL_Q_TQDR_TRCSTS_WIDTH		2
8657113afc8SEmmanuel Vadot #define MTL_Q_TQDR_TXQSTS_INDEX		4
8667113afc8SEmmanuel Vadot #define MTL_Q_TQDR_TXQSTS_WIDTH		1
86744b781cfSAndrew Turner #define MTL_Q_TQOMR_FTQ_INDEX		0
86844b781cfSAndrew Turner #define MTL_Q_TQOMR_FTQ_WIDTH		1
86944b781cfSAndrew Turner #define MTL_Q_TQOMR_Q2TCMAP_INDEX	8
87044b781cfSAndrew Turner #define MTL_Q_TQOMR_Q2TCMAP_WIDTH	3
87144b781cfSAndrew Turner #define MTL_Q_TQOMR_TQS_INDEX		16
87244b781cfSAndrew Turner #define MTL_Q_TQOMR_TQS_WIDTH		10
87344b781cfSAndrew Turner #define MTL_Q_TQOMR_TSF_INDEX		1
87444b781cfSAndrew Turner #define MTL_Q_TQOMR_TSF_WIDTH		1
87544b781cfSAndrew Turner #define MTL_Q_TQOMR_TTC_INDEX		4
87644b781cfSAndrew Turner #define MTL_Q_TQOMR_TTC_WIDTH		3
87744b781cfSAndrew Turner #define MTL_Q_TQOMR_TXQEN_INDEX		2
87844b781cfSAndrew Turner #define MTL_Q_TQOMR_TXQEN_WIDTH		2
87944b781cfSAndrew Turner 
88044b781cfSAndrew Turner /* MTL queue register value */
88144b781cfSAndrew Turner #define MTL_RSF_DISABLE			0x00
88244b781cfSAndrew Turner #define MTL_RSF_ENABLE			0x01
88344b781cfSAndrew Turner #define MTL_TSF_DISABLE			0x00
88444b781cfSAndrew Turner #define MTL_TSF_ENABLE			0x01
88544b781cfSAndrew Turner 
88644b781cfSAndrew Turner #define MTL_RX_THRESHOLD_64		0x00
88744b781cfSAndrew Turner #define MTL_RX_THRESHOLD_96		0x02
88844b781cfSAndrew Turner #define MTL_RX_THRESHOLD_128		0x03
88944b781cfSAndrew Turner #define MTL_TX_THRESHOLD_32		0x01
89044b781cfSAndrew Turner #define MTL_TX_THRESHOLD_64		0x00
89144b781cfSAndrew Turner #define MTL_TX_THRESHOLD_96		0x02
89244b781cfSAndrew Turner #define MTL_TX_THRESHOLD_128		0x03
89344b781cfSAndrew Turner #define MTL_TX_THRESHOLD_192		0x04
89444b781cfSAndrew Turner #define MTL_TX_THRESHOLD_256		0x05
89544b781cfSAndrew Turner #define MTL_TX_THRESHOLD_384		0x06
89644b781cfSAndrew Turner #define MTL_TX_THRESHOLD_512		0x07
89744b781cfSAndrew Turner 
89844b781cfSAndrew Turner #define MTL_ETSALG_WRR			0x00
89944b781cfSAndrew Turner #define MTL_ETSALG_WFQ			0x01
90044b781cfSAndrew Turner #define MTL_ETSALG_DWRR			0x02
90144b781cfSAndrew Turner #define MTL_RAA_SP			0x00
90244b781cfSAndrew Turner #define MTL_RAA_WSP			0x01
90344b781cfSAndrew Turner 
90444b781cfSAndrew Turner #define MTL_Q_DISABLED			0x00
90544b781cfSAndrew Turner #define MTL_Q_ENABLED			0x02
90644b781cfSAndrew Turner 
90744b781cfSAndrew Turner /* MTL traffic class register offsets
90844b781cfSAndrew Turner  *   Multiple traffic classes can be active.  The first class has registers
90944b781cfSAndrew Turner  *   that begin at 0x1100.  Each subsequent queue has registers that
91044b781cfSAndrew Turner  *   are accessed using an offset of 0x80 from the previous queue.
91144b781cfSAndrew Turner  */
91244b781cfSAndrew Turner #define MTL_TC_BASE			MTL_Q_BASE
91344b781cfSAndrew Turner #define MTL_TC_INC			MTL_Q_INC
91444b781cfSAndrew Turner 
91544b781cfSAndrew Turner #define MTL_TC_ETSCR			0x10
91644b781cfSAndrew Turner #define MTL_TC_ETSSR			0x14
91744b781cfSAndrew Turner #define MTL_TC_QWR			0x18
91844b781cfSAndrew Turner 
91944b781cfSAndrew Turner /* MTL traffic class register entry bit positions and sizes */
92044b781cfSAndrew Turner #define MTL_TC_ETSCR_TSA_INDEX		0
92144b781cfSAndrew Turner #define MTL_TC_ETSCR_TSA_WIDTH		2
92244b781cfSAndrew Turner #define MTL_TC_QWR_QW_INDEX		0
92344b781cfSAndrew Turner #define MTL_TC_QWR_QW_WIDTH		21
92444b781cfSAndrew Turner 
92544b781cfSAndrew Turner /* MTL traffic class register value */
92644b781cfSAndrew Turner #define MTL_TSA_SP			0x00
92744b781cfSAndrew Turner #define MTL_TSA_ETS			0x02
92844b781cfSAndrew Turner 
92944b781cfSAndrew Turner /* PCS MMD select register offset
93044b781cfSAndrew Turner  *  The MMD select register is used for accessing PCS registers
93144b781cfSAndrew Turner  *  when the underlying APB3 interface is using indirect addressing.
93244b781cfSAndrew Turner  *  Indirect addressing requires accessing registers in two phases,
93344b781cfSAndrew Turner  *  an address phase and a data phase.  The address phases requires
93444b781cfSAndrew Turner  *  writing an address selection value to the MMD select regiesters.
93544b781cfSAndrew Turner  */
9367113afc8SEmmanuel Vadot #define	PCS_V1_WINDOW_SELECT		0x03fc
9377113afc8SEmmanuel Vadot #define	PCS_V2_WINDOW_DEF		0x9060
9387113afc8SEmmanuel Vadot #define	PCS_V2_WINDOW_SELECT		0x9064
9397113afc8SEmmanuel Vadot #define	PCS_V2_RV_WINDOW_DEF		0x1060
9407113afc8SEmmanuel Vadot #define	PCS_V2_RV_WINDOW_SELECT		0x1064
9417113afc8SEmmanuel Vadot 
9427113afc8SEmmanuel Vadot /* PCS register entry bit positions and sizes */
9437113afc8SEmmanuel Vadot #define PCS_V2_WINDOW_DEF_OFFSET_INDEX	6
9447113afc8SEmmanuel Vadot #define PCS_V2_WINDOW_DEF_OFFSET_WIDTH	14
9457113afc8SEmmanuel Vadot #define PCS_V2_WINDOW_DEF_SIZE_INDEX	2
9467113afc8SEmmanuel Vadot #define PCS_V2_WINDOW_DEF_SIZE_WIDTH	4
94744b781cfSAndrew Turner 
94844b781cfSAndrew Turner /* SerDes integration register offsets */
94944b781cfSAndrew Turner #define SIR0_KR_RT_1			0x002c
95044b781cfSAndrew Turner #define SIR0_STATUS			0x0040
95144b781cfSAndrew Turner #define SIR1_SPEED			0x0000
95244b781cfSAndrew Turner 
95344b781cfSAndrew Turner /* SerDes integration register entry bit positions and sizes */
95444b781cfSAndrew Turner #define SIR0_KR_RT_1_RESET_INDEX	11
95544b781cfSAndrew Turner #define SIR0_KR_RT_1_RESET_WIDTH	1
95644b781cfSAndrew Turner #define SIR0_STATUS_RX_READY_INDEX	0
95744b781cfSAndrew Turner #define SIR0_STATUS_RX_READY_WIDTH	1
95844b781cfSAndrew Turner #define SIR0_STATUS_TX_READY_INDEX	8
95944b781cfSAndrew Turner #define SIR0_STATUS_TX_READY_WIDTH	1
96044b781cfSAndrew Turner #define SIR1_SPEED_CDR_RATE_INDEX	12
96144b781cfSAndrew Turner #define SIR1_SPEED_CDR_RATE_WIDTH	4
96244b781cfSAndrew Turner #define SIR1_SPEED_DATARATE_INDEX	4
96344b781cfSAndrew Turner #define SIR1_SPEED_DATARATE_WIDTH	2
96444b781cfSAndrew Turner #define SIR1_SPEED_PLLSEL_INDEX		3
96544b781cfSAndrew Turner #define SIR1_SPEED_PLLSEL_WIDTH		1
96644b781cfSAndrew Turner #define SIR1_SPEED_RATECHANGE_INDEX	6
96744b781cfSAndrew Turner #define SIR1_SPEED_RATECHANGE_WIDTH	1
96844b781cfSAndrew Turner #define SIR1_SPEED_TXAMP_INDEX		8
96944b781cfSAndrew Turner #define SIR1_SPEED_TXAMP_WIDTH		4
97044b781cfSAndrew Turner #define SIR1_SPEED_WORDMODE_INDEX	0
97144b781cfSAndrew Turner #define SIR1_SPEED_WORDMODE_WIDTH	3
97244b781cfSAndrew Turner 
97344b781cfSAndrew Turner /* SerDes RxTx register offsets */
97444b781cfSAndrew Turner #define RXTX_REG6			0x0018
97544b781cfSAndrew Turner #define RXTX_REG20			0x0050
97644b781cfSAndrew Turner #define RXTX_REG22			0x0058
97744b781cfSAndrew Turner #define RXTX_REG114			0x01c8
97844b781cfSAndrew Turner #define RXTX_REG129			0x0204
97944b781cfSAndrew Turner 
98044b781cfSAndrew Turner /* SerDes RxTx register entry bit positions and sizes */
98144b781cfSAndrew Turner #define RXTX_REG6_RESETB_RXD_INDEX	8
98244b781cfSAndrew Turner #define RXTX_REG6_RESETB_RXD_WIDTH	1
98344b781cfSAndrew Turner #define RXTX_REG20_BLWC_ENA_INDEX	2
98444b781cfSAndrew Turner #define RXTX_REG20_BLWC_ENA_WIDTH	1
98544b781cfSAndrew Turner #define RXTX_REG114_PQ_REG_INDEX	9
98644b781cfSAndrew Turner #define RXTX_REG114_PQ_REG_WIDTH	7
98744b781cfSAndrew Turner #define RXTX_REG129_RXDFE_CONFIG_INDEX	14
98844b781cfSAndrew Turner #define RXTX_REG129_RXDFE_CONFIG_WIDTH	2
98944b781cfSAndrew Turner 
9907113afc8SEmmanuel Vadot /* MAC Control register offsets */
9917113afc8SEmmanuel Vadot #define XP_PROP_0			0x0000
9927113afc8SEmmanuel Vadot #define XP_PROP_1			0x0004
9937113afc8SEmmanuel Vadot #define XP_PROP_2			0x0008
9947113afc8SEmmanuel Vadot #define XP_PROP_3			0x000c
9957113afc8SEmmanuel Vadot #define XP_PROP_4			0x0010
9967113afc8SEmmanuel Vadot #define XP_PROP_5			0x0014
9977113afc8SEmmanuel Vadot #define XP_MAC_ADDR_LO			0x0020
9987113afc8SEmmanuel Vadot #define XP_MAC_ADDR_HI			0x0024
9997113afc8SEmmanuel Vadot #define XP_ECC_ISR			0x0030
10007113afc8SEmmanuel Vadot #define XP_ECC_IER			0x0034
10017113afc8SEmmanuel Vadot #define XP_ECC_CNT0			0x003c
10027113afc8SEmmanuel Vadot #define XP_ECC_CNT1			0x0040
10037113afc8SEmmanuel Vadot #define XP_DRIVER_INT_REQ		0x0060
10047113afc8SEmmanuel Vadot #define XP_DRIVER_INT_RO		0x0064
10057113afc8SEmmanuel Vadot #define XP_DRIVER_SCRATCH_0		0x0068
10067113afc8SEmmanuel Vadot #define XP_DRIVER_SCRATCH_1		0x006c
10077113afc8SEmmanuel Vadot #define XP_INT_REISSUE_EN		0x0074
10087113afc8SEmmanuel Vadot #define XP_INT_EN			0x0078
10097113afc8SEmmanuel Vadot #define XP_I2C_MUTEX			0x0080
10107113afc8SEmmanuel Vadot #define XP_MDIO_MUTEX			0x0084
10117113afc8SEmmanuel Vadot 
10127113afc8SEmmanuel Vadot /* MAC Control register entry bit positions and sizes */
10137113afc8SEmmanuel Vadot #define XP_DRIVER_INT_REQ_REQUEST_INDEX		0
10147113afc8SEmmanuel Vadot #define XP_DRIVER_INT_REQ_REQUEST_WIDTH		1
10157113afc8SEmmanuel Vadot #define XP_DRIVER_INT_RO_STATUS_INDEX		0
10167113afc8SEmmanuel Vadot #define XP_DRIVER_INT_RO_STATUS_WIDTH		1
10177113afc8SEmmanuel Vadot #define XP_DRIVER_SCRATCH_0_COMMAND_INDEX	0
10187113afc8SEmmanuel Vadot #define XP_DRIVER_SCRATCH_0_COMMAND_WIDTH	8
10197113afc8SEmmanuel Vadot #define XP_DRIVER_SCRATCH_0_SUB_COMMAND_INDEX	8
10207113afc8SEmmanuel Vadot #define XP_DRIVER_SCRATCH_0_SUB_COMMAND_WIDTH	8
10217113afc8SEmmanuel Vadot #define XP_ECC_CNT0_RX_DED_INDEX		24
10227113afc8SEmmanuel Vadot #define XP_ECC_CNT0_RX_DED_WIDTH		8
10237113afc8SEmmanuel Vadot #define XP_ECC_CNT0_RX_SEC_INDEX		16
10247113afc8SEmmanuel Vadot #define XP_ECC_CNT0_RX_SEC_WIDTH		8
10257113afc8SEmmanuel Vadot #define XP_ECC_CNT0_TX_DED_INDEX		8
10267113afc8SEmmanuel Vadot #define XP_ECC_CNT0_TX_DED_WIDTH		8
10277113afc8SEmmanuel Vadot #define XP_ECC_CNT0_TX_SEC_INDEX		0
10287113afc8SEmmanuel Vadot #define XP_ECC_CNT0_TX_SEC_WIDTH		8
10297113afc8SEmmanuel Vadot #define XP_ECC_CNT1_DESC_DED_INDEX		8
10307113afc8SEmmanuel Vadot #define XP_ECC_CNT1_DESC_DED_WIDTH		8
10317113afc8SEmmanuel Vadot #define XP_ECC_CNT1_DESC_SEC_INDEX		0
10327113afc8SEmmanuel Vadot #define XP_ECC_CNT1_DESC_SEC_WIDTH		8
10337113afc8SEmmanuel Vadot #define XP_ECC_IER_DESC_DED_INDEX		5
10347113afc8SEmmanuel Vadot #define XP_ECC_IER_DESC_DED_WIDTH		1
10357113afc8SEmmanuel Vadot #define XP_ECC_IER_DESC_SEC_INDEX		4
10367113afc8SEmmanuel Vadot #define XP_ECC_IER_DESC_SEC_WIDTH		1
10377113afc8SEmmanuel Vadot #define XP_ECC_IER_RX_DED_INDEX			3
10387113afc8SEmmanuel Vadot #define XP_ECC_IER_RX_DED_WIDTH			1
10397113afc8SEmmanuel Vadot #define XP_ECC_IER_RX_SEC_INDEX			2
10407113afc8SEmmanuel Vadot #define XP_ECC_IER_RX_SEC_WIDTH			1
10417113afc8SEmmanuel Vadot #define XP_ECC_IER_TX_DED_INDEX			1
10427113afc8SEmmanuel Vadot #define XP_ECC_IER_TX_DED_WIDTH			1
10437113afc8SEmmanuel Vadot #define XP_ECC_IER_TX_SEC_INDEX			0
10447113afc8SEmmanuel Vadot #define XP_ECC_IER_TX_SEC_WIDTH			1
10457113afc8SEmmanuel Vadot #define XP_ECC_ISR_DESC_DED_INDEX		5
10467113afc8SEmmanuel Vadot #define XP_ECC_ISR_DESC_DED_WIDTH		1
10477113afc8SEmmanuel Vadot #define XP_ECC_ISR_DESC_SEC_INDEX		4
10487113afc8SEmmanuel Vadot #define XP_ECC_ISR_DESC_SEC_WIDTH		1
10497113afc8SEmmanuel Vadot #define XP_ECC_ISR_RX_DED_INDEX			3
10507113afc8SEmmanuel Vadot #define XP_ECC_ISR_RX_DED_WIDTH			1
10517113afc8SEmmanuel Vadot #define XP_ECC_ISR_RX_SEC_INDEX			2
10527113afc8SEmmanuel Vadot #define XP_ECC_ISR_RX_SEC_WIDTH			1
10537113afc8SEmmanuel Vadot #define XP_ECC_ISR_TX_DED_INDEX			1
10547113afc8SEmmanuel Vadot #define XP_ECC_ISR_TX_DED_WIDTH			1
10557113afc8SEmmanuel Vadot #define XP_ECC_ISR_TX_SEC_INDEX			0
10567113afc8SEmmanuel Vadot #define XP_ECC_ISR_TX_SEC_WIDTH			1
10577113afc8SEmmanuel Vadot #define XP_I2C_MUTEX_BUSY_INDEX			31
10587113afc8SEmmanuel Vadot #define XP_I2C_MUTEX_BUSY_WIDTH			1
10597113afc8SEmmanuel Vadot #define XP_I2C_MUTEX_ID_INDEX			29
10607113afc8SEmmanuel Vadot #define XP_I2C_MUTEX_ID_WIDTH			2
10617113afc8SEmmanuel Vadot #define XP_I2C_MUTEX_ACTIVE_INDEX		0
10627113afc8SEmmanuel Vadot #define XP_I2C_MUTEX_ACTIVE_WIDTH		1
10637113afc8SEmmanuel Vadot #define XP_MAC_ADDR_HI_VALID_INDEX		31
10647113afc8SEmmanuel Vadot #define XP_MAC_ADDR_HI_VALID_WIDTH		1
10657113afc8SEmmanuel Vadot #define XP_PROP_0_CONN_TYPE_INDEX		28
10667113afc8SEmmanuel Vadot #define XP_PROP_0_CONN_TYPE_WIDTH		3
10677113afc8SEmmanuel Vadot #define XP_PROP_0_MDIO_ADDR_INDEX		16
10687113afc8SEmmanuel Vadot #define XP_PROP_0_MDIO_ADDR_WIDTH		5
10697113afc8SEmmanuel Vadot #define XP_PROP_0_PORT_ID_INDEX			0
10707113afc8SEmmanuel Vadot #define XP_PROP_0_PORT_ID_WIDTH			8
10717113afc8SEmmanuel Vadot #define XP_PROP_0_PORT_MODE_INDEX		8
10727113afc8SEmmanuel Vadot #define XP_PROP_0_PORT_MODE_WIDTH		4
10737113afc8SEmmanuel Vadot #define XP_PROP_0_PORT_SPEEDS_INDEX		23
10747113afc8SEmmanuel Vadot #define XP_PROP_0_PORT_SPEEDS_WIDTH		4
10757113afc8SEmmanuel Vadot #define XP_PROP_1_MAX_RX_DMA_INDEX		24
10767113afc8SEmmanuel Vadot #define XP_PROP_1_MAX_RX_DMA_WIDTH		5
10777113afc8SEmmanuel Vadot #define XP_PROP_1_MAX_RX_QUEUES_INDEX		8
10787113afc8SEmmanuel Vadot #define XP_PROP_1_MAX_RX_QUEUES_WIDTH		5
10797113afc8SEmmanuel Vadot #define XP_PROP_1_MAX_TX_DMA_INDEX		16
10807113afc8SEmmanuel Vadot #define XP_PROP_1_MAX_TX_DMA_WIDTH		5
10817113afc8SEmmanuel Vadot #define XP_PROP_1_MAX_TX_QUEUES_INDEX		0
10827113afc8SEmmanuel Vadot #define XP_PROP_1_MAX_TX_QUEUES_WIDTH		5
10837113afc8SEmmanuel Vadot #define XP_PROP_2_RX_FIFO_SIZE_INDEX		16
10847113afc8SEmmanuel Vadot #define XP_PROP_2_RX_FIFO_SIZE_WIDTH		16
10857113afc8SEmmanuel Vadot #define XP_PROP_2_TX_FIFO_SIZE_INDEX		0
10867113afc8SEmmanuel Vadot #define XP_PROP_2_TX_FIFO_SIZE_WIDTH		16
10877113afc8SEmmanuel Vadot #define XP_PROP_3_GPIO_MASK_INDEX		28
10887113afc8SEmmanuel Vadot #define XP_PROP_3_GPIO_MASK_WIDTH		4
10897113afc8SEmmanuel Vadot #define XP_PROP_3_GPIO_MOD_ABS_INDEX		20
10907113afc8SEmmanuel Vadot #define XP_PROP_3_GPIO_MOD_ABS_WIDTH		4
10917113afc8SEmmanuel Vadot #define XP_PROP_3_GPIO_RATE_SELECT_INDEX	16
10927113afc8SEmmanuel Vadot #define XP_PROP_3_GPIO_RATE_SELECT_WIDTH	4
10937113afc8SEmmanuel Vadot #define XP_PROP_3_GPIO_RX_LOS_INDEX		24
10947113afc8SEmmanuel Vadot #define XP_PROP_3_GPIO_RX_LOS_WIDTH		4
10957113afc8SEmmanuel Vadot #define XP_PROP_3_GPIO_TX_FAULT_INDEX		12
10967113afc8SEmmanuel Vadot #define XP_PROP_3_GPIO_TX_FAULT_WIDTH		4
10977113afc8SEmmanuel Vadot #define XP_PROP_3_GPIO_ADDR_INDEX		8
10987113afc8SEmmanuel Vadot #define XP_PROP_3_GPIO_ADDR_WIDTH		3
10997113afc8SEmmanuel Vadot #define XP_PROP_3_MDIO_RESET_INDEX		0
11007113afc8SEmmanuel Vadot #define XP_PROP_3_MDIO_RESET_WIDTH		2
11017113afc8SEmmanuel Vadot #define XP_PROP_3_MDIO_RESET_I2C_ADDR_INDEX	8
11027113afc8SEmmanuel Vadot #define XP_PROP_3_MDIO_RESET_I2C_ADDR_WIDTH	3
11037113afc8SEmmanuel Vadot #define XP_PROP_3_MDIO_RESET_I2C_GPIO_INDEX	12
11047113afc8SEmmanuel Vadot #define XP_PROP_3_MDIO_RESET_I2C_GPIO_WIDTH	4
11057113afc8SEmmanuel Vadot #define XP_PROP_3_MDIO_RESET_INT_GPIO_INDEX	4
11067113afc8SEmmanuel Vadot #define XP_PROP_3_MDIO_RESET_INT_GPIO_WIDTH	2
11077113afc8SEmmanuel Vadot #define XP_PROP_4_MUX_ADDR_HI_INDEX		8
11087113afc8SEmmanuel Vadot #define XP_PROP_4_MUX_ADDR_HI_WIDTH		5
11097113afc8SEmmanuel Vadot #define XP_PROP_4_MUX_ADDR_LO_INDEX		0
11107113afc8SEmmanuel Vadot #define XP_PROP_4_MUX_ADDR_LO_WIDTH		3
11117113afc8SEmmanuel Vadot #define XP_PROP_4_MUX_CHAN_INDEX		4
11127113afc8SEmmanuel Vadot #define XP_PROP_4_MUX_CHAN_WIDTH		3
11137113afc8SEmmanuel Vadot #define XP_PROP_4_REDRV_ADDR_INDEX		16
11147113afc8SEmmanuel Vadot #define XP_PROP_4_REDRV_ADDR_WIDTH		7
11157113afc8SEmmanuel Vadot #define XP_PROP_4_REDRV_IF_INDEX		23
11167113afc8SEmmanuel Vadot #define XP_PROP_4_REDRV_IF_WIDTH		1
11177113afc8SEmmanuel Vadot #define XP_PROP_4_REDRV_LANE_INDEX		24
11187113afc8SEmmanuel Vadot #define XP_PROP_4_REDRV_LANE_WIDTH		3
11197113afc8SEmmanuel Vadot #define XP_PROP_4_REDRV_MODEL_INDEX		28
11207113afc8SEmmanuel Vadot #define XP_PROP_4_REDRV_MODEL_WIDTH		3
11217113afc8SEmmanuel Vadot #define XP_PROP_4_REDRV_PRESENT_INDEX		31
11227113afc8SEmmanuel Vadot #define XP_PROP_4_REDRV_PRESENT_WIDTH		1
11237113afc8SEmmanuel Vadot 
11247113afc8SEmmanuel Vadot /* I2C Control register offsets */
11257113afc8SEmmanuel Vadot #define IC_CON					0x0000
11267113afc8SEmmanuel Vadot #define IC_TAR					0x0004
11277113afc8SEmmanuel Vadot #define IC_DATA_CMD				0x0010
11287113afc8SEmmanuel Vadot #define IC_INTR_STAT				0x002c
11297113afc8SEmmanuel Vadot #define IC_INTR_MASK				0x0030
11307113afc8SEmmanuel Vadot #define IC_RAW_INTR_STAT			0x0034
11317113afc8SEmmanuel Vadot #define IC_CLR_INTR				0x0040
11327113afc8SEmmanuel Vadot #define IC_CLR_TX_ABRT				0x0054
11337113afc8SEmmanuel Vadot #define IC_CLR_STOP_DET				0x0060
11347113afc8SEmmanuel Vadot #define IC_ENABLE				0x006c
11357113afc8SEmmanuel Vadot #define IC_TXFLR				0x0074
11367113afc8SEmmanuel Vadot #define IC_RXFLR				0x0078
11377113afc8SEmmanuel Vadot #define IC_TX_ABRT_SOURCE			0x0080
11387113afc8SEmmanuel Vadot #define IC_ENABLE_STATUS			0x009c
11397113afc8SEmmanuel Vadot #define IC_COMP_PARAM_1				0x00f4
11407113afc8SEmmanuel Vadot 
11417113afc8SEmmanuel Vadot /* I2C Control register entry bit positions and sizes */
11427113afc8SEmmanuel Vadot #define IC_COMP_PARAM_1_MAX_SPEED_MODE_INDEX	2
11437113afc8SEmmanuel Vadot #define IC_COMP_PARAM_1_MAX_SPEED_MODE_WIDTH	2
11447113afc8SEmmanuel Vadot #define IC_COMP_PARAM_1_RX_BUFFER_DEPTH_INDEX	8
11457113afc8SEmmanuel Vadot #define IC_COMP_PARAM_1_RX_BUFFER_DEPTH_WIDTH	8
11467113afc8SEmmanuel Vadot #define IC_COMP_PARAM_1_TX_BUFFER_DEPTH_INDEX	16
11477113afc8SEmmanuel Vadot #define IC_COMP_PARAM_1_TX_BUFFER_DEPTH_WIDTH	8
11487113afc8SEmmanuel Vadot #define IC_CON_MASTER_MODE_INDEX		0
11497113afc8SEmmanuel Vadot #define IC_CON_MASTER_MODE_WIDTH		1
11507113afc8SEmmanuel Vadot #define IC_CON_RESTART_EN_INDEX			5
11517113afc8SEmmanuel Vadot #define IC_CON_RESTART_EN_WIDTH			1
11527113afc8SEmmanuel Vadot #define IC_CON_RX_FIFO_FULL_HOLD_INDEX		9
11537113afc8SEmmanuel Vadot #define IC_CON_RX_FIFO_FULL_HOLD_WIDTH		1
11547113afc8SEmmanuel Vadot #define IC_CON_SLAVE_DISABLE_INDEX		6
11557113afc8SEmmanuel Vadot #define IC_CON_SLAVE_DISABLE_WIDTH		1
11567113afc8SEmmanuel Vadot #define IC_CON_SPEED_INDEX			1
11577113afc8SEmmanuel Vadot #define IC_CON_SPEED_WIDTH			2
11587113afc8SEmmanuel Vadot #define IC_DATA_CMD_CMD_INDEX			8
11597113afc8SEmmanuel Vadot #define IC_DATA_CMD_CMD_WIDTH			1
11607113afc8SEmmanuel Vadot #define IC_DATA_CMD_STOP_INDEX			9
11617113afc8SEmmanuel Vadot #define IC_DATA_CMD_STOP_WIDTH			1
11627113afc8SEmmanuel Vadot #define IC_ENABLE_ABORT_INDEX			1
11637113afc8SEmmanuel Vadot #define IC_ENABLE_ABORT_WIDTH			1
11647113afc8SEmmanuel Vadot #define IC_ENABLE_EN_INDEX			0
11657113afc8SEmmanuel Vadot #define IC_ENABLE_EN_WIDTH			1
11667113afc8SEmmanuel Vadot #define IC_ENABLE_STATUS_EN_INDEX		0
11677113afc8SEmmanuel Vadot #define IC_ENABLE_STATUS_EN_WIDTH		1
11687113afc8SEmmanuel Vadot #define IC_INTR_MASK_TX_EMPTY_INDEX		4
11697113afc8SEmmanuel Vadot #define IC_INTR_MASK_TX_EMPTY_WIDTH		1
11707113afc8SEmmanuel Vadot #define IC_RAW_INTR_STAT_RX_FULL_INDEX		2
11717113afc8SEmmanuel Vadot #define IC_RAW_INTR_STAT_RX_FULL_WIDTH		1
11727113afc8SEmmanuel Vadot #define IC_RAW_INTR_STAT_STOP_DET_INDEX		9
11737113afc8SEmmanuel Vadot #define IC_RAW_INTR_STAT_STOP_DET_WIDTH		1
11747113afc8SEmmanuel Vadot #define IC_RAW_INTR_STAT_TX_ABRT_INDEX		6
11757113afc8SEmmanuel Vadot #define IC_RAW_INTR_STAT_TX_ABRT_WIDTH		1
11767113afc8SEmmanuel Vadot #define IC_RAW_INTR_STAT_TX_EMPTY_INDEX		4
11777113afc8SEmmanuel Vadot #define IC_RAW_INTR_STAT_TX_EMPTY_WIDTH		1
11787113afc8SEmmanuel Vadot 
11797113afc8SEmmanuel Vadot /* I2C Control register value */
11807113afc8SEmmanuel Vadot #define IC_TX_ABRT_7B_ADDR_NOACK		0x0001
11817113afc8SEmmanuel Vadot #define IC_TX_ABRT_ARB_LOST			0x1000
11827113afc8SEmmanuel Vadot 
118344b781cfSAndrew Turner /* Descriptor/Packet entry bit positions and sizes */
118444b781cfSAndrew Turner #define RX_PACKET_ERRORS_CRC_INDEX		2
118544b781cfSAndrew Turner #define RX_PACKET_ERRORS_CRC_WIDTH		1
118644b781cfSAndrew Turner #define RX_PACKET_ERRORS_FRAME_INDEX		3
118744b781cfSAndrew Turner #define RX_PACKET_ERRORS_FRAME_WIDTH		1
118844b781cfSAndrew Turner #define RX_PACKET_ERRORS_LENGTH_INDEX		0
118944b781cfSAndrew Turner #define RX_PACKET_ERRORS_LENGTH_WIDTH		1
119044b781cfSAndrew Turner #define RX_PACKET_ERRORS_OVERRUN_INDEX		1
119144b781cfSAndrew Turner #define RX_PACKET_ERRORS_OVERRUN_WIDTH		1
119244b781cfSAndrew Turner 
119344b781cfSAndrew Turner #define RX_PACKET_ATTRIBUTES_CSUM_DONE_INDEX	0
119444b781cfSAndrew Turner #define RX_PACKET_ATTRIBUTES_CSUM_DONE_WIDTH	1
119544b781cfSAndrew Turner #define RX_PACKET_ATTRIBUTES_VLAN_CTAG_INDEX	1
119644b781cfSAndrew Turner #define RX_PACKET_ATTRIBUTES_VLAN_CTAG_WIDTH	1
11977113afc8SEmmanuel Vadot #define RX_PACKET_ATTRIBUTES_LAST_INDEX		2
11987113afc8SEmmanuel Vadot #define RX_PACKET_ATTRIBUTES_LAST_WIDTH		1
119944b781cfSAndrew Turner #define RX_PACKET_ATTRIBUTES_CONTEXT_NEXT_INDEX	3
120044b781cfSAndrew Turner #define RX_PACKET_ATTRIBUTES_CONTEXT_NEXT_WIDTH	1
120144b781cfSAndrew Turner #define RX_PACKET_ATTRIBUTES_CONTEXT_INDEX	4
120244b781cfSAndrew Turner #define RX_PACKET_ATTRIBUTES_CONTEXT_WIDTH	1
120344b781cfSAndrew Turner #define RX_PACKET_ATTRIBUTES_RX_TSTAMP_INDEX	5
120444b781cfSAndrew Turner #define RX_PACKET_ATTRIBUTES_RX_TSTAMP_WIDTH	1
120544b781cfSAndrew Turner #define RX_PACKET_ATTRIBUTES_RSS_HASH_INDEX	6
120644b781cfSAndrew Turner #define RX_PACKET_ATTRIBUTES_RSS_HASH_WIDTH	1
12077113afc8SEmmanuel Vadot #define RX_PACKET_ATTRIBUTES_FIRST_INDEX	7
12087113afc8SEmmanuel Vadot #define RX_PACKET_ATTRIBUTES_FIRST_WIDTH	1
12097113afc8SEmmanuel Vadot #define RX_PACKET_ATTRIBUTES_TNP_INDEX		8
12107113afc8SEmmanuel Vadot #define RX_PACKET_ATTRIBUTES_TNP_WIDTH		1
12117113afc8SEmmanuel Vadot #define RX_PACKET_ATTRIBUTES_TNPCSUM_DONE_INDEX	9
12127113afc8SEmmanuel Vadot #define RX_PACKET_ATTRIBUTES_TNPCSUM_DONE_WIDTH	1
121344b781cfSAndrew Turner 
121444b781cfSAndrew Turner #define RX_NORMAL_DESC0_OVT_INDEX		0
121544b781cfSAndrew Turner #define RX_NORMAL_DESC0_OVT_WIDTH		16
121644b781cfSAndrew Turner #define RX_NORMAL_DESC2_HL_INDEX		0
121744b781cfSAndrew Turner #define RX_NORMAL_DESC2_HL_WIDTH		10
12187113afc8SEmmanuel Vadot #define RX_NORMAL_DESC2_TNP_INDEX		11
12197113afc8SEmmanuel Vadot #define RX_NORMAL_DESC2_TNP_WIDTH		1
12207113afc8SEmmanuel Vadot #define RX_NORMAL_DESC2_RPNG_INDEX		14
12217113afc8SEmmanuel Vadot #define RX_NORMAL_DESC2_RPNG_WIDTH		1
122244b781cfSAndrew Turner #define RX_NORMAL_DESC3_CDA_INDEX		27
122344b781cfSAndrew Turner #define RX_NORMAL_DESC3_CDA_WIDTH		1
122444b781cfSAndrew Turner #define RX_NORMAL_DESC3_CTXT_INDEX		30
122544b781cfSAndrew Turner #define RX_NORMAL_DESC3_CTXT_WIDTH		1
122644b781cfSAndrew Turner #define RX_NORMAL_DESC3_ES_INDEX		15
122744b781cfSAndrew Turner #define RX_NORMAL_DESC3_ES_WIDTH		1
122844b781cfSAndrew Turner #define RX_NORMAL_DESC3_ETLT_INDEX		16
122944b781cfSAndrew Turner #define RX_NORMAL_DESC3_ETLT_WIDTH		4
123044b781cfSAndrew Turner #define RX_NORMAL_DESC3_FD_INDEX		29
123144b781cfSAndrew Turner #define RX_NORMAL_DESC3_FD_WIDTH		1
123244b781cfSAndrew Turner #define RX_NORMAL_DESC3_INTE_INDEX		30
123344b781cfSAndrew Turner #define RX_NORMAL_DESC3_INTE_WIDTH		1
123444b781cfSAndrew Turner #define RX_NORMAL_DESC3_L34T_INDEX		20
123544b781cfSAndrew Turner #define RX_NORMAL_DESC3_L34T_WIDTH		4
123644b781cfSAndrew Turner #define RX_NORMAL_DESC3_LD_INDEX		28
123744b781cfSAndrew Turner #define RX_NORMAL_DESC3_LD_WIDTH		1
123844b781cfSAndrew Turner #define RX_NORMAL_DESC3_OWN_INDEX		31
123944b781cfSAndrew Turner #define RX_NORMAL_DESC3_OWN_WIDTH		1
124044b781cfSAndrew Turner #define RX_NORMAL_DESC3_PL_INDEX		0
124144b781cfSAndrew Turner #define RX_NORMAL_DESC3_PL_WIDTH		14
124244b781cfSAndrew Turner #define RX_NORMAL_DESC3_RSV_INDEX		26
124344b781cfSAndrew Turner #define RX_NORMAL_DESC3_RSV_WIDTH		1
124444b781cfSAndrew Turner 
124544b781cfSAndrew Turner #define RX_DESC3_L34T_IPV4_TCP			1
124644b781cfSAndrew Turner #define RX_DESC3_L34T_IPV4_UDP			2
124744b781cfSAndrew Turner #define RX_DESC3_L34T_IPV4_ICMP			3
12487113afc8SEmmanuel Vadot #define RX_DESC3_L34T_IPV4_UNKNOWN		7
124944b781cfSAndrew Turner #define RX_DESC3_L34T_IPV6_TCP			9
125044b781cfSAndrew Turner #define RX_DESC3_L34T_IPV6_UDP			10
125144b781cfSAndrew Turner #define RX_DESC3_L34T_IPV6_ICMP			11
12527113afc8SEmmanuel Vadot #define RX_DESC3_L34T_IPV6_UNKNOWN		15
125344b781cfSAndrew Turner 
125444b781cfSAndrew Turner #define RX_CONTEXT_DESC3_TSA_INDEX		4
125544b781cfSAndrew Turner #define RX_CONTEXT_DESC3_TSA_WIDTH		1
125644b781cfSAndrew Turner #define RX_CONTEXT_DESC3_TSD_INDEX		6
125744b781cfSAndrew Turner #define RX_CONTEXT_DESC3_TSD_WIDTH		1
125844b781cfSAndrew Turner 
125944b781cfSAndrew Turner #define TX_PACKET_ATTRIBUTES_CSUM_ENABLE_INDEX	0
126044b781cfSAndrew Turner #define TX_PACKET_ATTRIBUTES_CSUM_ENABLE_WIDTH	1
126144b781cfSAndrew Turner #define TX_PACKET_ATTRIBUTES_TSO_ENABLE_INDEX	1
126244b781cfSAndrew Turner #define TX_PACKET_ATTRIBUTES_TSO_ENABLE_WIDTH	1
126344b781cfSAndrew Turner #define TX_PACKET_ATTRIBUTES_VLAN_CTAG_INDEX	2
126444b781cfSAndrew Turner #define TX_PACKET_ATTRIBUTES_VLAN_CTAG_WIDTH	1
126544b781cfSAndrew Turner #define TX_PACKET_ATTRIBUTES_PTP_INDEX		3
126644b781cfSAndrew Turner #define TX_PACKET_ATTRIBUTES_PTP_WIDTH		1
12677113afc8SEmmanuel Vadot #define TX_PACKET_ATTRIBUTES_VXLAN_INDEX	4
12687113afc8SEmmanuel Vadot #define TX_PACKET_ATTRIBUTES_VXLAN_WIDTH	1
126944b781cfSAndrew Turner 
127044b781cfSAndrew Turner #define TX_CONTEXT_DESC2_MSS_INDEX		0
127144b781cfSAndrew Turner #define TX_CONTEXT_DESC2_MSS_WIDTH		15
127244b781cfSAndrew Turner #define TX_CONTEXT_DESC3_CTXT_INDEX		30
127344b781cfSAndrew Turner #define TX_CONTEXT_DESC3_CTXT_WIDTH		1
127444b781cfSAndrew Turner #define TX_CONTEXT_DESC3_TCMSSV_INDEX		26
127544b781cfSAndrew Turner #define TX_CONTEXT_DESC3_TCMSSV_WIDTH		1
127644b781cfSAndrew Turner #define TX_CONTEXT_DESC3_VLTV_INDEX		16
127744b781cfSAndrew Turner #define TX_CONTEXT_DESC3_VLTV_WIDTH		1
127844b781cfSAndrew Turner #define TX_CONTEXT_DESC3_VT_INDEX		0
127944b781cfSAndrew Turner #define TX_CONTEXT_DESC3_VT_WIDTH		16
128044b781cfSAndrew Turner 
128144b781cfSAndrew Turner #define TX_NORMAL_DESC2_HL_B1L_INDEX		0
128244b781cfSAndrew Turner #define TX_NORMAL_DESC2_HL_B1L_WIDTH		14
128344b781cfSAndrew Turner #define TX_NORMAL_DESC2_IC_INDEX		31
128444b781cfSAndrew Turner #define TX_NORMAL_DESC2_IC_WIDTH		1
128544b781cfSAndrew Turner #define TX_NORMAL_DESC2_TTSE_INDEX		30
128644b781cfSAndrew Turner #define TX_NORMAL_DESC2_TTSE_WIDTH		1
128744b781cfSAndrew Turner #define TX_NORMAL_DESC2_VTIR_INDEX		14
128844b781cfSAndrew Turner #define TX_NORMAL_DESC2_VTIR_WIDTH		2
128944b781cfSAndrew Turner #define TX_NORMAL_DESC3_CIC_INDEX		16
129044b781cfSAndrew Turner #define TX_NORMAL_DESC3_CIC_WIDTH		2
129144b781cfSAndrew Turner #define TX_NORMAL_DESC3_CPC_INDEX		26
129244b781cfSAndrew Turner #define TX_NORMAL_DESC3_CPC_WIDTH		2
129344b781cfSAndrew Turner #define TX_NORMAL_DESC3_CTXT_INDEX		30
129444b781cfSAndrew Turner #define TX_NORMAL_DESC3_CTXT_WIDTH		1
129544b781cfSAndrew Turner #define TX_NORMAL_DESC3_FD_INDEX		29
129644b781cfSAndrew Turner #define TX_NORMAL_DESC3_FD_WIDTH		1
129744b781cfSAndrew Turner #define TX_NORMAL_DESC3_FL_INDEX		0
129844b781cfSAndrew Turner #define TX_NORMAL_DESC3_FL_WIDTH		15
129944b781cfSAndrew Turner #define TX_NORMAL_DESC3_LD_INDEX		28
130044b781cfSAndrew Turner #define TX_NORMAL_DESC3_LD_WIDTH		1
130144b781cfSAndrew Turner #define TX_NORMAL_DESC3_OWN_INDEX		31
130244b781cfSAndrew Turner #define TX_NORMAL_DESC3_OWN_WIDTH		1
130344b781cfSAndrew Turner #define TX_NORMAL_DESC3_TCPHDRLEN_INDEX		19
130444b781cfSAndrew Turner #define TX_NORMAL_DESC3_TCPHDRLEN_WIDTH		4
130544b781cfSAndrew Turner #define TX_NORMAL_DESC3_TCPPL_INDEX		0
130644b781cfSAndrew Turner #define TX_NORMAL_DESC3_TCPPL_WIDTH		18
130744b781cfSAndrew Turner #define TX_NORMAL_DESC3_TSE_INDEX		18
130844b781cfSAndrew Turner #define TX_NORMAL_DESC3_TSE_WIDTH		1
13097113afc8SEmmanuel Vadot #define TX_NORMAL_DESC3_VNP_INDEX		23
13107113afc8SEmmanuel Vadot #define TX_NORMAL_DESC3_VNP_WIDTH		3
131144b781cfSAndrew Turner 
131244b781cfSAndrew Turner #define TX_NORMAL_DESC2_VLAN_INSERT		0x2
13137113afc8SEmmanuel Vadot #define TX_NORMAL_DESC3_VXLAN_PACKET		0x3
131444b781cfSAndrew Turner 
131544b781cfSAndrew Turner /* MDIO undefined or vendor specific registers */
131644b781cfSAndrew Turner #ifndef MDIO_PMA_10GBR_PMD_CTRL
131744b781cfSAndrew Turner #define MDIO_PMA_10GBR_PMD_CTRL		0x0096
131844b781cfSAndrew Turner #endif
131944b781cfSAndrew Turner 
132044b781cfSAndrew Turner #ifndef MDIO_PMA_10GBR_FECCTRL
132144b781cfSAndrew Turner #define MDIO_PMA_10GBR_FECCTRL		0x00ab
132244b781cfSAndrew Turner #endif
132344b781cfSAndrew Turner 
1324*2b8df536SStephan de Wit #ifndef MDIO_PMA_RX_CTRL1
1325*2b8df536SStephan de Wit #define MDIO_PMA_RX_CTRL1		0x8051
1326*2b8df536SStephan de Wit #endif
1327*2b8df536SStephan de Wit 
13287113afc8SEmmanuel Vadot #ifndef MDIO_PCS_DIG_CTRL
13297113afc8SEmmanuel Vadot #define MDIO_PCS_DIG_CTRL		0x8000
13307113afc8SEmmanuel Vadot #endif
13317113afc8SEmmanuel Vadot 
1332*2b8df536SStephan de Wit #ifndef MDIO_PCS_DIGITAL_STAT
1333*2b8df536SStephan de Wit #define MDIO_PCS_DIGITAL_STAT		0x8010
1334*2b8df536SStephan de Wit #endif
1335*2b8df536SStephan de Wit 
133644b781cfSAndrew Turner #ifndef MDIO_AN_XNP
133744b781cfSAndrew Turner #define MDIO_AN_XNP			0x0016
133844b781cfSAndrew Turner #endif
133944b781cfSAndrew Turner 
134044b781cfSAndrew Turner #ifndef MDIO_AN_LPX
134144b781cfSAndrew Turner #define MDIO_AN_LPX			0x0019
134244b781cfSAndrew Turner #endif
134344b781cfSAndrew Turner 
134444b781cfSAndrew Turner #ifndef MDIO_AN_COMP_STAT
134544b781cfSAndrew Turner #define MDIO_AN_COMP_STAT		0x0030
134644b781cfSAndrew Turner #endif
134744b781cfSAndrew Turner 
134844b781cfSAndrew Turner #ifndef MDIO_AN_INTMASK
134944b781cfSAndrew Turner #define MDIO_AN_INTMASK			0x8001
135044b781cfSAndrew Turner #endif
135144b781cfSAndrew Turner 
135244b781cfSAndrew Turner #ifndef MDIO_AN_INT
135344b781cfSAndrew Turner #define MDIO_AN_INT			0x8002
135444b781cfSAndrew Turner #endif
135544b781cfSAndrew Turner 
13567113afc8SEmmanuel Vadot #ifndef MDIO_VEND2_AN_ADVERTISE
13577113afc8SEmmanuel Vadot #define MDIO_VEND2_AN_ADVERTISE		0x0004
13587113afc8SEmmanuel Vadot #endif
13597113afc8SEmmanuel Vadot 
13607113afc8SEmmanuel Vadot #ifndef MDIO_VEND2_AN_LP_ABILITY
13617113afc8SEmmanuel Vadot #define MDIO_VEND2_AN_LP_ABILITY	0x0005
13627113afc8SEmmanuel Vadot #endif
13637113afc8SEmmanuel Vadot 
13647113afc8SEmmanuel Vadot #ifndef MDIO_VEND2_AN_CTRL
13657113afc8SEmmanuel Vadot #define MDIO_VEND2_AN_CTRL		0x8001
13667113afc8SEmmanuel Vadot #endif
13677113afc8SEmmanuel Vadot 
13687113afc8SEmmanuel Vadot #ifndef MDIO_VEND2_AN_STAT
13697113afc8SEmmanuel Vadot #define MDIO_VEND2_AN_STAT		0x8002
13707113afc8SEmmanuel Vadot #endif
13717113afc8SEmmanuel Vadot 
13727113afc8SEmmanuel Vadot #ifndef MDIO_VEND2_PMA_CDR_CONTROL
13737113afc8SEmmanuel Vadot #define MDIO_VEND2_PMA_CDR_CONTROL	0x8056
13747113afc8SEmmanuel Vadot #endif
13757113afc8SEmmanuel Vadot 
1376445bed5cSStephan de Wit #ifndef MDIO_VEND2_PMA_MISC_CTRL0
1377445bed5cSStephan de Wit #define MDIO_VEND2_PMA_MISC_CTRL0	0x8090
1378445bed5cSStephan de Wit #endif
1379445bed5cSStephan de Wit 
138044b781cfSAndrew Turner #ifndef MDIO_CTRL1_SPEED1G
138144b781cfSAndrew Turner #define MDIO_CTRL1_SPEED1G		(MDIO_CTRL1_SPEED10G & ~BMCR_SPEED100)
138244b781cfSAndrew Turner #endif
138344b781cfSAndrew Turner 
13847113afc8SEmmanuel Vadot #ifndef MDIO_VEND2_CTRL1_AN_ENABLE
13857113afc8SEmmanuel Vadot #define MDIO_VEND2_CTRL1_AN_ENABLE	BIT(12)
13867113afc8SEmmanuel Vadot #endif
13877113afc8SEmmanuel Vadot 
13887113afc8SEmmanuel Vadot #ifndef MDIO_VEND2_CTRL1_AN_RESTART
13897113afc8SEmmanuel Vadot #define MDIO_VEND2_CTRL1_AN_RESTART	BIT(9)
13907113afc8SEmmanuel Vadot #endif
13917113afc8SEmmanuel Vadot 
13927113afc8SEmmanuel Vadot #ifndef MDIO_VEND2_CTRL1_SS6
13937113afc8SEmmanuel Vadot #define MDIO_VEND2_CTRL1_SS6		BIT(6)
13947113afc8SEmmanuel Vadot #endif
13957113afc8SEmmanuel Vadot 
13967113afc8SEmmanuel Vadot #ifndef MDIO_VEND2_CTRL1_SS13
13977113afc8SEmmanuel Vadot #define MDIO_VEND2_CTRL1_SS13		BIT(13)
13987113afc8SEmmanuel Vadot #endif
13997113afc8SEmmanuel Vadot 
140044b781cfSAndrew Turner /* MDIO mask values */
14017113afc8SEmmanuel Vadot #define XGBE_AN_CL73_INT_CMPLT		BIT(0)
14027113afc8SEmmanuel Vadot #define XGBE_AN_CL73_INC_LINK		BIT(1)
14037113afc8SEmmanuel Vadot #define XGBE_AN_CL73_PG_RCV		BIT(2)
14047113afc8SEmmanuel Vadot #define XGBE_AN_CL73_INT_MASK		0x07
14057113afc8SEmmanuel Vadot 
140644b781cfSAndrew Turner #define XGBE_XNP_MCF_NULL_MESSAGE	0x001
140744b781cfSAndrew Turner #define XGBE_XNP_ACK_PROCESSED		BIT(12)
140844b781cfSAndrew Turner #define XGBE_XNP_MP_FORMATTED		BIT(13)
140944b781cfSAndrew Turner #define XGBE_XNP_NP_EXCHANGE		BIT(15)
141044b781cfSAndrew Turner 
141144b781cfSAndrew Turner #define XGBE_KR_TRAINING_START		BIT(0)
141244b781cfSAndrew Turner #define XGBE_KR_TRAINING_ENABLE		BIT(1)
141344b781cfSAndrew Turner 
14147113afc8SEmmanuel Vadot #define XGBE_PCS_CL37_BP		BIT(12)
1415*2b8df536SStephan de Wit #define XGBE_PCS_PSEQ_STATE_MASK	0x1c
1416*2b8df536SStephan de Wit #define XGBE_PCS_PSEQ_STATE_POWER_GOOD	0x10
14177113afc8SEmmanuel Vadot 
14187113afc8SEmmanuel Vadot #define XGBE_AN_CL37_INT_CMPLT		BIT(0)
14197113afc8SEmmanuel Vadot #define XGBE_AN_CL37_INT_MASK		0x01
14207113afc8SEmmanuel Vadot 
14217113afc8SEmmanuel Vadot #define XGBE_AN_CL37_HD_MASK		0x40
14227113afc8SEmmanuel Vadot #define XGBE_AN_CL37_FD_MASK		0x20
14237113afc8SEmmanuel Vadot 
14247113afc8SEmmanuel Vadot #define XGBE_AN_CL37_PCS_MODE_MASK	0x06
14257113afc8SEmmanuel Vadot #define XGBE_AN_CL37_PCS_MODE_BASEX	0x00
14267113afc8SEmmanuel Vadot #define XGBE_AN_CL37_PCS_MODE_SGMII	0x04
14277113afc8SEmmanuel Vadot #define XGBE_AN_CL37_TX_CONFIG_MASK	0x08
14287113afc8SEmmanuel Vadot #define XGBE_AN_CL37_MII_CTRL_8BIT	0x0100
14297113afc8SEmmanuel Vadot 
14307113afc8SEmmanuel Vadot #define XGBE_PMA_CDR_TRACK_EN_MASK	0x01
14317113afc8SEmmanuel Vadot #define XGBE_PMA_CDR_TRACK_EN_OFF	0x00
14327113afc8SEmmanuel Vadot #define XGBE_PMA_CDR_TRACK_EN_ON	0x01
14337113afc8SEmmanuel Vadot 
1434445bed5cSStephan de Wit #define XGBE_PMA_PLL_CTRL_MASK		BIT(15)
1435445bed5cSStephan de Wit #define XGBE_PMA_PLL_CTRL_ENABLE	BIT(15)
1436445bed5cSStephan de Wit #define XGBE_PMA_PLL_CTRL_DISABLE	0x0000
1437445bed5cSStephan de Wit 
1438*2b8df536SStephan de Wit #define XGBE_PMA_RX_RST_0_MASK		BIT(4)
1439*2b8df536SStephan de Wit #define XGBE_PMA_RX_RST_0_RESET_ON	0x10
1440*2b8df536SStephan de Wit #define XGBE_PMA_RX_RST_0_RESET_OFF	0x00
1441*2b8df536SStephan de Wit 
144244b781cfSAndrew Turner /* Bit setting and getting macros
144344b781cfSAndrew Turner  *  The get macro will extract the current bit field value from within
144444b781cfSAndrew Turner  *  the variable
144544b781cfSAndrew Turner  *
144644b781cfSAndrew Turner  *  The set macro will clear the current bit field value within the
144744b781cfSAndrew Turner  *  variable and then set the bit field of the variable to the
144844b781cfSAndrew Turner  *  specified value
144944b781cfSAndrew Turner  */
145044b781cfSAndrew Turner #define GET_BITS(_var, _index, _width)					\
145144b781cfSAndrew Turner 	(((_var) >> (_index)) & ((0x1 << (_width)) - 1))
145244b781cfSAndrew Turner 
145344b781cfSAndrew Turner #define SET_BITS(_var, _index, _width, _val)				\
145444b781cfSAndrew Turner do {									\
145544b781cfSAndrew Turner 	(_var) &= ~(((0x1 << (_width)) - 1) << (_index));		\
145644b781cfSAndrew Turner 	(_var) |= (((_val) & ((0x1 << (_width)) - 1)) << (_index));	\
145744b781cfSAndrew Turner } while (0)
145844b781cfSAndrew Turner 
145944b781cfSAndrew Turner #define GET_BITS_LE(_var, _index, _width)				\
146044b781cfSAndrew Turner 	((le32_to_cpu((_var)) >> (_index)) & ((0x1 << (_width)) - 1))
146144b781cfSAndrew Turner 
146244b781cfSAndrew Turner #define SET_BITS_LE(_var, _index, _width, _val)				\
146344b781cfSAndrew Turner do {									\
146444b781cfSAndrew Turner 	(_var) &= cpu_to_le32(~(((0x1 << (_width)) - 1) << (_index)));	\
146544b781cfSAndrew Turner 	(_var) |= cpu_to_le32((((_val) &				\
146644b781cfSAndrew Turner 			      ((0x1 << (_width)) - 1)) << (_index)));	\
146744b781cfSAndrew Turner } while (0)
146844b781cfSAndrew Turner 
146944b781cfSAndrew Turner /* Bit setting and getting macros based on register fields
147044b781cfSAndrew Turner  *  The get macro uses the bit field definitions formed using the input
147144b781cfSAndrew Turner  *  names to extract the current bit field value from within the
147244b781cfSAndrew Turner  *  variable
147344b781cfSAndrew Turner  *
147444b781cfSAndrew Turner  *  The set macro uses the bit field definitions formed using the input
147544b781cfSAndrew Turner  *  names to set the bit field of the variable to the specified value
147644b781cfSAndrew Turner  */
147744b781cfSAndrew Turner #define XGMAC_GET_BITS(_var, _prefix, _field)				\
147844b781cfSAndrew Turner 	GET_BITS((_var),						\
147944b781cfSAndrew Turner 		 _prefix##_##_field##_INDEX,				\
148044b781cfSAndrew Turner 		 _prefix##_##_field##_WIDTH)
148144b781cfSAndrew Turner 
148244b781cfSAndrew Turner #define XGMAC_SET_BITS(_var, _prefix, _field, _val)			\
148344b781cfSAndrew Turner 	SET_BITS((_var),						\
148444b781cfSAndrew Turner 		 _prefix##_##_field##_INDEX,				\
148544b781cfSAndrew Turner 		 _prefix##_##_field##_WIDTH, (_val))
148644b781cfSAndrew Turner 
148744b781cfSAndrew Turner #define XGMAC_GET_BITS_LE(_var, _prefix, _field)			\
148844b781cfSAndrew Turner 	GET_BITS_LE((_var),						\
148944b781cfSAndrew Turner 		 _prefix##_##_field##_INDEX,				\
149044b781cfSAndrew Turner 		 _prefix##_##_field##_WIDTH)
149144b781cfSAndrew Turner 
149244b781cfSAndrew Turner #define XGMAC_SET_BITS_LE(_var, _prefix, _field, _val)			\
149344b781cfSAndrew Turner 	SET_BITS_LE((_var),						\
149444b781cfSAndrew Turner 		 _prefix##_##_field##_INDEX,				\
149544b781cfSAndrew Turner 		 _prefix##_##_field##_WIDTH, (_val))
149644b781cfSAndrew Turner 
149744b781cfSAndrew Turner /* Macros for reading or writing registers
149844b781cfSAndrew Turner  *  The ioread macros will get bit fields or full values using the
149944b781cfSAndrew Turner  *  register definitions formed using the input names
150044b781cfSAndrew Turner  *
150144b781cfSAndrew Turner  *  The iowrite macros will set bit fields or full values using the
150244b781cfSAndrew Turner  *  register definitions formed using the input names
150344b781cfSAndrew Turner  */
150444b781cfSAndrew Turner #define XGMAC_IOREAD(_pdata, _reg)					\
15059c6d6488SAndrew Turner 	bus_read_4((_pdata)->xgmac_res, _reg)
150644b781cfSAndrew Turner 
150744b781cfSAndrew Turner #define XGMAC_IOREAD_BITS(_pdata, _reg, _field)				\
150844b781cfSAndrew Turner 	GET_BITS(XGMAC_IOREAD((_pdata), _reg),				\
150944b781cfSAndrew Turner 		 _reg##_##_field##_INDEX,				\
151044b781cfSAndrew Turner 		 _reg##_##_field##_WIDTH)
151144b781cfSAndrew Turner 
151244b781cfSAndrew Turner #define XGMAC_IOWRITE(_pdata, _reg, _val)				\
15139c6d6488SAndrew Turner 	bus_write_4((_pdata)->xgmac_res, _reg, (_val))
151444b781cfSAndrew Turner 
151544b781cfSAndrew Turner #define XGMAC_IOWRITE_BITS(_pdata, _reg, _field, _val)			\
151644b781cfSAndrew Turner do {									\
15177113afc8SEmmanuel Vadot 	uint32_t reg_val = XGMAC_IOREAD((_pdata), _reg);			\
151844b781cfSAndrew Turner 	SET_BITS(reg_val,						\
151944b781cfSAndrew Turner 		 _reg##_##_field##_INDEX,				\
152044b781cfSAndrew Turner 		 _reg##_##_field##_WIDTH, (_val));			\
152144b781cfSAndrew Turner 	XGMAC_IOWRITE((_pdata), _reg, reg_val);				\
152244b781cfSAndrew Turner } while (0)
152344b781cfSAndrew Turner 
152444b781cfSAndrew Turner /* Macros for reading or writing MTL queue or traffic class registers
152544b781cfSAndrew Turner  *  Similar to the standard read and write macros except that the
152644b781cfSAndrew Turner  *  base register value is calculated by the queue or traffic class number
152744b781cfSAndrew Turner  */
152844b781cfSAndrew Turner #define XGMAC_MTL_IOREAD(_pdata, _n, _reg)				\
15299c6d6488SAndrew Turner 	bus_read_4((_pdata)->xgmac_res,					\
153044b781cfSAndrew Turner 		 MTL_Q_BASE + ((_n) * MTL_Q_INC) + _reg)
153144b781cfSAndrew Turner 
153244b781cfSAndrew Turner #define XGMAC_MTL_IOREAD_BITS(_pdata, _n, _reg, _field)			\
153344b781cfSAndrew Turner 	GET_BITS(XGMAC_MTL_IOREAD((_pdata), (_n), _reg),		\
153444b781cfSAndrew Turner 		 _reg##_##_field##_INDEX,				\
153544b781cfSAndrew Turner 		 _reg##_##_field##_WIDTH)
153644b781cfSAndrew Turner 
153744b781cfSAndrew Turner #define XGMAC_MTL_IOWRITE(_pdata, _n, _reg, _val)			\
15389c6d6488SAndrew Turner 	bus_write_4((_pdata)->xgmac_res,				\
15399c6d6488SAndrew Turner 		  MTL_Q_BASE + ((_n) * MTL_Q_INC) + _reg, (_val))
154044b781cfSAndrew Turner 
154144b781cfSAndrew Turner #define XGMAC_MTL_IOWRITE_BITS(_pdata, _n, _reg, _field, _val)		\
154244b781cfSAndrew Turner do {									\
15437113afc8SEmmanuel Vadot 	uint32_t reg_val = XGMAC_MTL_IOREAD((_pdata), (_n), _reg);		\
154444b781cfSAndrew Turner 	SET_BITS(reg_val,						\
154544b781cfSAndrew Turner 		 _reg##_##_field##_INDEX,				\
154644b781cfSAndrew Turner 		 _reg##_##_field##_WIDTH, (_val));			\
154744b781cfSAndrew Turner 	XGMAC_MTL_IOWRITE((_pdata), (_n), _reg, reg_val);		\
154844b781cfSAndrew Turner } while (0)
154944b781cfSAndrew Turner 
155044b781cfSAndrew Turner /* Macros for reading or writing DMA channel registers
155144b781cfSAndrew Turner  *  Similar to the standard read and write macros except that the
155244b781cfSAndrew Turner  *  base register value is obtained from the ring
155344b781cfSAndrew Turner  */
155444b781cfSAndrew Turner #define XGMAC_DMA_IOREAD(_channel, _reg)				\
15559c6d6488SAndrew Turner 	bus_space_read_4((_channel)->dma_tag, (_channel)->dma_handle, _reg)
155644b781cfSAndrew Turner 
155744b781cfSAndrew Turner #define XGMAC_DMA_IOREAD_BITS(_channel, _reg, _field)			\
155844b781cfSAndrew Turner 	GET_BITS(XGMAC_DMA_IOREAD((_channel), _reg),			\
155944b781cfSAndrew Turner 		 _reg##_##_field##_INDEX,				\
156044b781cfSAndrew Turner 		 _reg##_##_field##_WIDTH)
156144b781cfSAndrew Turner 
156244b781cfSAndrew Turner #define XGMAC_DMA_IOWRITE(_channel, _reg, _val)				\
15639c6d6488SAndrew Turner 	bus_space_write_4((_channel)->dma_tag, (_channel)->dma_handle,	\
15649c6d6488SAndrew Turner 	    _reg, (_val))
156544b781cfSAndrew Turner 
156644b781cfSAndrew Turner #define XGMAC_DMA_IOWRITE_BITS(_channel, _reg, _field, _val)		\
156744b781cfSAndrew Turner do {									\
15687113afc8SEmmanuel Vadot 	uint32_t reg_val = XGMAC_DMA_IOREAD((_channel), _reg);		\
156944b781cfSAndrew Turner 	SET_BITS(reg_val,						\
157044b781cfSAndrew Turner 		 _reg##_##_field##_INDEX,				\
157144b781cfSAndrew Turner 		 _reg##_##_field##_WIDTH, (_val));			\
157244b781cfSAndrew Turner 	XGMAC_DMA_IOWRITE((_channel), _reg, reg_val);			\
157344b781cfSAndrew Turner } while (0)
157444b781cfSAndrew Turner 
157544b781cfSAndrew Turner /* Macros for building, reading or writing register values or bits
157644b781cfSAndrew Turner  * within the register values of XPCS registers.
157744b781cfSAndrew Turner  */
15787113afc8SEmmanuel Vadot #define XPCS_GET_BITS(_var, _prefix, _field)				\
15797113afc8SEmmanuel Vadot 	GET_BITS((_var),                                                \
15807113afc8SEmmanuel Vadot 		 _prefix##_##_field##_INDEX,                            \
15817113afc8SEmmanuel Vadot 		 _prefix##_##_field##_WIDTH)
15827113afc8SEmmanuel Vadot 
15837113afc8SEmmanuel Vadot #define XPCS_SET_BITS(_var, _prefix, _field, _val)                      \
15847113afc8SEmmanuel Vadot 	SET_BITS((_var),                                                \
15857113afc8SEmmanuel Vadot 		 _prefix##_##_field##_INDEX,                            \
15867113afc8SEmmanuel Vadot 		 _prefix##_##_field##_WIDTH, (_val))
15877113afc8SEmmanuel Vadot 
15887113afc8SEmmanuel Vadot #define XPCS32_IOWRITE(_pdata, _off, _val)				\
15899c6d6488SAndrew Turner 	bus_write_4((_pdata)->xpcs_res, (_off), _val)
159044b781cfSAndrew Turner 
15917113afc8SEmmanuel Vadot #define XPCS32_IOREAD(_pdata, _off)					\
15929c6d6488SAndrew Turner 	bus_read_4((_pdata)->xpcs_res, (_off))
159344b781cfSAndrew Turner 
15947113afc8SEmmanuel Vadot #define XPCS16_IOWRITE(_pdata, _off, _val)				\
15957113afc8SEmmanuel Vadot 	bus_write_2((_pdata)->xpcs_res, (_off), _val)
15967113afc8SEmmanuel Vadot 
15977113afc8SEmmanuel Vadot #define XPCS16_IOREAD(_pdata, _off)					\
15987113afc8SEmmanuel Vadot 	bus_read_2((_pdata)->xpcs_res, (_off))
15997113afc8SEmmanuel Vadot 
160044b781cfSAndrew Turner /* Macros for building, reading or writing register values or bits
160144b781cfSAndrew Turner  * within the register values of SerDes integration registers.
160244b781cfSAndrew Turner  */
160344b781cfSAndrew Turner #define XSIR_GET_BITS(_var, _prefix, _field)                            \
160444b781cfSAndrew Turner 	GET_BITS((_var),                                                \
160544b781cfSAndrew Turner 		 _prefix##_##_field##_INDEX,                            \
160644b781cfSAndrew Turner 		 _prefix##_##_field##_WIDTH)
160744b781cfSAndrew Turner 
160844b781cfSAndrew Turner #define XSIR_SET_BITS(_var, _prefix, _field, _val)                      \
160944b781cfSAndrew Turner 	SET_BITS((_var),                                                \
161044b781cfSAndrew Turner 		 _prefix##_##_field##_INDEX,                            \
161144b781cfSAndrew Turner 		 _prefix##_##_field##_WIDTH, (_val))
161244b781cfSAndrew Turner 
161344b781cfSAndrew Turner #define XSIR0_IOREAD(_pdata, _reg)					\
16149c6d6488SAndrew Turner 	bus_read_2((_pdata)->sir0_res, _reg)
161544b781cfSAndrew Turner 
161644b781cfSAndrew Turner #define XSIR0_IOREAD_BITS(_pdata, _reg, _field)				\
161744b781cfSAndrew Turner 	GET_BITS(XSIR0_IOREAD((_pdata), _reg),				\
161844b781cfSAndrew Turner 		 _reg##_##_field##_INDEX,				\
161944b781cfSAndrew Turner 		 _reg##_##_field##_WIDTH)
162044b781cfSAndrew Turner 
162144b781cfSAndrew Turner #define XSIR0_IOWRITE(_pdata, _reg, _val)				\
16229c6d6488SAndrew Turner 	bus_write_2((_pdata)->sir0_res, _reg, (_val))
162344b781cfSAndrew Turner 
162444b781cfSAndrew Turner #define XSIR0_IOWRITE_BITS(_pdata, _reg, _field, _val)			\
162544b781cfSAndrew Turner do {									\
16267113afc8SEmmanuel Vadot 	uint16_t reg_val = XSIR0_IOREAD((_pdata), _reg);			\
162744b781cfSAndrew Turner 	SET_BITS(reg_val,						\
162844b781cfSAndrew Turner 		 _reg##_##_field##_INDEX,				\
162944b781cfSAndrew Turner 		 _reg##_##_field##_WIDTH, (_val));			\
163044b781cfSAndrew Turner 	XSIR0_IOWRITE((_pdata), _reg, reg_val);				\
163144b781cfSAndrew Turner } while (0)
163244b781cfSAndrew Turner 
163344b781cfSAndrew Turner #define XSIR1_IOREAD(_pdata, _reg)					\
16349c6d6488SAndrew Turner 	bus_read_2((_pdata)->sir1_res, _reg)
163544b781cfSAndrew Turner 
163644b781cfSAndrew Turner #define XSIR1_IOREAD_BITS(_pdata, _reg, _field)				\
163744b781cfSAndrew Turner 	GET_BITS(XSIR1_IOREAD((_pdata), _reg),				\
163844b781cfSAndrew Turner 		 _reg##_##_field##_INDEX,				\
163944b781cfSAndrew Turner 		 _reg##_##_field##_WIDTH)
164044b781cfSAndrew Turner 
164144b781cfSAndrew Turner #define XSIR1_IOWRITE(_pdata, _reg, _val)				\
16429c6d6488SAndrew Turner 	bus_write_2((_pdata)->sir1_res, _reg, (_val))
164344b781cfSAndrew Turner 
164444b781cfSAndrew Turner #define XSIR1_IOWRITE_BITS(_pdata, _reg, _field, _val)			\
164544b781cfSAndrew Turner do {									\
16467113afc8SEmmanuel Vadot 	uint16_t reg_val = XSIR1_IOREAD((_pdata), _reg);			\
164744b781cfSAndrew Turner 	SET_BITS(reg_val,						\
164844b781cfSAndrew Turner 		 _reg##_##_field##_INDEX,				\
164944b781cfSAndrew Turner 		 _reg##_##_field##_WIDTH, (_val));			\
165044b781cfSAndrew Turner 	XSIR1_IOWRITE((_pdata), _reg, reg_val);				\
165144b781cfSAndrew Turner } while (0)
165244b781cfSAndrew Turner 
165344b781cfSAndrew Turner /* Macros for building, reading or writing register values or bits
165444b781cfSAndrew Turner  * within the register values of SerDes RxTx registers.
165544b781cfSAndrew Turner  */
165644b781cfSAndrew Turner #define XRXTX_IOREAD(_pdata, _reg)					\
16579c6d6488SAndrew Turner 	bus_read_2((_pdata)->rxtx_res, _reg)
165844b781cfSAndrew Turner 
165944b781cfSAndrew Turner #define XRXTX_IOREAD_BITS(_pdata, _reg, _field)				\
166044b781cfSAndrew Turner 	GET_BITS(XRXTX_IOREAD((_pdata), _reg),				\
166144b781cfSAndrew Turner 		 _reg##_##_field##_INDEX,				\
166244b781cfSAndrew Turner 		 _reg##_##_field##_WIDTH)
166344b781cfSAndrew Turner 
166444b781cfSAndrew Turner #define XRXTX_IOWRITE(_pdata, _reg, _val)				\
16659c6d6488SAndrew Turner 	bus_write_2((_pdata)->rxtx_res, _reg, (_val))
166644b781cfSAndrew Turner 
166744b781cfSAndrew Turner #define XRXTX_IOWRITE_BITS(_pdata, _reg, _field, _val)			\
166844b781cfSAndrew Turner do {									\
16697113afc8SEmmanuel Vadot 	uint16_t reg_val = XRXTX_IOREAD((_pdata), _reg);			\
167044b781cfSAndrew Turner 	SET_BITS(reg_val,						\
167144b781cfSAndrew Turner 		 _reg##_##_field##_INDEX,				\
167244b781cfSAndrew Turner 		 _reg##_##_field##_WIDTH, (_val));			\
167344b781cfSAndrew Turner 	XRXTX_IOWRITE((_pdata), _reg, reg_val);				\
167444b781cfSAndrew Turner } while (0)
167544b781cfSAndrew Turner 
167644b781cfSAndrew Turner /* Macros for building, reading or writing register values or bits
16777113afc8SEmmanuel Vadot  * within the register values of MAC Control registers.
16787113afc8SEmmanuel Vadot  */
16797113afc8SEmmanuel Vadot #define XP_GET_BITS(_var, _prefix, _field)				\
16807113afc8SEmmanuel Vadot 	GET_BITS((_var),						\
16817113afc8SEmmanuel Vadot 		 _prefix##_##_field##_INDEX,				\
16827113afc8SEmmanuel Vadot 		 _prefix##_##_field##_WIDTH)
16837113afc8SEmmanuel Vadot 
16847113afc8SEmmanuel Vadot #define XP_SET_BITS(_var, _prefix, _field, _val)			\
16857113afc8SEmmanuel Vadot 	SET_BITS((_var),						\
16867113afc8SEmmanuel Vadot 		 _prefix##_##_field##_INDEX,				\
16877113afc8SEmmanuel Vadot 		 _prefix##_##_field##_WIDTH, (_val))
16887113afc8SEmmanuel Vadot 
16897113afc8SEmmanuel Vadot #define XP_IOREAD(_pdata, _reg)						\
16907113afc8SEmmanuel Vadot 	bus_read_4((_pdata)->xgmac_res, _reg + XGBE_MAC_PROP_OFFSET)
16917113afc8SEmmanuel Vadot 
16927113afc8SEmmanuel Vadot #define XP_IOREAD_BITS(_pdata, _reg, _field)				\
16937113afc8SEmmanuel Vadot 	GET_BITS(XP_IOREAD((_pdata), (_reg)),				\
16947113afc8SEmmanuel Vadot 		 _reg##_##_field##_INDEX,				\
16957113afc8SEmmanuel Vadot 		 _reg##_##_field##_WIDTH)
16967113afc8SEmmanuel Vadot 
16977113afc8SEmmanuel Vadot #define XP_IOWRITE(_pdata, _reg, _val)					\
16987113afc8SEmmanuel Vadot 	bus_write_4((_pdata)->xgmac_res, _reg + XGBE_MAC_PROP_OFFSET,	\
16997113afc8SEmmanuel Vadot 		(_val))
17007113afc8SEmmanuel Vadot 
17017113afc8SEmmanuel Vadot #define XP_IOWRITE_BITS(_pdata, _reg, _field, _val)			\
17027113afc8SEmmanuel Vadot do {									\
17037113afc8SEmmanuel Vadot 	uint32_t reg_val = XP_IOREAD((_pdata), (_reg));			\
17047113afc8SEmmanuel Vadot 	SET_BITS(reg_val,						\
17057113afc8SEmmanuel Vadot 		 _reg##_##_field##_INDEX,				\
17067113afc8SEmmanuel Vadot 		 _reg##_##_field##_WIDTH, (_val));			\
17077113afc8SEmmanuel Vadot 	XP_IOWRITE((_pdata), (_reg), reg_val);				\
17087113afc8SEmmanuel Vadot } while (0)
17097113afc8SEmmanuel Vadot 
17107113afc8SEmmanuel Vadot /* Macros for building, reading or writing register values or bits
17117113afc8SEmmanuel Vadot  * within the register values of I2C Control registers.
17127113afc8SEmmanuel Vadot  */
17137113afc8SEmmanuel Vadot #define XI2C_GET_BITS(_var, _prefix, _field)				\
17147113afc8SEmmanuel Vadot 	GET_BITS((_var),						\
17157113afc8SEmmanuel Vadot 		 _prefix##_##_field##_INDEX,				\
17167113afc8SEmmanuel Vadot 		 _prefix##_##_field##_WIDTH)
17177113afc8SEmmanuel Vadot 
17187113afc8SEmmanuel Vadot #define XI2C_SET_BITS(_var, _prefix, _field, _val)			\
17197113afc8SEmmanuel Vadot 	SET_BITS((_var),						\
17207113afc8SEmmanuel Vadot 		 _prefix##_##_field##_INDEX,				\
17217113afc8SEmmanuel Vadot 		 _prefix##_##_field##_WIDTH, (_val))
17227113afc8SEmmanuel Vadot 
17237113afc8SEmmanuel Vadot #define XI2C_IOREAD(_pdata, _reg)					\
17247113afc8SEmmanuel Vadot 	bus_read_4((_pdata)->xgmac_res, _reg + XGBE_I2C_CTRL_OFFSET)
17257113afc8SEmmanuel Vadot 
17267113afc8SEmmanuel Vadot #define XI2C_IOREAD_BITS(_pdata, _reg, _field)				\
17277113afc8SEmmanuel Vadot 	GET_BITS(XI2C_IOREAD((_pdata), (_reg)),				\
17287113afc8SEmmanuel Vadot 		 _reg##_##_field##_INDEX,				\
17297113afc8SEmmanuel Vadot 		 _reg##_##_field##_WIDTH)
17307113afc8SEmmanuel Vadot 
17317113afc8SEmmanuel Vadot #define XI2C_IOWRITE(_pdata, _reg, _val)				\
17327113afc8SEmmanuel Vadot 	bus_write_4((_pdata)->xgmac_res, _reg + XGBE_I2C_CTRL_OFFSET,	\
17337113afc8SEmmanuel Vadot 		(_val))
17347113afc8SEmmanuel Vadot 
17357113afc8SEmmanuel Vadot #define XI2C_IOWRITE_BITS(_pdata, _reg, _field, _val)			\
17367113afc8SEmmanuel Vadot do {									\
17377113afc8SEmmanuel Vadot 	uint32_t reg_val = XI2C_IOREAD((_pdata), (_reg));			\
17387113afc8SEmmanuel Vadot 	SET_BITS(reg_val,						\
17397113afc8SEmmanuel Vadot 		 _reg##_##_field##_INDEX,				\
17407113afc8SEmmanuel Vadot 		 _reg##_##_field##_WIDTH, (_val));			\
17417113afc8SEmmanuel Vadot 	XI2C_IOWRITE((_pdata), (_reg), reg_val);			\
17427113afc8SEmmanuel Vadot } while (0)
17437113afc8SEmmanuel Vadot 
17447113afc8SEmmanuel Vadot /* Macros for building, reading or writing register values or bits
174544b781cfSAndrew Turner  * using MDIO.  Different from above because of the use of standardized
174644b781cfSAndrew Turner  * Linux include values.  No shifting is performed with the bit
174744b781cfSAndrew Turner  * operations, everything works on mask values.
174844b781cfSAndrew Turner  */
174944b781cfSAndrew Turner #define XMDIO_READ(_pdata, _mmd, _reg)					\
175044b781cfSAndrew Turner 	((_pdata)->hw_if.read_mmd_regs((_pdata), 0,			\
175144b781cfSAndrew Turner 		MII_ADDR_C45 | (_mmd << 16) | ((_reg) & 0xffff)))
175244b781cfSAndrew Turner 
175344b781cfSAndrew Turner #define XMDIO_READ_BITS(_pdata, _mmd, _reg, _mask)			\
175444b781cfSAndrew Turner 	(XMDIO_READ((_pdata), _mmd, _reg) & _mask)
175544b781cfSAndrew Turner 
175644b781cfSAndrew Turner #define XMDIO_WRITE(_pdata, _mmd, _reg, _val)				\
175744b781cfSAndrew Turner 	((_pdata)->hw_if.write_mmd_regs((_pdata), 0,			\
175844b781cfSAndrew Turner 		MII_ADDR_C45 | (_mmd << 16) | ((_reg) & 0xffff), (_val)))
175944b781cfSAndrew Turner 
176044b781cfSAndrew Turner #define XMDIO_WRITE_BITS(_pdata, _mmd, _reg, _mask, _val)		\
176144b781cfSAndrew Turner do {									\
17627113afc8SEmmanuel Vadot 	uint32_t mmd_val = XMDIO_READ((_pdata), _mmd, _reg);			\
176344b781cfSAndrew Turner 	mmd_val &= ~_mask;						\
176444b781cfSAndrew Turner 	mmd_val |= (_val);						\
176544b781cfSAndrew Turner 	XMDIO_WRITE((_pdata), _mmd, _reg, mmd_val);			\
176644b781cfSAndrew Turner } while (0)
176744b781cfSAndrew Turner 
176844b781cfSAndrew Turner #endif
1769