/* ============================================================================ * Copyright (c) Texas Instruments Incorporated 2008, 2009 2016 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the * distribution. * * Neither the name of Texas Instruments Incorporated nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ /** * @file csl_xmcAux.h * * @brief * API Auxilary header file for XMC CSL. It gives the definitions of the * status query & control functions. * * \par * ============================================================================ * @n (C) Copyright 2008, 2009, Texas Instruments, Inc. * @n Use of this software is controlled by the terms and conditions found * @n in the license agreement under which this software has been supplied. * =========================================================================== * \par */ #ifndef CSL_XMCAUX_H #define CSL_XMCAUX_H #ifdef __cplusplus extern "C" { #endif #include /** @addtogroup CSL_XMC_FUNCTION @{ */ /** ============================================================================ * @n@b CSL_XMC_setXMPAXH * * @b Description * @n This function sets the contents of XMPAXH register indicated by the * index here. * please see section 7.3 on MPAX unit http://www.ti.com/lit/sprugw0 * for details on the sample arguments and example values to set * XMPAXH register as provided under table 7-2 * * @b Arguments @verbatim index Index into the set of 16 registers (0-15) mpaxh CSL_XMC_XMPAXH structure that needs to be set into the register @endverbatim * * Return Value * @n None * * Pre Condition * @n None * * Post Condition * @n Corresponding XMPAXH register configured with the value passed. * * @b Writes * @n XMC_XMPAXH_SEGSZ, XMC_XMPAXH_BADDR * * @b Example * @verbatim Uint32 index = 0; CSL_XMC_XMPAXH mpaxh; mpaxh.segSize = 4; mpaxh.baseAddress = 0x1000; CSL_XMC_setXMPAXH (index, &mpaxh); @endverbatim * ============================================================================= */ static inline void CSL_XMC_setXMPAXH ( Uint32 index, const CSL_XMC_XMPAXH* mpaxh ); static inline void CSL_XMC_setXMPAXH ( Uint32 index, const CSL_XMC_XMPAXH* mpaxh ) { hXmc->XMPAX[index].XMPAXH = CSL_FMK(XMC_XMPAXH_SEGSZ, mpaxh->segSize) | CSL_FMK(XMC_XMPAXH_BADDR, mpaxh->bAddr); } /** ============================================================================ * @n@b CSL_XMC_setXMPAXL * * @b Description * @n This function sets the contents of XMPAXL register corresponding to the * index specified. * please see section 7.3 on MPAX unit http://www.ti.com/lit/sprugw0 * for details on the sample arguments and example values to set * XMPAXL register as provided under table 7-2 * * @b Arguments @verbatim index Index into the set of 16 registers (0-15) mpaxl CSL_XMC_XMPAXL structure that needs to be set into the register @endverbatim * * Return Value * @n None * * Pre Condition * @n None * * Post Condition * @n Corresponding XMPAXL register configured with the value passed. * * @b Writes * @n XMC_XMPAXL_RADDR, * XMC_XMPAXL_UX, * XMC_XMPAXL_UW, * XMC_XMPAXL_UR, * XMC_XMPAXL_SX, * XMC_XMPAXL_SW, * XMC_XMPAXL_SR * * @b Example * @verbatim Uint32 index = 0; CSL_XMC_XMPAXL mpaxl; mpaxl.ux = 1; mpaxl.uw = 1; mpaxl.ur = 1; mpaxl.sx = 1; mpaxl.sw = 1; mpaxl.sr = 1; mpaxl.rAddr = 0x4000 ; CSL_XMC_setXMPAXL (index, &mpaxl); @endverbatim * ============================================================================= */ static inline void CSL_XMC_setXMPAXL ( Uint32 index, const CSL_XMC_XMPAXL* mpaxl ); static inline void CSL_XMC_setXMPAXL ( Uint32 index, const CSL_XMC_XMPAXL* mpaxl ) { Uint32 value = 0; /* Configure the XMPAXL register specified by the index. */ CSL_FINS (value, XMC_XMPAXL_UX, mpaxl->ux); CSL_FINS (value, XMC_XMPAXL_UW, mpaxl->uw); CSL_FINS (value, XMC_XMPAXL_UR, mpaxl->ur); CSL_FINS (value, XMC_XMPAXL_SX, mpaxl->sx); CSL_FINS (value, XMC_XMPAXL_SW, mpaxl->sw); CSL_FINS (value, XMC_XMPAXL_SR, mpaxl->sr); CSL_FINS (value, XMC_XMPAXL_RADDR, mpaxl->rAddr); hXmc->XMPAX[index].XMPAXL = value; } /** ============================================================================ * @n@b CSL_XMC_getXMPAXH * * @b Description * @n This function gets the contents of XMPAXH register. * * please see section 7.3 on MPAX unit http://www.ti.com/lit/sprugw0 * for details on the sample arguments and example values to set * XMPAXH register as provided under table 7-2 * * @b Arguments @verbatim index Index into the set of 16 XMPAXH registers mpaxh CSL_XMC_XMPAXH structure that needs to be populated with XMPAXH register contents. @endverbatim * * Return Value * @n None * * Pre Condition * @n None * * Post Condition * @n None * * @b Reads * @n XMC_XMPAXH_SEGSZ, XMC_XMPAXH_BADDR * * @b Example * @verbatim Uint32 index = 0; CSL_XMC_XMPAXH mpaxh; CSL_XMC_getXMPAXH (index, &mpaxh); @endverbatim * ============================================================================= */ static inline void CSL_XMC_getXMPAXH ( Uint32 index, CSL_XMC_XMPAXH* mpaxh ); static inline void CSL_XMC_getXMPAXH ( Uint32 index, CSL_XMC_XMPAXH* mpaxh ) { Uint32 value = hXmc->XMPAX[index].XMPAXH; /* Retrieve contents of XMPAXH register specified by the index */ mpaxh->segSize = CSL_FEXT (value, XMC_XMPAXH_SEGSZ); mpaxh->bAddr = CSL_FEXT (value, XMC_XMPAXH_BADDR); } /** ============================================================================ * @n@b CSL_XMC_getXMPAXL * * @b Description * @n This function gets the contents of XMPAXL register. * * please see section 7.3 on MPAX unit http://www.ti.com/lit/sprugw0 * for details on the sample arguments and example values to set * XMPAXL register as provided under table 7-2 * * @b Arguments @verbatim index Index into the set of 16 registers mpaxl CSL_XMC_XMPAXL structure that needs to be populated with XMPAXL register contents. @endverbatim * * Return Value * @n None * * Pre Condition * @n None * * Post Condition * @n None * * @b Reads * @n XMC_XMPAXL_RADDR, * XMC_XMPAXL_UX, * XMC_XMPAXL_UW, * XMC_XMPAXL_UR, * XMC_XMPAXL_SX, * XMC_XMPAXL_SW, * XMC_XMPAXL_SR * * @b Example * @verbatim Uint32 index = 0; CSL_XMC_XMPAXL mpaxl; CSL_XMC_getXMPAXL (index, &mpaxl); @endverbatim * ============================================================================= */ static inline void CSL_XMC_getXMPAXL ( Uint32 index, CSL_XMC_XMPAXL * mpaxl ); static inline void CSL_XMC_getXMPAXL ( Uint32 index, CSL_XMC_XMPAXL * mpaxl ) { Uint32 value = hXmc->XMPAX[index].XMPAXL; /* Retrieve contents of XMPAXL register using the index specified */ mpaxl->rAddr = CSL_FEXT (value, XMC_XMPAXL_RADDR); mpaxl->sr = CSL_FEXT (value, XMC_XMPAXL_SR); mpaxl->sw = CSL_FEXT (value, XMC_XMPAXL_SW); mpaxl->sx = CSL_FEXT (value, XMC_XMPAXL_SX); mpaxl->ur = CSL_FEXT (value, XMC_XMPAXL_UR); mpaxl->uw = CSL_FEXT (value, XMC_XMPAXL_UW); mpaxl->ux = CSL_FEXT (value, XMC_XMPAXL_UX); } /** ============================================================================ * @n@b CSL_XMC_getFaultAddress * * @b Description * @n This function gets the access address causing the fault. * * @b Arguments * @n None * * Return Value Uint32 * * Pre Condition * @n None * * Post Condition * @n None * * @b Reads * @n XMC_XMPFAR_FADDR * * @b Example * @verbatim Uint32 faultAddr; faultAddr = CSL_XMC_getFaultAddress (); @endverbatim * ============================================================================= */ static inline Uint32 CSL_XMC_getFaultAddress (void); static inline Uint32 CSL_XMC_getFaultAddress (void) { return CSL_FEXT (hXmc->XMPFAR, XMC_XMPFAR_FADDR); } /** ============================================================================ * @n@b CSL_XMC_clearFault * * @b Description * @n This function clears the fault information. * * @b Arguments * @n None * * Return Value * @n None * * Pre Condition * @n None * * Post Condition * @n XMPFCR register configured with the value passed. Fault * address and status registers are cleared. * * @b Writes * @n XMC_XMPFCR_MPFCLR=1 * * @b Affects * @n XMC_XMPFAR_FADDR=0, * XMC_XMPFSR_LOCAL=0, * XMC_XMPFSR_SR=0, * XMC_XMPFSR_SX=0, * XMC_XMPFSR_UR=0, * XMC_XMPFSR_UW=0, * XMC_XMPFSR_UW=0 * * @b Example * @verbatim CSL_XMC_clearFault (); @endverbatim * ============================================================================= */ static inline void CSL_XMC_clearFault (void); static inline void CSL_XMC_clearFault (void) { hXmc->XMPFCR = CSL_FMK(XMC_XMPFCR_MPFCLR, (uint32_t)1U); } /** ============================================================================ * @n@b CSL_XMC_getFaultStatus * * @b Description * @n This function gets the contents of Fault Status Register XMPFSR. * * @b Arguments @verbatim xmpfsr CSL_XMC_MPFSR structure that needs to be filled in from XMPFSR register @endverbatim * * Return Value * @n None * * Pre Condition * @n None * * Post Condition * @n None * * @b Reads * @n XMC_XMPFSR_LOCAL, * XMC_XMPFSR_SR, * XMC_XMPFSR_SX, * XMC_XMPFSR_UR, * XMC_XMPFSR_UW, * XMC_XMPFSR_UW * * @b Example * @verbatim CSL_XMC_MPFSR xmpfsr; CSL_XMC_getFaultStatus (&xmpfsr); @endverbatim * ============================================================================= */ static inline void CSL_XMC_getFaultStatus (CSL_XMC_MPFSR * xmpfsr); static inline void CSL_XMC_getFaultStatus (CSL_XMC_MPFSR * xmpfsr) { Uint32 value = hXmc->XMPFSR; xmpfsr->local = CSL_FEXT (value, XMC_XMPFSR_LOCAL); xmpfsr->sr = CSL_FEXT (value, XMC_XMPFSR_SR); xmpfsr->sw = CSL_FEXT (value, XMC_XMPFSR_SW); xmpfsr->sx = CSL_FEXT (value, XMC_XMPFSR_SX); xmpfsr->ur = CSL_FEXT (value, XMC_XMPFSR_UR); xmpfsr->uw = CSL_FEXT (value, XMC_XMPFSR_UW); xmpfsr->ux = CSL_FEXT (value, XMC_XMPFSR_UX); } /** ============================================================================ * @n@b CSL_XMC_invalidatePrefetchBuffer * * @b Description * @n This function when called marks all slots in the data prefetch buffer and program * prefetch buffer invalid by writing 1 in the XPFCMD register's INV bit. * * @b Arguments * @n None * * Return Value * @n None * * Pre Condition * @n None * * Post Condition * @n CSL_XMC_XPFCMD_INV bit set to 1 and data and program prefetch buffers are * invalidated. * * @b Writes * @n XMC_XPFCMD_INV=1 * * @b Affects * @n XMC_XPFADDR_DVH=0, * XMC_XPFADDR_DVL=0 * * * @b Example * @verbatim * CSL_XMC_invalidatePrefetchBuffer (); @endverbatim * ============================================================================= */ static inline void CSL_XMC_invalidatePrefetchBuffer (void); /* for misra warnings */ static inline void CSL_XMC_invalidatePrefetchBuffer (void) { hXmc->XPFCMD = CSL_FMK(XMC_XPFCMD_INV, (uint32_t)1U); } /** ============================================================================ * @n@b CSL_XMC_loadAnalysisCounterEnable * * @b Description * @n This function when called sets the 'ACENL' bit of the XPFCMD register, thus * triggering a copy/load of ACEN bits (Analysis counter enable mode) into * ACEN bits of XPFACS register. * * @b Arguments * @n None * * Return Value * @n None * * Pre Condition * @n None * * Post Condition * @n CSL_XMC_XPFCMD_ACENL bit set to 1 and ACEN bits value is loaded into the * ACEN bits of XPFACS register. * * @b Writes * @n XMC_XPFCMD_ACENL=1 * * @b Affects * @n XMC_XPFACS_ACEN * * @b Example * @verbatim * CSL_XMC_loadAnalysisCounterEnable (); @endverbatim * ============================================================================= */ static inline void CSL_XMC_loadAnalysisCounterEnable (void); static inline void CSL_XMC_loadAnalysisCounterEnable (void) { hXmc->XPFCMD = CSL_FMK (XMC_XPFCMD_ACENL, (uint32_t)1U); } /** ============================================================================ * @n@b CSL_XMC_setAnalysisCounterEnableMode * * @b Description * @n This function when called sets up the Event counting mode by writing to * the 'ACEN' bits of the XPFCMD register. * * @b Arguments @verbatim acenMode Analyis counter mode. @endverbatim * * Return Value * @n None * * Pre Condition * @n None * * Post Condition * @n CSL_XMC_XPFCMD_ACEN bits written with the Analysis counter mode specified. * * @b Writes * @n XMC_XPFCMD_ACEN * * @b Example * @verbatim // Enable both program and data events CSL_XMC_setAnalysisCounterEnableMode (CSL_XMC_ACEN_MODE_COUNT_ALL); @endverbatim * ============================================================================= */ static inline void CSL_XMC_setAnalysisCounterEnableMode (CSL_XMC_ACEN_MODE acenMode); static inline void CSL_XMC_setAnalysisCounterEnableMode (CSL_XMC_ACEN_MODE acenMode) { uint32_t acen; acen = CSL_FMK(XMC_XPFCMD_ACEN, acenMode); acen |= CSL_FMK (XMC_XPFCMD_ACENL, (uint32_t)1U); /* Set all the information for enabling the ACEN at one shot */ hXmc->XPFCMD = acen; } /** ============================================================================ * @n@b CSL_XMC_resetAnalysisCounters * * @b Description * @n This function when called sets the 'ACRST' bit of the XPFCMD register, thus * triggering a clear/reset operation on the prefetch analysis counter registers. * * @b Arguments * @n None * * Return Value * @n None * * Pre Condition * @n None * * Post Condition * @n CSL_XMC_XPFCMD_ACRST bit set to 1 and prefetch analysis counter registers * are cleared. * * @b Writes * @n XMC_XPFCMD_ACRST=1 * * @b Affects * @n XMC_XPFAC0_SENT=0, * XMC_XPFAC1_CANCELED=0, * XMC_XPFAC2_HIT=0, * XMC_XPFAC3_MISS=0 * * * @b Example * @verbatim * CSL_XMC_resetAnalysisCounters (); @endverbatim * ============================================================================= */ static inline void CSL_XMC_resetAnalysisCounters (void); static inline void CSL_XMC_resetAnalysisCounters (void) { hXmc->XPFCMD = CSL_FMK(XMC_XPFCMD_ACRST, (uint32_t)1U); } /** ============================================================================ * @n@b CSL_XMC_setPrefetchCommand * * @b Description * @n This function sets up the contents of the XPFCMD register based on the * inputs specified. * * @b Arguments @verbatim inv Invalidate Prefetch Buffer command flag. When set to 1, data and program prefetch buffers are invalidated. acEnLoad Analysis Counter Enable Load flag. When set to 1, the Analysis Counter Enable mode is loaded into the XPFACS status register. acEnMode Analyis counter enable mode. Specifies the event counting mode for the prefetcher. acRst Analysis counter Reset flag. When set to 1, resets all the prefetch event counters. @endverbatim * * Return Value * @n None * * Pre Condition * @n None * * Post Condition * @n CSL_XMC_XPFCMD written with the settings specified. * * @b Writes * @n XMC_XPFCMD_INV, * XMC_XPFCMD_ACENL, * XMC_XPFCMD_ACEN, * XMC_XPFCMD_ACRST * * @b Example * @verbatim // Issue the following prefetch commands: // - Dont invalidate prefetch buffers // - Enable Analysis Counter Enable load // - Enable both program and data event counting // - Dont reset the prefetch counters CSL_XMC_setPrefetchCommand (0, 1, CSL_XMC_ACEN_MODE_COUNT_ALL, 0); @endverbatim * ============================================================================= */ static inline void CSL_XMC_setPrefetchCommand ( Uint8 inv, Uint8 acEnLoad, CSL_XMC_ACEN_MODE acenMode, Uint8 acRst ); static inline void CSL_XMC_setPrefetchCommand ( Uint8 inv, Uint8 acEnLoad, CSL_XMC_ACEN_MODE acenMode, Uint8 acRst ) { hXmc->XPFCMD = CSL_FMK (XMC_XPFCMD_INV, (Uint32)inv) | CSL_FMK (XMC_XPFCMD_ACENL, (Uint32)acEnLoad) | CSL_FMK (XMC_XPFCMD_ACEN, acenMode) | CSL_FMK (XMC_XPFCMD_ACRST, (Uint32)acRst); } /** ============================================================================ * @n@b CSL_XMC_getAnalysisCounterEnableStatus * * @b Description * @n This function returns the Analysis counter enable mode by reading the * contents of 'ACEN' bits from the XPFACS register. * * @b Arguments * @n None * * Return Value CSL_XMC_ACEN_MODE - Event counting mode * * Pre Condition * @n None * * Post Condition * @n CSL_XMC_XPFACS_ACEN bits read and returned * * @b Reads * @n XMC_XPFACS_ACEN * * @b Example * @verbatim CSL_XMC_ACEN_MODE acenMode; // Read ACEN Mode Status acenMode = CSL_XMC_getAnalysisCounterEnableStatus (); if (acenMode == CSL_XMC_ACEN_MODE_COUNT_DISABLE) { ... } @endverbatim * ============================================================================= */ static inline CSL_XMC_ACEN_MODE CSL_XMC_getAnalysisCounterEnableStatus (void); static inline CSL_XMC_ACEN_MODE CSL_XMC_getAnalysisCounterEnableStatus (void) { return (CSL_XMC_ACEN_MODE) CSL_FEXT (hXmc->XPFACS, XMC_XPFACS_ACEN); } /** ============================================================================ * @n@b CSL_XMC_getNumPrefetchSent * * @b Description * @n This function returns the contents of XPFAC0 register, i.e., the number * of prefetch requests sent into the system. * * @b Arguments * @n None * * Return Value Uint32 * * Pre Condition * @n None * * Post Condition * @n None * * @b Reads * @n XMC_XPFAC0_SENT * * @b Example * @verbatim Uint32 numPrefetchSent; // Read Prefetch request sent count numPrefetchSent = CSL_XMC_getNumPrefetchSent (); @endverbatim * ============================================================================= */ static inline Uint32 CSL_XMC_getNumPrefetchSent (void); static inline Uint32 CSL_XMC_getNumPrefetchSent (void) { return CSL_FEXT (hXmc->XPFAC0, XMC_XPFAC0_SENT); } /** ============================================================================ * @n@b CSL_XMC_getNumPrefetchCanceled * * @b Description * @n This function returns the contents of XPFAC1 register, i.e., the number * of prefetch requests canceled (prefetch requests that returned a non-zero * rstatus or other error). * * @b Arguments * @n None * * Return Value Uint32 * * Pre Condition * @n None * * Post Condition * @n None * * @b Reads * @n XMC_XPFAC1_CANCELED * * @b Example * @verbatim Uint32 numPrefetchCanceled; // Read Prefetch request canceled numPrefetchCanceled = CSL_XMC_getNumPrefetchCanceled (); @endverbatim * ============================================================================= */ static inline Uint32 CSL_XMC_getNumPrefetchCanceled (void); static inline Uint32 CSL_XMC_getNumPrefetchCanceled (void) { return CSL_FEXT (hXmc->XPFAC1, XMC_XPFAC1_CANCELED); } /** ============================================================================ * @n@b CSL_XMC_getNumPrefetchHits * * @b Description * @n This function returns the contents of XPFAC2 register, i.e., the number * of demand prefetch requests that resulted in a successful prefetch. * * @b Arguments * @n None * * Return Value Uint32 * * Pre Condition * @n None * * Post Condition * @n None * * @b Reads * @n XMC_XPFAC2_HIT * * @b Example * @verbatim Uint32 numPrefetchHits; // Read Number of Prefetch request hits numPrefetchHits = CSL_XMC_getNumPrefetchHits (); @endverbatim * ============================================================================= */ static inline Uint32 CSL_XMC_getNumPrefetchHits (void); static inline Uint32 CSL_XMC_getNumPrefetchHits (void) { return CSL_FEXT (hXmc->XPFAC2, XMC_XPFAC2_HIT); } /** ============================================================================ * @n@b CSL_XMC_getNumPrefetchMisses * * @b Description * @n This function returns the contents of XPFAC3 register, i.e., the number * of prefetch requests that resulted in a miss and had to be submitted as * a demand prefetch request into the system. * * @b Arguments * @n None * * Return Value Uint32 * * Pre Condition * @n None * * Post Condition * @n None * * @b Reads * @n XMC_XPFAC3_MISS * * @b Example * @verbatim Uint32 numPrefetchMisses; // Read Number of Prefetch request misses numPrefetchMisses = CSL_XMC_getNumPrefetchMisses (); @endverbatim * ============================================================================= */ static inline Uint32 CSL_XMC_getNumPrefetchMisses (void); static inline Uint32 CSL_XMC_getNumPrefetchMisses (void) { return CSL_FEXT (hXmc->XPFAC3, XMC_XPFAC3_MISS); } /** ============================================================================ * @n@b CSL_XMC_getPrefetchAddress * * @b Description * @n This function gets the contents of XPFADDR register. * * @b Arguments @verbatim index Index into the set of 8 registers xpfaddr CSL_XMC_XPFADDR structure that needs to be filled from XPFADDR register @endverbatim * * Return Value * @n None * * Pre Condition * @n None * * Post Condition * @n None * * @b Reads * @n XMC_XPFADDR_ADDR, * XMC_XPFADDR_DIR, * XMC_XPFADDR_DPH, * XMC_XPFADDR_DVH, * XMC_XPFADDR_AVH, * XMC_XPFADDR_DPL, * XMC_XPFADDR_DVL, * XMC_XPFADDR_AVL * * @b Example * @verbatim Uint32 index = 0; CSL_XMC_XPFADDR xpfaddr; CSL_XMC_getPrefetchAddress (index, &xpfaddr); @endverbatim * ============================================================================= */ static inline void CSL_XMC_getPrefetchAddress ( Uint32 index, CSL_XMC_XPFADDR* xpfaddr ); static inline void CSL_XMC_getPrefetchAddress ( Uint32 index, CSL_XMC_XPFADDR* xpfaddr ) { Uint32 value = hXmc->XPFADDR[index]; xpfaddr->addr = CSL_FEXT (value, XMC_XPFADDR_ADDR); xpfaddr->dir = CSL_FEXT (value, XMC_XPFADDR_DIR); xpfaddr->dph = CSL_FEXT (value, XMC_XPFADDR_DPH); xpfaddr->dvh = CSL_FEXT (value, XMC_XPFADDR_DVH); xpfaddr->avh = CSL_FEXT (value, XMC_XPFADDR_AVH); xpfaddr->dpl = CSL_FEXT (value, XMC_XPFADDR_DPL); xpfaddr->dvl = CSL_FEXT (value, XMC_XPFADDR_DVL); xpfaddr->avl = CSL_FEXT (value, XMC_XPFADDR_AVL); } /** ============================================================================ * @n@b CSL_XMC_setMDMAPriority * * @b Description * @n This function configures the priority of transaction submissions to * Master DMA (MDMA). * * @b Arguments @verbatim priority Priority value to set for MDMA transactions. @endverbatim * * Return Value * @n None * * Pre Condition * @n None * * Post Condition * @n None * * @b Writes * @n XMC_MDMAARBX_PRI * * @b Example * @verbatim Uint32 priority = 4; CSL_XMC_setMDMAPriority (priority); @endverbatim * ============================================================================= */ static inline void CSL_XMC_setMDMAPriority (Uint32 priority); static inline void CSL_XMC_setMDMAPriority (Uint32 priority) { CSL_FINS (hXmc->MDMAARBX, XMC_MDMAARBX_PRI, priority); } /** ============================================================================ * @n@b CSL_XMC_getMDMAPriority * * @b Description * @n This function retrieves the priority of transaction submissions to * Master DMA (MDMA). * * @b Arguments * @n None * * Return Value Uint32 * * Pre Condition * @n None * * Post Condition * @n None * * @b Reads * @n XMC_MDMAARBX_PRI * * @b Example * @verbatim Uint32 priority; priority = CSL_XMC_getMDMAPriority (); @endverbatim * ============================================================================= */ static inline Uint32 CSL_XMC_getMDMAPriority (void); static inline Uint32 CSL_XMC_getMDMAPriority (void) { return CSL_FEXT (hXmc->MDMAARBX, XMC_MDMAARBX_PRI); } #ifdef __cplusplus } #endif /* @} */ #endif /* CSL_XMCAUX_H */