Lines Matching refs:p_BmPool

58 static void depletion_link(t_BmPool *p_BmPool)  in depletion_link()  argument
60 t_BmPortal *p_Portal = (t_BmPortal *)p_BmPool->h_BmPortal; in depletion_link()
63 p_Portal->depletionPoolsTable[p_BmPool->bpid] = p_BmPool; in depletion_link()
64 bm_isr_bscn_mask(p_Portal->p_BmPortalLow, (uint8_t)p_BmPool->bpid, 1); in depletion_link()
68 static void depletion_unlink(t_BmPool *p_BmPool) in depletion_unlink() argument
70 t_BmPortal *p_Portal = (t_BmPortal *)p_BmPool->h_BmPortal; in depletion_unlink()
73 p_Portal->depletionPoolsTable[p_BmPool->bpid] = NULL; in depletion_unlink()
74 bm_isr_bscn_mask(p_Portal->p_BmPortalLow, (uint8_t)p_BmPool->bpid, 0); in depletion_unlink()
78 static t_Error BmPoolRelease(t_BmPool *p_BmPool, in BmPoolRelease() argument
85 if (p_BmPool->flags & BMAN_POOL_FLAG_NO_RELEASE) in BmPoolRelease()
89 if (!(p_BmPool->flags & BMAN_POOL_FLAG_STOCKPILE)) in BmPoolRelease()
90 return BmPortalRelease(h_BmPortal, p_BmPool->bpid, bufs, num, flags); in BmPoolRelease()
108 if ((p_BmPool->spFill + num) <= p_BmPool->spMaxBufs) in BmPoolRelease()
110 memcpy(PTR_MOVE(p_BmPool->sp, sizeof(struct bm_buffer) * (p_BmPool->spFill)), in BmPoolRelease()
113 p_BmPool->spFill += num; in BmPoolRelease()
120 p_BmPool->bpid, in BmPoolRelease()
121 …(struct bm_buffer *)PTR_MOVE(p_BmPool->sp, sizeof(struct bm_buffer) * (p_BmPool->spFill - p_BmPool in BmPoolRelease()
122 p_BmPool->spBufsCmd, in BmPoolRelease()
126 p_BmPool->spFill -= p_BmPool->spBufsCmd; in BmPoolRelease()
133 static int BmPoolAcquire(t_BmPool *p_BmPool,t_Handle h_BmPortal, in BmPoolAcquire() argument
137 if (p_BmPool->flags & BMAN_POOL_FLAG_ONLY_RELEASE) in BmPoolAcquire()
141 if (!(p_BmPool->flags & BMAN_POOL_FLAG_STOCKPILE)) in BmPoolAcquire()
142 return BmPortalAcquire(h_BmPortal, p_BmPool->bpid, bufs, num); in BmPoolAcquire()
145 ((p_BmPool->spFill - num) < p_BmPool->spMinBufs)) in BmPoolAcquire()
147 p_BmPool->spFill += BmPortalAcquire(h_BmPortal, in BmPoolAcquire()
148 p_BmPool->bpid, in BmPoolAcquire()
149 … (struct bm_buffer *)PTR_MOVE(p_BmPool->sp, sizeof(struct bm_buffer) * (p_BmPool->spFill)), in BmPoolAcquire()
150 p_BmPool->spBufsCmd); in BmPoolAcquire()
152 else if (p_BmPool->spFill < num) in BmPoolAcquire()
154 if (!p_BmPool->spFill) in BmPoolAcquire()
157 PTR_MOVE(p_BmPool->sp, sizeof(struct bm_buffer) * (p_BmPool->spFill - num)), in BmPoolAcquire()
159 p_BmPool->spFill -= num; in BmPoolAcquire()
163 static t_Error BmPoolFree(t_BmPool *p_BmPool, bool discardBuffers) in BmPoolFree() argument
168 ASSERT_COND(p_BmPool); in BmPoolFree()
170 if (!p_BmPool->shadowMode) in BmPoolFree()
172 if (p_BmPool->flags & BMAN_POOL_FLAG_DEPLETION) in BmPoolFree()
174 depletion_unlink(p_BmPool); in BmPoolFree()
175 BmUnSetPoolThresholds(p_BmPool->h_Bm, p_BmPool->bpid); in BmPoolFree()
179 p_Data = BM_POOL_GetBuf(p_BmPool, p_BmPool->h_BmPortal); in BmPoolFree()
182 h_BufContext = BM_POOL_GetBufferContext(p_BmPool, p_Data); in BmPoolFree()
184p_BmPool->bufferPoolInfo.f_PutBuf(p_BmPool->bufferPoolInfo.h_BufferPool, p_Data, h_BufContext); in BmPoolFree()
186 BmBpidPut(p_BmPool->h_Bm, p_BmPool->bpid); in BmPoolFree()
189 if (p_BmPool->sp) in BmPoolFree()
190 XX_Free(p_BmPool->sp); in BmPoolFree()
192 XX_Free(p_BmPool); in BmPoolFree()
203 t_BmPool *p_BmPool; in BM_POOL_Config() local
213 p_BmPool = (t_BmPool*)XX_Malloc(sizeof(t_BmPool)); in BM_POOL_Config()
214 if (!p_BmPool) in BM_POOL_Config()
219 memset(p_BmPool, 0, sizeof(t_BmPool)); in BM_POOL_Config()
221p_BmPool->p_BmPoolDriverParams = (t_BmPoolDriverParams *)XX_Malloc(sizeof(t_BmPoolDriverParams)); in BM_POOL_Config()
222 if (!p_BmPool->p_BmPoolDriverParams) in BM_POOL_Config()
224 XX_Free(p_BmPool); in BM_POOL_Config()
228 memset(p_BmPool->p_BmPoolDriverParams, 0, sizeof(t_BmPoolDriverParams)); in BM_POOL_Config()
230 p_BmPool->h_Bm = p_BmPoolParam->h_Bm; in BM_POOL_Config()
231 p_BmPool->h_BmPortal = p_BmPoolParam->h_BmPortal; in BM_POOL_Config()
232 p_BmPool->h_App = p_BmPoolParam->h_App; in BM_POOL_Config()
233 p_BmPool->numOfBuffers = p_BmPoolParam->numOfBuffers; in BM_POOL_Config()
234 p_BmPool->shadowMode = p_BmPoolParam->shadowMode; in BM_POOL_Config()
236 if (!p_BmPool->h_BmPortal) in BM_POOL_Config()
238 p_BmPool->h_BmPortal = BmGetPortalHandle(p_BmPool->h_Bm); in BM_POOL_Config()
239 SANITY_CHECK_RETURN_VALUE(p_BmPool->h_BmPortal, E_INVALID_HANDLE, NULL); in BM_POOL_Config()
242 memcpy(&p_BmPool->bufferPoolInfo, &p_BmPoolParam->bufferPoolInfo, sizeof(t_BufferPoolInfo)); in BM_POOL_Config()
243 if (!p_BmPool->bufferPoolInfo.f_PhysToVirt) in BM_POOL_Config()
244 p_BmPool->bufferPoolInfo.f_PhysToVirt = XX_PhysToVirt; in BM_POOL_Config()
245 if (!p_BmPool->bufferPoolInfo.f_VirtToPhys) in BM_POOL_Config()
246 p_BmPool->bufferPoolInfo.f_VirtToPhys = XX_VirtToPhys; in BM_POOL_Config()
248 p_BmPool->p_BmPoolDriverParams->dynamicBpid = DEFAULT_dynamicBpid; in BM_POOL_Config()
249 p_BmPool->p_BmPoolDriverParams->useDepletion = DEFAULT_useDepletion; in BM_POOL_Config()
250 p_BmPool->p_BmPoolDriverParams->useStockpile = DEFAULT_useStockpile; in BM_POOL_Config()
252 if (p_BmPool->shadowMode) in BM_POOL_Config()
254 p_BmPool->numOfBuffers = 0; in BM_POOL_Config()
255 BM_POOL_ConfigBpid(p_BmPool, p_BmPoolParam->bpid); in BM_POOL_Config()
258 return p_BmPool; in BM_POOL_Config()
263 t_BmPool *p_BmPool = (t_BmPool *)h_BmPool; in BM_POOL_Init() local
266 SANITY_CHECK_RETURN_ERROR(p_BmPool, E_INVALID_HANDLE); in BM_POOL_Init()
267 SANITY_CHECK_RETURN_ERROR(p_BmPool->p_BmPoolDriverParams, E_INVALID_HANDLE); in BM_POOL_Init()
269 p_BmPool->flags |= (p_BmPool->p_BmPoolDriverParams->dynamicBpid)?BMAN_POOL_FLAG_DYNAMIC_BPID:0; in BM_POOL_Init()
270 p_BmPool->flags |= (p_BmPool->p_BmPoolDriverParams->useStockpile)?BMAN_POOL_FLAG_STOCKPILE:0; in BM_POOL_Init()
271 p_BmPool->flags |= ((!p_BmPool->shadowMode) && in BM_POOL_Init()
272 (p_BmPool->p_BmPoolDriverParams->useDepletion))?BMAN_POOL_FLAG_DEPLETION:0; in BM_POOL_Init()
274 if (p_BmPool->flags & BMAN_POOL_FLAG_DYNAMIC_BPID) in BM_POOL_Init()
276 …if((p_BmPool->bpid = (uint8_t)BmBpidGet(p_BmPool->h_Bm, FALSE, (uint32_t)0)) == (uint8_t)ILLEGAL_B… in BM_POOL_Init()
278 BM_POOL_Free(p_BmPool); in BM_POOL_Init()
284 if (BmBpidGet(p_BmPool->h_Bm, TRUE, (uint32_t)p_BmPool->bpid) == (uint32_t)ILLEGAL_BASE) in BM_POOL_Init()
286 BM_POOL_Free(p_BmPool); in BM_POOL_Init()
287 RETURN_ERROR(CRITICAL, E_INVALID_STATE, ("can't force pool id %d", p_BmPool->bpid)); in BM_POOL_Init()
290 if (p_BmPool->flags & BMAN_POOL_FLAG_DEPLETION) in BM_POOL_Init()
292 …if(BmSetPoolThresholds(p_BmPool->h_Bm, p_BmPool->bpid, p_BmPool->p_BmPoolDriverParams->depletionTh… in BM_POOL_Init()
294 BM_POOL_Free(p_BmPool); in BM_POOL_Init()
295 … RETURN_ERROR(MAJOR, E_INVALID_STATE, ("can't set thresh for pool bpid %d",p_BmPool->bpid)); in BM_POOL_Init()
298 depletion_link(p_BmPool); in BM_POOL_Init()
301 if (p_BmPool->flags & BMAN_POOL_FLAG_STOCKPILE) in BM_POOL_Init()
303p_BmPool->sp = (struct bm_buffer *)XX_Malloc(sizeof(struct bm_buffer) * p_BmPool->spMaxBufs); in BM_POOL_Init()
304 if (!p_BmPool->sp) in BM_POOL_Init()
306 BM_POOL_Free(p_BmPool); in BM_POOL_Init()
309 memset(p_BmPool->sp, 0, sizeof(struct bm_buffer) * p_BmPool->spMaxBufs); in BM_POOL_Init()
312 XX_Free(p_BmPool->p_BmPoolDriverParams); in BM_POOL_Init()
313 p_BmPool->p_BmPoolDriverParams = NULL; in BM_POOL_Init()
318 if ((err = BM_POOL_FillBufs (p_BmPool, p_BmPool->h_BmPortal, p_BmPool->numOfBuffers)) != E_OK) in BM_POOL_Init()
320 BM_POOL_Free(p_BmPool); in BM_POOL_Init()
336 t_BmPool *p_BmPool = (t_BmPool *)h_BmPool; in BM_POOL_ConfigBpid() local
338 SANITY_CHECK_RETURN_ERROR(p_BmPool, E_INVALID_HANDLE); in BM_POOL_ConfigBpid()
339 SANITY_CHECK_RETURN_ERROR(p_BmPool->p_BmPoolDriverParams, E_INVALID_HANDLE); in BM_POOL_ConfigBpid()
342 p_BmPool->p_BmPoolDriverParams->dynamicBpid = FALSE; in BM_POOL_ConfigBpid()
343 p_BmPool->bpid = bpid; in BM_POOL_ConfigBpid()
351 t_BmPool *p_BmPool = (t_BmPool *)h_BmPool; in BM_POOL_ConfigDepletion() local
353 SANITY_CHECK_RETURN_ERROR(p_BmPool, E_INVALID_HANDLE); in BM_POOL_ConfigDepletion()
354 SANITY_CHECK_RETURN_ERROR(p_BmPool->p_BmPoolDriverParams, E_INVALID_HANDLE); in BM_POOL_ConfigDepletion()
357 p_BmPool->p_BmPoolDriverParams->useDepletion = TRUE; in BM_POOL_ConfigDepletion()
358 p_BmPool->f_Depletion = f_Depletion; in BM_POOL_ConfigDepletion()
359 memcpy(&p_BmPool->p_BmPoolDriverParams->depletionThresholds, in BM_POOL_ConfigDepletion()
361 sizeof(p_BmPool->p_BmPoolDriverParams->depletionThresholds)); in BM_POOL_ConfigDepletion()
368 t_BmPool *p_BmPool = (t_BmPool *)h_BmPool; in BM_POOL_ConfigStockpile() local
370 SANITY_CHECK_RETURN_ERROR(p_BmPool, E_INVALID_HANDLE); in BM_POOL_ConfigStockpile()
371 SANITY_CHECK_RETURN_ERROR(p_BmPool->p_BmPoolDriverParams, E_INVALID_HANDLE); in BM_POOL_ConfigStockpile()
374 SANITY_CHECK_RETURN_ERROR((p_BmPool->shadowMode || in BM_POOL_ConfigStockpile()
375 ((maxBuffers * 2) <= p_BmPool->numOfBuffers)), in BM_POOL_ConfigStockpile()
378 p_BmPool->p_BmPoolDriverParams->useStockpile = TRUE; in BM_POOL_ConfigStockpile()
379 p_BmPool->spMaxBufs = maxBuffers; in BM_POOL_ConfigStockpile()
380 p_BmPool->spMinBufs = minBuffers; in BM_POOL_ConfigStockpile()
381 p_BmPool->spBufsCmd = DEFAULT_numOfBufsPerCmd; in BM_POOL_ConfigStockpile()
383 SANITY_CHECK_RETURN_ERROR((p_BmPool->spMaxBufs >= in BM_POOL_ConfigStockpile()
384 (p_BmPool->spMinBufs + p_BmPool->spBufsCmd)), in BM_POOL_ConfigStockpile()
392 t_BmPool *p_BmPool = (t_BmPool *)h_BmPool; in BM_POOL_ConfigBuffContextMode() local
394 SANITY_CHECK_RETURN_ERROR(p_BmPool, E_INVALID_HANDLE); in BM_POOL_ConfigBuffContextMode()
395 SANITY_CHECK_RETURN_ERROR(p_BmPool->p_BmPoolDriverParams, E_INVALID_HANDLE); in BM_POOL_ConfigBuffContextMode()
397 p_BmPool->noBuffCtxt = !en; in BM_POOL_ConfigBuffContextMode()
404 t_BmPool *p_BmPool = (t_BmPool *)h_BmPool; in BM_POOL_GetBuf() local
410 SANITY_CHECK_RETURN_VALUE(p_BmPool, E_INVALID_HANDLE, NULL); in BM_POOL_GetBuf()
411 SANITY_CHECK_RETURN_VALUE(!p_BmPool->p_BmPoolDriverParams, E_INVALID_HANDLE, NULL); in BM_POOL_GetBuf()
412 SANITY_CHECK_RETURN_VALUE(p_BmPool->bufferPoolInfo.f_PhysToVirt, E_INVALID_STATE, NULL); in BM_POOL_GetBuf()
416 if (p_BmPool->h_BmPortal) in BM_POOL_GetBuf()
417 h_BmPortal = p_BmPool->h_BmPortal; in BM_POOL_GetBuf()
420 SANITY_CHECK_RETURN_VALUE(p_BmPool->h_Bm, E_INVALID_HANDLE, NULL); in BM_POOL_GetBuf()
421 h_BmPortal = BmGetPortalHandle(p_BmPool->h_Bm); in BM_POOL_GetBuf()
426 retBufsNum = (uint8_t)BmPoolAcquire(p_BmPool, h_BmPortal, bufs, 1, flags); in BM_POOL_GetBuf()
435 p_BmPool->bpid, in BM_POOL_GetBuf()
436 p_BmPool->bufferPoolInfo.f_PhysToVirt((physAddress_t)physAddr))); in BM_POOL_GetBuf()
438 return p_BmPool->bufferPoolInfo.f_PhysToVirt((physAddress_t)physAddr); in BM_POOL_GetBuf()
443 t_BmPool *p_BmPool = (t_BmPool *)h_BmPool; in BM_POOL_PutBuf() local
447 SANITY_CHECK_RETURN_ERROR(p_BmPool, E_INVALID_HANDLE); in BM_POOL_PutBuf()
448 SANITY_CHECK_RETURN_ERROR(!p_BmPool->p_BmPoolDriverParams, E_INVALID_STATE); in BM_POOL_PutBuf()
453 bufs[0].bpid = p_BmPool->bpid; in BM_POOL_PutBuf()
458 p_BmPool->bpid, (uint64_t)PTR_TO_UINT(p_Buff), physAddress)); in BM_POOL_PutBuf()
462 if (p_BmPool->h_BmPortal) in BM_POOL_PutBuf()
463 h_BmPortal = p_BmPool->h_BmPortal; in BM_POOL_PutBuf()
466 SANITY_CHECK_RETURN_ERROR(p_BmPool->h_Bm, E_INVALID_HANDLE); in BM_POOL_PutBuf()
467 h_BmPortal = BmGetPortalHandle(p_BmPool->h_Bm); in BM_POOL_PutBuf()
472 return BmPoolRelease(p_BmPool, h_BmPortal, bufs, 1, BMAN_RELEASE_FLAG_WAIT); in BM_POOL_PutBuf()
477 t_BmPool *p_BmPool = (t_BmPool *)h_BmPool; in BM_POOL_FillBufs() local
479 SANITY_CHECK_RETURN_ERROR(p_BmPool, E_INVALID_HANDLE); in BM_POOL_FillBufs()
480 SANITY_CHECK_RETURN_ERROR(!p_BmPool->p_BmPoolDriverParams, E_INVALID_STATE); in BM_POOL_FillBufs()
484 if (p_BmPool->h_BmPortal) in BM_POOL_FillBufs()
485 h_BmPortal = p_BmPool->h_BmPortal; in BM_POOL_FillBufs()
488 SANITY_CHECK_RETURN_ERROR(p_BmPool->h_Bm, E_INVALID_HANDLE); in BM_POOL_FillBufs()
489 h_BmPortal = BmGetPortalHandle(p_BmPool->h_Bm); in BM_POOL_FillBufs()
500 … p_Data = p_BmPool->bufferPoolInfo.f_GetBuf(p_BmPool->bufferPoolInfo.h_BufferPool, &h_BufContext); in BM_POOL_FillBufs()
502 RETURN_ERROR(MAJOR, E_INVALID_STATE, ("run-out of buffers for bpid %d",p_BmPool->bpid)); in BM_POOL_FillBufs()
504 if (!p_BmPool->noBuffCtxt) in BM_POOL_FillBufs()
507 if ((res = BM_POOL_PutBuf(p_BmPool, h_BmPortal, p_Data)) != E_OK) in BM_POOL_FillBufs()
516 t_BmPool *p_BmPool = (t_BmPool *)h_BmPool; in BM_POOL_GetId() local
518 SANITY_CHECK_RETURN_VALUE(p_BmPool, E_INVALID_HANDLE, 0); in BM_POOL_GetId()
519 SANITY_CHECK_RETURN_VALUE(!p_BmPool->p_BmPoolDriverParams, E_INVALID_HANDLE, 0); in BM_POOL_GetId()
521 return p_BmPool->bpid; in BM_POOL_GetId()
526 t_BmPool *p_BmPool = (t_BmPool *)h_BmPool; in BM_POOL_GetBufferSize() local
528 SANITY_CHECK_RETURN_VALUE(p_BmPool, E_INVALID_HANDLE, 0); in BM_POOL_GetBufferSize()
529 SANITY_CHECK_RETURN_VALUE(!p_BmPool->p_BmPoolDriverParams, E_INVALID_HANDLE, 0); in BM_POOL_GetBufferSize()
531 return p_BmPool->bufferPoolInfo.bufferSize; in BM_POOL_GetBufferSize()
536 t_BmPool *p_BmPool = (t_BmPool *)h_BmPool; in BM_POOL_GetBufferContext() local
538 SANITY_CHECK_RETURN_VALUE(p_BmPool, E_INVALID_HANDLE, NULL); in BM_POOL_GetBufferContext()
539 SANITY_CHECK_RETURN_VALUE(!p_BmPool->p_BmPoolDriverParams, E_INVALID_HANDLE, NULL); in BM_POOL_GetBufferContext()
542 if (p_BmPool->noBuffCtxt) in BM_POOL_GetBufferContext()
550 t_BmPool *p_BmPool = (t_BmPool *)h_BmPool; in BM_POOL_GetCounter() local
552 SANITY_CHECK_RETURN_VALUE(p_BmPool, E_INVALID_HANDLE, 0); in BM_POOL_GetCounter()
553 SANITY_CHECK_RETURN_VALUE(!p_BmPool->p_BmPoolDriverParams, E_INVALID_HANDLE, 0); in BM_POOL_GetCounter()
558 return BmGetCounter(p_BmPool->h_Bm, e_BM_IM_COUNTERS_POOL_CONTENT, p_BmPool->bpid); in BM_POOL_GetCounter()
560 return (p_BmPool->swDepletionCount += in BM_POOL_GetCounter()
561 BmGetCounter(p_BmPool->h_Bm, e_BM_IM_COUNTERS_POOL_SW_DEPLETION, p_BmPool->bpid)); in BM_POOL_GetCounter()
563 return (p_BmPool->hwDepletionCount += in BM_POOL_GetCounter()
564 BmGetCounter(p_BmPool->h_Bm, e_BM_IM_COUNTERS_POOL_HW_DEPLETION, p_BmPool->bpid)); in BM_POOL_GetCounter()