IxNpeMhConfig_p.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555
  1. /**
  2. * @file IxNpeMhConfig_p.h
  3. *
  4. * @author Intel Corporation
  5. * @date 18 Jan 2002
  6. *
  7. * @brief This file contains the private API for the Configuration module.
  8. *
  9. *
  10. * @par
  11. * IXP400 SW Release version 2.0
  12. *
  13. * -- Copyright Notice --
  14. *
  15. * @par
  16. * Copyright 2001-2005, Intel Corporation.
  17. * All rights reserved.
  18. *
  19. * @par
  20. * Redistribution and use in source and binary forms, with or without
  21. * modification, are permitted provided that the following conditions
  22. * are met:
  23. * 1. Redistributions of source code must retain the above copyright
  24. * notice, this list of conditions and the following disclaimer.
  25. * 2. Redistributions in binary form must reproduce the above copyright
  26. * notice, this list of conditions and the following disclaimer in the
  27. * documentation and/or other materials provided with the distribution.
  28. * 3. Neither the name of the Intel Corporation nor the names of its contributors
  29. * may be used to endorse or promote products derived from this software
  30. * without specific prior written permission.
  31. *
  32. * @par
  33. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
  34. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  35. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  36. * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
  37. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  38. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  39. * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  40. * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  41. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  42. * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  43. * SUCH DAMAGE.
  44. *
  45. * @par
  46. * -- End of Copyright Notice --
  47. */
  48. /**
  49. * @defgroup IxNpeMhConfig_p IxNpeMhConfig_p
  50. *
  51. * @brief The private API for the Configuration module.
  52. *
  53. * @{
  54. */
  55. #ifndef IXNPEMHCONFIG_P_H
  56. #define IXNPEMHCONFIG_P_H
  57. #include "IxOsal.h"
  58. #include "IxNpeMh.h"
  59. #include "IxNpeMhMacros_p.h"
  60. /*
  61. * inline definition
  62. */
  63. /* enable function inlining for performances */
  64. #ifdef IXNPEMHSOLICITEDCBMGR_C
  65. /* Non-inline functions will be defined in this translation unit.
  66. Reason is that in GNU Compiler, if the Optimization is turn off, all extern inline
  67. functions will not be compiled.
  68. */
  69. # ifndef __wince
  70. # ifndef IXNPEMHCONFIG_INLINE
  71. # define IXNPEMHCONFIG_INLINE
  72. # endif
  73. # else
  74. # ifndef IXNPEMHCONFIG_INLINE
  75. # define IXNPEMHCONFIG_INLINE IX_OSAL_INLINE_EXTERN
  76. # endif
  77. # endif /* __wince*/
  78. #else
  79. # ifndef IXNPEMHCONFIG_INLINE
  80. # define IXNPEMHCONFIG_INLINE IX_OSAL_INLINE_EXTERN
  81. # endif /* IXNPEMHCONFIG_INLINE */
  82. #endif /* IXNPEMHSOLICITEDCBMGR_C */
  83. /*
  84. * Typedefs and #defines, etc.
  85. */
  86. typedef void (*IxNpeMhConfigIsr) (int); /**< ISR function pointer */
  87. /**
  88. * @struct IxNpeMhConfigNpeInfo
  89. *
  90. * @brief This structure is used to maintain the configuration information
  91. * associated with an NPE.
  92. */
  93. typedef struct
  94. {
  95. IxOsalMutex mutex; /**< mutex */
  96. UINT32 interruptId; /**< interrupt ID */
  97. UINT32 virtualRegisterBase; /**< register virtual base address */
  98. UINT32 statusRegister; /**< status register virtual address */
  99. UINT32 controlRegister; /**< control register virtual address */
  100. UINT32 inFifoRegister; /**< inFIFO register virutal address */
  101. UINT32 outFifoRegister; /**< outFIFO register virtual address */
  102. IxNpeMhConfigIsr isr; /**< isr routine for handling interrupt */
  103. BOOL oldInterruptState; /**< old interrupt state (TRUE => enabled) */
  104. } IxNpeMhConfigNpeInfo;
  105. /*
  106. * #defines for function return types, etc.
  107. */
  108. /**< NPE register base address */
  109. #define IX_NPEMH_NPE_BASE (IX_OSAL_IXP400_PERIPHERAL_PHYS_BASE)
  110. #define IX_NPEMH_NPEA_OFFSET (0x6000) /**< NPE-A register base offset */
  111. #define IX_NPEMH_NPEB_OFFSET (0x7000) /**< NPE-B register base offset */
  112. #define IX_NPEMH_NPEC_OFFSET (0x8000) /**< NPE-C register base offset */
  113. #define IX_NPEMH_NPESTAT_OFFSET (0x002C) /**< NPE status register offset */
  114. #define IX_NPEMH_NPECTL_OFFSET (0x0030) /**< NPE control register offset */
  115. #define IX_NPEMH_NPEFIFO_OFFSET (0x0038) /**< NPE FIFO register offset */
  116. /** NPE-A register base address */
  117. #define IX_NPEMH_NPEA_BASE (IX_NPEMH_NPE_BASE + IX_NPEMH_NPEA_OFFSET)
  118. /** NPE-B register base address */
  119. #define IX_NPEMH_NPEB_BASE (IX_NPEMH_NPE_BASE + IX_NPEMH_NPEB_OFFSET)
  120. /** NPE-C register base address */
  121. #define IX_NPEMH_NPEC_BASE (IX_NPEMH_NPE_BASE + IX_NPEMH_NPEC_OFFSET)
  122. /* NPE-A configuration */
  123. /** NPE-A interrupt */
  124. #define IX_NPEMH_NPEA_INT (IX_OSAL_IXP400_NPEA_IRQ_LVL)
  125. /** NPE-A FIFO register */
  126. #define IX_NPEMH_NPEA_FIFO (IX_NPEMH_NPEA_BASE + IX_NPEMH_NPEFIFO_OFFSET)
  127. /** NPE-A control register */
  128. #define IX_NPEMH_NPEA_CTL (IX_NPEMH_NPEA_BASE + IX_NPEMH_NPECTL_OFFSET)
  129. /** NPE-A status register */
  130. #define IX_NPEMH_NPEA_STAT (IX_NPEMH_NPEA_BASE + IX_NPEMH_NPESTAT_OFFSET)
  131. /* NPE-B configuration */
  132. /** NPE-B interrupt */
  133. #define IX_NPEMH_NPEB_INT (IX_OSAL_IXP400_NPEB_IRQ_LVL)
  134. /** NPE-B FIFO register */
  135. #define IX_NPEMH_NPEB_FIFO (IX_NPEMH_NPEB_BASE + IX_NPEMH_NPEFIFO_OFFSET)
  136. /** NPE-B control register */
  137. #define IX_NPEMH_NPEB_CTL (IX_NPEMH_NPEB_BASE + IX_NPEMH_NPECTL_OFFSET)
  138. /** NPE-B status register */
  139. #define IX_NPEMH_NPEB_STAT (IX_NPEMH_NPEB_BASE + IX_NPEMH_NPESTAT_OFFSET)
  140. /* NPE-C configuration */
  141. /** NPE-C interrupt */
  142. #define IX_NPEMH_NPEC_INT (IX_OSAL_IXP400_NPEC_IRQ_LVL)
  143. /** NPE-C FIFO register */
  144. #define IX_NPEMH_NPEC_FIFO (IX_NPEMH_NPEC_BASE + IX_NPEMH_NPEFIFO_OFFSET)
  145. /** NPE-C control register */
  146. #define IX_NPEMH_NPEC_CTL (IX_NPEMH_NPEC_BASE + IX_NPEMH_NPECTL_OFFSET)
  147. /** NPE-C status register */
  148. #define IX_NPEMH_NPEC_STAT (IX_NPEMH_NPEC_BASE + IX_NPEMH_NPESTAT_OFFSET)
  149. /* NPE control register bit definitions */
  150. #define IX_NPEMH_NPE_CTL_OFE (1 << 16) /**< OutFifoEnable */
  151. #define IX_NPEMH_NPE_CTL_IFE (1 << 17) /**< InFifoEnable */
  152. #define IX_NPEMH_NPE_CTL_OFEWE (1 << 24) /**< OutFifoEnableWriteEnable */
  153. #define IX_NPEMH_NPE_CTL_IFEWE (1 << 25) /**< InFifoEnableWriteEnable */
  154. /* NPE status register bit definitions */
  155. #define IX_NPEMH_NPE_STAT_OFNE (1 << 16) /**< OutFifoNotEmpty */
  156. #define IX_NPEMH_NPE_STAT_IFNF (1 << 17) /**< InFifoNotFull */
  157. #define IX_NPEMH_NPE_STAT_OFNF (1 << 18) /**< OutFifoNotFull */
  158. #define IX_NPEMH_NPE_STAT_IFNE (1 << 19) /**< InFifoNotEmpty */
  159. #define IX_NPEMH_NPE_STAT_MBINT (1 << 20) /**< Mailbox interrupt */
  160. #define IX_NPEMH_NPE_STAT_IFINT (1 << 21) /**< InFifo interrupt */
  161. #define IX_NPEMH_NPE_STAT_OFINT (1 << 22) /**< OutFifo interrupt */
  162. #define IX_NPEMH_NPE_STAT_WFINT (1 << 23) /**< WatchFifo interrupt */
  163. /**
  164. * Variable declarations. Externs are followed by static variables.
  165. */
  166. extern IxNpeMhConfigNpeInfo ixNpeMhConfigNpeInfo[IX_NPEMH_NUM_NPES];
  167. /*
  168. * Prototypes for interface functions.
  169. */
  170. /**
  171. * @fn void ixNpeMhConfigInitialize (
  172. IxNpeMhNpeInterrupts npeInterrupts)
  173. *
  174. * @brief This function initialises the Configuration module.
  175. *
  176. * @param IxNpeMhNpeInterrupts npeInterrupts (in) - whether or not to
  177. * service the NPE "outFIFO not empty" interrupts.
  178. *
  179. * @return No return value.
  180. */
  181. void ixNpeMhConfigInitialize (
  182. IxNpeMhNpeInterrupts npeInterrupts);
  183. /**
  184. * @fn void ixNpeMhConfigUninit (void)
  185. *
  186. * @brief This function uninitialises the Configuration module.
  187. *
  188. * @return No return value.
  189. */
  190. void ixNpeMhConfigUninit (void);
  191. /**
  192. * @fn void ixNpeMhConfigIsrRegister (
  193. IxNpeMhNpeId npeId,
  194. IxNpeMhConfigIsr isr)
  195. *
  196. * @brief This function registers an ISR to handle NPE "outFIFO not
  197. * empty" interrupts.
  198. *
  199. * @param IxNpeMhNpeId npeId (in) - the ID of the NPE whose interrupt will
  200. * be handled.
  201. * @param IxNpeMhConfigIsr isr (in) - the ISR function pointer that the
  202. * interrupt will trigger.
  203. *
  204. * @return No return value.
  205. */
  206. void ixNpeMhConfigIsrRegister (
  207. IxNpeMhNpeId npeId,
  208. IxNpeMhConfigIsr isr);
  209. /**
  210. * @fn BOOL ixNpeMhConfigNpeInterruptEnable (
  211. IxNpeMhNpeId npeId)
  212. *
  213. * @brief This function enables a NPE's "outFIFO not empty" interrupt.
  214. *
  215. * @param IxNpeMhNpeId npeId (in) - the ID of the NPE whose interrupt will
  216. * be enabled.
  217. *
  218. * @return Returns the previous state of the interrupt (TRUE => enabled).
  219. */
  220. BOOL ixNpeMhConfigNpeInterruptEnable (
  221. IxNpeMhNpeId npeId);
  222. /**
  223. * @fn BOOL ixNpeMhConfigNpeInterruptDisable (
  224. IxNpeMhNpeId npeId)
  225. *
  226. * @brief This function disables a NPE's "outFIFO not empty" interrupt
  227. *
  228. * @param IxNpeMhNpeId npeId (in) - the ID of the NPE whose interrupt will
  229. * be disabled.
  230. *
  231. * @return Returns the previous state of the interrupt (TRUE => enabled).
  232. */
  233. BOOL ixNpeMhConfigNpeInterruptDisable (
  234. IxNpeMhNpeId npeId);
  235. /**
  236. * @fn IxNpeMhMessageId ixNpeMhConfigMessageIdGet (
  237. IxNpeMhMessage message)
  238. *
  239. * @brief This function gets the ID of a message.
  240. *
  241. * @param IxNpeMhMessage message (in) - the message to get the ID of.
  242. *
  243. * @return the ID of the message
  244. */
  245. IxNpeMhMessageId ixNpeMhConfigMessageIdGet (
  246. IxNpeMhMessage message);
  247. /**
  248. * @fn BOOL ixNpeMhConfigNpeIdIsValid (
  249. IxNpeMhNpeId npeId)
  250. *
  251. * @brief This function checks to see if a NPE ID is valid.
  252. *
  253. * @param IxNpeMhNpeId npeId (in) - the NPE ID to validate.
  254. *
  255. * @return True if the NPE ID is valid, otherwise False.
  256. */
  257. BOOL ixNpeMhConfigNpeIdIsValid (
  258. IxNpeMhNpeId npeId);
  259. /**
  260. * @fn void ixNpeMhConfigLockGet (
  261. IxNpeMhNpeId npeId)
  262. *
  263. * @brief This function gets a lock for exclusive NPE interaction, and
  264. * disables the NPE's "outFIFO not empty" interrupt.
  265. *
  266. * @param IxNpeMhNpeId npeId (in) - The ID of the NPE for which to get the
  267. * lock and disable its interrupt.
  268. *
  269. * @return No return value.
  270. */
  271. void ixNpeMhConfigLockGet (
  272. IxNpeMhNpeId npeId);
  273. /**
  274. * @fn void ixNpeMhConfigLockRelease (
  275. IxNpeMhNpeId npeId)
  276. *
  277. * @brief This function releases a lock for exclusive NPE interaction, and
  278. * enables the NPE's "outFIFO not empty" interrupt.
  279. *
  280. * @param IxNpeMhNpeId npeId (in) - The ID of the NPE for which to release
  281. * the lock and enable its interrupt.
  282. *
  283. * @return No return value.
  284. */
  285. void ixNpeMhConfigLockRelease (
  286. IxNpeMhNpeId npeId);
  287. /**
  288. * @fn BOOL ixNpeMhConfigInFifoIsEmpty (
  289. IxNpeMhNpeId npeId)
  290. *
  291. * @brief This inline function checks if a NPE's inFIFO is empty.
  292. *
  293. * @param IxNpeMhNpeId npeId (in) - The ID of the NPE for which the inFIFO
  294. * will be checked.
  295. *
  296. * @return True if the inFIFO is empty, otherwise False.
  297. */
  298. IXNPEMHCONFIG_INLINE BOOL ixNpeMhConfigInFifoIsEmpty (
  299. IxNpeMhNpeId npeId);
  300. /**
  301. * @fn BOOL ixNpeMhConfigInFifoIsFull (
  302. IxNpeMhNpeId npeId)
  303. *
  304. * @brief This inline function checks if a NPE's inFIFO is full.
  305. *
  306. * @param IxNpeMhNpeId npeId (in) - The ID of the NPE for which the inFIFO
  307. * will be checked.
  308. *
  309. * @return True if the inFIFO is full, otherwise False.
  310. */
  311. IXNPEMHCONFIG_INLINE BOOL ixNpeMhConfigInFifoIsFull (
  312. IxNpeMhNpeId npeId);
  313. /**
  314. * @fn BOOL ixNpeMhConfigOutFifoIsEmpty (
  315. IxNpeMhNpeId npeId)
  316. *
  317. * @brief This inline function checks if a NPE's outFIFO is empty.
  318. *
  319. * @param IxNpeMhNpeId npeId (in) - The ID of the NPE for which the outFIFO
  320. * will be checked.
  321. *
  322. * @return True if the outFIFO is empty, otherwise False.
  323. */
  324. IXNPEMHCONFIG_INLINE BOOL ixNpeMhConfigOutFifoIsEmpty (
  325. IxNpeMhNpeId npeId);
  326. /**
  327. * @fn BOOL ixNpeMhConfigOutFifoIsFull (
  328. IxNpeMhNpeId npeId)
  329. *
  330. * @brief This inline function checks if a NPE's outFIFO is full.
  331. *
  332. * @param IxNpeMhNpeId npeId (in) - The ID of the NPE for which the outFIFO
  333. * will be checked.
  334. *
  335. * @return True if the outFIFO is full, otherwise False.
  336. */
  337. IXNPEMHCONFIG_INLINE BOOL ixNpeMhConfigOutFifoIsFull (
  338. IxNpeMhNpeId npeId);
  339. /**
  340. * @fn IX_STATUS ixNpeMhConfigInFifoWrite (
  341. IxNpeMhNpeId npeId,
  342. IxNpeMhMessage message)
  343. *
  344. * @brief This function writes a message to a NPE's inFIFO. The caller
  345. * must first check that the NPE's inFifo is not full. After writing the first
  346. * word of the message, this function will keep polling NPE's inFIFO is not
  347. * full to write the second word. If inFIFO is not available after maximum
  348. * retries (IX_NPE_MH_MAX_NUM_OF_RETRIES), this function will return TIMEOUT
  349. * status to indicate NPE hang / halt.
  350. *
  351. * @param IxNpeMhNpeId npeId (in) - The ID of the NPE for which the inFIFO
  352. * will be written to.
  353. * @param IxNpeMhMessage message (in) - The message to write.
  354. *
  355. * @return The function returns a status indicating success, failure or timeout.
  356. */
  357. IX_STATUS ixNpeMhConfigInFifoWrite (
  358. IxNpeMhNpeId npeId,
  359. IxNpeMhMessage message);
  360. /**
  361. * @fn IX_STATUS ixNpeMhConfigOutFifoRead (
  362. IxNpeMhNpeId npeId,
  363. IxNpeMhMessage *message)
  364. *
  365. * @brief This function reads a message from a NPE's outFIFO. The caller
  366. * must first check that the NPE's outFifo is not empty. After reading the first
  367. * word of the message, this function will keep polling NPE's outFIFO is not
  368. * empty to read the second word. If outFIFO is empty after maximum
  369. * retries (IX_NPE_MH_MAX_NUM_OF_RETRIES), this function will return TIMEOUT
  370. * status to indicate NPE hang / halt.
  371. *
  372. * @param IxNpeMhNpeId npeId (in) - The ID of the NPE for which the outFIFO
  373. * will be read from.
  374. * @param IxNpeMhMessage message (out) - The message read.
  375. *
  376. * @return The function returns a status indicating success, failure or timeout.
  377. */
  378. IX_STATUS ixNpeMhConfigOutFifoRead (
  379. IxNpeMhNpeId npeId,
  380. IxNpeMhMessage *message);
  381. /**
  382. * @fn void ixNpeMhConfigShow (
  383. IxNpeMhNpeId npeId)
  384. *
  385. * @brief This function will display the current state of the Configuration
  386. * module.
  387. *
  388. * @param IxNpeMhNpeId npeId (in) - The ID of the NPE to display state
  389. * information for.
  390. *
  391. * @return No return value.
  392. */
  393. void ixNpeMhConfigShow (
  394. IxNpeMhNpeId npeId);
  395. /**
  396. * @fn void ixNpeMhConfigShowReset (
  397. IxNpeMhNpeId npeId)
  398. *
  399. * @brief This function will reset the current state of the Configuration
  400. * module.
  401. *
  402. * @param IxNpeMhNpeId npeId (in) - The ID of the NPE to reset state
  403. * information for.
  404. *
  405. * @return No return value.
  406. */
  407. void ixNpeMhConfigShowReset (
  408. IxNpeMhNpeId npeId);
  409. /*
  410. * Inline functions
  411. */
  412. /*
  413. * This inline function checks if a NPE's inFIFO is empty.
  414. */
  415. IXNPEMHCONFIG_INLINE
  416. BOOL ixNpeMhConfigInFifoIsEmpty (
  417. IxNpeMhNpeId npeId)
  418. {
  419. UINT32 ifne;
  420. volatile UINT32 *statusReg =
  421. (UINT32 *)ixNpeMhConfigNpeInfo[npeId].statusRegister;
  422. /* get the IFNE (InFifoNotEmpty) bit of the status register */
  423. IX_NPEMH_REGISTER_READ_BITS (statusReg, &ifne, IX_NPEMH_NPE_STAT_IFNE);
  424. /* if the IFNE status bit is unset then the inFIFO is empty */
  425. return (ifne == 0);
  426. }
  427. /*
  428. * This inline function checks if a NPE's inFIFO is full.
  429. */
  430. IXNPEMHCONFIG_INLINE
  431. BOOL ixNpeMhConfigInFifoIsFull (
  432. IxNpeMhNpeId npeId)
  433. {
  434. UINT32 ifnf;
  435. volatile UINT32 *statusReg =
  436. (UINT32 *)ixNpeMhConfigNpeInfo[npeId].statusRegister;
  437. /* get the IFNF (InFifoNotFull) bit of the status register */
  438. IX_NPEMH_REGISTER_READ_BITS (statusReg, &ifnf, IX_NPEMH_NPE_STAT_IFNF);
  439. /* if the IFNF status bit is unset then the inFIFO is full */
  440. return (ifnf == 0);
  441. }
  442. /*
  443. * This inline function checks if a NPE's outFIFO is empty.
  444. */
  445. IXNPEMHCONFIG_INLINE
  446. BOOL ixNpeMhConfigOutFifoIsEmpty (
  447. IxNpeMhNpeId npeId)
  448. {
  449. UINT32 ofne;
  450. volatile UINT32 *statusReg =
  451. (UINT32 *)ixNpeMhConfigNpeInfo[npeId].statusRegister;
  452. /* get the OFNE (OutFifoNotEmpty) bit of the status register */
  453. IX_NPEMH_REGISTER_READ_BITS (statusReg, &ofne, IX_NPEMH_NPE_STAT_OFNE);
  454. /* if the OFNE status bit is unset then the outFIFO is empty */
  455. return (ofne == 0);
  456. }
  457. /*
  458. * This inline function checks if a NPE's outFIFO is full.
  459. */
  460. IXNPEMHCONFIG_INLINE
  461. BOOL ixNpeMhConfigOutFifoIsFull (
  462. IxNpeMhNpeId npeId)
  463. {
  464. UINT32 ofnf;
  465. volatile UINT32 *statusReg =
  466. (UINT32 *)ixNpeMhConfigNpeInfo[npeId].statusRegister;
  467. /* get the OFNF (OutFifoNotFull) bit of the status register */
  468. IX_NPEMH_REGISTER_READ_BITS (statusReg, &ofnf, IX_NPEMH_NPE_STAT_OFNF);
  469. /* if the OFNF status bit is unset then the outFIFO is full */
  470. return (ofnf == 0);
  471. }
  472. #endif /* IXNPEMHCONFIG_P_H */
  473. /**
  474. * @} defgroup IxNpeMhConfig_p
  475. */