18d765af5SAbhijit Gangurde /* SPDX-License-Identifier: GPL-2.0 */ 28d765af5SAbhijit Gangurde /* Copyright (C) 2018-2025, Advanced Micro Devices, Inc. */ 38d765af5SAbhijit Gangurde 48d765af5SAbhijit Gangurde #ifndef _IONIC_LIF_CFG_H_ 58d765af5SAbhijit Gangurde 68d765af5SAbhijit Gangurde #define IONIC_VERSION(a, b) (((a) << 16) + ((b) << 8)) 78d765af5SAbhijit Gangurde #define IONIC_PAGE_SIZE_SUPPORTED 0x40201000 /* 4kb, 2Mb, 1Gb */ 88d765af5SAbhijit Gangurde 98d765af5SAbhijit Gangurde #define IONIC_EXPDB_64B_WQE BIT(0) 108d765af5SAbhijit Gangurde #define IONIC_EXPDB_128B_WQE BIT(1) 118d765af5SAbhijit Gangurde #define IONIC_EXPDB_256B_WQE BIT(2) 128d765af5SAbhijit Gangurde #define IONIC_EXPDB_512B_WQE BIT(3) 138d765af5SAbhijit Gangurde 148d765af5SAbhijit Gangurde struct ionic_lif_cfg { 158d765af5SAbhijit Gangurde struct device *hwdev; 168d765af5SAbhijit Gangurde struct ionic_lif *lif; 178d765af5SAbhijit Gangurde 188d765af5SAbhijit Gangurde int lif_index; 198d765af5SAbhijit Gangurde int lif_hw_index; 208d765af5SAbhijit Gangurde 218d765af5SAbhijit Gangurde u32 dbid; 228d765af5SAbhijit Gangurde int dbid_count; 238d765af5SAbhijit Gangurde u64 __iomem *dbpage; 248d765af5SAbhijit Gangurde struct ionic_intr __iomem *intr_ctrl; 258d765af5SAbhijit Gangurde phys_addr_t db_phys; 268d765af5SAbhijit Gangurde 278d765af5SAbhijit Gangurde u64 page_size_supported; 288d765af5SAbhijit Gangurde u32 npts_per_lif; 298d765af5SAbhijit Gangurde u32 nmrs_per_lif; 308d765af5SAbhijit Gangurde u32 nahs_per_lif; 318d765af5SAbhijit Gangurde 328d765af5SAbhijit Gangurde u32 aq_base; 338d765af5SAbhijit Gangurde u32 cq_base; 348d765af5SAbhijit Gangurde u32 eq_base; 358d765af5SAbhijit Gangurde 368d765af5SAbhijit Gangurde int aq_count; 378d765af5SAbhijit Gangurde int eq_count; 388d765af5SAbhijit Gangurde int cq_count; 398d765af5SAbhijit Gangurde int qp_count; 408d765af5SAbhijit Gangurde 418d765af5SAbhijit Gangurde u16 stats_type; 428d765af5SAbhijit Gangurde u8 aq_qtype; 438d765af5SAbhijit Gangurde u8 sq_qtype; 448d765af5SAbhijit Gangurde u8 rq_qtype; 458d765af5SAbhijit Gangurde u8 cq_qtype; 468d765af5SAbhijit Gangurde u8 eq_qtype; 478d765af5SAbhijit Gangurde 488d765af5SAbhijit Gangurde u8 udma_count; 498d765af5SAbhijit Gangurde u8 udma_qgrp_shift; 508d765af5SAbhijit Gangurde 518d765af5SAbhijit Gangurde u8 rdma_version; 528d765af5SAbhijit Gangurde u8 qp_opcodes; 538d765af5SAbhijit Gangurde u8 admin_opcodes; 548d765af5SAbhijit Gangurde 558d765af5SAbhijit Gangurde u8 max_stride; 568d765af5SAbhijit Gangurde bool sq_expdb; 578d765af5SAbhijit Gangurde bool rq_expdb; 588d765af5SAbhijit Gangurde u8 expdb_mask; 598d765af5SAbhijit Gangurde }; 608d765af5SAbhijit Gangurde 618d765af5SAbhijit Gangurde void ionic_fill_lif_cfg(struct ionic_lif *lif, struct ionic_lif_cfg *cfg); 628d765af5SAbhijit Gangurde struct net_device *ionic_lif_netdev(struct ionic_lif *lif); 63*2075bbe8SAbhijit Gangurde void ionic_lif_fw_version(struct ionic_lif *lif, char *str, size_t len); 64*2075bbe8SAbhijit Gangurde u8 ionic_lif_asic_rev(struct ionic_lif *lif); 658d765af5SAbhijit Gangurde 668d765af5SAbhijit Gangurde #endif /* _IONIC_LIF_CFG_H_ */ 67