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