xref: /freebsd/sys/dev/dpaa/bman_var.h (revision 7a40b8a89e7da2a7e8d8e132bc37885b22e9bfb1)
1fd8d34ceSJustin Hibbits /*
2fd8d34ceSJustin Hibbits  * Copyright (c) 2026 Justin Hibbits
3*7a40b8a8SJustin Hibbits  *
4*7a40b8a8SJustin Hibbits  * SPDX-License-Identifier: BSD-2-Clause
5fd8d34ceSJustin Hibbits  */
6fd8d34ceSJustin Hibbits 
7fd8d34ceSJustin Hibbits #ifndef	BMAN_VAR_H
8fd8d34ceSJustin Hibbits #define	BMAN_VAR_H
9fd8d34ceSJustin Hibbits 
10fd8d34ceSJustin Hibbits #include "dpaa_common.h"
11fd8d34ceSJustin Hibbits #include "portals.h"
12fd8d34ceSJustin Hibbits 
13fd8d34ceSJustin Hibbits #define	BMAN_MAX_POOLS	64
14fd8d34ceSJustin Hibbits #define	BMAN_MAX_POOLS_1023	8
15fd8d34ceSJustin Hibbits 
16fd8d34ceSJustin Hibbits DPAA_RING_DECLARE(bman_rcr);
17fd8d34ceSJustin Hibbits 
18fd8d34ceSJustin Hibbits struct bman_mc {
19fd8d34ceSJustin Hibbits 	uint8_t polarity;
20fd8d34ceSJustin Hibbits 	bool busy;
21fd8d34ceSJustin Hibbits };
22fd8d34ceSJustin Hibbits 
23fd8d34ceSJustin Hibbits struct bman_portal_softc {
24fd8d34ceSJustin Hibbits 	struct dpaa_portal_softc sc_base;
25fd8d34ceSJustin Hibbits 
26fd8d34ceSJustin Hibbits 	struct bman_mc mc;
27fd8d34ceSJustin Hibbits 	struct bman_rcr_ring sc_rcr;
28fd8d34ceSJustin Hibbits 	struct bman_pool *sc_pools[BMAN_MAX_POOLS];
29fd8d34ceSJustin Hibbits };
30fd8d34ceSJustin Hibbits 
31fd8d34ceSJustin Hibbits struct bman_pool {
32fd8d34ceSJustin Hibbits 	uint32_t bpid;
33fd8d34ceSJustin Hibbits 	bm_depletion_handler dep_cb;
34fd8d34ceSJustin Hibbits 	void *arg;
35fd8d34ceSJustin Hibbits };
36fd8d34ceSJustin Hibbits 
37fd8d34ceSJustin Hibbits DPCPU_DECLARE(struct bman_portal_softc *, bman_affine_portal);
38fd8d34ceSJustin Hibbits 
39fd8d34ceSJustin Hibbits int bman_release(struct bman_pool *pool, const struct bman_buffer *bufs,
40fd8d34ceSJustin Hibbits     uint8_t count);
41fd8d34ceSJustin Hibbits 
42fd8d34ceSJustin Hibbits void bman_portal_enable_scn(struct bman_portal_softc *, struct bman_pool *);
43fd8d34ceSJustin Hibbits 
44fd8d34ceSJustin Hibbits #endif
45