1296177Sjhibbits/******************************************************************************
2296177Sjhibbits
3296177Sjhibbits � 1995-2003, 2004, 2005-2011 Freescale Semiconductor, Inc.
4296177Sjhibbits All rights reserved.
5296177Sjhibbits
6296177Sjhibbits This is proprietary source code of Freescale Semiconductor Inc.,
7296177Sjhibbits and its use is subject to the NetComm Device Drivers EULA.
8296177Sjhibbits The copyright notice above does not evidence any actual or intended
9296177Sjhibbits publication of such source code.
10296177Sjhibbits
11296177Sjhibbits ALTERNATIVELY, redistribution and use in source and binary forms, with
12296177Sjhibbits or without modification, are permitted provided that the following
13296177Sjhibbits conditions are met:
14296177Sjhibbits     * Redistributions of source code must retain the above copyright
15296177Sjhibbits       notice, this list of conditions and the following disclaimer.
16296177Sjhibbits     * Redistributions in binary form must reproduce the above copyright
17296177Sjhibbits       notice, this list of conditions and the following disclaimer in the
18296177Sjhibbits       documentation and/or other materials provided with the distribution.
19296177Sjhibbits     * Neither the name of Freescale Semiconductor nor the
20296177Sjhibbits       names of its contributors may be used to endorse or promote products
21296177Sjhibbits       derived from this software without specific prior written permission.
22296177Sjhibbits
23296177Sjhibbits THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
24296177Sjhibbits EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
25296177Sjhibbits WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26296177Sjhibbits DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
27296177Sjhibbits DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
28296177Sjhibbits (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29296177Sjhibbits LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
30296177Sjhibbits ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31296177Sjhibbits (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
32296177Sjhibbits SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33296177Sjhibbits *
34296177Sjhibbits
35296177Sjhibbits **************************************************************************/
36296177Sjhibbits/******************************************************************************
37296177Sjhibbits @File          fsl_bman.h
38296177Sjhibbits
39296177Sjhibbits @Description   BM header
40296177Sjhibbits*//***************************************************************************/
41296177Sjhibbits#ifndef __FSL_BMAN_H
42296177Sjhibbits#define __FSL_BMAN_H
43296177Sjhibbits
44296177Sjhibbits#include "std_ext.h"
45296177Sjhibbits
46296177Sjhibbits
47296177Sjhibbits/*************************************************/
48296177Sjhibbits/*   BMan s/w corenet portal, low-level i/face   */
49296177Sjhibbits/*************************************************/
50296177Sjhibbitstypedef enum {
51296177Sjhibbits    e_BmPortalPCI = 0,          /* PI index, cache-inhibited */
52296177Sjhibbits    e_BmPortalPCE,              /* PI index, cache-enabled */
53296177Sjhibbits    e_BmPortalPVB               /* valid-bit */
54296177Sjhibbits} e_BmPortalProduceMode;
55296177Sjhibbits
56296177Sjhibbitstypedef enum {
57296177Sjhibbits    e_BmPortalRcrCCI = 0,      /* CI index, cache-inhibited */
58296177Sjhibbits    e_BmPortalRcrCCE           /* CI index, cache-enabled */
59296177Sjhibbits} e_BmPortalRcrConsumeMode;
60296177Sjhibbits
61296177Sjhibbits/* Portal constants */
62296177Sjhibbits#define BM_RCR_SIZE        8
63296177Sjhibbits
64296177Sjhibbits/* Hardware constants */
65296177Sjhibbitsenum bm_isr_reg {
66296177Sjhibbits    bm_isr_status = 0,
67296177Sjhibbits    bm_isr_enable = 1,
68296177Sjhibbits    bm_isr_disable = 2,
69296177Sjhibbits    bm_isr_inhibit = 3
70296177Sjhibbits};
71296177Sjhibbits
72296177Sjhibbits/* Represents s/w corenet portal mapped data structures */
73296177Sjhibbitsstruct bm_rcr_entry;    /* RCR (Release Command Ring) entries */
74296177Sjhibbitsstruct bm_mc_command;    /* MC (Management Command) command */
75296177Sjhibbitsstruct bm_mc_result;    /* MC result */
76296177Sjhibbits
77296177Sjhibbits/* This type represents a s/w corenet portal space, and is used for creating the
78296177Sjhibbits * portal objects within it (RCR, etc) */
79296177Sjhibbitsstruct bm_portal;
80296177Sjhibbits
81296177Sjhibbits/* This wrapper represents a bit-array for the depletion state of the 64 Bman
82296177Sjhibbits * buffer pools. */
83296177Sjhibbitsstruct bman_depletion {
84296177Sjhibbits    uint32_t __state[2];
85296177Sjhibbits};
86296177Sjhibbits#define __bmdep_word(x) ((x) >> 5)
87296177Sjhibbits#define __bmdep_shift(x) ((x) & 0x1f)
88296177Sjhibbits#define __bmdep_bit(x) (0x80000000 >> __bmdep_shift(x))
89296177Sjhibbitsstatic __inline__ void bman_depletion_init(struct bman_depletion *c)
90296177Sjhibbits{
91296177Sjhibbits    c->__state[0] = c->__state[1] = 0;
92296177Sjhibbits}
93296177Sjhibbitsstatic __inline__ void bman_depletion_fill(struct bman_depletion *c)
94296177Sjhibbits{
95296177Sjhibbits    c->__state[0] = c->__state[1] = (uint32_t)~0;
96296177Sjhibbits}
97296177Sjhibbitsstatic __inline__ int bman_depletion_get(const struct bman_depletion *c, uint8_t bpid)
98296177Sjhibbits{
99296177Sjhibbits    return (int)(c->__state[__bmdep_word(bpid)] & __bmdep_bit(bpid));
100296177Sjhibbits}
101296177Sjhibbitsstatic __inline__ void bman_depletion_set(struct bman_depletion *c, uint8_t bpid)
102296177Sjhibbits{
103296177Sjhibbits    c->__state[__bmdep_word(bpid)] |= __bmdep_bit(bpid);
104296177Sjhibbits}
105296177Sjhibbitsstatic __inline__ void bman_depletion_unset(struct bman_depletion *c, uint8_t bpid)
106296177Sjhibbits{
107296177Sjhibbits    c->__state[__bmdep_word(bpid)] &= ~__bmdep_bit(bpid);
108296177Sjhibbits}
109296177Sjhibbits
110296177Sjhibbits/* ------------------------------ */
111296177Sjhibbits/* --- Portal enumeration API --- */
112296177Sjhibbits
113296177Sjhibbits/* ------------------------------ */
114296177Sjhibbits/* --- Buffer pool allocation --- */
115296177Sjhibbits#define BM_POOL_THRESH_SW_ENTER 0
116296177Sjhibbits#define BM_POOL_THRESH_SW_EXIT  1
117296177Sjhibbits#define BM_POOL_THRESH_HW_ENTER 2
118296177Sjhibbits#define BM_POOL_THRESH_HW_EXIT  3
119296177Sjhibbits
120296177Sjhibbits/* --------------- */
121296177Sjhibbits/* --- RCR API --- */
122296177Sjhibbits
123296177Sjhibbits/* Create/destroy */
124296177Sjhibbitst_Error bm_rcr_init(struct bm_portal *portal,
125296177Sjhibbits                    e_BmPortalProduceMode pmode,
126296177Sjhibbits                    e_BmPortalRcrConsumeMode cmode);
127296177Sjhibbitsvoid bm_rcr_finish(struct bm_portal *portal);
128296177Sjhibbits
129296177Sjhibbits/* Start/abort RCR entry */
130296177Sjhibbitsstruct bm_rcr_entry *bm_rcr_start(struct bm_portal *portal);
131296177Sjhibbitsvoid bm_rcr_abort(struct bm_portal *portal);
132296177Sjhibbits
133296177Sjhibbits/* For PI modes only. This presumes a started but uncommitted RCR entry. If
134296177Sjhibbits * there's no more room in the RCR, this function returns NULL. Otherwise it
135296177Sjhibbits * returns the next RCR entry and increments an internal PI counter without
136296177Sjhibbits * flushing it to h/w. */
137296177Sjhibbitsstruct bm_rcr_entry *bm_rcr_pend_and_next(struct bm_portal *portal, uint8_t myverb);
138296177Sjhibbits
139296177Sjhibbits/* Commit RCR entries, including pending ones (aka "write PI") */
140296177Sjhibbitsvoid bm_rcr_pci_commit(struct bm_portal *portal, uint8_t myverb);
141296177Sjhibbitsvoid bm_rcr_pce_prefetch(struct bm_portal *portal);
142296177Sjhibbitsvoid bm_rcr_pce_commit(struct bm_portal *portal, uint8_t myverb);
143296177Sjhibbitsvoid bm_rcr_pvb_commit(struct bm_portal *portal, uint8_t myverb);
144296177Sjhibbits
145296177Sjhibbits/* Track h/w consumption. Returns non-zero if h/w had consumed previously
146296177Sjhibbits * unconsumed RCR entries. */
147296177Sjhibbitsuint8_t bm_rcr_cci_update(struct bm_portal *portal);
148296177Sjhibbitsvoid bm_rcr_cce_prefetch(struct bm_portal *portal);
149296177Sjhibbitsuint8_t bm_rcr_cce_update(struct bm_portal *portal);
150296177Sjhibbits/* Returns the number of available RCR entries */
151296177Sjhibbitsuint8_t bm_rcr_get_avail(struct bm_portal *portal);
152296177Sjhibbits/* Returns the number of unconsumed RCR entries */
153296177Sjhibbitsuint8_t bm_rcr_get_fill(struct bm_portal *portal);
154296177Sjhibbits
155296177Sjhibbits/* Read/write the RCR interrupt threshold */
156296177Sjhibbitsuint8_t bm_rcr_get_ithresh(struct bm_portal *portal);
157296177Sjhibbitsvoid bm_rcr_set_ithresh(struct bm_portal *portal, uint8_t ithresh);
158296177Sjhibbits
159296177Sjhibbits
160296177Sjhibbits/* ------------------------------ */
161296177Sjhibbits/* --- Management command API --- */
162296177Sjhibbits
163296177Sjhibbits/* Create/destroy */
164296177Sjhibbitst_Error bm_mc_init(struct bm_portal *portal);
165296177Sjhibbitsvoid bm_mc_finish(struct bm_portal *portal);
166296177Sjhibbits
167296177Sjhibbits/* Start/abort mgmt command */
168296177Sjhibbitsstruct bm_mc_command *bm_mc_start(struct bm_portal *portal);
169296177Sjhibbitsvoid bm_mc_abort(struct bm_portal *portal);
170296177Sjhibbits
171296177Sjhibbits/* Writes 'verb' with appropriate 'vbit'. Invalidates and pre-fetches the
172296177Sjhibbits * response. */
173296177Sjhibbitsvoid bm_mc_commit(struct bm_portal *portal, uint8_t myverb);
174296177Sjhibbits
175296177Sjhibbits/* Poll for result. If NULL, invalidates and prefetches for the next call. */
176296177Sjhibbitsstruct bm_mc_result *bm_mc_result(struct bm_portal *portal);
177296177Sjhibbits
178296177Sjhibbits
179296177Sjhibbits/* ------------------------------------- */
180296177Sjhibbits/* --- Portal interrupt register API --- */
181296177Sjhibbits
182296177Sjhibbits/* For a quick explanation of the Bman interrupt model, see the comments in the
183296177Sjhibbits * equivalent section of the qman_portal.h header.
184296177Sjhibbits */
185296177Sjhibbits
186296177Sjhibbits/* Create/destroy */
187296177Sjhibbitst_Error bm_isr_init(struct bm_portal *portal);
188296177Sjhibbitsvoid bm_isr_finish(struct bm_portal *portal);
189296177Sjhibbits
190296177Sjhibbits/* BSCN masking is a per-portal configuration */
191296177Sjhibbitsvoid bm_isr_bscn_mask(struct bm_portal *portal, uint8_t bpid, int enable);
192296177Sjhibbits
193296177Sjhibbits/* Used by all portal interrupt registers except 'inhibit' */
194296177Sjhibbits#define BM_PIRQ_RCRI    0x00000002    /* RCR Ring (below threshold) */
195296177Sjhibbits#define BM_PIRQ_BSCN    0x00000001    /* Buffer depletion State Change */
196296177Sjhibbits
197296177Sjhibbits/* These are bm_<reg>_<verb>(). So for example, bm_disable_write() means "write
198296177Sjhibbits * the disable register" rather than "disable the ability to write". */
199296177Sjhibbits#define bm_isr_status_read(bm)      __bm_isr_read(bm, bm_isr_status)
200296177Sjhibbits#define bm_isr_status_clear(bm, m)  __bm_isr_write(bm, bm_isr_status, m)
201296177Sjhibbits#define bm_isr_enable_read(bm)      __bm_isr_read(bm, bm_isr_enable)
202296177Sjhibbits#define bm_isr_enable_write(bm, v)  __bm_isr_write(bm, bm_isr_enable, v)
203296177Sjhibbits#define bm_isr_disable_read(bm)     __bm_isr_read(bm, bm_isr_disable)
204296177Sjhibbits#define bm_isr_disable_write(bm, v) __bm_isr_write(bm, bm_isr_disable, v)
205296177Sjhibbits#define bm_isr_inhibit(bm)          __bm_isr_write(bm, bm_isr_inhibit, 1)
206296177Sjhibbits#define bm_isr_uninhibit(bm)        __bm_isr_write(bm, bm_isr_inhibit, 0)
207296177Sjhibbits
208296177Sjhibbits/* Don't use these, use the wrappers above*/
209296177Sjhibbitsuint32_t __bm_isr_read(struct bm_portal *portal, enum bm_isr_reg n);
210296177Sjhibbitsvoid __bm_isr_write(struct bm_portal *portal, enum bm_isr_reg n, uint32_t val);
211296177Sjhibbits
212296177Sjhibbits/* ------------------------------------------------------- */
213296177Sjhibbits/* --- Bman data structures (and associated constants) --- */
214296177Sjhibbits/* Code-reduction, define a wrapper for 48-bit buffers. In cases where a buffer
215296177Sjhibbits * pool id specific to this buffer is needed (BM_RCR_VERB_CMD_BPID_MULTI,
216296177Sjhibbits * BM_MCC_VERB_ACQUIRE), the 'bpid' field is used. */
217296177Sjhibbits
218296177Sjhibbits#define BM_RCR_VERB_VBIT                0x80
219296177Sjhibbits#define BM_RCR_VERB_CMD_MASK            0x70    /* one of two values; */
220296177Sjhibbits#define BM_RCR_VERB_CMD_BPID_SINGLE     0x20
221296177Sjhibbits#define BM_RCR_VERB_CMD_BPID_MULTI      0x30
222296177Sjhibbits#define BM_RCR_VERB_BUFCOUNT_MASK       0x0f    /* values 1..8 */
223296177Sjhibbits
224296177Sjhibbits#define BM_MCC_VERB_VBIT                0x80
225296177Sjhibbits#define BM_MCC_VERB_CMD_MASK            0x70    /* where the verb contains; */
226296177Sjhibbits#define BM_MCC_VERB_CMD_ACQUIRE         0x10
227296177Sjhibbits#define BM_MCC_VERB_CMD_QUERY           0x40
228296177Sjhibbits#define BM_MCC_VERB_ACQUIRE_BUFCOUNT    0x0f    /* values 1..8 go here */
229296177Sjhibbits
230296177Sjhibbits
231296177Sjhibbits#if defined(__MWERKS__) && !defined(__GNUC__)
232296177Sjhibbits#pragma pack(push,1)
233296177Sjhibbits#endif /* defined(__MWERKS__) && ... */
234296177Sjhibbits#define MEM_MAP_START
235296177Sjhibbits
236296177Sjhibbits_Packed struct bm_buffer {
237296177Sjhibbits    volatile uint8_t reserved1;
238296177Sjhibbits    volatile uint8_t bpid;
239296177Sjhibbits    volatile uint16_t hi;    /* High 16-bits of 48-bit address */
240296177Sjhibbits    volatile uint32_t lo;    /* Low 32-bits of 48-bit address */
241296177Sjhibbits} _PackedType;
242296177Sjhibbits
243296177Sjhibbits/* See 1.5.3.5.4: "Release Command" */
244296177Sjhibbits_Packed struct bm_rcr_entry {
245296177Sjhibbits    _Packed union {
246296177Sjhibbits        _Packed struct {
247296177Sjhibbits            volatile uint8_t __dont_write_directly__verb;
248296177Sjhibbits            volatile uint8_t bpid; /* used with BM_RCR_VERB_CMD_BPID_SINGLE */
249296177Sjhibbits            volatile uint8_t reserved1[62];
250296177Sjhibbits        } _PackedType;
251296177Sjhibbits        volatile struct bm_buffer bufs[8];
252296177Sjhibbits    } _PackedType;
253296177Sjhibbits} _PackedType;
254296177Sjhibbits
255296177Sjhibbits/* See 1.5.3.1: "Acquire Command" */
256296177Sjhibbits/* See 1.5.3.2: "Query Command" */
257296177Sjhibbits_Packed struct bm_mc_command {
258296177Sjhibbits    volatile uint8_t __dont_write_directly__verb;
259296177Sjhibbits    _Packed union {
260296177Sjhibbits        _Packed struct bm_mcc_acquire {
261296177Sjhibbits            volatile uint8_t bpid;
262296177Sjhibbits            volatile uint8_t reserved1[62];
263296177Sjhibbits        } _PackedType acquire;
264296177Sjhibbits        _Packed struct bm_mcc_query {
265296177Sjhibbits            volatile uint8_t reserved1[63];
266296177Sjhibbits        } _PackedType query;
267296177Sjhibbits    } _PackedType;
268296177Sjhibbits} _PackedType;
269296177Sjhibbits
270296177Sjhibbits/* See 1.5.3.3: "Acquire Reponse" */
271296177Sjhibbits/* See 1.5.3.4: "Query Reponse" */
272296177Sjhibbits_Packed struct bm_mc_result {
273296177Sjhibbits    _Packed union {
274296177Sjhibbits        _Packed struct {
275296177Sjhibbits            volatile uint8_t verb;
276296177Sjhibbits            volatile uint8_t reserved1[63];
277296177Sjhibbits        } _PackedType;
278296177Sjhibbits        _Packed union {
279296177Sjhibbits            _Packed struct {
280296177Sjhibbits                volatile uint8_t reserved1;
281296177Sjhibbits                volatile uint8_t bpid;
282296177Sjhibbits                volatile uint8_t reserved2[62];
283296177Sjhibbits            } _PackedType;
284296177Sjhibbits            volatile struct bm_buffer bufs[8];
285296177Sjhibbits        } _PackedType acquire;
286296177Sjhibbits        _Packed struct {
287296177Sjhibbits            volatile uint8_t reserved1[32];
288296177Sjhibbits            /* "availability state" and "depletion state" */
289296177Sjhibbits            _Packed struct {
290296177Sjhibbits                volatile uint8_t reserved1[8];
291296177Sjhibbits                /* Access using bman_depletion_***() */
292296177Sjhibbits                volatile struct bman_depletion state;
293296177Sjhibbits            } _PackedType as, ds;
294296177Sjhibbits        } _PackedType query;
295296177Sjhibbits    } _PackedType;
296296177Sjhibbits} _PackedType;
297296177Sjhibbits
298296177Sjhibbits#define MEM_MAP_END
299296177Sjhibbits#if defined(__MWERKS__) && !defined(__GNUC__)
300296177Sjhibbits#pragma pack(pop)
301296177Sjhibbits#endif /* defined(__MWERKS__) && ... */
302296177Sjhibbits
303296177Sjhibbits
304296177Sjhibbits#define BM_MCR_VERB_VBIT                0x80
305296177Sjhibbits#define BM_MCR_VERB_CMD_MASK            BM_MCC_VERB_CMD_MASK
306296177Sjhibbits#define BM_MCR_VERB_CMD_ACQUIRE         BM_MCC_VERB_CMD_ACQUIRE
307296177Sjhibbits#define BM_MCR_VERB_CMD_QUERY           BM_MCC_VERB_CMD_QUERY
308296177Sjhibbits#define BM_MCR_VERB_CMD_ERR_INVALID     0x60
309296177Sjhibbits#define BM_MCR_VERB_CMD_ERR_ECC         0x70
310296177Sjhibbits#define BM_MCR_VERB_ACQUIRE_BUFCOUNT    BM_MCC_VERB_ACQUIRE_BUFCOUNT /* 0..8 */
311296177Sjhibbits/* Determine the "availability state" of pool 'p' from a query result 'r' */
312296177Sjhibbits#define BM_MCR_QUERY_AVAILABILITY(r,p) bman_depletion_get(&r->query.as.state,p)
313296177Sjhibbits/* Determine the "depletion state" of pool 'p' from a query result 'r' */
314296177Sjhibbits#define BM_MCR_QUERY_DEPLETION(r,p) bman_depletion_get(&r->query.ds.state,p)
315296177Sjhibbits
316296177Sjhibbits
317296177Sjhibbits/* Portal and Buffer Pools */
318296177Sjhibbits/* ----------------------- */
319296177Sjhibbits
320296177Sjhibbits/* Flags to bman_create_portal() */
321296177Sjhibbits#define BMAN_PORTAL_FLAG_IRQ         0x00000001 /* use interrupt handler */
322296177Sjhibbits#define BMAN_PORTAL_FLAG_IRQ_FAST    0x00000002 /* ... for fast-path too! */
323296177Sjhibbits#define BMAN_PORTAL_FLAG_COMPACT     0x00000004 /* use compaction algorithm */
324296177Sjhibbits#define BMAN_PORTAL_FLAG_RECOVER     0x00000008 /* recovery mode */
325296177Sjhibbits#define BMAN_PORTAL_FLAG_WAIT        0x00000010 /* wait if RCR is full */
326296177Sjhibbits#define BMAN_PORTAL_FLAG_WAIT_INT    0x00000020 /* if wait, interruptible? */
327296177Sjhibbits#define BMAN_PORTAL_FLAG_CACHE       0x00000400 /* use cache-able area for rings */
328296177Sjhibbits
329296177Sjhibbits/* Flags to bman_new_pool() */
330296177Sjhibbits#define BMAN_POOL_FLAG_NO_RELEASE    0x00000001 /* can't release to pool */
331296177Sjhibbits#define BMAN_POOL_FLAG_ONLY_RELEASE  0x00000002 /* can only release to pool */
332296177Sjhibbits#define BMAN_POOL_FLAG_DEPLETION     0x00000004 /* track depletion entry/exit */
333296177Sjhibbits#define BMAN_POOL_FLAG_DYNAMIC_BPID  0x00000008 /* (de)allocate bpid */
334296177Sjhibbits#define BMAN_POOL_FLAG_THRESH        0x00000010 /* set depletion thresholds */
335296177Sjhibbits#define BMAN_POOL_FLAG_STOCKPILE     0x00000020 /* stockpile to reduce hw ops */
336296177Sjhibbits
337296177Sjhibbits/* Flags to bman_release() */
338296177Sjhibbits#define BMAN_RELEASE_FLAG_WAIT       0x00000001 /* wait if RCR is full */
339296177Sjhibbits#define BMAN_RELEASE_FLAG_WAIT_INT   0x00000002 /* if we wait, interruptible? */
340296177Sjhibbits#define BMAN_RELEASE_FLAG_WAIT_SYNC  0x00000004 /* if wait, until consumed? */
341296177Sjhibbits#define BMAN_RELEASE_FLAG_NOW        0x00000008 /* issue immediate release */
342296177Sjhibbits
343296177Sjhibbits/* Flags to bman_acquire() */
344296177Sjhibbits#define BMAN_ACQUIRE_FLAG_STOCKPILE  0x00000001 /* no hw op, stockpile only */
345296177Sjhibbits
346296177Sjhibbits
347296177Sjhibbits#endif /* __FSL_BMAN_H */
348