1024a8abbSNagadheeraj Rottela /* SPDX-License-Identifier: BSD-3-Clause 2024a8abbSNagadheeraj Rottela * Copyright(C) 2019 Marvell International Ltd. 3024a8abbSNagadheeraj Rottela */ 4024a8abbSNagadheeraj Rottela 5024a8abbSNagadheeraj Rottela #ifndef _NITROX_CSR_H_ 6024a8abbSNagadheeraj Rottela #define _NITROX_CSR_H_ 7024a8abbSNagadheeraj Rottela 8024a8abbSNagadheeraj Rottela #include <rte_common.h> 9024a8abbSNagadheeraj Rottela #include <rte_io.h> 10024a8abbSNagadheeraj Rottela 11024a8abbSNagadheeraj Rottela #define CSR_DELAY 30 12024a8abbSNagadheeraj Rottela #define NITROX_CSR_ADDR(bar_addr, offset) (bar_addr + (offset)) 13024a8abbSNagadheeraj Rottela 14024a8abbSNagadheeraj Rottela /* NPS packet registers */ 15024a8abbSNagadheeraj Rottela #define NPS_PKT_IN_INSTR_CTLX(_i) (0x10060UL + ((_i) * 0x40000UL)) 16024a8abbSNagadheeraj Rottela #define NPS_PKT_IN_INSTR_BADDRX(_i) (0x10068UL + ((_i) * 0x40000UL)) 17024a8abbSNagadheeraj Rottela #define NPS_PKT_IN_INSTR_RSIZEX(_i) (0x10070UL + ((_i) * 0x40000UL)) 18024a8abbSNagadheeraj Rottela #define NPS_PKT_IN_DONE_CNTSX(_i) (0x10080UL + ((_i) * 0x40000UL)) 19024a8abbSNagadheeraj Rottela #define NPS_PKT_IN_INSTR_BAOFF_DBELLX(_i) (0x10078UL + ((_i) * 0x40000UL)) 20024a8abbSNagadheeraj Rottela #define NPS_PKT_IN_INT_LEVELSX(_i) (0x10088UL + ((_i) * 0x40000UL)) 21024a8abbSNagadheeraj Rottela #define NPS_PKT_SLC_CTLX(_i) (0x10000UL + ((_i) * 0x40000UL)) 22024a8abbSNagadheeraj Rottela #define NPS_PKT_SLC_CNTSX(_i) (0x10008UL + ((_i) * 0x40000UL)) 23024a8abbSNagadheeraj Rottela #define NPS_PKT_SLC_INT_LEVELSX(_i) (0x10010UL + ((_i) * 0x40000UL)) 24024a8abbSNagadheeraj Rottela 25024a8abbSNagadheeraj Rottela /* AQM Virtual Function Registers */ 26024a8abbSNagadheeraj Rottela #define AQMQ_QSZX(_i) (0x20008UL + ((_i) * 0x40000UL)) 27024a8abbSNagadheeraj Rottela 28*751ea2c0SNagadheeraj Rottela /* ZQM virtual function registers */ 29*751ea2c0SNagadheeraj Rottela #define ZQMQ_DRBLX(_i) (0x30000UL + ((_i) * 0x40000UL)) 30*751ea2c0SNagadheeraj Rottela #define ZQMQ_QSZX(_i) (0x30008UL + ((_i) * 0x40000UL)) 31*751ea2c0SNagadheeraj Rottela #define ZQMQ_BADRX(_i) (0x30010UL + ((_i) * 0x40000UL)) 32*751ea2c0SNagadheeraj Rottela #define ZQMQ_NXT_CMDX(_i) (0x30018UL + ((_i) * 0x40000UL)) 33*751ea2c0SNagadheeraj Rottela #define ZQMQ_CMD_CNTX(_i) (0x30020UL + ((_i) * 0x40000UL)) 34*751ea2c0SNagadheeraj Rottela #define ZQMQ_CMP_THRX(_i) (0x30028UL + ((_i) * 0x40000UL)) 35*751ea2c0SNagadheeraj Rottela #define ZQMQ_CMP_CNTX(_i) (0x30030UL + ((_i) * 0x40000UL)) 36*751ea2c0SNagadheeraj Rottela #define ZQMQ_TIMER_LDX(_i) (0x30038UL + ((_i) * 0x40000UL)) 37*751ea2c0SNagadheeraj Rottela #define ZQMQ_ENX(_i) (0x30048UL + ((_i) * 0x40000UL)) 38*751ea2c0SNagadheeraj Rottela #define ZQMQ_ACTIVITY_STATX(_i) (0x30050UL + ((_i) * 0x40000UL)) 39*751ea2c0SNagadheeraj Rottela 40024a8abbSNagadheeraj Rottela static inline uint64_t nitrox_read_csr(uint8_t * bar_addr,uint64_t offset)41024a8abbSNagadheeraj Rottelanitrox_read_csr(uint8_t *bar_addr, uint64_t offset) 42024a8abbSNagadheeraj Rottela { 43024a8abbSNagadheeraj Rottela return rte_read64(bar_addr + offset); 44024a8abbSNagadheeraj Rottela } 45024a8abbSNagadheeraj Rottela 46024a8abbSNagadheeraj Rottela static inline void nitrox_write_csr(uint8_t * bar_addr,uint64_t offset,uint64_t value)47024a8abbSNagadheeraj Rottelanitrox_write_csr(uint8_t *bar_addr, uint64_t offset, uint64_t value) 48024a8abbSNagadheeraj Rottela { 49024a8abbSNagadheeraj Rottela rte_write64(value, (bar_addr + offset)); 50024a8abbSNagadheeraj Rottela } 51024a8abbSNagadheeraj Rottela 52024a8abbSNagadheeraj Rottela #endif /* _NITROX_CSR_H_ */ 53