xref: /linux/drivers/infiniband/hw/ionic/ionic_lif_cfg.h (revision 4f38da1f027ea2c9f01bb71daa7a299c191b6940)
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