xref: /dpdk/drivers/net/pfe/base/cbus/class_csr.h (revision f513f620591370c7b10f43fc7baa2e258d2f428d)
16dd52083SGagandeep Singh /* SPDX-License-Identifier: BSD-3-Clause
2*f513f620SSachin Saxena  * Copyright 2018-2019 NXP
36dd52083SGagandeep Singh  */
46dd52083SGagandeep Singh 
56dd52083SGagandeep Singh #ifndef _CLASS_CSR_H_
66dd52083SGagandeep Singh #define _CLASS_CSR_H_
76dd52083SGagandeep Singh 
86dd52083SGagandeep Singh #include <compat.h>
96dd52083SGagandeep Singh 
106dd52083SGagandeep Singh /* @file class_csr.h.
116dd52083SGagandeep Singh  * class_csr - block containing all the classifier control and status register.
126dd52083SGagandeep Singh  * Mapped on CBUS and accessible from all PE's and ARM.
136dd52083SGagandeep Singh  */
146dd52083SGagandeep Singh #define CLASS_VERSION	(CLASS_CSR_BASE_ADDR + 0x000)
156dd52083SGagandeep Singh #define CLASS_TX_CTRL	(CLASS_CSR_BASE_ADDR + 0x004)
166dd52083SGagandeep Singh #define CLASS_INQ_PKTPTR	(CLASS_CSR_BASE_ADDR + 0x010)
176dd52083SGagandeep Singh 
186dd52083SGagandeep Singh /* (ddr_hdr_size[24:16], lmem_hdr_size[5:0]) */
196dd52083SGagandeep Singh #define CLASS_HDR_SIZE	(CLASS_CSR_BASE_ADDR + 0x014)
206dd52083SGagandeep Singh 
216dd52083SGagandeep Singh /* LMEM header size for the Classifier block.\ Data in the LMEM
226dd52083SGagandeep Singh  * is written from this offset.
236dd52083SGagandeep Singh  */
246dd52083SGagandeep Singh #define CLASS_HDR_SIZE_LMEM(off)	((off) & 0x3f)
256dd52083SGagandeep Singh 
266dd52083SGagandeep Singh /* DDR header size for the Classifier block.\ Data in the DDR
276dd52083SGagandeep Singh  * is written from this offset.
286dd52083SGagandeep Singh  */
296dd52083SGagandeep Singh #define CLASS_HDR_SIZE_DDR(off)	(((off) & 0x1ff) << 16)
306dd52083SGagandeep Singh 
316dd52083SGagandeep Singh #define CLASS_PE0_QB_DM_ADDR0	(CLASS_CSR_BASE_ADDR + 0x020)
326dd52083SGagandeep Singh 
336dd52083SGagandeep Singh /* DMEM address of first [15:0] and second [31:16] buffers on QB side. */
346dd52083SGagandeep Singh #define CLASS_PE0_QB_DM_ADDR1	(CLASS_CSR_BASE_ADDR + 0x024)
356dd52083SGagandeep Singh 
366dd52083SGagandeep Singh /* DMEM address of third [15:0] and fourth [31:16] buffers on QB side. */
376dd52083SGagandeep Singh #define CLASS_PE0_RO_DM_ADDR0	(CLASS_CSR_BASE_ADDR + 0x060)
386dd52083SGagandeep Singh 
396dd52083SGagandeep Singh /* DMEM address of first [15:0] and second [31:16] buffers on RO side. */
406dd52083SGagandeep Singh #define CLASS_PE0_RO_DM_ADDR1	(CLASS_CSR_BASE_ADDR + 0x064)
416dd52083SGagandeep Singh 
426dd52083SGagandeep Singh /* DMEM address of third [15:0] and fourth [31:16] buffers on RO side. */
436dd52083SGagandeep Singh 
446dd52083SGagandeep Singh /* @name Class PE memory access. Allows external PE's and HOST to
456dd52083SGagandeep Singh  * read/write PMEM/DMEM memory ranges for each classifier PE.
466dd52083SGagandeep Singh  */
476dd52083SGagandeep Singh /* {sr_pe_mem_cmd[31], csr_pe_mem_wren[27:24], csr_pe_mem_addr[23:0]},
486dd52083SGagandeep Singh  * See \ref XXX_MEM_ACCESS_ADDR for details.
496dd52083SGagandeep Singh  */
506dd52083SGagandeep Singh #define CLASS_MEM_ACCESS_ADDR	(CLASS_CSR_BASE_ADDR + 0x100)
516dd52083SGagandeep Singh 
526dd52083SGagandeep Singh /* Internal Memory Access Write Data [31:0] */
536dd52083SGagandeep Singh #define CLASS_MEM_ACCESS_WDATA	(CLASS_CSR_BASE_ADDR + 0x104)
546dd52083SGagandeep Singh 
556dd52083SGagandeep Singh /* Internal Memory Access Read Data [31:0] */
566dd52083SGagandeep Singh #define CLASS_MEM_ACCESS_RDATA	(CLASS_CSR_BASE_ADDR + 0x108)
576dd52083SGagandeep Singh #define CLASS_TM_INQ_ADDR	(CLASS_CSR_BASE_ADDR + 0x114)
586dd52083SGagandeep Singh #define CLASS_PE_STATUS	(CLASS_CSR_BASE_ADDR + 0x118)
596dd52083SGagandeep Singh 
606dd52083SGagandeep Singh #define CLASS_PHY1_RX_PKTS	(CLASS_CSR_BASE_ADDR + 0x11c)
616dd52083SGagandeep Singh #define CLASS_PHY1_TX_PKTS	(CLASS_CSR_BASE_ADDR + 0x120)
626dd52083SGagandeep Singh #define CLASS_PHY1_LP_FAIL_PKTS	(CLASS_CSR_BASE_ADDR + 0x124)
636dd52083SGagandeep Singh #define CLASS_PHY1_INTF_FAIL_PKTS	(CLASS_CSR_BASE_ADDR + 0x128)
646dd52083SGagandeep Singh #define CLASS_PHY1_INTF_MATCH_PKTS	(CLASS_CSR_BASE_ADDR + 0x12c)
656dd52083SGagandeep Singh #define CLASS_PHY1_L3_FAIL_PKTS	(CLASS_CSR_BASE_ADDR + 0x130)
666dd52083SGagandeep Singh #define CLASS_PHY1_V4_PKTS	(CLASS_CSR_BASE_ADDR + 0x134)
676dd52083SGagandeep Singh #define CLASS_PHY1_V6_PKTS	(CLASS_CSR_BASE_ADDR + 0x138)
686dd52083SGagandeep Singh #define CLASS_PHY1_CHKSUM_ERR_PKTS	(CLASS_CSR_BASE_ADDR + 0x13c)
696dd52083SGagandeep Singh #define CLASS_PHY1_TTL_ERR_PKTS	(CLASS_CSR_BASE_ADDR + 0x140)
706dd52083SGagandeep Singh #define CLASS_PHY2_RX_PKTS	(CLASS_CSR_BASE_ADDR + 0x144)
716dd52083SGagandeep Singh #define CLASS_PHY2_TX_PKTS	(CLASS_CSR_BASE_ADDR + 0x148)
726dd52083SGagandeep Singh #define CLASS_PHY2_LP_FAIL_PKTS	(CLASS_CSR_BASE_ADDR + 0x14c)
736dd52083SGagandeep Singh #define CLASS_PHY2_INTF_FAIL_PKTS	(CLASS_CSR_BASE_ADDR + 0x150)
746dd52083SGagandeep Singh #define CLASS_PHY2_INTF_MATCH_PKTS	(CLASS_CSR_BASE_ADDR + 0x154)
756dd52083SGagandeep Singh #define CLASS_PHY2_L3_FAIL_PKTS	(CLASS_CSR_BASE_ADDR + 0x158)
766dd52083SGagandeep Singh #define CLASS_PHY2_V4_PKTS	(CLASS_CSR_BASE_ADDR + 0x15c)
776dd52083SGagandeep Singh #define CLASS_PHY2_V6_PKTS	(CLASS_CSR_BASE_ADDR + 0x160)
786dd52083SGagandeep Singh #define CLASS_PHY2_CHKSUM_ERR_PKTS	(CLASS_CSR_BASE_ADDR + 0x164)
796dd52083SGagandeep Singh #define CLASS_PHY2_TTL_ERR_PKTS	(CLASS_CSR_BASE_ADDR + 0x168)
806dd52083SGagandeep Singh #define CLASS_PHY3_RX_PKTS	(CLASS_CSR_BASE_ADDR + 0x16c)
816dd52083SGagandeep Singh #define CLASS_PHY3_TX_PKTS	(CLASS_CSR_BASE_ADDR + 0x170)
826dd52083SGagandeep Singh #define CLASS_PHY3_LP_FAIL_PKTS	(CLASS_CSR_BASE_ADDR + 0x174)
836dd52083SGagandeep Singh #define CLASS_PHY3_INTF_FAIL_PKTS	(CLASS_CSR_BASE_ADDR + 0x178)
846dd52083SGagandeep Singh #define CLASS_PHY3_INTF_MATCH_PKTS	(CLASS_CSR_BASE_ADDR + 0x17c)
856dd52083SGagandeep Singh #define CLASS_PHY3_L3_FAIL_PKTS	(CLASS_CSR_BASE_ADDR + 0x180)
866dd52083SGagandeep Singh #define CLASS_PHY3_V4_PKTS	(CLASS_CSR_BASE_ADDR + 0x184)
876dd52083SGagandeep Singh #define CLASS_PHY3_V6_PKTS	(CLASS_CSR_BASE_ADDR + 0x188)
886dd52083SGagandeep Singh #define CLASS_PHY3_CHKSUM_ERR_PKTS	(CLASS_CSR_BASE_ADDR + 0x18c)
896dd52083SGagandeep Singh #define CLASS_PHY3_TTL_ERR_PKTS	(CLASS_CSR_BASE_ADDR + 0x190)
906dd52083SGagandeep Singh #define CLASS_PHY1_ICMP_PKTS	(CLASS_CSR_BASE_ADDR + 0x194)
916dd52083SGagandeep Singh #define CLASS_PHY1_IGMP_PKTS	(CLASS_CSR_BASE_ADDR + 0x198)
926dd52083SGagandeep Singh #define CLASS_PHY1_TCP_PKTS	(CLASS_CSR_BASE_ADDR + 0x19c)
936dd52083SGagandeep Singh #define CLASS_PHY1_UDP_PKTS	(CLASS_CSR_BASE_ADDR + 0x1a0)
946dd52083SGagandeep Singh #define CLASS_PHY2_ICMP_PKTS	(CLASS_CSR_BASE_ADDR + 0x1a4)
956dd52083SGagandeep Singh #define CLASS_PHY2_IGMP_PKTS	(CLASS_CSR_BASE_ADDR + 0x1a8)
966dd52083SGagandeep Singh #define CLASS_PHY2_TCP_PKTS	(CLASS_CSR_BASE_ADDR + 0x1ac)
976dd52083SGagandeep Singh #define CLASS_PHY2_UDP_PKTS	(CLASS_CSR_BASE_ADDR + 0x1b0)
986dd52083SGagandeep Singh #define CLASS_PHY3_ICMP_PKTS	(CLASS_CSR_BASE_ADDR + 0x1b4)
996dd52083SGagandeep Singh #define CLASS_PHY3_IGMP_PKTS	(CLASS_CSR_BASE_ADDR + 0x1b8)
1006dd52083SGagandeep Singh #define CLASS_PHY3_TCP_PKTS	(CLASS_CSR_BASE_ADDR + 0x1bc)
1016dd52083SGagandeep Singh #define CLASS_PHY3_UDP_PKTS	(CLASS_CSR_BASE_ADDR + 0x1c0)
1026dd52083SGagandeep Singh #define CLASS_PHY4_ICMP_PKTS	(CLASS_CSR_BASE_ADDR + 0x1c4)
1036dd52083SGagandeep Singh #define CLASS_PHY4_IGMP_PKTS	(CLASS_CSR_BASE_ADDR + 0x1c8)
1046dd52083SGagandeep Singh #define CLASS_PHY4_TCP_PKTS	(CLASS_CSR_BASE_ADDR + 0x1cc)
1056dd52083SGagandeep Singh #define CLASS_PHY4_UDP_PKTS	(CLASS_CSR_BASE_ADDR + 0x1d0)
1066dd52083SGagandeep Singh #define CLASS_PHY4_RX_PKTS	(CLASS_CSR_BASE_ADDR + 0x1d4)
1076dd52083SGagandeep Singh #define CLASS_PHY4_TX_PKTS	(CLASS_CSR_BASE_ADDR + 0x1d8)
1086dd52083SGagandeep Singh #define CLASS_PHY4_LP_FAIL_PKTS	(CLASS_CSR_BASE_ADDR + 0x1dc)
1096dd52083SGagandeep Singh #define CLASS_PHY4_INTF_FAIL_PKTS	(CLASS_CSR_BASE_ADDR + 0x1e0)
1106dd52083SGagandeep Singh #define CLASS_PHY4_INTF_MATCH_PKTS	(CLASS_CSR_BASE_ADDR + 0x1e4)
1116dd52083SGagandeep Singh #define CLASS_PHY4_L3_FAIL_PKTS	(CLASS_CSR_BASE_ADDR + 0x1e8)
1126dd52083SGagandeep Singh #define CLASS_PHY4_V4_PKTS	(CLASS_CSR_BASE_ADDR + 0x1ec)
1136dd52083SGagandeep Singh #define CLASS_PHY4_V6_PKTS	(CLASS_CSR_BASE_ADDR + 0x1f0)
1146dd52083SGagandeep Singh #define CLASS_PHY4_CHKSUM_ERR_PKTS	(CLASS_CSR_BASE_ADDR + 0x1f4)
1156dd52083SGagandeep Singh #define CLASS_PHY4_TTL_ERR_PKTS	(CLASS_CSR_BASE_ADDR + 0x1f8)
1166dd52083SGagandeep Singh 
1176dd52083SGagandeep Singh #define CLASS_PE_SYS_CLK_RATIO	(CLASS_CSR_BASE_ADDR + 0x200)
1186dd52083SGagandeep Singh #define CLASS_AFULL_THRES	(CLASS_CSR_BASE_ADDR + 0x204)
1196dd52083SGagandeep Singh #define CLASS_GAP_BETWEEN_READS	(CLASS_CSR_BASE_ADDR + 0x208)
1206dd52083SGagandeep Singh #define CLASS_MAX_BUF_CNT	(CLASS_CSR_BASE_ADDR + 0x20c)
1216dd52083SGagandeep Singh #define CLASS_TSQ_FIFO_THRES	(CLASS_CSR_BASE_ADDR + 0x210)
1226dd52083SGagandeep Singh #define CLASS_TSQ_MAX_CNT	(CLASS_CSR_BASE_ADDR + 0x214)
1236dd52083SGagandeep Singh #define CLASS_IRAM_DATA_0	(CLASS_CSR_BASE_ADDR + 0x218)
1246dd52083SGagandeep Singh #define CLASS_IRAM_DATA_1	(CLASS_CSR_BASE_ADDR + 0x21c)
1256dd52083SGagandeep Singh #define CLASS_IRAM_DATA_2	(CLASS_CSR_BASE_ADDR + 0x220)
1266dd52083SGagandeep Singh #define CLASS_IRAM_DATA_3	(CLASS_CSR_BASE_ADDR + 0x224)
1276dd52083SGagandeep Singh 
1286dd52083SGagandeep Singh #define CLASS_BUS_ACCESS_ADDR	(CLASS_CSR_BASE_ADDR + 0x228)
1296dd52083SGagandeep Singh 
1306dd52083SGagandeep Singh #define CLASS_BUS_ACCESS_WDATA	(CLASS_CSR_BASE_ADDR + 0x22c)
1316dd52083SGagandeep Singh #define CLASS_BUS_ACCESS_RDATA	(CLASS_CSR_BASE_ADDR + 0x230)
1326dd52083SGagandeep Singh 
1336dd52083SGagandeep Singh /* (route_entry_size[9:0], route_hash_size[23:16]
1346dd52083SGagandeep Singh  * (this is actually ln2(size)))
1356dd52083SGagandeep Singh  */
1366dd52083SGagandeep Singh #define CLASS_ROUTE_HASH_ENTRY_SIZE	(CLASS_CSR_BASE_ADDR + 0x234)
1376dd52083SGagandeep Singh 
1386dd52083SGagandeep Singh #define CLASS_ROUTE_ENTRY_SIZE(size)	 ((size) & 0x1ff)
1396dd52083SGagandeep Singh #define CLASS_ROUTE_HASH_SIZE(hash_bits) (((hash_bits) & 0xff) << 16)
1406dd52083SGagandeep Singh 
1416dd52083SGagandeep Singh #define CLASS_ROUTE_TABLE_BASE	(CLASS_CSR_BASE_ADDR + 0x238)
1426dd52083SGagandeep Singh 
1436dd52083SGagandeep Singh #define CLASS_ROUTE_MULTI	(CLASS_CSR_BASE_ADDR + 0x23c)
1446dd52083SGagandeep Singh #define CLASS_SMEM_OFFSET	(CLASS_CSR_BASE_ADDR + 0x240)
1456dd52083SGagandeep Singh #define CLASS_LMEM_BUF_SIZE	(CLASS_CSR_BASE_ADDR + 0x244)
1466dd52083SGagandeep Singh #define CLASS_VLAN_ID	(CLASS_CSR_BASE_ADDR + 0x248)
1476dd52083SGagandeep Singh #define CLASS_BMU1_BUF_FREE	(CLASS_CSR_BASE_ADDR + 0x24c)
1486dd52083SGagandeep Singh #define CLASS_USE_TMU_INQ	(CLASS_CSR_BASE_ADDR + 0x250)
1496dd52083SGagandeep Singh #define CLASS_VLAN_ID1	(CLASS_CSR_BASE_ADDR + 0x254)
1506dd52083SGagandeep Singh 
1516dd52083SGagandeep Singh #define CLASS_BUS_ACCESS_BASE	(CLASS_CSR_BASE_ADDR + 0x258)
1526dd52083SGagandeep Singh #define CLASS_BUS_ACCESS_BASE_MASK	(0xFF000000)
1536dd52083SGagandeep Singh /* bit 31:24 of PE peripheral address are stored in CLASS_BUS_ACCESS_BASE */
1546dd52083SGagandeep Singh 
1556dd52083SGagandeep Singh #define CLASS_HIF_PARSE	(CLASS_CSR_BASE_ADDR + 0x25c)
1566dd52083SGagandeep Singh 
1576dd52083SGagandeep Singh #define CLASS_HOST_PE0_GP	(CLASS_CSR_BASE_ADDR + 0x260)
1586dd52083SGagandeep Singh #define CLASS_PE0_GP	(CLASS_CSR_BASE_ADDR + 0x264)
1596dd52083SGagandeep Singh #define CLASS_HOST_PE1_GP	(CLASS_CSR_BASE_ADDR + 0x268)
1606dd52083SGagandeep Singh #define CLASS_PE1_GP	(CLASS_CSR_BASE_ADDR + 0x26c)
1616dd52083SGagandeep Singh #define CLASS_HOST_PE2_GP	(CLASS_CSR_BASE_ADDR + 0x270)
1626dd52083SGagandeep Singh #define CLASS_PE2_GP	(CLASS_CSR_BASE_ADDR + 0x274)
1636dd52083SGagandeep Singh #define CLASS_HOST_PE3_GP	(CLASS_CSR_BASE_ADDR + 0x278)
1646dd52083SGagandeep Singh #define CLASS_PE3_GP	(CLASS_CSR_BASE_ADDR + 0x27c)
1656dd52083SGagandeep Singh #define CLASS_HOST_PE4_GP	(CLASS_CSR_BASE_ADDR + 0x280)
1666dd52083SGagandeep Singh #define CLASS_PE4_GP	(CLASS_CSR_BASE_ADDR + 0x284)
1676dd52083SGagandeep Singh #define CLASS_HOST_PE5_GP	(CLASS_CSR_BASE_ADDR + 0x288)
1686dd52083SGagandeep Singh #define CLASS_PE5_GP	(CLASS_CSR_BASE_ADDR + 0x28c)
1696dd52083SGagandeep Singh 
1706dd52083SGagandeep Singh #define CLASS_PE_INT_SRC	(CLASS_CSR_BASE_ADDR + 0x290)
1716dd52083SGagandeep Singh #define CLASS_PE_INT_ENABLE	(CLASS_CSR_BASE_ADDR + 0x294)
1726dd52083SGagandeep Singh 
1736dd52083SGagandeep Singh #define CLASS_TPID0_TPID1	(CLASS_CSR_BASE_ADDR + 0x298)
1746dd52083SGagandeep Singh #define CLASS_TPID2	(CLASS_CSR_BASE_ADDR + 0x29c)
1756dd52083SGagandeep Singh 
1766dd52083SGagandeep Singh #define CLASS_L4_CHKSUM_ADDR	(CLASS_CSR_BASE_ADDR + 0x2a0)
1776dd52083SGagandeep Singh 
1786dd52083SGagandeep Singh #define CLASS_PE0_DEBUG	(CLASS_CSR_BASE_ADDR + 0x2a4)
1796dd52083SGagandeep Singh #define CLASS_PE1_DEBUG	(CLASS_CSR_BASE_ADDR + 0x2a8)
1806dd52083SGagandeep Singh #define CLASS_PE2_DEBUG	(CLASS_CSR_BASE_ADDR + 0x2ac)
1816dd52083SGagandeep Singh #define CLASS_PE3_DEBUG	(CLASS_CSR_BASE_ADDR + 0x2b0)
1826dd52083SGagandeep Singh #define CLASS_PE4_DEBUG	(CLASS_CSR_BASE_ADDR + 0x2b4)
1836dd52083SGagandeep Singh #define CLASS_PE5_DEBUG	(CLASS_CSR_BASE_ADDR + 0x2b8)
1846dd52083SGagandeep Singh 
1856dd52083SGagandeep Singh #define CLASS_STATE	(CLASS_CSR_BASE_ADDR + 0x2bc)
1866dd52083SGagandeep Singh 
1876dd52083SGagandeep Singh /* CLASS defines */
1886dd52083SGagandeep Singh #define CLASS_PBUF_SIZE	0x100	/* Fixed by hardware */
1896dd52083SGagandeep Singh #define CLASS_PBUF_HEADER_OFFSET	0x80	/* Can be configured */
1906dd52083SGagandeep Singh 
1916dd52083SGagandeep Singh /* Can be configured */
1926dd52083SGagandeep Singh #define CLASS_PBUF0_BASE_ADDR	0x000
1936dd52083SGagandeep Singh /* Can be configured */
1946dd52083SGagandeep Singh #define CLASS_PBUF1_BASE_ADDR	(CLASS_PBUF0_BASE_ADDR + CLASS_PBUF_SIZE)
1956dd52083SGagandeep Singh /* Can be configured */
1966dd52083SGagandeep Singh #define CLASS_PBUF2_BASE_ADDR	(CLASS_PBUF1_BASE_ADDR + CLASS_PBUF_SIZE)
1976dd52083SGagandeep Singh /* Can be configured */
1986dd52083SGagandeep Singh #define CLASS_PBUF3_BASE_ADDR	(CLASS_PBUF2_BASE_ADDR + CLASS_PBUF_SIZE)
1996dd52083SGagandeep Singh 
2006dd52083SGagandeep Singh #define CLASS_PBUF0_HEADER_BASE_ADDR	(CLASS_PBUF0_BASE_ADDR + \
2016dd52083SGagandeep Singh 						CLASS_PBUF_HEADER_OFFSET)
2026dd52083SGagandeep Singh #define CLASS_PBUF1_HEADER_BASE_ADDR	(CLASS_PBUF1_BASE_ADDR + \
2036dd52083SGagandeep Singh 						CLASS_PBUF_HEADER_OFFSET)
2046dd52083SGagandeep Singh #define CLASS_PBUF2_HEADER_BASE_ADDR	(CLASS_PBUF2_BASE_ADDR + \
2056dd52083SGagandeep Singh 						CLASS_PBUF_HEADER_OFFSET)
2066dd52083SGagandeep Singh #define CLASS_PBUF3_HEADER_BASE_ADDR	(CLASS_PBUF3_BASE_ADDR + \
2076dd52083SGagandeep Singh 						CLASS_PBUF_HEADER_OFFSET)
2086dd52083SGagandeep Singh 
2096dd52083SGagandeep Singh #define CLASS_PE0_RO_DM_ADDR0_VAL	((CLASS_PBUF1_BASE_ADDR << 16) | \
2106dd52083SGagandeep Singh 						CLASS_PBUF0_BASE_ADDR)
2116dd52083SGagandeep Singh #define CLASS_PE0_RO_DM_ADDR1_VAL	((CLASS_PBUF3_BASE_ADDR << 16) | \
2126dd52083SGagandeep Singh 						CLASS_PBUF2_BASE_ADDR)
2136dd52083SGagandeep Singh 
2146dd52083SGagandeep Singh #define CLASS_PE0_QB_DM_ADDR0_VAL	((CLASS_PBUF1_HEADER_BASE_ADDR << 16) |\
2156dd52083SGagandeep Singh 						CLASS_PBUF0_HEADER_BASE_ADDR)
2166dd52083SGagandeep Singh #define CLASS_PE0_QB_DM_ADDR1_VAL	((CLASS_PBUF3_HEADER_BASE_ADDR << 16) |\
2176dd52083SGagandeep Singh 						CLASS_PBUF2_HEADER_BASE_ADDR)
2186dd52083SGagandeep Singh 
2196dd52083SGagandeep Singh #define CLASS_ROUTE_SIZE	128
2206dd52083SGagandeep Singh #define CLASS_MAX_ROUTE_SIZE	256
2216dd52083SGagandeep Singh #define CLASS_ROUTE_HASH_BITS	20
2226dd52083SGagandeep Singh #define CLASS_ROUTE_HASH_MASK	(BIT(CLASS_ROUTE_HASH_BITS) - 1)
2236dd52083SGagandeep Singh 
2246dd52083SGagandeep Singh /* Can be configured */
2256dd52083SGagandeep Singh #define	CLASS_ROUTE0_BASE_ADDR	0x400
2266dd52083SGagandeep Singh /* Can be configured */
2276dd52083SGagandeep Singh #define CLASS_ROUTE1_BASE_ADDR	(CLASS_ROUTE0_BASE_ADDR + CLASS_ROUTE_SIZE)
2286dd52083SGagandeep Singh /* Can be configured */
2296dd52083SGagandeep Singh #define CLASS_ROUTE2_BASE_ADDR	(CLASS_ROUTE1_BASE_ADDR + CLASS_ROUTE_SIZE)
2306dd52083SGagandeep Singh /* Can be configured */
2316dd52083SGagandeep Singh #define CLASS_ROUTE3_BASE_ADDR	(CLASS_ROUTE2_BASE_ADDR + CLASS_ROUTE_SIZE)
2326dd52083SGagandeep Singh 
2336dd52083SGagandeep Singh #define CLASS_SA_SIZE	128
2346dd52083SGagandeep Singh #define CLASS_IPSEC_SA0_BASE_ADDR	0x600
2356dd52083SGagandeep Singh /* not used */
2366dd52083SGagandeep Singh #define CLASS_IPSEC_SA1_BASE_ADDR  (CLASS_IPSEC_SA0_BASE_ADDR + CLASS_SA_SIZE)
2376dd52083SGagandeep Singh /* not used */
2386dd52083SGagandeep Singh #define CLASS_IPSEC_SA2_BASE_ADDR  (CLASS_IPSEC_SA1_BASE_ADDR + CLASS_SA_SIZE)
2396dd52083SGagandeep Singh /* not used */
2406dd52083SGagandeep Singh #define CLASS_IPSEC_SA3_BASE_ADDR  (CLASS_IPSEC_SA2_BASE_ADDR + CLASS_SA_SIZE)
2416dd52083SGagandeep Singh 
2426dd52083SGagandeep Singh /* generic purpose free dmem buffer, last portion of 2K dmem pbuf */
2436dd52083SGagandeep Singh #define CLASS_GP_DMEM_BUF_SIZE	(2048 - (CLASS_PBUF_SIZE * 4) - \
2446dd52083SGagandeep Singh 				(CLASS_ROUTE_SIZE * 4) - (CLASS_SA_SIZE))
2456dd52083SGagandeep Singh #define CLASS_GP_DMEM_BUF	((void *)(CLASS_IPSEC_SA0_BASE_ADDR + \
2466dd52083SGagandeep Singh 					CLASS_SA_SIZE))
2476dd52083SGagandeep Singh 
2486dd52083SGagandeep Singh #define TWO_LEVEL_ROUTE		BIT(0)
2496dd52083SGagandeep Singh #define PHYNO_IN_HASH		BIT(1)
2506dd52083SGagandeep Singh #define HW_ROUTE_FETCH		BIT(3)
2516dd52083SGagandeep Singh #define HW_BRIDGE_FETCH		BIT(5)
2526dd52083SGagandeep Singh #define IP_ALIGNED		BIT(6)
2536dd52083SGagandeep Singh #define ARC_HIT_CHECK_EN	BIT(7)
2546dd52083SGagandeep Singh #define CLASS_TOE		BIT(11)
2556dd52083SGagandeep Singh #define HASH_NORMAL		(0 << 12)
2566dd52083SGagandeep Singh #define HASH_CRC_PORT		BIT(12)
2576dd52083SGagandeep Singh #define HASH_CRC_IP		(2 << 12)
2586dd52083SGagandeep Singh #define HASH_CRC_PORT_IP	(3 << 12)
2596dd52083SGagandeep Singh #define QB2BUS_LE		BIT(15)
2606dd52083SGagandeep Singh 
2616dd52083SGagandeep Singh #define TCP_CHKSUM_DROP		BIT(0)
2626dd52083SGagandeep Singh #define UDP_CHKSUM_DROP		BIT(1)
2636dd52083SGagandeep Singh #define IPV4_CHKSUM_DROP	BIT(9)
2646dd52083SGagandeep Singh 
2656dd52083SGagandeep Singh /*CLASS_HIF_PARSE bits*/
2666dd52083SGagandeep Singh #define HIF_PKT_CLASS_EN	BIT(0)
2676dd52083SGagandeep Singh #define HIF_PKT_OFFSET(ofst)	(((ofst) & 0xF) << 1)
2686dd52083SGagandeep Singh 
2696dd52083SGagandeep Singh struct class_cfg {
2706dd52083SGagandeep Singh 	u32 toe_mode;
2716dd52083SGagandeep Singh 	unsigned long route_table_baseaddr;
2726dd52083SGagandeep Singh 	u32 route_table_hash_bits;
2736dd52083SGagandeep Singh 	u32 pe_sys_clk_ratio;
2746dd52083SGagandeep Singh 	u32 resume;
2756dd52083SGagandeep Singh };
2766dd52083SGagandeep Singh 
2776dd52083SGagandeep Singh #endif /* _CLASS_CSR_H_ */
278