xref: /openbsd-src/sys/dev/fdt/if_mvppreg.h (revision 4b1a56afb1a28c97103da3911d326d1216798a6e)
1*4b1a56afSjsg /*	$OpenBSD: if_mvppreg.h,v 1.17 2022/01/09 05:42:37 jsg Exp $	*/
21a945772Spatrick /*
31a945772Spatrick  * Copyright (c) 2008, 2019 Mark Kettenis <kettenis@openbsd.org>
41a945772Spatrick  * Copyright (c) 2017, 2020 Patrick Wildt <patrick@blueri.se>
51a945772Spatrick  *
61a945772Spatrick  * Permission to use, copy, modify, and distribute this software for any
71a945772Spatrick  * purpose with or without fee is hereby granted, provided that the above
81a945772Spatrick  * copyright notice and this permission notice appear in all copies.
91a945772Spatrick  *
101a945772Spatrick  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
111a945772Spatrick  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
121a945772Spatrick  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
131a945772Spatrick  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
141a945772Spatrick  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
151a945772Spatrick  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
161a945772Spatrick  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
171a945772Spatrick  */
181a945772Spatrick /*
191a945772Spatrick  * Copyright (C) 2016 Marvell International Ltd.
201a945772Spatrick  *
211a945772Spatrick  * Marvell BSD License Option
221a945772Spatrick  *
231a945772Spatrick  * If you received this File from Marvell, you may opt to use, redistribute
241a945772Spatrick  * and/or modify this File under the following licensing terms.
251a945772Spatrick  * Redistribution and use in source and binary forms, with or without
261a945772Spatrick  * modification, are permitted provided that the following conditions are met:
271a945772Spatrick  *
281a945772Spatrick  *   * Redistributions of source code must retain the above copyright notice,
291a945772Spatrick  *     this list of conditions and the following disclaimer.
301a945772Spatrick  *
311a945772Spatrick  *   * Redistributions in binary form must reproduce the above copyright
321a945772Spatrick  *     notice, this list of conditions and the following disclaimer in the
331a945772Spatrick  *     documentation and/or other materials provided with the distribution.
341a945772Spatrick  *
351a945772Spatrick  *   * Neither the name of Marvell nor the names of its contributors may be
361a945772Spatrick  *     used to endorse or promote products derived from this software without
371a945772Spatrick  *     specific prior written permission.
381a945772Spatrick  *
391a945772Spatrick  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
401a945772Spatrick  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
411a945772Spatrick  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
421a945772Spatrick  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
431a945772Spatrick  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
441a945772Spatrick  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
451a945772Spatrick  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
461a945772Spatrick  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
471a945772Spatrick  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
481a945772Spatrick  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
491a945772Spatrick  * POSSIBILITY OF SUCH DAMAGE.
501a945772Spatrick  */
511a945772Spatrick 
521a945772Spatrick #ifndef __MVPP2_LIB_HW__
531a945772Spatrick #define __MVPP2_LIB_HW__
541a945772Spatrick 
55af1244a6Spatrick #define BIT(nr)		(1U << (nr))
561a945772Spatrick 
571a945772Spatrick /* PP2v2 registers offsets */
581a945772Spatrick #define MVPP22_SMI_OFFSET			0x1200
591a945772Spatrick #define MVPP22_MPCS_OFFSET			0x7000
601a945772Spatrick #define MVPP22_MPCS_REG_SIZE			0x1000
611a945772Spatrick #define MVPP22_XPCS_OFFSET			0x7400
621a945772Spatrick #define MVPP22_XPCS_REG_SIZE			0x1000
631a945772Spatrick #define MVPP22_GMAC_OFFSET			0x7e00
641a945772Spatrick #define MVPP22_GMAC_REG_SIZE			0x1000
651a945772Spatrick #define MVPP22_XLG_OFFSET			0x7f00
661a945772Spatrick #define MVPP22_XLG_REG_SIZE			0x1000
671a945772Spatrick #define MVPP22_RFU1_OFFSET			0x318000
681a945772Spatrick #define MVPP22_ADDR_SPACE_SIZE			0x10000
691a945772Spatrick 
701a945772Spatrick /* RX Fifo Registers */
711a945772Spatrick #define MVPP2_RX_DATA_FIFO_SIZE_REG(port)	(0x00 + 4 * (port))
721a945772Spatrick #define MVPP2_RX_ATTR_FIFO_SIZE_REG(port)	(0x20 + 4 * (port))
731a945772Spatrick #define MVPP2_RX_MIN_PKT_SIZE_REG		0x60
741a945772Spatrick #define MVPP2_RX_FIFO_INIT_REG			0x64
751a945772Spatrick #define MVPP22_TX_FIFO_THRESH_REG(port)		(0x8840 + 4 * (port))
761a945772Spatrick #define MVPP22_TX_FIFO_SIZE_REG(port)		(0x8860 + 4 * (port))
771a945772Spatrick 
781a945772Spatrick /* RX DMA Top Registers */
791a945772Spatrick #define MVPP2_RX_CTRL_REG(port)			(0x140 + 4 * (port))
801a945772Spatrick #define     MVPP2_RX_LOW_LATENCY_PKT_SIZE(s)	(((s) & 0xfff) << 16)
811a945772Spatrick #define     MVPP2_RX_USE_PSEUDO_FOR_CSUM_MASK	BIT(31)
821a945772Spatrick #define MVPP2_POOL_BUF_SIZE_REG(pool)		(0x180 + 4 * (pool))
831a945772Spatrick #define     MVPP2_POOL_BUF_SIZE_OFFSET		5
841a945772Spatrick #define MVPP2_RXQ_CONFIG_REG(rxq)		(0x800 + 4 * (rxq))
851a945772Spatrick #define     MVPP2_SNOOP_PKT_SIZE_MASK		0x1ff
861a945772Spatrick #define     MVPP2_SNOOP_BUF_HDR_MASK		BIT(9)
871a945772Spatrick #define     MVPP2_RXQ_POOL_SHORT_OFFS		20
881a945772Spatrick #define     MVPP2_RXQ_POOL_SHORT_MASK		0xf00000
891a945772Spatrick #define     MVPP2_RXQ_POOL_LONG_OFFS		24
901a945772Spatrick #define     MVPP2_RXQ_POOL_LONG_MASK		0xf000000
911a945772Spatrick #define     MVPP2_RXQ_PACKET_OFFSET_OFFS	28
921a945772Spatrick #define     MVPP2_RXQ_PACKET_OFFSET_MASK	0x70000000
931a945772Spatrick #define     MVPP2_RXQ_DISABLE_MASK		BIT(31)
941a945772Spatrick 
951a945772Spatrick /* Parser Registers */
961a945772Spatrick #define MVPP2_PRS_INIT_LOOKUP_REG		0x1000
971a945772Spatrick #define     MVPP2_PRS_PORT_LU_MAX		0xf
981a945772Spatrick #define     MVPP2_PRS_PORT_LU_MASK(port)	(0xff << ((port) * 4))
991a945772Spatrick #define     MVPP2_PRS_PORT_LU_VAL(port, val)	((val) << ((port) * 4))
1001a945772Spatrick #define MVPP2_PRS_INIT_OFFS_REG(port)		(0x1004 + ((port) & 4))
1011a945772Spatrick #define     MVPP2_PRS_INIT_OFF_MASK(port)	(0x3f << (((port) % 4) * 8))
1021a945772Spatrick #define     MVPP2_PRS_INIT_OFF_VAL(port, val)	((val) << (((port) % 4) * 8))
1031a945772Spatrick #define MVPP2_PRS_MAX_LOOP_REG(port)		(0x100c + ((port) & 4))
1041a945772Spatrick #define     MVPP2_PRS_MAX_LOOP_MASK(port)	(0xff << (((port) % 4) * 8))
1051a945772Spatrick #define     MVPP2_PRS_MAX_LOOP_VAL(port, val)	((val) << (((port) % 4) * 8))
1061a945772Spatrick #define MVPP2_PRS_TCAM_IDX_REG			0x1100
1071a945772Spatrick #define MVPP2_PRS_TCAM_DATA_REG(idx)		(0x1104 + (idx) * 4)
1081a945772Spatrick #define     MVPP2_PRS_TCAM_INV_MASK		BIT(31)
1091a945772Spatrick #define MVPP2_PRS_SRAM_IDX_REG			0x1200
1101a945772Spatrick #define MVPP2_PRS_SRAM_DATA_REG(idx)		(0x1204 + (idx) * 4)
1111a945772Spatrick #define MVPP2_PRS_TCAM_CTRL_REG			0x1230
1121a945772Spatrick #define     MVPP2_PRS_TCAM_EN_MASK		BIT(0)
1131a945772Spatrick 
1141a945772Spatrick /* Classifier Registers */
1151a945772Spatrick #define MVPP2_CLS_MODE_REG			0x1800
1161a945772Spatrick #define     MVPP2_CLS_MODE_ACTIVE_MASK		BIT(0)
1171a945772Spatrick #define MVPP2_CLS_PORT_WAY_REG			0x1810
1181a945772Spatrick #define     MVPP2_CLS_PORT_WAY_MASK(port)	(1 << (port))
1191a945772Spatrick #define MVPP2_CLS_LKP_INDEX_REG			0x1814
1201a945772Spatrick #define     MVPP2_CLS_LKP_INDEX_WAY_OFFS	6
1211a945772Spatrick #define MVPP2_CLS_LKP_TBL_REG			0x1818
1221a945772Spatrick #define     MVPP2_CLS_LKP_TBL_RXQ_MASK		0xff
1231a945772Spatrick #define     MVPP2_CLS_LKP_TBL_LOOKUP_EN_MASK	BIT(25)
1241a945772Spatrick #define MVPP2_CLS_FLOW_INDEX_REG		0x1820
1251a945772Spatrick #define MVPP2_CLS_FLOW_TBL0_REG			0x1824
1261a945772Spatrick #define MVPP2_CLS_FLOW_TBL1_REG			0x1828
1271a945772Spatrick #define MVPP2_CLS_FLOW_TBL2_REG			0x182c
1281a945772Spatrick #define MVPP2_CLS_OVERSIZE_RXQ_LOW_REG(port)	(0x1980 + ((port) * 4))
1291a945772Spatrick #define     MVPP2_CLS_OVERSIZE_RXQ_LOW_BITS	3
1301a945772Spatrick #define     MVPP2_CLS_OVERSIZE_RXQ_LOW_MASK	0x7
1311a945772Spatrick #define MVPP2_CLS_SWFWD_P2HQ_REG(port)		(0x19b0 + ((port) * 4))
1321a945772Spatrick #define MVPP2_CLS_SWFWD_PCTRL_REG		0x19d0
1331a945772Spatrick #define     MVPP2_CLS_SWFWD_PCTRL_MASK(port)	(1 << (port))
1341a945772Spatrick 
1351a945772Spatrick /* Descriptor Manager Top Registers */
1361a945772Spatrick #define MVPP2_RXQ_NUM_REG			0x2040
1371a945772Spatrick #define MVPP2_RXQ_DESC_ADDR_REG			0x2044
1384d0a0269Spatrick #define     MVPP22_DESC_ADDR_OFFS		8
1391a945772Spatrick #define MVPP2_RXQ_DESC_SIZE_REG			0x2048
1401a945772Spatrick #define     MVPP2_RXQ_DESC_SIZE_MASK		0x3ff0
1411a945772Spatrick #define MVPP2_RXQ_STATUS_UPDATE_REG(rxq)	(0x3000 + 4 * (rxq))
1421a945772Spatrick #define     MVPP2_RXQ_NUM_PROCESSED_OFFSET	0
1431a945772Spatrick #define     MVPP2_RXQ_NUM_NEW_OFFSET		16
1441a945772Spatrick #define MVPP2_RXQ_STATUS_REG(rxq)		(0x3400 + 4 * (rxq))
1451a945772Spatrick #define     MVPP2_RXQ_OCCUPIED_MASK		0x3fff
1461a945772Spatrick #define     MVPP2_RXQ_NON_OCCUPIED_OFFSET	16
1471a945772Spatrick #define     MVPP2_RXQ_NON_OCCUPIED_MASK		0x3fff0000
1481a945772Spatrick #define MVPP2_RXQ_THRESH_REG			0x204c
1491a945772Spatrick #define     MVPP2_OCCUPIED_THRESH_OFFSET	0
1501a945772Spatrick #define     MVPP2_OCCUPIED_THRESH_MASK		0x3fff
1511a945772Spatrick #define MVPP2_RXQ_INDEX_REG			0x2050
1521a945772Spatrick #define MVPP2_TXQ_NUM_REG			0x2080
1531a945772Spatrick #define MVPP2_TXQ_DESC_ADDR_REG			0x2084
1541a945772Spatrick #define MVPP22_TXQ_DESC_ADDR_HIGH_REG		0x20a8
1551a945772Spatrick #define     MVPP22_TXQ_DESC_ADDR_HIGH_MASK	0xff
1561a945772Spatrick #define MVPP2_TXQ_DESC_SIZE_REG			0x2088
1571a945772Spatrick #define     MVPP2_TXQ_DESC_SIZE_MASK		0x3ff0
1581a945772Spatrick #define MVPP2_AGGR_TXQ_UPDATE_REG		0x2090
1591a945772Spatrick #define MVPP2_TXQ_THRESH_REG			0x2094
1601a945772Spatrick #define     MVPP2_TRANSMITTED_THRESH_OFFSET	16
1611a945772Spatrick #define     MVPP2_TRANSMITTED_THRESH_MASK	0x3fff
1621a945772Spatrick #define MVPP2_TXQ_INDEX_REG			0x2098
1631a945772Spatrick #define MVPP2_TXQ_PREF_BUF_REG			0x209c
1641a945772Spatrick #define     MVPP2_PREF_BUF_PTR(desc)		((desc) & 0xfff)
1651a945772Spatrick #define     MVPP2_PREF_BUF_SIZE_4		(BIT(12) | BIT(13))
1661a945772Spatrick #define     MVPP2_PREF_BUF_SIZE_16		(BIT(12) | BIT(14))
1671a945772Spatrick #define     MVPP2_PREF_BUF_THRESH(val)		((val) << 17)
1681a945772Spatrick #define     MVPP2_TXQ_DRAIN_EN_MASK		BIT(31)
1691a945772Spatrick #define MVPP2_TXQ_PENDING_REG			0x20a0
1701a945772Spatrick #define     MVPP2_TXQ_PENDING_MASK		0x3fff
1711a945772Spatrick #define MVPP2_TXQ_INT_STATUS_REG		0x20a4
1721a945772Spatrick #define MVPP2_TXQ_SENT_REG(txq)			(0x3c00 + 4 * (txq))
1731a945772Spatrick #define     MVPP2_TRANSMITTED_COUNT_OFFSET	16
1741a945772Spatrick #define     MVPP2_TRANSMITTED_COUNT_MASK	0x3fff0000
1751a945772Spatrick #define MVPP2_TXQ_RSVD_REQ_REG			0x20b0
1761a945772Spatrick #define     MVPP2_TXQ_RSVD_REQ_Q_OFFSET		16
1771a945772Spatrick #define MVPP2_TXQ_RSVD_RSLT_REG			0x20b4
1781a945772Spatrick #define     MVPP2_TXQ_RSVD_RSLT_MASK		0x3fff
1791a945772Spatrick #define MVPP2_TXQ_RSVD_CLR_REG			0x20b8
1801a945772Spatrick #define     MVPP2_TXQ_RSVD_CLR_OFFSET		16
1811a945772Spatrick #define MVPP2_AGGR_TXQ_DESC_ADDR_REG(cpu)	(0x2100 + 4 * (cpu))
1821a945772Spatrick #define MVPP2_AGGR_TXQ_DESC_SIZE_REG(cpu)	(0x2140 + 4 * (cpu))
1831a945772Spatrick #define     MVPP2_AGGR_TXQ_DESC_SIZE_MASK	0x3ff0
1841a945772Spatrick #define MVPP2_AGGR_TXQ_STATUS_REG(cpu)		(0x2180 + 4 * (cpu))
1851a945772Spatrick #define     MVPP2_AGGR_TXQ_PENDING_MASK		0x3fff
1861a945772Spatrick #define MVPP2_AGGR_TXQ_INDEX_REG(cpu)		(0x21c0 + 4 * (cpu))
1871a945772Spatrick 
1881a945772Spatrick /* MBUS bridge registers */
1891a945772Spatrick #define MVPP2_WIN_BASE(w)			(0x4000 + ((w) << 2))
1901a945772Spatrick #define MVPP2_WIN_SIZE(w)			(0x4020 + ((w) << 2))
1911a945772Spatrick #define MVPP2_WIN_REMAP(w)			(0x4040 + ((w) << 2))
1921a945772Spatrick #define MVPP2_BASE_ADDR_ENABLE			0x4060
1931a945772Spatrick 
194ad54c436Spatrick /* AXI Bridge Registers */
195ad54c436Spatrick #define MVPP22_AXI_BM_WR_ATTR_REG		0x4100
196ad54c436Spatrick #define MVPP22_AXI_BM_RD_ATTR_REG		0x4104
197ad54c436Spatrick #define MVPP22_AXI_AGGRQ_DESCR_RD_ATTR_REG	0x4110
198ad54c436Spatrick #define MVPP22_AXI_TXQ_DESCR_WR_ATTR_REG	0x4114
199ad54c436Spatrick #define MVPP22_AXI_TXQ_DESCR_RD_ATTR_REG	0x4118
200ad54c436Spatrick #define MVPP22_AXI_RXQ_DESCR_WR_ATTR_REG	0x411c
201ad54c436Spatrick #define MVPP22_AXI_RX_DATA_WR_ATTR_REG		0x4120
202ad54c436Spatrick #define MVPP22_AXI_TX_DATA_RD_ATTR_REG		0x4130
203ad54c436Spatrick #define MVPP22_AXI_RD_NORMAL_CODE_REG		0x4150
204ad54c436Spatrick #define MVPP22_AXI_RD_SNOOP_CODE_REG		0x4154
205ad54c436Spatrick #define MVPP22_AXI_WR_NORMAL_CODE_REG		0x4160
206ad54c436Spatrick #define MVPP22_AXI_WR_SNOOP_CODE_REG		0x4164
207ad54c436Spatrick 
208ad54c436Spatrick #define MVPP22_AXI_ATTR_CACHE_OFFS		0
209ad54c436Spatrick #define MVPP22_AXI_ATTR_DOMAIN_OFFS		12
210ad54c436Spatrick 
211ad54c436Spatrick #define MVPP22_AXI_CODE_CACHE_OFFS		0
212ad54c436Spatrick #define MVPP22_AXI_CODE_DOMAIN_OFFS		4
213ad54c436Spatrick 
214ad54c436Spatrick #define MVPP22_AXI_CODE_CACHE_NON_CACHE		0x3
215ad54c436Spatrick #define MVPP22_AXI_CODE_CACHE_WR_CACHE		0x7
216ad54c436Spatrick #define MVPP22_AXI_CODE_CACHE_RD_CACHE		0xb
217ad54c436Spatrick 
218ad54c436Spatrick #define MVPP22_AXI_CODE_DOMAIN_OUTER_DOM	2
219ad54c436Spatrick #define MVPP22_AXI_CODE_DOMAIN_SYSTEM		3
220ad54c436Spatrick 
2211a945772Spatrick /* Interrupt Cause and Mask registers */
2221a945772Spatrick #define MVPP2_ISR_TX_THRESHOLD_REG(port)		(0x5140 + 4 * (port))
2231a945772Spatrick #define MVPP2_ISR_RX_THRESHOLD_REG(rxq)			(0x5200 + 4 * (rxq))
2241a945772Spatrick #define MVPP2_ISR_RXQ_GROUP_REG(rxq)			(0x5400 + 4 * (rxq))
2251a945772Spatrick #define MVPP2_ISR_RXQ_GROUP_INDEX_REG			0x5400
2261a945772Spatrick #define     MVPP2_ISR_RXQ_GROUP_INDEX_GROUP_SHIFT	7
2271a945772Spatrick #define MVPP2_ISR_RXQ_SUB_GROUP_CONFIG_REG		0x5404
2281a945772Spatrick #define     MVPP2_ISR_RXQ_SUB_GROUP_CONFIG_SIZE_SHIFT	8
2291a945772Spatrick #define MVPP2_ISR_ENABLE_REG(port)			(0x5420 + 4 * (port))
2301a945772Spatrick #define     MVPP2_ISR_ENABLE_INTERRUPT(mask)		((mask) & 0xffff)
2311a945772Spatrick #define     MVPP2_ISR_DISABLE_INTERRUPT(mask)		(((mask) << 16) & 0xffff0000)
2321a945772Spatrick #define MVPP2_ISR_RX_TX_CAUSE_REG(port)			(0x5480 + 4 * (port))
2331a945772Spatrick #define     MVPP2_CAUSE_RXQ_OCCUP_DESC_ALL_MASK		0xff
2341a945772Spatrick #define     MVPP2_CAUSE_TXQ_OCCUP_DESC_ALL_MASK		0xff0000
2351a945772Spatrick #define     MVPP2_CAUSE_TXQ_OCCUP_DESC_ALL_OFFSET	16
2361a945772Spatrick #define     MVPP2_CAUSE_RX_FIFO_OVERRUN_MASK		BIT(24)
2371a945772Spatrick #define     MVPP2_CAUSE_FCS_ERR_MASK			BIT(25)
2381a945772Spatrick #define     MVPP2_CAUSE_TX_FIFO_UNDERRUN_MASK		BIT(26)
2391a945772Spatrick #define     MVPP2_CAUSE_TX_EXCEPTION_SUM_MASK		BIT(29)
2401a945772Spatrick #define     MVPP2_CAUSE_RX_EXCEPTION_SUM_MASK		BIT(30)
2411a945772Spatrick #define     MVPP2_CAUSE_MISC_SUM_MASK			BIT(31)
2421a945772Spatrick #define MVPP2_ISR_RX_TX_MASK_REG(port)			(0x54a0 + 4 * (port))
2431a945772Spatrick #define MVPP2_ISR_PON_RX_TX_MASK_REG			0x54bc
2441a945772Spatrick #define     MVPP2_PON_CAUSE_RXQ_OCCUP_DESC_ALL_MASK	0xffff
2451a945772Spatrick #define     MVPP2_PON_CAUSE_TXP_OCCUP_DESC_ALL_MASK	0x3fc00000
2461a945772Spatrick #define     MVPP2_PON_CAUSE_MISC_SUM_MASK		BIT(31)
2471a945772Spatrick #define MVPP2_ISR_MISC_CAUSE_REG			0x55b0
2481a945772Spatrick 
2491a945772Spatrick /* Buffer Manager registers */
2501a945772Spatrick #define MVPP2_BM_POOL_BASE_REG(pool)		(0x6000 + ((pool) * 4))
2511a945772Spatrick #define     MVPP2_BM_POOL_BASE_ADDR_MASK	0xfffff80
2521a945772Spatrick #define MVPP2_BM_POOL_SIZE_REG(pool)		(0x6040 + ((pool) * 4))
2531a945772Spatrick #define     MVPP2_BM_POOL_SIZE_MASK		0xfff0
2541a945772Spatrick #define MVPP2_BM_POOL_READ_PTR_REG(pool)	(0x6080 + ((pool) * 4))
2551a945772Spatrick #define     MVPP2_BM_POOL_GET_READ_PTR_MASK	0xfff0
2561a945772Spatrick #define MVPP2_BM_POOL_PTRS_NUM_REG(pool)	(0x60c0 + ((pool) * 4))
2571a945772Spatrick #define     MVPP2_BM_POOL_PTRS_NUM_MASK		0xfff8
2581a945772Spatrick #define MVPP2_BM_BPPI_READ_PTR_REG(pool)	(0x6100 + ((pool) * 4))
2591a945772Spatrick #define MVPP2_BM_BPPI_PTRS_NUM_REG(pool)	(0x6140 + ((pool) * 4))
2606d508037Spatrick #define     MVPP2_BM_BPPI_PTRS_NUM_MASK		0x7ff
2611a945772Spatrick #define     MVPP2_BM_BPPI_PREFETCH_FULL_MASK	BIT(16)
2621a945772Spatrick #define MVPP2_BM_POOL_CTRL_REG(pool)		(0x6200 + ((pool) * 4))
2631a945772Spatrick #define     MVPP2_BM_START_MASK			BIT(0)
2641a945772Spatrick #define     MVPP2_BM_STOP_MASK			BIT(1)
2651a945772Spatrick #define     MVPP2_BM_STATE_MASK			BIT(4)
2661a945772Spatrick #define     MVPP2_BM_LOW_THRESH_OFFS		8
2671a945772Spatrick #define     MVPP2_BM_LOW_THRESH_MASK		0x7f00
268ad54c436Spatrick #define     MVPP2_BM_LOW_THRESH_VALUE(val)	((val) << \
269ad54c436Spatrick 						MVPP2_BM_LOW_THRESH_OFFS)
2701a945772Spatrick #define     MVPP2_BM_HIGH_THRESH_OFFS		16
2711a945772Spatrick #define     MVPP2_BM_HIGH_THRESH_MASK		0x7f0000
272ad54c436Spatrick #define     MVPP2_BM_HIGH_THRESH_VALUE(val)	((val) << \
273ad54c436Spatrick 						MVPP2_BM_HIGH_THRESH_OFFS)
2741a945772Spatrick #define MVPP2_BM_INTR_CAUSE_REG(pool)		(0x6240 + ((pool) * 4))
2751a945772Spatrick #define     MVPP2_BM_RELEASED_DELAY_MASK	BIT(0)
2761a945772Spatrick #define     MVPP2_BM_ALLOC_FAILED_MASK		BIT(1)
2771a945772Spatrick #define     MVPP2_BM_BPPE_EMPTY_MASK		BIT(2)
2781a945772Spatrick #define     MVPP2_BM_BPPE_FULL_MASK		BIT(3)
2791a945772Spatrick #define     MVPP2_BM_AVAILABLE_BP_LOW_MASK	BIT(4)
2801a945772Spatrick #define MVPP2_BM_INTR_MASK_REG(pool)		(0x6280 + ((pool) * 4))
2811a945772Spatrick #define MVPP2_BM_PHY_ALLOC_REG(pool)		(0x6400 + ((pool) * 4))
2821a945772Spatrick #define     MVPP2_BM_PHY_ALLOC_GRNTD_MASK	BIT(0)
2831a945772Spatrick #define MVPP2_BM_VIRT_ALLOC_REG			0x6440
28413d9cc68Spatrick #define MVPP22_BM_ADDR_HIGH_ALLOC_REG		0x6444
28513d9cc68Spatrick #define     MVPP22_BM_ADDR_HIGH_PHYS_MASK	0xff
28613d9cc68Spatrick #define     MVPP22_BM_ADDR_HIGH_VIRT_MASK	0xff00
28713d9cc68Spatrick #define     MVPP22_BM_ADDR_HIGH_VIRT_SHIFT	8
2881a945772Spatrick #define MVPP2_BM_PHY_RLS_REG(pool)		(0x6480 + ((pool) * 4))
2891a945772Spatrick #define     MVPP2_BM_PHY_RLS_MC_BUFF_MASK	BIT(0)
2901a945772Spatrick #define     MVPP2_BM_PHY_RLS_PRIO_EN_MASK	BIT(1)
2911a945772Spatrick #define     MVPP2_BM_PHY_RLS_GRNTD_MASK		BIT(2)
2921a945772Spatrick #define MVPP2_BM_VIRT_RLS_REG			0x64c0
29313d9cc68Spatrick #define MVPP22_BM_ADDR_HIGH_RLS_REG		0x64c4
29413d9cc68Spatrick #define     MVPP22_BM_ADDR_HIGH_PHYS_RLS_MASK	0xff
29513d9cc68Spatrick #define     MVPP22_BM_ADDR_HIGH_VIRT_RLS_MASK	0xff00
29613d9cc68Spatrick #define     MVPP22_BM_ADDR_HIGH_VIRT_RLS_SHIFT	8
2971a945772Spatrick 
2981a945772Spatrick #define MVPP22_BM_POOL_BASE_HIGH_REG		0x6310
2991a945772Spatrick #define MVPP22_BM_POOL_BASE_HIGH_MASK		0xff
3001a945772Spatrick #define MVPP2_BM_PRIO_CTRL_REG			0x6800
3011a945772Spatrick 
3021a945772Spatrick /* TX Scheduler registers */
3031a945772Spatrick #define MVPP2_TXP_SCHED_PORT_INDEX_REG		0x8000
3041a945772Spatrick #define MVPP2_TXP_SCHED_Q_CMD_REG		0x8004
3051a945772Spatrick #define     MVPP2_TXP_SCHED_ENQ_MASK		0xff
3061a945772Spatrick #define     MVPP2_TXP_SCHED_DISQ_OFFSET		8
3071a945772Spatrick #define MVPP2_TXP_SCHED_CMD_1_REG		0x8010
3081a945772Spatrick #define MVPP2_TXP_SCHED_PERIOD_REG		0x8018
3091a945772Spatrick #define MVPP2_TXP_SCHED_MTU_REG			0x801c
3101a945772Spatrick #define     MVPP2_TXP_MTU_MAX			0x7FFFF
3111a945772Spatrick #define MVPP2_TXP_SCHED_REFILL_REG		0x8020
3121a945772Spatrick #define     MVPP2_TXP_REFILL_TOKENS_ALL_MASK	0x7ffff
3131a945772Spatrick #define     MVPP2_TXP_REFILL_PERIOD_ALL_MASK	0x3ff00000
3141a945772Spatrick #define     MVPP2_TXP_REFILL_PERIOD_MASK(v)	((v) << 20)
3151a945772Spatrick #define MVPP2_TXP_SCHED_TOKEN_SIZE_REG		0x8024
3161a945772Spatrick #define     MVPP2_TXP_TOKEN_SIZE_MAX		0xffffffff
3171a945772Spatrick #define MVPP2_TXQ_SCHED_REFILL_REG(q)		(0x8040 + ((q) << 2))
3181a945772Spatrick #define     MVPP2_TXQ_REFILL_TOKENS_ALL_MASK	0x7ffff
3191a945772Spatrick #define     MVPP2_TXQ_REFILL_PERIOD_ALL_MASK	0x3ff00000
3201a945772Spatrick #define     MVPP2_TXQ_REFILL_PERIOD_MASK(v)	((v) << 20)
3211a945772Spatrick #define MVPP2_TXQ_SCHED_TOKEN_SIZE_REG(q)	(0x8060 + ((q) << 2))
3221a945772Spatrick #define     MVPP2_TXQ_TOKEN_SIZE_MAX		0x7fffffff
3231a945772Spatrick #define MVPP2_TXQ_SCHED_TOKEN_CNTR_REG(q)	(0x8080 + ((q) << 2))
3241a945772Spatrick #define     MVPP2_TXQ_TOKEN_CNTR_MAX		0xffffffff
3251a945772Spatrick 
3261a945772Spatrick /* TX general registers */
3271a945772Spatrick #define MVPP2_TX_SNOOP_REG			0x8800
3281a945772Spatrick #define MVPP2_TX_PORT_FLUSH_REG			0x8810
3291a945772Spatrick #define     MVPP2_TX_PORT_FLUSH_MASK(port)	(1 << (port))
3301a945772Spatrick 
3311a945772Spatrick /* LMS registers */
3321a945772Spatrick #define MVPP2_SRC_ADDR_MIDDLE			0x24
3331a945772Spatrick #define MVPP2_SRC_ADDR_HIGH			0x28
3341a945772Spatrick #define MVPP2_PHY_AN_CFG0_REG			0x34
3351a945772Spatrick #define     MVPP2_PHY_AN_STOP_SMI0_MASK		BIT(7)
3361a945772Spatrick #define MVPP2_MIB_COUNTERS_BASE(port)		(0x1000 + ((port) >> 1) * 0x400 + (port) * 0x400)
3371a945772Spatrick #define MVPP2_MIB_LATE_COLLISION		0x7c
3381a945772Spatrick #define MVPP2_ISR_SUM_MASK_REG			0x220c
3391a945772Spatrick #define MVPP2_MNG_EXTENDED_GLOBAL_CTRL_REG	0x305c
3401a945772Spatrick #define     MVPP2_EXT_GLOBAL_CTRL_DEFAULT	0x27
3411a945772Spatrick 
3421a945772Spatrick /* Per-port registers */
3431a945772Spatrick #define MVPP2_GMAC_CTRL_0_REG			0x0
3441a945772Spatrick #define     MVPP2_GMAC_PORT_EN_MASK		BIT(0)
3451a945772Spatrick #define     MVPP2_GMAC_PORT_TYPE_MASK		BIT(1)
3461a945772Spatrick #define     MVPP2_GMAC_MAX_RX_SIZE_OFFS		2
3471a945772Spatrick #define     MVPP2_GMAC_MAX_RX_SIZE_MASK		0x7ffc
3481a945772Spatrick #define     MVPP2_GMAC_MIB_CNTR_EN_MASK		BIT(15)
3491a945772Spatrick #define MVPP2_GMAC_CTRL_1_REG			0x4
3501a945772Spatrick #define     MVPP2_GMAC_PERIODIC_XON_EN_MASK	BIT(1)
3511a945772Spatrick #define     MVPP2_GMAC_GMII_LB_EN_MASK		BIT(5)
3521a945772Spatrick #define     MVPP2_GMAC_PCS_LB_EN_BIT		6
3531a945772Spatrick #define     MVPP2_GMAC_PCS_LB_EN_MASK		BIT(6)
3541a945772Spatrick #define     MVPP2_GMAC_SA_LOW_OFFS		7
3551a945772Spatrick #define MVPP2_GMAC_CTRL_2_REG			0x8
3561a945772Spatrick #define     MVPP2_GMAC_INBAND_AN_MASK		BIT(0)
3571a945772Spatrick #define     MVPP2_GMAC_PCS_ENABLE_MASK		BIT(3)
3581a945772Spatrick #define     MVPP2_GMAC_PORT_RGMII_MASK		BIT(4)
3591a945772Spatrick #define     MVPP2_GMAC_PORT_RESET_MASK		BIT(6)
3601a945772Spatrick #define MVPP2_GMAC_AUTONEG_CONFIG		0xc
3611a945772Spatrick #define     MVPP2_GMAC_FORCE_LINK_DOWN		BIT(0)
3621a945772Spatrick #define     MVPP2_GMAC_FORCE_LINK_PASS		BIT(1)
3631a945772Spatrick #define     MVPP2_GMAC_IN_BAND_AUTONEG		BIT(2)
3641a945772Spatrick #define     MVPP2_GMAC_IN_BAND_AUTONEG_BYPASS	BIT(3)
3651a945772Spatrick #define     MVPP2_GMAC_IN_BAND_RESTART_AN	BIT(4)
3661a945772Spatrick #define     MVPP2_GMAC_CONFIG_MII_SPEED		BIT(5)
3671a945772Spatrick #define     MVPP2_GMAC_CONFIG_GMII_SPEED	BIT(6)
3681a945772Spatrick #define     MVPP2_GMAC_AN_SPEED_EN		BIT(7)
3691a945772Spatrick #define     MVPP2_GMAC_FC_ADV_EN		BIT(9)
3701a945772Spatrick #define     MVPP2_GMAC_FC_ADV_ASM_EN		BIT(10)
3711a945772Spatrick #define     MVPP2_GMAC_FLOW_CTRL_AUTONEG	BIT(11)
3721a945772Spatrick #define     MVPP2_GMAC_CONFIG_FULL_DUPLEX	BIT(12)
3731a945772Spatrick #define     MVPP2_GMAC_AN_DUPLEX_EN		BIT(13)
3741a945772Spatrick #define MVPP2_GMAC_PORT_FIFO_CFG_1_REG		0x1c
3751a945772Spatrick #define     MVPP2_GMAC_TX_FIFO_MIN_TH_OFFS	6
3761a945772Spatrick #define     MVPP2_GMAC_TX_FIFO_MIN_TH_ALL_MASK	0x1fc0
377ad54c436Spatrick #define     MVPP2_GMAC_TX_FIFO_MIN_TH_MASK(v)	(((v) << 6) & \
378ad54c436Spatrick 	MVPP2_GMAC_TX_FIFO_MIN_TH_ALL_MASK)
379b137aaecSpatrick #define MVPP2_GMAC_INT_CAUSE_REG		0x20
380b137aaecSpatrick #define MVPP2_GMAC_INT_MASK_REG			0x24
381b137aaecSpatrick #define     MVPP2_GMAC_INT_CAUSE_LINK_CHANGE	BIT(1)
382b137aaecSpatrick #define MVPP2_GMAC_INT_SUM_CAUSE_REG		0xa0
383b137aaecSpatrick #define MVPP2_GMAC_INT_SUM_MASK_REG		0xa4
384b137aaecSpatrick #define     MVPP2_GMAC_INT_SUM_CAUSE_LINK_CHANGE BIT(1)
3851a945772Spatrick 
3861a945772Spatrick /* Port Mac Control0 */
3874d0a0269Spatrick #define MVPP2_PORT_CTRL0_REG				0x0000
3884d0a0269Spatrick #define     MVPP2_PORT_CTRL0_PORTEN			BIT(0)
3894d0a0269Spatrick #define     MVPP2_PORT_CTRL0_PORTTYPE			BIT(1)
3904d0a0269Spatrick #define     MVPP2_PORT_CTRL0_FRAMESIZELIMIT		(0x1fff << 2)
3914d0a0269Spatrick #define     MVPP2_PORT_CTRL0_COUNT_EN			BIT(15)
3921a945772Spatrick 
3931a945772Spatrick /* Port Mac Control1 */
3944d0a0269Spatrick #define MVPP2_PORT_CTRL1_REG				0x0004
3954d0a0269Spatrick #define     MVPP2_PORT_CTRL1_EN_RX_CRC_CHECK		BIT(0)
3964d0a0269Spatrick #define     MVPP2_PORT_CTRL1_EN_PERIODIC_FC_XON		BIT(1)
3974d0a0269Spatrick #define     MVPP2_PORT_CTRL1_MGMII_MODE			BIT(2)
3984d0a0269Spatrick #define     MVPP2_PORT_CTRL1_PFC_CASCADE_PORT_ENABLE	BIT(3)
3994d0a0269Spatrick #define     MVPP2_PORT_CTRL1_DIS_EXCESSIVE_COL		BIT(4)
4004d0a0269Spatrick #define     MVPP2_PORT_CTRL1_GMII_LOOPBACK		BIT(5)
4014d0a0269Spatrick #define     MVPP2_PORT_CTRL1_PCS_LOOPBACK		BIT(6)
4024d0a0269Spatrick #define     MVPP2_PORT_CTRL1_FC_SA_ADDR_LO		(0xff << 7)
4034d0a0269Spatrick #define     MVPP2_PORT_CTRL1_EN_SHORT_PREAMBLE		BIT(15)
4041a945772Spatrick 
4051a945772Spatrick /* Port Mac Control2 */
4064d0a0269Spatrick #define MVPP2_PORT_CTRL2_REG				0x0008
4074d0a0269Spatrick #define     MVPP2_PORT_CTRL2_SGMII_MODE			BIT(0)
4084d0a0269Spatrick #define     MVPP2_PORT_CTRL2_FC_MODE			(0x3 << 1)
4094d0a0269Spatrick #define     MVPP2_PORT_CTRL2_PCS_EN			BIT(3)
4104d0a0269Spatrick #define     MVPP2_PORT_CTRL2_RGMII_MODE			BIT(4)
4114d0a0269Spatrick #define     MVPP2_PORT_CTRL2_DIS_PADING			BIT(5)
4124d0a0269Spatrick #define     MVPP2_PORT_CTRL2_PORTMACRESET		BIT(6)
4134d0a0269Spatrick #define     MVPP2_PORT_CTRL2_TX_DRAIN			BIT(7)
4144d0a0269Spatrick #define     MVPP2_PORT_CTRL2_EN_MII_ODD_PRE		BIT(8)
4154d0a0269Spatrick #define     MVPP2_PORT_CTRL2_CLK_125_BYPS_EN		BIT(9)
4164d0a0269Spatrick #define     MVPP2_PORT_CTRL2_PRBS_CHECK_EN		BIT(10)
4174d0a0269Spatrick #define     MVPP2_PORT_CTRL2_PRBS_GEN_EN		BIT(11)
4184d0a0269Spatrick #define     MVPP2_PORT_CTRL2_SELECT_DATA_TO_TX		(0x3 << 12)
4194d0a0269Spatrick #define     MVPP2_PORT_CTRL2_EN_COL_ON_BP		BIT(14)
4204d0a0269Spatrick #define     MVPP2_PORT_CTRL2_EARLY_REJECT_MODE		BIT(15)
4211a945772Spatrick 
4221a945772Spatrick /* Port Auto-negotiation Configuration */
4234d0a0269Spatrick #define MVPP2_PORT_AUTO_NEG_CFG_REG				0x000c
4244d0a0269Spatrick #define     MVPP2_PORT_AUTO_NEG_CFG_FORCE_LINK_DOWN		BIT(0)
4254d0a0269Spatrick #define     MVPP2_PORT_AUTO_NEG_CFG_FORCE_LINK_UP		BIT(1)
4264d0a0269Spatrick #define     MVPP2_PORT_AUTO_NEG_CFG_EN_PCS_AN			BIT(2)
4274d0a0269Spatrick #define     MVPP2_PORT_AUTO_NEG_CFG_AN_BYPASS_EN		BIT(3)
4284d0a0269Spatrick #define     MVPP2_PORT_AUTO_NEG_CFG_INBAND_RESTARTAN		BIT(4)
4294d0a0269Spatrick #define     MVPP2_PORT_AUTO_NEG_CFG_SET_MII_SPEED		BIT(5)
4304d0a0269Spatrick #define     MVPP2_PORT_AUTO_NEG_CFG_SET_GMII_SPEED		BIT(6)
4314d0a0269Spatrick #define     MVPP2_PORT_AUTO_NEG_CFG_EN_AN_SPEED			BIT(7)
4324d0a0269Spatrick #define     MVPP2_PORT_AUTO_NEG_CFG_ADV_PAUSE			BIT(9)
4334d0a0269Spatrick #define     MVPP2_PORT_AUTO_NEG_CFG_ADV_ASM_PAUSE		BIT(10)
4344d0a0269Spatrick #define     MVPP2_PORT_AUTO_NEG_CFG_EN_FC_AN			BIT(11)
4354d0a0269Spatrick #define     MVPP2_PORT_AUTO_NEG_CFG_SET_FULL_DX			BIT(12)
4364d0a0269Spatrick #define     MVPP2_PORT_AUTO_NEG_CFG_EN_FDX_AN			BIT(13)
4374d0a0269Spatrick #define     MVPP2_PORT_AUTO_NEG_CFG_PHY_MODE			BIT(14)
4384d0a0269Spatrick #define     MVPP2_PORT_AUTO_NEG_CFG_CHOOSE_SAMPLE_TX_CONFIG	BIT(15)
4391a945772Spatrick 
4401a945772Spatrick /* Port Status0 */
4414d0a0269Spatrick #define MVPP2_PORT_STATUS0_REG				0x0010
4424d0a0269Spatrick #define     MVPP2_PORT_STATUS0_LINKUP			BIT(0)
4434d0a0269Spatrick #define     MVPP2_PORT_STATUS0_GMIISPEED		BIT(1)
4444d0a0269Spatrick #define     MVPP2_PORT_STATUS0_MIISPEED			BIT(2)
4454d0a0269Spatrick #define     MVPP2_PORT_STATUS0_FULLDX			BIT(3)
4464d0a0269Spatrick #define     MVPP2_PORT_STATUS0_RXFCEN			BIT(4)
4474d0a0269Spatrick #define     MVPP2_PORT_STATUS0_TXFCEN			BIT(5)
4484d0a0269Spatrick #define     MVPP2_PORT_STATUS0_PORTRXPAUSE		BIT(6)
4494d0a0269Spatrick #define     MVPP2_PORT_STATUS0_PORTTXPAUSE		BIT(7)
4504d0a0269Spatrick #define     MVPP2_PORT_STATUS0_PORTIS_DOINGPRESSURE	BIT(8)
4514d0a0269Spatrick #define     MVPP2_PORT_STATUS0_PORTBUFFULL		BIT(9)
4524d0a0269Spatrick #define     MVPP2_PORT_STATUS0_SYNCFAIL10MS		BIT(10)
4534d0a0269Spatrick #define     MVPP2_PORT_STATUS0_ANDONE			BIT(11)
4544d0a0269Spatrick #define     MVPP2_PORT_STATUS0_INBAND_AUTONEG_BYPASSAC	BIT(12)
4554d0a0269Spatrick #define     MVPP2_PORT_STATUS0_SERDESPLL_LOCKED		BIT(13)
4564d0a0269Spatrick #define     MVPP2_PORT_STATUS0_SYNCOK			BIT(14)
4574d0a0269Spatrick #define     MVPP2_PORT_STATUS0_SQUELCHNOT_DETECTED	BIT(15)
4581a945772Spatrick 
4591a945772Spatrick /* Port Serial Parameters Configuration */
4604d0a0269Spatrick #define MVPP2_PORT_SERIAL_PARAM_CFG_REG					0x0014
4614d0a0269Spatrick #define     MVPP2_PORT_SERIAL_PARAM_CFG_UNIDIRECTIONAL_ENABLE		BIT(0)
4624d0a0269Spatrick #define     MVPP2_PORT_SERIAL_PARAM_CFG_RETRANSMIT_COLLISION_DOMAIN	BIT(1)
4634d0a0269Spatrick #define     MVPP2_PORT_SERIAL_PARAM_CFG_PUMA2_BTS1444_EN		BIT(2)
4644d0a0269Spatrick #define     MVPP2_PORT_SERIAL_PARAM_CFG_FORWARD_802_3X_FC_EN		BIT(3)
4654d0a0269Spatrick #define     MVPP2_PORT_SERIAL_PARAM_CFG_BP_EN				BIT(4)
4664d0a0269Spatrick #define     MVPP2_PORT_SERIAL_PARAM_CFG_RX_NEGEDGE_SAMPLE_EN		BIT(5)
4674d0a0269Spatrick #define     MVPP2_PORT_SERIAL_PARAM_CFG_COL_DOMAIN_LIMIT		(0x3f << 6)
4684d0a0269Spatrick #define     MVPP2_PORT_SERIAL_PARAM_CFG_PERIODIC_TYPE_SELECT		BIT(12)
4694d0a0269Spatrick #define     MVPP2_PORT_SERIAL_PARAM_CFG_PER_PRIORITY_FC_EN		BIT(13)
4704d0a0269Spatrick #define     MVPP2_PORT_SERIAL_PARAM_CFG_TX_STANDARD_PRBS7		BIT(14)
4714d0a0269Spatrick #define     MVPP2_PORT_SERIAL_PARAM_CFG_REVERSE_PRBS_RX			BIT(15)
4721a945772Spatrick 
4731a945772Spatrick /* Port Fifo Configuration 0 */
4744d0a0269Spatrick #define MVPP2_PORT_FIFO_CFG_0_REG			0x0018
4754d0a0269Spatrick #define     MVPP2_PORT_FIFO_CFG_0_TX_FIFO_HIGH_WM	(0xff << 0)
4764d0a0269Spatrick #define     MVPP2_PORT_FIFO_CFG_0_TX_FIFO_LOW_WM	(0xff << 8)
4771a945772Spatrick 
4781a945772Spatrick /* Port Fifo Configuration 1 */
4794d0a0269Spatrick #define MVPP2_PORT_FIFO_CFG_1_REG			0x001c
4804d0a0269Spatrick #define     MVPP2_PORT_FIFO_CFG_1_RX_FIFO_MAX_TH	(0x3f << 0)
4814d0a0269Spatrick #define     MVPP2_PORT_FIFO_CFG_1_TX_FIFO_MIN_TH	(0xff << 6)
4824d0a0269Spatrick #define     MVPP2_PORT_FIFO_CFG_1_PORT_EN_FIX_EN	BIT(15)
4831a945772Spatrick 
4841a945772Spatrick /* Port Serdes Configuration0 */
4854d0a0269Spatrick #define MVPP2_PORT_SERDES_CFG0_REG			0x0028
4864d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG0_SERDESRESET		BIT(0)
4874d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG0_PU_TX		BIT(1)
4884d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG0_PU_RX		BIT(2)
4894d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG0_PU_PLL		BIT(3)
4904d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG0_PU_IVREF		BIT(4)
4914d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG0_TESTEN		BIT(5)
4924d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG0_DPHER_EN		BIT(6)
4934d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG0_RUDI_INVALID_ENABLE	BIT(7)
4944d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG0_ACK_OVERRIDE_ENABLE	BIT(8)
4954d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG0_CONFIG_WORD_ENABLE	BIT(9)
4964d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG0_SYNC_FAIL_INT_ENABLE	BIT(10)
4974d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG0_MASTER_MODE_ENABLE	BIT(11)
4984d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG0_TERM75_TX		BIT(12)
4994d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG0_OUTAMP		BIT(13)
5004d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG0_BTS712_FIX_EN	BIT(14)
5014d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG0_BTS156_FIX_EN	BIT(15)
5021a945772Spatrick 
5031a945772Spatrick /* Port Serdes Configuration1 */
5044d0a0269Spatrick #define MVPP2_PORT_SERDES_CFG1_REG					0x002c
5054d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG1_SMII_RX_10MB_CLK_EDGE_SEL		BIT(0)
5064d0a0269Spatrick #define     MVPP2_GMAC_PORT_SERDES_CFG1_SMII_TX_10MB_CLK_EDGE_SEL	BIT(1)
5074d0a0269Spatrick #define     MVPP2_GMAC_PORT_SERDES_CFG1_MEN				(0x3 << 2)
5084d0a0269Spatrick #define     MVPP2_GMAC_PORT_SERDES_CFG1_VCMS				BIT(4)
5094d0a0269Spatrick #define     MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_USE_SIGDET		BIT(5)
5104d0a0269Spatrick #define     MVPP2_GMAC_PORT_SERDES_CFG1_EN_CRS_MASK_TX			BIT(6)
5114d0a0269Spatrick #define     MVPP2_GMAC_PORT_SERDES_CFG1_100FX_ENABLE			BIT(7)
5124d0a0269Spatrick #define     MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_PHY_ADDRESS		(0x1f << 8)
5134d0a0269Spatrick #define     MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_SIGDET_POLARITY	BIT(13)
5144d0a0269Spatrick #define     MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_INTERRUPT_POLARITY	BIT(14)
5154d0a0269Spatrick #define     MVPP2_GMAC_PORT_SERDES_CFG1_100FX_PCS_SERDES_POLARITY	BIT(15)
5161a945772Spatrick 
5171a945772Spatrick /* Port Serdes Configuration2 */
5184d0a0269Spatrick #define MVPP2_PORT_SERDES_CFG2_REG			0x0030
5194d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG2_AN_ADV_CONFIGURATION	(0xffff << 0)
5201a945772Spatrick 
5211a945772Spatrick /* Port Serdes Configuration3 */
5224d0a0269Spatrick #define MVPP2_PORT_SERDES_CFG3_REG			0x0034
5234d0a0269Spatrick #define     MVPP2_PORT_SERDES_CFG3_ABILITY_MATCH_STATUS	(0xffff << 0)
5241a945772Spatrick 
5251a945772Spatrick /* Port Prbs Status */
5264d0a0269Spatrick #define MVPP2_PORT_PRBS_STATUS_REG			0x0038
5274d0a0269Spatrick #define     MVPP2_PORT_PRBS_STATUS_PRBSCHECK_LOCKED	BIT(0)
5284d0a0269Spatrick #define     MVPP2_PORT_PRBS_STATUS_PRBSCHECKRDY		BIT(1)
5291a945772Spatrick 
5301a945772Spatrick /* Port Prbs Error Counter */
5314d0a0269Spatrick #define MVPP2_PORT_PRBS_ERR_CNTR_REG			0x003c
5324d0a0269Spatrick #define     MVPP2_PORT_PRBS_ERR_CNTR_PRBSBITERRCNT	(0xffff << 0)
5331a945772Spatrick 
5341a945772Spatrick /* Port Status1 */
5354d0a0269Spatrick #define MVPP2_PORT_STATUS1_REG				0x0040
5364d0a0269Spatrick #define     MVPP2_PORT_STATUS1_MEDIAACTIVE		BIT(0)
5371a945772Spatrick 
5381a945772Spatrick /* Port Mib Counters Control */
5394d0a0269Spatrick #define MVPP2_PORT_MIB_CNTRS_CTRL_REG				0x0044
5404d0a0269Spatrick #define     MVPP2_PORT_MIB_CNTRS_CTRL_MIB_COPY_TRIGGER		BIT(0)
5414d0a0269Spatrick #define     MVPP2_PORT_MIB_CNTRS_CTRL_MIB_CLEAR_ON_READ		BIT(1)
5424d0a0269Spatrick #define     MVPP2_PORT_MIB_CNTRS_CTRL_RX_HISTOGRAM_EN		BIT(2)
5434d0a0269Spatrick #define     MVPP2_PORT_MIB_CNTRS_CTRL_TX_HISTOGRAM_EN		BIT(3)
5444d0a0269Spatrick #define     MVPP2_PORT_MIB_CNTRS_CTRL_MFA1_BTT940_FIX_ENABLE	BIT(4)
5454d0a0269Spatrick #define     MVPP2_PORT_MIB_CNTRS_CTRL_XCAT_BTS_340_EN		BIT(5)
5464d0a0269Spatrick #define     MVPP2_PORT_MIB_CNTRS_CTRL_MIB_4_COUNT_HIST		BIT(6)
5474d0a0269Spatrick #define     MVPP2_PORT_MIB_CNTRS_CTRL_MIB_4_LIMIT_1518_1522	BIT(7)
5481a945772Spatrick 
5491a945772Spatrick /* Port Mac Control3 */
5504d0a0269Spatrick #define MVPP2_PORT_CTRL3_REG				0x0048
5514d0a0269Spatrick #define   MVPP2_PORT_CTRL3_BUF_SIZE			(0x3f << 0)
5524d0a0269Spatrick #define   MVPP2_PORT_CTRL3_IPG_DATA			(0x1ff << 6)
5534d0a0269Spatrick #define   MVPP2_PORT_CTRL3_LLFC_GLOBAL_FC_ENABLE	BIT(15)
5541a945772Spatrick 
5551a945772Spatrick /* Port Mac Control4 */
5564d0a0269Spatrick #define MVPP2_PORT_CTRL4_REG				0x0090
5574d0a0269Spatrick #define     MVPP2_PORT_CTRL4_EXT_PIN_GMII_SEL		BIT(0)
5584d0a0269Spatrick #define     MVPP2_PORT_CTRL4_PREAMBLE_FIX		BIT(1)
5594d0a0269Spatrick #define     MVPP2_PORT_CTRL4_SQ_DETECT_FIX_EN		BIT(2)
5604d0a0269Spatrick #define     MVPP2_PORT_CTRL4_FC_EN_RX			BIT(3)
5614d0a0269Spatrick #define     MVPP2_PORT_CTRL4_FC_EN_TX			BIT(4)
5624d0a0269Spatrick #define     MVPP2_PORT_CTRL4_DP_CLK_SEL			BIT(5)
5634d0a0269Spatrick #define     MVPP2_PORT_CTRL4_SYNC_BYPASS		BIT(6)
5644d0a0269Spatrick #define     MVPP2_PORT_CTRL4_QSGMII_BYPASS_ACTIVE	BIT(7)
5654d0a0269Spatrick #define     MVPP2_PORT_CTRL4_COUNT_EXTERNAL_FC_EN	BIT(8)
5664d0a0269Spatrick #define     MVPP2_PORT_CTRL4_MARVELL_HEADER_EN		BIT(9)
5674d0a0269Spatrick #define     MVPP2_PORT_CTRL4_LEDS_NUMBER		BIT(10)
5681a945772Spatrick 
569b3a1ec52Spatrick /* SMI registers */
570b3a1ec52Spatrick #define MVPP22_SMI_MISC_CFG_REG				0x1204
571b3a1ec52Spatrick #define     MVPP22_SMI_POLLING_EN			BIT(10)
572b3a1ec52Spatrick 
5734d0a0269Spatrick #define MVPP2_CAUSE_TXQ_SENT_DESC_ALL_MASK	0xff
5741a945772Spatrick 
575ad54c436Spatrick /* MPCS registers */
576ad54c436Spatrick #define MVPP22_MPCS40G_COMMON_CONTROL			0x14
577ad54c436Spatrick #define     MVPP22_MPCS_FORWARD_ERROR_CORRECTION_MASK	BIT(10)
578ad54c436Spatrick #define MVPP22_MPCS_CLOCK_RESET				0x14c
5794d0a0269Spatrick #define     MVPP22_MPCS_TX_SD_CLK_RESET			BIT(0)
5804d0a0269Spatrick #define     MVPP22_MPCS_RX_SD_CLK_RESET			BIT(1)
5814d0a0269Spatrick #define     MVPP22_MPCS_MAC_CLK_RESET			BIT(2)
5824d0a0269Spatrick #define     MVPP22_MPCS_CLK_DIVISION_RATIO_MASK		(0x7 << 4)
5834d0a0269Spatrick #define     MVPP22_MPCS_CLK_DIVISION_RATIO_DEFAULT	(0x1 << 4)
5844d0a0269Spatrick #define     MVPP22_MPCS_CLK_DIV_PHASE_SET		BIT(11)
585ad54c436Spatrick 
586ad54c436Spatrick /* XPCS registers */
5871a945772Spatrick #define MVPP22_XPCS_GLOBAL_CFG_0_REG			0x0
5881a945772Spatrick #define     MVPP22_XPCS_PCSRESET			BIT(0)
5891a945772Spatrick #define     MVPP22_XPCS_PCSMODE_OFFS			3
5901a945772Spatrick #define     MVPP22_XPCS_PCSMODE_MASK			(0x3 << MVPP22_XPCS_PCSMODE_OFFS)
5911a945772Spatrick #define     MVPP22_XPCS_LANEACTIVE_OFFS			5
5921a945772Spatrick #define     MVPP22_XPCS_LANEACTIVE_MASK			(0x3 << MVPP22_XPCS_LANEACTIVE_OFFS)
5931a945772Spatrick 
59409e5d825Spatrick /* System controller registers. Accessed through a regmap. */
59509e5d825Spatrick #define GENCONF_SOFT_RESET1				0x1108
59609e5d825Spatrick #define     GENCONF_SOFT_RESET1_GOP			BIT(6)
59709e5d825Spatrick #define GENCONF_PORT_CTRL0				0x1110
59809e5d825Spatrick #define     GENCONF_PORT_CTRL0_BUS_WIDTH_SELECT		BIT(1)
59909e5d825Spatrick #define     GENCONF_PORT_CTRL0_RX_DATA_SAMPLE		BIT(29)
60009e5d825Spatrick #define     GENCONF_PORT_CTRL0_CLK_DIV_PHASE_CLR	BIT(31)
60109e5d825Spatrick #define GENCONF_PORT_CTRL1				0x1114
60209e5d825Spatrick #define     GENCONF_PORT_CTRL1_EN(p)			BIT(p)
60309e5d825Spatrick #define     GENCONF_PORT_CTRL1_RESET(p)			(BIT(p) << 28)
60409e5d825Spatrick #define GENCONF_CTRL0					0x1120
60509e5d825Spatrick #define     GENCONF_CTRL0_PORT0_RGMII			BIT(0)
60609e5d825Spatrick #define     GENCONF_CTRL0_PORT1_RGMII_MII		BIT(1)
60709e5d825Spatrick #define     GENCONF_CTRL0_PORT1_RGMII			BIT(2)
60809e5d825Spatrick 
6091a945772Spatrick /* Various constants */
6101a945772Spatrick 
6111a945772Spatrick /* Coalescing */
6121a945772Spatrick #define MVPP2_TXDONE_COAL_PKTS_THRESH	64
6131a945772Spatrick #define MVPP2_TXDONE_HRTIMER_PERIOD_NS	1000000UL
6141a945772Spatrick #define MVPP2_TXDONE_COAL_USEC		1000
6151a945772Spatrick #define MVPP2_RX_COAL_PKTS		32
6161a945772Spatrick #define MVPP2_RX_COAL_USEC		64
6171a945772Spatrick 
6181a945772Spatrick /*
6191a945772Spatrick  * The two bytes Marvell header. Either contains a special value used
6201a945772Spatrick  * by Marvell switches when a specific hardware mode is enabled (not
6211a945772Spatrick  * supported by this driver) or is filled automatically by zeroes on
6221a945772Spatrick  * the RX side. Those two bytes being at the front of the Ethernet
6231a945772Spatrick  * header, they allow to have the IP header aligned on a 4 bytes
6241a945772Spatrick  * boundary automatically: the hardware skips those two bytes on its
6251a945772Spatrick  * own.
6261a945772Spatrick  */
6271a945772Spatrick #define MVPP2_MH_SIZE			2
6281a945772Spatrick #define MVPP2_ETH_TYPE_LEN		2
6291a945772Spatrick #define MVPP2_PPPOE_HDR_SIZE		8
6301a945772Spatrick #define MVPP2_VLAN_TAG_LEN		4
6311a945772Spatrick 
6321a945772Spatrick /* Lbtd 802.3 type */
6331a945772Spatrick #define MVPP2_IP_LBDT_TYPE		0xfffa
6341a945772Spatrick 
6351a945772Spatrick #define MVPP2_CPU_D_CACHE_LINE_SIZE	32
6361a945772Spatrick #define MVPP2_TX_CSUM_MAX_SIZE		9800
6371a945772Spatrick 
6381a945772Spatrick /* Timeout constants */
6391a945772Spatrick #define MVPP2_TX_DISABLE_TIMEOUT_MSEC	1000
6401a945772Spatrick #define MVPP2_TX_PENDING_TIMEOUT_MSEC	1000
6411a945772Spatrick 
6421a945772Spatrick #define MVPP2_TX_MTU_MAX		0x7ffff
6431a945772Spatrick 
6441a945772Spatrick /* Maximum number of T-CONTs of PON port */
6451a945772Spatrick #define MVPP2_MAX_TCONT			16
6461a945772Spatrick 
6471a945772Spatrick /* Maximum number of supported ports */
6481a945772Spatrick #define MVPP2_MAX_PORTS			4
6491a945772Spatrick 
6501a945772Spatrick /* Maximum number of TXQs used by single port */
6511a945772Spatrick #define MVPP2_MAX_TXQ			8
6521a945772Spatrick 
6531a945772Spatrick /* Maximum number of RXQs used by single port */
6541a945772Spatrick #define MVPP2_MAX_RXQ			8
6551a945772Spatrick 
656*4b1a56afSjsg /* Default number of RXQs in use */
6571a945772Spatrick #define MVPP2_DEFAULT_RXQ		4
6581a945772Spatrick 
6591a945772Spatrick /* Total number of RXQs available to all ports */
6601a945772Spatrick #define MVPP2_RXQ_TOTAL_NUM		(MVPP2_MAX_PORTS * MVPP2_MAX_RXQ)
6611a945772Spatrick 
6621a945772Spatrick /* Max number of Rx descriptors */
6631a945772Spatrick #define MVPP2_MAX_RXD			64
6641a945772Spatrick 
6651a945772Spatrick /* Max number of Tx descriptors */
6661a945772Spatrick #define MVPP2_MAX_TXD			32
6671a945772Spatrick 
6681a945772Spatrick /* Amount of Tx descriptors that can be reserved at once by CPU */
6691a945772Spatrick #define MVPP2_CPU_DESC_CHUNK		64
6701a945772Spatrick 
6711a945772Spatrick /* Max number of Tx descriptors in each aggregated queue */
6721a945772Spatrick #define MVPP2_AGGR_TXQ_SIZE		256
6731a945772Spatrick 
6741a945772Spatrick /* Descriptor aligned size */
6751a945772Spatrick #define MVPP2_DESC_ALIGNED_SIZE		32
6761a945772Spatrick 
6771a945772Spatrick /* Descriptor alignment mask */
6781a945772Spatrick #define MVPP2_TX_DESC_ALIGN		(MVPP2_DESC_ALIGNED_SIZE - 1)
6791a945772Spatrick 
6801a945772Spatrick /* RX FIFO constants */
6811a945772Spatrick #define MVPP2_RX_FIFO_PORT_DATA_SIZE_32KB	0x8000
6821a945772Spatrick #define MVPP2_RX_FIFO_PORT_DATA_SIZE_8KB	0x2000
6831a945772Spatrick #define MVPP2_RX_FIFO_PORT_DATA_SIZE_4KB	0x1000
6841a945772Spatrick #define MVPP2_RX_FIFO_PORT_ATTR_SIZE_32KB	0x200
6851a945772Spatrick #define MVPP2_RX_FIFO_PORT_ATTR_SIZE_8KB	0x80
6861a945772Spatrick #define MVPP2_RX_FIFO_PORT_ATTR_SIZE_4KB	0x40
6871a945772Spatrick #define MVPP2_RX_FIFO_PORT_MIN_PKT		0x80
6881a945772Spatrick 
6891a945772Spatrick /* TX FIFO constants */
6901a945772Spatrick #define MVPP22_TX_FIFO_DATA_SIZE_10KB		0xa
6911a945772Spatrick #define MVPP22_TX_FIFO_DATA_SIZE_3KB		0x3
6921a945772Spatrick #define MVPP2_TX_FIFO_THRESHOLD_MIN		256
6931a945772Spatrick #define MVPP2_TX_FIFO_THRESHOLD_10KB	\
6941a945772Spatrick 	(MVPP22_TX_FIFO_DATA_SIZE_10KB * 1024 - MVPP2_TX_FIFO_THRESHOLD_MIN)
6951a945772Spatrick #define MVPP2_TX_FIFO_THRESHOLD_3KB	\
6961a945772Spatrick 	(MVPP22_TX_FIFO_DATA_SIZE_3KB * 1024 - MVPP2_TX_FIFO_THRESHOLD_MIN)
6971a945772Spatrick 
6981a945772Spatrick #define MVPP2_BIT_TO_BYTE(bit)		((bit) / 8)
6991a945772Spatrick 
7001a945772Spatrick /* IPv6 max L3 address size */
7011a945772Spatrick #define MVPP2_MAX_L3_ADDR_SIZE		16
7021a945772Spatrick 
7031a945772Spatrick /* Port flags */
7041a945772Spatrick #define MVPP2_F_LOOPBACK		BIT(0)
7051a945772Spatrick 
7061a945772Spatrick /* SD1 Control1 */
7074d0a0269Spatrick #define SD1_CONTROL_1_REG			0x148
7084d0a0269Spatrick #define     SD1_CONTROL_RXAUI1_L45_EN_MASK	BIT(26)
7094d0a0269Spatrick #define     SD1_CONTROL_RXAUI0_L23_EN_MASK	BIT(27)
7104d0a0269Spatrick #define     SD1_CONTROL_XAUI_EN_MASK		BIT(28)
7111a945772Spatrick 
7121a945772Spatrick /* System Soft Reset 1 */
7134d0a0269Spatrick #define MV_GOP_SOFT_RESET_1_REG			0x108
7144d0a0269Spatrick #define     NETC_GOP_SOFT_RESET			BIT(6)
7151a945772Spatrick 
7161a945772Spatrick /* Ports Control 0 */
7174d0a0269Spatrick #define MV_NETCOMP_PORTS_CONTROL_0		0x110
7184d0a0269Spatrick #define     NETC_GOP_ENABLE_MASK		BIT(0)
7194d0a0269Spatrick #define     NETC_BUS_WIDTH_SELECT_MASK		BIT(1)
7204d0a0269Spatrick #define     NETC_GIG_RX_DATA_SAMPLE_MASK	BIT(29)
7214d0a0269Spatrick #define     NETC_CLK_DIV_PHASE_MASK		BIT(31)
7221a945772Spatrick 
7231a945772Spatrick /* Ports Control 1 */
7244d0a0269Spatrick #define MV_NETCOMP_PORTS_CONTROL_1		0x114
7254d0a0269Spatrick #define     NETC_PORTS_ACTIVE_MASK(port)	(1 << (port))
7264d0a0269Spatrick #define     NETC_PORT_GIG_RF_RESET_MASK(port)	(1 << (28 + (port)))
7271a945772Spatrick 
7281a945772Spatrick /* Ports Status */
7294d0a0269Spatrick #define MV_NETCOMP_PORTS_STATUS			0x11C
7304d0a0269Spatrick #define     NETC_PORTS_STATUS_MASK(port)	(1 << (port))
7311a945772Spatrick 
7321a945772Spatrick /* Networking Complex Control 0 */
7334d0a0269Spatrick #define MV_NETCOMP_CONTROL_0			0x120
7344d0a0269Spatrick #define     NETC_GBE_PORT0_SGMII_MODE_MASK	BIT(0)
7354d0a0269Spatrick #define     NETC_GBE_PORT1_SGMII_MODE_MASK	BIT(1)
7364d0a0269Spatrick #define     NETC_GBE_PORT1_MII_MODE_MASK	BIT(2)
7371a945772Spatrick 
7381a945772Spatrick /* Port Mac Control0 */
7394d0a0269Spatrick #define MV_XLG_PORT_MAC_CTRL0_REG			0x0000
7404d0a0269Spatrick #define     MV_XLG_MAC_CTRL0_PORTEN			BIT(0)
7414d0a0269Spatrick #define     MV_XLG_MAC_CTRL0_MACRESETN			BIT(1)
7424d0a0269Spatrick #define     MV_XLG_MAC_CTRL0_FORCELINKDOWN		BIT(2)
7434d0a0269Spatrick #define     MV_XLG_MAC_CTRL0_FORCELINKPASS		BIT(3)
7444d0a0269Spatrick #define     MV_XLG_MAC_CTRL0_TXIPGMODE			(0x3 << 5)
7454d0a0269Spatrick #define     MV_XLG_MAC_CTRL0_RXFCEN			BIT(7)
7464d0a0269Spatrick #define     MV_XLG_MAC_CTRL0_TXFCEN			BIT(8)
7474d0a0269Spatrick #define     MV_XLG_MAC_CTRL0_RXCRCCHECKEN		BIT(9)
7484d0a0269Spatrick #define     MV_XLG_MAC_CTRL0_PERIODICXONEN		BIT(10)
7494d0a0269Spatrick #define     MV_XLG_MAC_CTRL0_RXCRCSTRIPEN		BIT(11)
7504d0a0269Spatrick #define     MV_XLG_MAC_CTRL0_PADDINGDIS			BIT(13)
7514d0a0269Spatrick #define     MV_XLG_MAC_CTRL0_MIBCNTDIS			BIT(14)
7524d0a0269Spatrick #define     MV_XLG_MAC_CTRL0_PFC_CASCADE_PORT_ENABLE	BIT(15)
7531a945772Spatrick 
7541a945772Spatrick /* Port Mac Control1 */
7554d0a0269Spatrick #define MV_XLG_PORT_MAC_CTRL1_REG			0x0004
7561a945772Spatrick #define     MV_XLG_MAC_CTRL1_FRAMESIZELIMIT_OFFS	0
7574d0a0269Spatrick #define     MV_XLG_MAC_CTRL1_FRAMESIZELIMIT_MASK	0x1fff
7581a945772Spatrick #define     MV_XLG_MAC_CTRL1_FRAMESIZELIMIT_DEFAULT	0x1400
7594d0a0269Spatrick #define     MV_XLG_MAC_CTRL1_MACLOOPBACKEN		BIT(13)
7604d0a0269Spatrick #define     MV_XLG_MAC_CTRL1_XGMIILOOPBACKEN		BIT(14)
7614d0a0269Spatrick #define     MV_XLG_MAC_CTRL1_LOOPBACKCLOCKSELECT	BIT(15)
7621a945772Spatrick 
7631a945772Spatrick /* Port Mac Control2 */
7644d0a0269Spatrick #define MV_XLG_PORT_MAC_CTRL2_REG			0x0008
7654d0a0269Spatrick #define     MV_XLG_MAC_CTRL2_SALOW_7_0			(0xff << 0)
7664d0a0269Spatrick #define     MV_XLG_MAC_CTRL2_UNIDIRECTIONALEN		BIT(8)
7674d0a0269Spatrick #define     MV_XLG_MAC_CTRL2_FIXEDIPGBASE		BIT(9)
7684d0a0269Spatrick #define     MV_XLG_MAC_CTRL2_PERIODICXOFFEN		BIT(10)
7694d0a0269Spatrick #define     MV_XLG_MAC_CTRL2_SIMPLEXMODEEN		BIT(13)
7704d0a0269Spatrick #define     MV_XLG_MAC_CTRL2_FC_MODE			(0x3 << 14)
7711a945772Spatrick 
7721a945772Spatrick /* Port Status */
7734d0a0269Spatrick #define MV_XLG_MAC_PORT_STATUS_REG			0x000c
7744d0a0269Spatrick #define     MV_XLG_MAC_PORT_STATUS_LINKSTATUS		BIT(0)
7754d0a0269Spatrick #define     MV_XLG_MAC_PORT_STATUS_REMOTEFAULT		BIT(1)
7764d0a0269Spatrick #define     MV_XLG_MAC_PORT_STATUS_LOCALFAULT		BIT(2)
7774d0a0269Spatrick #define     MV_XLG_MAC_PORT_STATUS_LINKSTATUSCLEAN	BIT(3)
7784d0a0269Spatrick #define     MV_XLG_MAC_PORT_STATUS_LOCALFAULTCLEAN	BIT(4)
7794d0a0269Spatrick #define     MV_XLG_MAC_PORT_STATUS_REMOTEFAULTCLEAN	BIT(5)
7804d0a0269Spatrick #define     MV_XLG_MAC_PORT_STATUS_PORTRXPAUSE		BIT(6)
7814d0a0269Spatrick #define     MV_XLG_MAC_PORT_STATUS_PORTTXPAUSE		BIT(7)
7824d0a0269Spatrick #define     MV_XLG_MAC_PORT_STATUS_PFC_SYNC_FIFO_FULL	BIT(8)
7831a945772Spatrick 
7841a945772Spatrick /* Port Fifos Thresholds Configuration */
7854d0a0269Spatrick #define MV_XLG_PORT_FIFOS_THRS_CFG_REG			0x0010
7864d0a0269Spatrick #define     MV_XLG_MAC_PORT_FIFOS_THRS_CFG_RXFULLTHR	(0x1f << 0)
7874d0a0269Spatrick #define     MV_XLG_MAC_PORT_FIFOS_THRS_CFG_TXFIFOSIZE	(0x3f << 5)
7884d0a0269Spatrick #define     MV_XLG_MAC_PORT_FIFOS_THRS_CFG_TXRDTHR	(0x1f << 11)
7891a945772Spatrick 
7901a945772Spatrick /* Port Mac Control3 */
7914d0a0269Spatrick #define MV_XLG_PORT_MAC_CTRL3_REG			0x001c
7924d0a0269Spatrick #define     MV_XLG_MAC_CTRL3_BUFSIZE			(0x3f << 0)
7934d0a0269Spatrick #define     MV_XLG_MAC_CTRL3_XTRAIPG			(0x7f << 6)
7944d0a0269Spatrick #define     MV_XLG_MAC_CTRL3_MACMODESELECT_MASK		(0x7 << 13)
7954d0a0269Spatrick #define     MV_XLG_MAC_CTRL3_MACMODESELECT_GMAC		(0x0 << 13)
7964d0a0269Spatrick #define     MV_XLG_MAC_CTRL3_MACMODESELECT_10G		(0x1 << 13)
7971a945772Spatrick 
7981a945772Spatrick /* Port Per Prio Flow Control Status */
7994d0a0269Spatrick #define MV_XLG_PORT_PER_PRIO_FLOW_CTRL_STATUS_REG			0x0020
8004d0a0269Spatrick #define     MV_XLG_MAC_PORT_PER_PRIO_FLOW_CTRL_STATUS_PRIONSTATUS	BIT(0)
8011a945772Spatrick 
8021a945772Spatrick /* Debug Bus Status */
8034d0a0269Spatrick #define MV_XLG_DEBUG_BUS_STATUS_REG			0x0024
8044d0a0269Spatrick #define     MV_XLG_MAC_DEBUG_BUS_STATUS_DEBUG_BUS	(0xffff << 0)
8051a945772Spatrick 
8061a945772Spatrick /* Port Metal Fix */
8074d0a0269Spatrick #define MV_XLG_PORT_METAL_FIX_REG			0x002c
8084d0a0269Spatrick #define     MV_XLG_MAC_PORT_METAL_FIX_EN_EOP_IN_FIFO	BIT(0)
8094d0a0269Spatrick #define     MV_XLG_MAC_PORT_METAL_FIX_EN_LTF_FIX	BIT(1)
8104d0a0269Spatrick #define     MV_XLG_MAC_PORT_METAL_FIX_EN_HOLD_FIX	BIT(2)
8114d0a0269Spatrick #define     MV_XLG_MAC_PORT_METAL_FIX_EN_LED_FIX	BIT(3)
8124d0a0269Spatrick #define     MV_XLG_MAC_PORT_METAL_FIX_EN_PAD_PROTECT	BIT(4)
8134d0a0269Spatrick #define     MV_XLG_MAC_PORT_METAL_FIX_EN_NX_BTS44	BIT(5)
8144d0a0269Spatrick #define     MV_XLG_MAC_PORT_METAL_FIX_EN_NX_BTS42	BIT(6)
8154d0a0269Spatrick #define     MV_XLG_MAC_PORT_METAL_FIX_EN_FLUSH_FIX	BIT(7)
8164d0a0269Spatrick #define     MV_XLG_MAC_PORT_METAL_FIX_EN_PORT_EN_FIX	BIT(8)
8174d0a0269Spatrick #define     MV_XLG_MAC_PORT_METAL_FIX_SPARE_DEF0_BITS	(0xf << 9)
8184d0a0269Spatrick #define     MV_XLG_MAC_PORT_METAL_FIX_SPARE_DEF1_BITS	(0x7 << 13)
8191a945772Spatrick 
8201a945772Spatrick /* Xg Mib Counters Control */
8214d0a0269Spatrick #define MV_XLG_MIB_CNTRS_CTRL_REG				0x0030
8224d0a0269Spatrick #define     MV_XLG_MAC_XG_MIB_CNTRS_CTRL_XGCAPTURETRIGGER	BIT(0)
8234d0a0269Spatrick #define     MV_XLG_MAC_XG_MIB_CNTRS_CTRL_XGDONTCLEARAFTERREAD	BIT(1)
8244d0a0269Spatrick #define     MV_XLG_MAC_XG_MIB_CNTRS_CTRL_XGRXHISTOGRAMEN	BIT(2)
8254d0a0269Spatrick #define     MV_XLG_MAC_XG_MIB_CNTRS_CTRL_XGTXHISTOGRAMEN	BIT(3)
8264d0a0269Spatrick #define     MV_XLG_MAC_XG_MIB_CNTRS_CTRL_MFA1_BTT940_FIX_ENABLE	BIT(4)
8274d0a0269Spatrick #define     MV_XLG_MAC_XG_MIB_CNTRS_CTRL_LEDS_NUMBER		(0x3f << 5)
8284d0a0269Spatrick #define     MV_XLG_MAC_XG_MIB_CNTRS_CTRL_MIB_4_COUNT_HIST	BIT(11)
8294d0a0269Spatrick #define     MV_XLG_MAC_XG_MIB_CNTRS_CTRL_MIB_4_LIMIT_1518_1522	BIT(12)
8301a945772Spatrick 
8311a945772Spatrick /* Cn/ccfc Timer%i */
8321a945772Spatrick #define MV_XLG_CNCCFC_TIMERI_REG(t)			((0x0038 + (t) * 4))
8334d0a0269Spatrick #define     MV_XLG_MAC_CNCCFC_TIMERI_PORTSPEEDTIMER	(0xffff << 0)
8341a945772Spatrick 
8351a945772Spatrick /* Ppfc Control */
8364d0a0269Spatrick #define MV_XLG_MAC_PPFC_CTRL_REG			0x0060
8374d0a0269Spatrick #define     MV_XLG_MAC_PPFC_CTRL_GLOBAL_PAUSE_ENI	BIT(0)
8384d0a0269Spatrick #define     MV_XLG_MAC_PPFC_CTRL_DIP_BTS_677_EN		BIT(9)
8391a945772Spatrick 
8401a945772Spatrick /* Fc Dsa Tag 0 */
8414d0a0269Spatrick #define MV_XLG_MAC_FC_DSA_TAG_0_REG			0x0068
8424d0a0269Spatrick #define     MV_XLG_MAC_FC_DSA_TAG_0_DSATAGREG0		(0xffff << 0)
8431a945772Spatrick 
8441a945772Spatrick /* Fc Dsa Tag 1 */
8454d0a0269Spatrick #define MV_XLG_MAC_FC_DSA_TAG_1_REG			0x006c
8464d0a0269Spatrick #define     MV_XLG_MAC_FC_DSA_TAG_1_DSATAGREG1		(0xffff << 0)
8471a945772Spatrick 
8481a945772Spatrick /* Fc Dsa Tag 2 */
8494d0a0269Spatrick #define MV_XLG_MAC_FC_DSA_TAG_2_REG			0x0070
8504d0a0269Spatrick #define     MV_XLG_MAC_FC_DSA_TAG_2_DSATAGREG2		(0xffff << 0)
8511a945772Spatrick 
8521a945772Spatrick /* Fc Dsa Tag 3 */
8534d0a0269Spatrick #define MV_XLG_MAC_FC_DSA_TAG_3_REG			0x0074
8544d0a0269Spatrick #define     MV_XLG_MAC_FC_DSA_TAG_3_DSATAGREG3		(0xffff << 0)
8551a945772Spatrick 
8561a945772Spatrick /* Dic Budget Compensation */
8574d0a0269Spatrick #define MV_XLG_MAC_DIC_BUDGET_COMPENSATION_REG		0x0080
8584d0a0269Spatrick #define     MV_XLG_MAC_DIC_BUDGET_COMPENSATION_DIC_COUNTER_TO_ADD_8BYTES (0xffff << 0)
8591a945772Spatrick 
8601a945772Spatrick /* Port Mac Control4 */
8614d0a0269Spatrick #define MV_XLG_PORT_MAC_CTRL4_REG				0x0084
8624d0a0269Spatrick #define     MV_XLG_MAC_CTRL4_LLFC_GLOBAL_FC_ENABLE		BIT(0)
8634d0a0269Spatrick #define     MV_XLG_MAC_CTRL4_LED_STREAM_SELECT			BIT(1)
8644d0a0269Spatrick #define     MV_XLG_MAC_CTRL4_DEBUG_BUS_SELECT			BIT(2)
8654d0a0269Spatrick #define     MV_XLG_MAC_CTRL4_MASK_PCS_RESET			BIT(3)
8664d0a0269Spatrick #define     MV_XLG_MAC_CTRL4_ENABLE_SHORT_PREAMBLE_FOR_XLG	BIT(4)
8674d0a0269Spatrick #define     MV_XLG_MAC_CTRL4_FORWARD_802_3X_FC_EN		BIT(5)
8684d0a0269Spatrick #define     MV_XLG_MAC_CTRL4_FORWARD_PFC_EN			BIT(6)
8694d0a0269Spatrick #define     MV_XLG_MAC_CTRL4_FORWARD_UNKNOWN_FC_EN		BIT(7)
8704d0a0269Spatrick #define     MV_XLG_MAC_CTRL4_USE_XPCS				BIT(8)
8714d0a0269Spatrick #define     MV_XLG_MAC_CTRL4_DMA_INTERFACE_IS_64_BIT		BIT(9)
8724d0a0269Spatrick #define     MV_XLG_MAC_CTRL4_TX_DMA_INTERFACE_BITS		(0x3 << 10)
8734d0a0269Spatrick #define     MV_XLG_MAC_CTRL4_MAC_MODE_DMA_1G			BIT(12)
8744d0a0269Spatrick #define     MV_XLG_MAC_CTRL4_EN_IDLE_CHECK_FOR_LINK		BIT(14)
8751a945772Spatrick 
8761a945772Spatrick /* Port Mac Control5 */
8774d0a0269Spatrick #define MV_XLG_PORT_MAC_CTRL5_REG			0x0088
8784d0a0269Spatrick #define     MV_XLG_MAC_CTRL5_TXIPGLENGTH		(0xf << 0)
8794d0a0269Spatrick #define     MV_XLG_MAC_CTRL5_PREAMBLELENGTHTX		(0x7 << 4)
8804d0a0269Spatrick #define     MV_XLG_MAC_CTRL5_PREAMBLELENGTHRX		(0x7 << 7)
8814d0a0269Spatrick #define     MV_XLG_MAC_CTRL5_TXNUMCRCBYTES		(0x7 << 10)
8824d0a0269Spatrick #define     MV_XLG_MAC_CTRL5_RXNUMCRCBYTES		(0x7 << 13)
8831a945772Spatrick 
8841a945772Spatrick /* External Control */
8854d0a0269Spatrick #define MV_XLG_MAC_EXT_CTRL_REG				0x0090
8864d0a0269Spatrick #define     MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL0		BIT(0)
8874d0a0269Spatrick #define     MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL1		BIT(1)
8884d0a0269Spatrick #define     MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL2		BIT(2)
8894d0a0269Spatrick #define     MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL3		BIT(3)
8904d0a0269Spatrick #define     MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL4		BIT(4)
8914d0a0269Spatrick #define     MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL5		BIT(5)
8924d0a0269Spatrick #define     MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL6		BIT(6)
8934d0a0269Spatrick #define     MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL7		BIT(7)
8944d0a0269Spatrick #define     MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL8		BIT(8)
8954d0a0269Spatrick #define     MV_XLG_MAC_EXT_CTRL_EXTERNAL_CTRL9		BIT(9)
8964d0a0269Spatrick #define     MV_XLG_MAC_EXT_CTRL_EXT_CTRL_10		BIT(10)
8974d0a0269Spatrick #define     MV_XLG_MAC_EXT_CTRL_EXT_CTRL_11		BIT(11)
8984d0a0269Spatrick #define     MV_XLG_MAC_EXT_CTRL_EXT_CTRL_12		BIT(12)
8994d0a0269Spatrick #define     MV_XLG_MAC_EXT_CTRL_EXT_CTRL_13		BIT(13)
9004d0a0269Spatrick #define     MV_XLG_MAC_EXT_CTRL_EXT_CTRL_14		BIT(14)
9014d0a0269Spatrick #define     MV_XLG_MAC_EXT_CTRL_EXT_CTRL_15		BIT(15)
9021a945772Spatrick 
9031a945772Spatrick /* Macro Control */
9044d0a0269Spatrick #define MV_XLG_MAC_MACRO_CTRL_REG			0x0094
9054d0a0269Spatrick #define     MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_0		BIT(0)
9064d0a0269Spatrick #define     MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_1		BIT(1)
9074d0a0269Spatrick #define     MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_2		BIT(2)
9084d0a0269Spatrick #define     MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_3		BIT(3)
9094d0a0269Spatrick #define     MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_4		BIT(4)
9104d0a0269Spatrick #define     MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_5		BIT(5)
9114d0a0269Spatrick #define     MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_6		BIT(6)
9124d0a0269Spatrick #define     MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_7		BIT(7)
9134d0a0269Spatrick #define     MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_8		BIT(8)
9144d0a0269Spatrick #define     MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_9		BIT(9)
9154d0a0269Spatrick #define     MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_10		BIT(10)
9164d0a0269Spatrick #define     MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_11		BIT(11)
9174d0a0269Spatrick #define     MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_12		BIT(12)
9184d0a0269Spatrick #define     MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_13		BIT(13)
9194d0a0269Spatrick #define     MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_14		BIT(14)
9204d0a0269Spatrick #define     MV_XLG_MAC_MACRO_CTRL_MACRO_CTRL_15		BIT(15)
9211a945772Spatrick 
9224d0a0269Spatrick #define MV_XLG_MAC_DIC_PPM_IPG_REDUCE_REG		0x0094
9231a945772Spatrick 
9241a945772Spatrick /* Port Interrupt Cause */
9254d0a0269Spatrick #define MV_XLG_INTERRUPT_CAUSE_REG			0x0014
9261a945772Spatrick /* Port Interrupt Mask */
9274d0a0269Spatrick #define MV_XLG_INTERRUPT_MASK_REG			0x0018
9284d0a0269Spatrick #define     MV_XLG_SUMMARY_INTERRUPT_MASK		BIT(0)
9294d0a0269Spatrick #define     MV_XLG_INTERRUPT_LINK_CHANGE		BIT(1)
9301a945772Spatrick 
9311a945772Spatrick /* Port Interrupt Summary Cause */
9324d0a0269Spatrick #define MV_XLG_EXTERNAL_INTERRUPT_CAUSE_REG		0x0058
9331a945772Spatrick /* Port Interrupt Summary Mask */
9344d0a0269Spatrick #define MV_XLG_EXTERNAL_INTERRUPT_MASK_REG		0x005C
9354d0a0269Spatrick #define     MV_XLG_EXTERNAL_INTERRUPT_LINK_CHANGE_XLG	BIT(1)
9364d0a0269Spatrick #define     MV_XLG_EXTERNAL_INTERRUPT_LINK_CHANGE_GIG	BIT(2)
9371a945772Spatrick 
9381a945772Spatrick /*All PPV22 Addresses are 40-bit */
9391a945772Spatrick #define MVPP22_ADDR_HIGH_SIZE		8
9401a945772Spatrick #define MVPP22_ADDR_HIGH_MASK		((1 << MVPP22_ADDR_HIGH_SIZE) - 1)
9411a945772Spatrick #define MVPP22_ADDR_MASK		(0xFFFFFFFFFF)
9421a945772Spatrick 
9431a945772Spatrick /* PHY address register */
9441a945772Spatrick #define MV_SMI_PHY_ADDRESS_REG(n)	(0xC + 0x4 * (n))
9451a945772Spatrick #define MV_SMI_PHY_ADDRESS_PHYAD_OFFS	0
946ad54c436Spatrick #define MV_SMI_PHY_ADDRESS_PHYAD_MASK	(0x1F << MV_SMI_PHY_ADDRESS_PHYAD_OFFS)
9471a945772Spatrick 
9481a945772Spatrick /* Marvell tag types */
949017da651Spatrick enum mvpp2_tag_type {
9501a945772Spatrick 	MVPP2_TAG_TYPE_NONE = 0,
9511a945772Spatrick 	MVPP2_TAG_TYPE_MH   = 1,
9521a945772Spatrick 	MVPP2_TAG_TYPE_DSA  = 2,
9531a945772Spatrick 	MVPP2_TAG_TYPE_EDSA = 3,
9541a945772Spatrick 	MVPP2_TAG_TYPE_VLAN = 4,
9551a945772Spatrick 	MVPP2_TAG_TYPE_LAST = 5
9561a945772Spatrick };
9571a945772Spatrick 
9581adf4f54Spatrick /* L2 cast enum */
9591adf4f54Spatrick enum mvpp2_prs_l2_cast {
9601adf4f54Spatrick 	MVPP2_PRS_L2_UNI_CAST,
9611adf4f54Spatrick 	MVPP2_PRS_L2_MULTI_CAST,
9621adf4f54Spatrick };
9631adf4f54Spatrick 
964017da651Spatrick /* L3 cast enum */
965017da651Spatrick enum mvpp2_prs_l3_cast {
966017da651Spatrick 	MVPP2_PRS_L3_UNI_CAST,
967017da651Spatrick 	MVPP2_PRS_L3_MULTI_CAST,
968017da651Spatrick 	MVPP2_PRS_L3_BROAD_CAST
969017da651Spatrick };
970017da651Spatrick 
9711a945772Spatrick /* Parser constants */
9721a945772Spatrick #define MVPP2_PRS_TCAM_SRAM_SIZE	256
9731a945772Spatrick #define MVPP2_PRS_TCAM_WORDS		6
9741a945772Spatrick #define MVPP2_PRS_SRAM_WORDS		4
9751a945772Spatrick #define MVPP2_PRS_FLOW_ID_SIZE		64
9761a945772Spatrick #define MVPP2_PRS_FLOW_ID_MASK		0x3f
9771a945772Spatrick #define MVPP2_PRS_TCAM_ENTRY_INVALID	1
9781a945772Spatrick #define MVPP2_PRS_TCAM_DSA_TAGGED_BIT	BIT(5)
9791a945772Spatrick #define MVPP2_PRS_IPV4_HEAD		0x40
9801a945772Spatrick #define MVPP2_PRS_IPV4_HEAD_MASK	0xf0
9811a945772Spatrick #define MVPP2_PRS_IPV4_MC		0xe0
9821a945772Spatrick #define MVPP2_PRS_IPV4_MC_MASK		0xf0
9831a945772Spatrick #define MVPP2_PRS_IPV4_BC_MASK		0xff
9841a945772Spatrick #define MVPP2_PRS_IPV4_IHL		0x5
9851a945772Spatrick #define MVPP2_PRS_IPV4_IHL_MASK		0xf
9861a945772Spatrick #define MVPP2_PRS_IPV6_MC		0xff
9871a945772Spatrick #define MVPP2_PRS_IPV6_MC_MASK		0xff
9881a945772Spatrick #define MVPP2_PRS_IPV6_HOP_MASK		0xff
9891a945772Spatrick #define MVPP2_PRS_TCAM_PROTO_MASK	0xff
9901a945772Spatrick #define MVPP2_PRS_TCAM_PROTO_MASK_L	0x3f
9911a945772Spatrick #define MVPP2_PRS_DBL_VLANS_MAX		100
99241cd246cSpatrick #define MVPP2_PRS_CAST_MASK		BIT(0)
99341cd246cSpatrick #define MVPP2_PRS_MCAST_VAL		BIT(0)
99441cd246cSpatrick #define MVPP2_PRS_UCAST_VAL		0x0
9951a945772Spatrick 
996ce595ab8Spatrick #define MVPP2_PRS_MAC_RANGE_SIZE	80
997ce595ab8Spatrick #define MVPP2_PRS_MAC_UC_FILT_MAX	4
998ce595ab8Spatrick #define MVPP2_PRS_MAC_MC_FILT_MAX	21
999ce595ab8Spatrick 
10001a945772Spatrick /*
10011a945772Spatrick  * Tcam structure:
10021a945772Spatrick  * - lookup ID - 4 bits
10031a945772Spatrick  * - port ID - 1 byte
10041a945772Spatrick  * - additional information - 1 byte
10051a945772Spatrick  * - header data - 8 bytes
10061a945772Spatrick  * The fields are represented by MVPP2_PRS_TCAM_DATA_REG(5)->(0).
10071a945772Spatrick  */
10081a945772Spatrick #define MVPP2_PRS_AI_BITS			8
10091a945772Spatrick #define MVPP2_PRS_PORT_MASK			0xff
10101a945772Spatrick #define MVPP2_PRS_LU_MASK			0xf
10111a945772Spatrick #define MVPP2_PRS_TCAM_DATA_BYTE(offs)		(((offs) - ((offs) % 2)) * 2 + ((offs) % 2))
10121a945772Spatrick #define MVPP2_PRS_TCAM_DATA_BYTE_EN(offs)	(((offs) * 2) - ((offs) % 2) + 2)
10131a945772Spatrick #define MVPP2_PRS_TCAM_AI_BYTE		16
10141a945772Spatrick #define MVPP2_PRS_TCAM_PORT_BYTE	17
10151a945772Spatrick #define MVPP2_PRS_TCAM_LU_BYTE		20
10161a945772Spatrick #define MVPP2_PRS_TCAM_EN_OFFS(offs)	((offs) + 2)
10171a945772Spatrick #define MVPP2_PRS_TCAM_INV_WORD		5
10181a945772Spatrick /* Tcam entries ID */
10191a945772Spatrick #define MVPP2_PE_DROP_ALL		0
10201a945772Spatrick #define MVPP2_PE_FIRST_FREE_TID		1
1021ce595ab8Spatrick #define MVPP2_PE_LAST_FREE_TID		(MVPP2_PE_MAC_RANGE_START - 1)
1022ce595ab8Spatrick #define MVPP2_PE_MAC_RANGE_END		(MVPP2_PRS_TCAM_SRAM_SIZE - 31)
1023ce595ab8Spatrick #define MVPP2_PE_MAC_RANGE_START	(MVPP2_PE_MAC_RANGE_END - \
1024ce595ab8Spatrick 						MVPP2_PRS_MAC_RANGE_SIZE + 1)
10251a945772Spatrick #define MVPP2_PE_IP6_EXT_PROTO_UN	(MVPP2_PRS_TCAM_SRAM_SIZE - 30)
102641cd246cSpatrick #define MVPP2_PE_IP6_ADDR_UN		(MVPP2_PRS_TCAM_SRAM_SIZE - 29)
102741cd246cSpatrick #define MVPP2_PE_IP4_ADDR_UN		(MVPP2_PRS_TCAM_SRAM_SIZE - 28)
102841cd246cSpatrick #define MVPP2_PE_LAST_DEFAULT_FLOW	(MVPP2_PRS_TCAM_SRAM_SIZE - 27)
102941cd246cSpatrick #define MVPP2_PE_FIRST_DEFAULT_FLOW	(MVPP2_PRS_TCAM_SRAM_SIZE - 22)
103041cd246cSpatrick #define MVPP2_PE_EDSA_TAGGED		(MVPP2_PRS_TCAM_SRAM_SIZE - 21)
103141cd246cSpatrick #define MVPP2_PE_EDSA_UNTAGGED		(MVPP2_PRS_TCAM_SRAM_SIZE - 20)
103241cd246cSpatrick #define MVPP2_PE_DSA_TAGGED		(MVPP2_PRS_TCAM_SRAM_SIZE - 19)
103341cd246cSpatrick #define MVPP2_PE_DSA_UNTAGGED		(MVPP2_PRS_TCAM_SRAM_SIZE - 18)
103441cd246cSpatrick #define MVPP2_PE_ETYPE_EDSA_TAGGED	(MVPP2_PRS_TCAM_SRAM_SIZE - 17)
103541cd246cSpatrick #define MVPP2_PE_ETYPE_EDSA_UNTAGGED	(MVPP2_PRS_TCAM_SRAM_SIZE - 16)
103641cd246cSpatrick #define MVPP2_PE_ETYPE_DSA_TAGGED	(MVPP2_PRS_TCAM_SRAM_SIZE - 15)
103741cd246cSpatrick #define MVPP2_PE_ETYPE_DSA_UNTAGGED	(MVPP2_PRS_TCAM_SRAM_SIZE - 14)
103841cd246cSpatrick #define MVPP2_PE_MH_DEFAULT		(MVPP2_PRS_TCAM_SRAM_SIZE - 13)
103941cd246cSpatrick #define MVPP2_PE_DSA_DEFAULT		(MVPP2_PRS_TCAM_SRAM_SIZE - 12)
104041cd246cSpatrick #define MVPP2_PE_IP6_PROTO_UN		(MVPP2_PRS_TCAM_SRAM_SIZE - 11)
104141cd246cSpatrick #define MVPP2_PE_IP4_PROTO_UN		(MVPP2_PRS_TCAM_SRAM_SIZE - 10)
104241cd246cSpatrick #define MVPP2_PE_ETH_TYPE_UN		(MVPP2_PRS_TCAM_SRAM_SIZE - 9)
104341cd246cSpatrick #define MVPP2_PE_VLAN_DBL		(MVPP2_PRS_TCAM_SRAM_SIZE - 6)
104441cd246cSpatrick #define MVPP2_PE_VLAN_NONE		(MVPP2_PRS_TCAM_SRAM_SIZE - 5)
104541cd246cSpatrick #define MVPP2_PE_MAC_MC_PROMISCUOUS	(MVPP2_PRS_TCAM_SRAM_SIZE - 3)
104641cd246cSpatrick #define MVPP2_PE_MAC_UC_PROMISCUOUS	(MVPP2_PRS_TCAM_SRAM_SIZE - 2)
10471a945772Spatrick #define MVPP2_PE_MAC_NON_PROMISCUOUS	(MVPP2_PRS_TCAM_SRAM_SIZE - 1)
10481a945772Spatrick 
10491a945772Spatrick /*
10501a945772Spatrick  * Sram structure
10511a945772Spatrick  * The fields are represented by MVPP2_PRS_TCAM_DATA_REG(3)->(0).
10521a945772Spatrick  */
10531a945772Spatrick #define MVPP2_PRS_SRAM_RI_OFFS			0
10541a945772Spatrick #define MVPP2_PRS_SRAM_RI_WORD			0
10551a945772Spatrick #define MVPP2_PRS_SRAM_RI_CTRL_OFFS		32
10561a945772Spatrick #define MVPP2_PRS_SRAM_RI_CTRL_WORD		1
10571a945772Spatrick #define MVPP2_PRS_SRAM_RI_CTRL_BITS		32
10581a945772Spatrick #define MVPP2_PRS_SRAM_SHIFT_OFFS		64
10591a945772Spatrick #define MVPP2_PRS_SRAM_SHIFT_SIGN_BIT		72
10601a945772Spatrick #define MVPP2_PRS_SRAM_SHIFT_MASK		0xff
10611a945772Spatrick #define MVPP2_PRS_SRAM_UDF_OFFS			73
10621a945772Spatrick #define MVPP2_PRS_SRAM_UDF_BITS			8
10631a945772Spatrick #define MVPP2_PRS_SRAM_UDF_MASK			0xff
10641a945772Spatrick #define MVPP2_PRS_SRAM_UDF_SIGN_BIT		81
10651a945772Spatrick #define MVPP2_PRS_SRAM_UDF_TYPE_OFFS		82
10661a945772Spatrick #define MVPP2_PRS_SRAM_UDF_TYPE_MASK		0x7
10671a945772Spatrick #define MVPP2_PRS_SRAM_UDF_TYPE_L3		1
10681a945772Spatrick #define MVPP2_PRS_SRAM_UDF_TYPE_L4		4
10691a945772Spatrick #define MVPP2_PRS_SRAM_OP_SEL_SHIFT_OFFS	85
10701a945772Spatrick #define MVPP2_PRS_SRAM_OP_SEL_SHIFT_MASK	0x3
10711a945772Spatrick #define MVPP2_PRS_SRAM_OP_SEL_SHIFT_ADD		1
10721a945772Spatrick #define MVPP2_PRS_SRAM_OP_SEL_SHIFT_IP4_ADD	2
10731a945772Spatrick #define MVPP2_PRS_SRAM_OP_SEL_SHIFT_IP6_ADD	3
10741a945772Spatrick #define MVPP2_PRS_SRAM_OP_SEL_UDF_OFFS		87
10751a945772Spatrick #define MVPP2_PRS_SRAM_OP_SEL_UDF_BITS		2
10761a945772Spatrick #define MVPP2_PRS_SRAM_OP_SEL_UDF_MASK		0x3
10771a945772Spatrick #define MVPP2_PRS_SRAM_OP_SEL_UDF_ADD		0
10781a945772Spatrick #define MVPP2_PRS_SRAM_OP_SEL_UDF_IP4_ADD	2
10791a945772Spatrick #define MVPP2_PRS_SRAM_OP_SEL_UDF_IP6_ADD	3
10801a945772Spatrick #define MVPP2_PRS_SRAM_OP_SEL_BASE_OFFS		89
10811a945772Spatrick #define MVPP2_PRS_SRAM_AI_OFFS			90
10821a945772Spatrick #define MVPP2_PRS_SRAM_AI_CTRL_OFFS		98
10831a945772Spatrick #define MVPP2_PRS_SRAM_AI_CTRL_BITS		8
10841a945772Spatrick #define MVPP2_PRS_SRAM_AI_MASK			0xff
10851a945772Spatrick #define MVPP2_PRS_SRAM_NEXT_LU_OFFS		106
10861a945772Spatrick #define MVPP2_PRS_SRAM_NEXT_LU_MASK		0xf
10871a945772Spatrick #define MVPP2_PRS_SRAM_LU_DONE_BIT		110
10881a945772Spatrick #define MVPP2_PRS_SRAM_LU_GEN_BIT		111
10891a945772Spatrick 
10901a945772Spatrick /* Sram result info bits assignment */
10911a945772Spatrick #define MVPP2_PRS_RI_MAC_ME_MASK		0x1
10921a945772Spatrick #define MVPP2_PRS_RI_DSA_MASK			0x2
10931a945772Spatrick #define MVPP2_PRS_RI_VLAN_MASK			0xc
10941a945772Spatrick #define MVPP2_PRS_RI_VLAN_NONE			~(BIT(2) | BIT(3))
10951a945772Spatrick #define MVPP2_PRS_RI_VLAN_SINGLE		BIT(2)
10961a945772Spatrick #define MVPP2_PRS_RI_VLAN_DOUBLE		BIT(3)
10971a945772Spatrick #define MVPP2_PRS_RI_VLAN_TRIPLE		(BIT(2) | BIT(3))
10981a945772Spatrick #define MVPP2_PRS_RI_CPU_CODE_MASK		0x70
10991a945772Spatrick #define MVPP2_PRS_RI_CPU_CODE_RX_SPEC		BIT(4)
11001a945772Spatrick #define MVPP2_PRS_RI_L2_CAST_MASK		0x600
11011a945772Spatrick #define MVPP2_PRS_RI_L2_UCAST			~(BIT(9) | BIT(10))
11021a945772Spatrick #define MVPP2_PRS_RI_L2_MCAST			BIT(9)
11031a945772Spatrick #define MVPP2_PRS_RI_L2_BCAST			BIT(10)
11041a945772Spatrick #define MVPP2_PRS_RI_PPPOE_MASK			0x800
11051a945772Spatrick #define MVPP2_PRS_RI_L3_PROTO_MASK		0x7000
11061a945772Spatrick #define MVPP2_PRS_RI_L3_UN			~(BIT(12) | BIT(13) | BIT(14))
11071a945772Spatrick #define MVPP2_PRS_RI_L3_IP4			BIT(12)
11081a945772Spatrick #define MVPP2_PRS_RI_L3_IP4_OPT			BIT(13)
11091a945772Spatrick #define MVPP2_PRS_RI_L3_IP4_OTHER		(BIT(12) | BIT(13))
11101a945772Spatrick #define MVPP2_PRS_RI_L3_IP6			BIT(14)
11111a945772Spatrick #define MVPP2_PRS_RI_L3_IP6_EXT			(BIT(12) | BIT(14))
11121a945772Spatrick #define MVPP2_PRS_RI_L3_ARP			(BIT(13) | BIT(14))
11131a945772Spatrick #define MVPP2_PRS_RI_L3_ADDR_MASK		0x18000
11141a945772Spatrick #define MVPP2_PRS_RI_L3_UCAST			~(BIT(15) | BIT(16))
11151a945772Spatrick #define MVPP2_PRS_RI_L3_MCAST			BIT(15)
11161a945772Spatrick #define MVPP2_PRS_RI_L3_BCAST			(BIT(15) | BIT(16))
11171a945772Spatrick #define MVPP2_PRS_RI_IP_FRAG_MASK		0x20000
11181a945772Spatrick #define MVPP2_PRS_RI_UDF3_MASK			0x300000
11191a945772Spatrick #define MVPP2_PRS_RI_UDF3_RX_SPECIAL		BIT(21)
11201a945772Spatrick #define MVPP2_PRS_RI_L4_PROTO_MASK		0x1c00000
11211a945772Spatrick #define MVPP2_PRS_RI_L4_TCP			BIT(22)
11221a945772Spatrick #define MVPP2_PRS_RI_L4_UDP			BIT(23)
11231a945772Spatrick #define MVPP2_PRS_RI_L4_OTHER			(BIT(22) | BIT(23))
11241a945772Spatrick #define MVPP2_PRS_RI_UDF7_MASK			0x60000000
11251a945772Spatrick #define MVPP2_PRS_RI_UDF7_IP6_LITE		BIT(29)
11261a945772Spatrick #define MVPP2_PRS_RI_DROP_MASK			0x80000000
11271a945772Spatrick 
11281a945772Spatrick /* Sram additional info bits assignment */
11291a945772Spatrick #define MVPP2_PRS_IPV4_DIP_AI_BIT		BIT(0)
11301a945772Spatrick #define MVPP2_PRS_IPV6_NO_EXT_AI_BIT		BIT(0)
11311a945772Spatrick #define MVPP2_PRS_IPV6_EXT_AI_BIT		BIT(1)
11321a945772Spatrick #define MVPP2_PRS_IPV6_EXT_AH_AI_BIT		BIT(2)
11331a945772Spatrick #define MVPP2_PRS_IPV6_EXT_AH_LEN_AI_BIT	BIT(3)
11341a945772Spatrick #define MVPP2_PRS_IPV6_EXT_AH_L4_AI_BIT		BIT(4)
11351a945772Spatrick #define MVPP2_PRS_SINGLE_VLAN_AI		0
11361a945772Spatrick #define MVPP2_PRS_DBL_VLAN_AI_BIT		BIT(7)
11371a945772Spatrick 
11381a945772Spatrick /* DSA/EDSA type */
11391a945772Spatrick #define MVPP2_PRS_TAGGED	1
11401a945772Spatrick #define MVPP2_PRS_UNTAGGED	0
11411a945772Spatrick #define MVPP2_PRS_EDSA		1
11421a945772Spatrick #define MVPP2_PRS_DSA		0
11431a945772Spatrick 
11441a945772Spatrick /* MAC entries, shadow udf */
1145017da651Spatrick enum mvpp2_prs_udf {
11461a945772Spatrick 	MVPP2_PRS_UDF_MAC_DEF,
11471a945772Spatrick 	MVPP2_PRS_UDF_MAC_RANGE,
11481a945772Spatrick 	MVPP2_PRS_UDF_L2_DEF,
11491a945772Spatrick 	MVPP2_PRS_UDF_L2_DEF_COPY,
11501a945772Spatrick 	MVPP2_PRS_UDF_L2_USER,
11511a945772Spatrick };
11521a945772Spatrick 
11531a945772Spatrick /* Lookup ID */
1154017da651Spatrick enum mvpp2_prs_lookup {
11551a945772Spatrick 	MVPP2_PRS_LU_MH,
11561a945772Spatrick 	MVPP2_PRS_LU_MAC,
11571a945772Spatrick 	MVPP2_PRS_LU_DSA,
11581a945772Spatrick 	MVPP2_PRS_LU_VLAN,
11591a945772Spatrick 	MVPP2_PRS_LU_L2,
11601a945772Spatrick 	MVPP2_PRS_LU_PPPOE,
11611a945772Spatrick 	MVPP2_PRS_LU_IP4,
11621a945772Spatrick 	MVPP2_PRS_LU_IP6,
11631a945772Spatrick 	MVPP2_PRS_LU_FLOWS,
11641a945772Spatrick 	MVPP2_PRS_LU_LAST,
11651a945772Spatrick };
11661a945772Spatrick 
11671a945772Spatrick /* Classifier constants */
11681a945772Spatrick #define MVPP2_CLS_FLOWS_TBL_SIZE	512
11691a945772Spatrick #define MVPP2_CLS_FLOWS_TBL_DATA_WORDS	3
11701a945772Spatrick #define MVPP2_CLS_LKP_TBL_SIZE		64
11711a945772Spatrick 
11721a945772Spatrick /*
11731a945772Spatrick  * The MVPP2_TX_DESC and MVPP2_RX_DESC structures describe the
11741a945772Spatrick  * layout of the transmit and reception DMA descriptors, and their
11751a945772Spatrick  * layout is therefore defined by the hardware design
11761a945772Spatrick  */
11771a945772Spatrick #define MVPP2_TXD_L3_OFF_SHIFT		0
11781a945772Spatrick #define MVPP2_TXD_IP_HLEN_SHIFT		8
11791a945772Spatrick #define MVPP2_TXD_L4_CSUM_FRAG		BIT(13)
11801a945772Spatrick #define MVPP2_TXD_L4_CSUM_NOT		BIT(14)
11811a945772Spatrick #define MVPP2_TXD_IP_CSUM_DISABLE	BIT(15)
11821a945772Spatrick #define MVPP2_TXD_PADDING_DISABLE	BIT(23)
11831a945772Spatrick #define MVPP2_TXD_L4_UDP		BIT(24)
11841a945772Spatrick #define MVPP2_TXD_L3_IP6		BIT(26)
11851a945772Spatrick #define MVPP2_TXD_L_DESC		BIT(28)
11861a945772Spatrick #define MVPP2_TXD_F_DESC		BIT(29)
11871a945772Spatrick 
11881a945772Spatrick #define MVPP2_RXD_ERR_SUMMARY		BIT(15)
11891a945772Spatrick #define MVPP2_RXD_ERR_CODE_MASK		(BIT(13) | BIT(14))
11901a945772Spatrick #define MVPP2_RXD_ERR_CRC		0x0
11911a945772Spatrick #define MVPP2_RXD_ERR_OVERRUN		BIT(13)
11921a945772Spatrick #define MVPP2_RXD_ERR_RESOURCE		(BIT(13) | BIT(14))
11931a945772Spatrick #define MVPP2_RXD_BM_POOL_ID_OFFS	16
11941a945772Spatrick #define MVPP2_RXD_BM_POOL_ID_MASK	(BIT(16) | BIT(17) | BIT(18))
11951a945772Spatrick #define MVPP2_RXD_HWF_SYNC		BIT(21)
11961a945772Spatrick #define MVPP2_RXD_L4_CSUM_OK		BIT(22)
11971a945772Spatrick #define MVPP2_RXD_IP4_HEADER_ERR	BIT(24)
11981a945772Spatrick #define MVPP2_RXD_L4_TCP		BIT(25)
11991a945772Spatrick #define MVPP2_RXD_L4_UDP		BIT(26)
12001a945772Spatrick #define MVPP2_RXD_L3_IP4		BIT(28)
12011a945772Spatrick #define MVPP2_RXD_L3_IP6		BIT(30)
12021a945772Spatrick #define MVPP2_RXD_BUF_HDR		BIT(31)
12031a945772Spatrick 
12041a945772Spatrick struct mvpp2_tx_desc {
12051a945772Spatrick 	uint32_t command;	/* Options used by HW for packet transmitting.*/
12061a945772Spatrick 	uint8_t packet_offset;	/* the offset from the buffer beginning */
12071a945772Spatrick 	uint8_t phys_txq;	/* destination queue ID */
12081a945772Spatrick 	uint16_t data_size;	/* data size of transmitted packet in bytes */
12091a945772Spatrick 	uint64_t rsrvd_hw_cmd1;	/* HwCmd (BM, PON, PNC) */
12101a945772Spatrick 	uint64_t buf_phys_addr_hw_cmd2;
12111a945772Spatrick 	uint64_t buf_cookie_bm_qset_hw_cmd3;
12121a945772Spatrick };
12131a945772Spatrick 
12141a945772Spatrick struct mvpp2_rx_desc {
12151a945772Spatrick 	uint32_t status;	/* info about received packet */
12161a945772Spatrick 	uint16_t reserved1;	/* ParserInfo (for future use, PnC) */
12171a945772Spatrick 	uint16_t data_size;	/* size of received packet in bytes */
12181a945772Spatrick 	uint16_t rsrvd_gem;	/* GemPortId (for future use, PON) */
12191a945772Spatrick 	uint16_t rsrvd_l4_csum;	/* CsumL4 (for future use, PnC) */
12201a945772Spatrick 	uint32_t rsrvd_timestamp;
12211a945772Spatrick 	uint64_t buf_phys_addr_key_hash;
12221a945772Spatrick 	uint64_t buf_cookie_bm_qset_cls_info;
12231a945772Spatrick };
12241a945772Spatrick 
12251a945772Spatrick union mvpp2_prs_tcam_entry {
12261a945772Spatrick 	uint32_t word[MVPP2_PRS_TCAM_WORDS];
12271a945772Spatrick 	uint8_t byte[MVPP2_PRS_TCAM_WORDS * 4];
12281a945772Spatrick };
12291a945772Spatrick 
12301a945772Spatrick union mvpp2_prs_sram_entry {
12311a945772Spatrick 	uint32_t word[MVPP2_PRS_SRAM_WORDS];
12321a945772Spatrick 	uint8_t byte[MVPP2_PRS_SRAM_WORDS * 4];
12331a945772Spatrick };
12341a945772Spatrick 
12351a945772Spatrick struct mvpp2_prs_entry {
12361a945772Spatrick 	uint32_t index;
12371a945772Spatrick 	union mvpp2_prs_tcam_entry tcam;
12381a945772Spatrick 	union mvpp2_prs_sram_entry sram;
12391a945772Spatrick };
12401a945772Spatrick 
12411a945772Spatrick struct mvpp2_prs_shadow {
12421a945772Spatrick 	int valid;
12431a945772Spatrick 	int finish;
12441a945772Spatrick 
12451a945772Spatrick 	/* Lookup ID */
12461a945772Spatrick 	int32_t lu;
12471a945772Spatrick 
12481a945772Spatrick 	/* User defined offset */
12491a945772Spatrick 	int32_t udf;
12501a945772Spatrick 
12511a945772Spatrick 	/* Result info */
12521a945772Spatrick 	uint32_t ri;
12531a945772Spatrick 	uint32_t ri_mask;
12541a945772Spatrick };
12551a945772Spatrick 
12561a945772Spatrick struct mvpp2_cls_flow_entry {
12571a945772Spatrick 	uint32_t index;
12581a945772Spatrick 	uint32_t data[MVPP2_CLS_FLOWS_TBL_DATA_WORDS];
12591a945772Spatrick };
12601a945772Spatrick 
12611a945772Spatrick struct mvpp2_cls_lookup_entry {
12621a945772Spatrick 	uint32_t lkpid;
12631a945772Spatrick 	uint32_t way;
12641a945772Spatrick 	uint32_t data;
12651a945772Spatrick };
12661a945772Spatrick 
12671a945772Spatrick typedef struct {
12681a945772Spatrick 	uint32_t NextBuffPhysAddr;
12691a945772Spatrick 	uint32_t NextBuffVirtAddr;
12701a945772Spatrick 	uint16_t ByteCount;
12711a945772Spatrick 	uint16_t info;
12721a945772Spatrick 	uint8_t reserved1; /* BmQset (for future use, BM) */
12731a945772Spatrick } MVPP2_BUFF_HDR;
12741a945772Spatrick 
12751a945772Spatrick /* Buffer header info bits */
12761a945772Spatrick #define MVPP2_B_HDR_INFO_MC_ID_MASK	0xfff
12771a945772Spatrick #define MVPP2_B_HDR_INFO_MC_ID(info)	((info) & MVPP2_B_HDR_INFO_MC_ID_MASK)
12781a945772Spatrick #define MVPP2_B_HDR_INFO_LAST_OFFS	12
12791a945772Spatrick #define MVPP2_B_HDR_INFO_LAST_MASK	BIT(12)
12801a945772Spatrick #define MVPP2_B_HDR_INFO_IS_LAST(info)	((info & MVPP2_B_HDR_INFO_LAST_MASK) >> MVPP2_B_HDR_INFO_LAST_OFFS)
12811a945772Spatrick 
12821a945772Spatrick /* SerDes */
12831a945772Spatrick #define MVPP2_SFI_LANE_COUNT		1
12841a945772Spatrick 
12851a945772Spatrick #endif /* __MVPP2_LIB_HW__ */
1286