1*c757ef35SBhargava Marreddy /* SPDX-License-Identifier: GPL-2.0 */ 2*c757ef35SBhargava Marreddy /* Copyright (c) 2025 Broadcom */ 3*c757ef35SBhargava Marreddy 4*c757ef35SBhargava Marreddy #ifndef _BNGE_DB_H_ 5*c757ef35SBhargava Marreddy #define _BNGE_DB_H_ 6*c757ef35SBhargava Marreddy 7*c757ef35SBhargava Marreddy /* 64-bit doorbell */ 8*c757ef35SBhargava Marreddy #define DBR_EPOCH_SFT 24 9*c757ef35SBhargava Marreddy #define DBR_TOGGLE_SFT 25 10*c757ef35SBhargava Marreddy #define DBR_XID_SFT 32 11*c757ef35SBhargava Marreddy #define DBR_PATH_L2 (0x1ULL << 56) 12*c757ef35SBhargava Marreddy #define DBR_VALID (0x1ULL << 58) 13*c757ef35SBhargava Marreddy #define DBR_TYPE_SQ (0x0ULL << 60) 14*c757ef35SBhargava Marreddy #define DBR_TYPE_SRQ (0x2ULL << 60) 15*c757ef35SBhargava Marreddy #define DBR_TYPE_CQ (0x4ULL << 60) 16*c757ef35SBhargava Marreddy #define DBR_TYPE_CQ_ARMALL (0x6ULL << 60) 17*c757ef35SBhargava Marreddy #define DBR_TYPE_NQ (0xaULL << 60) 18*c757ef35SBhargava Marreddy #define DBR_TYPE_NQ_ARM (0xbULL << 60) 19*c757ef35SBhargava Marreddy #define DBR_TYPE_NQ_MASK (0xeULL << 60) 20*c757ef35SBhargava Marreddy 21*c757ef35SBhargava Marreddy struct bnge_db_info { 22*c757ef35SBhargava Marreddy void __iomem *doorbell; 23*c757ef35SBhargava Marreddy u64 db_key64; 24*c757ef35SBhargava Marreddy u32 db_ring_mask; 25*c757ef35SBhargava Marreddy u32 db_epoch_mask; 26*c757ef35SBhargava Marreddy u8 db_epoch_shift; 27*c757ef35SBhargava Marreddy }; 28*c757ef35SBhargava Marreddy 29*c757ef35SBhargava Marreddy #define DB_EPOCH(db, idx) (((idx) & (db)->db_epoch_mask) << \ 30*c757ef35SBhargava Marreddy ((db)->db_epoch_shift)) 31*c757ef35SBhargava Marreddy #define DB_RING_IDX(db, idx) (((idx) & (db)->db_ring_mask) | \ 32*c757ef35SBhargava Marreddy DB_EPOCH(db, idx)) 33*c757ef35SBhargava Marreddy 34*c757ef35SBhargava Marreddy #endif /* _BNGE_DB_H_ */ 35