| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735 |
- /*
- * Copyright (c) 2012, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * THIS SOFTWARE IS PROVIDED BY FREESCALE "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 FREESCALE 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.
- */
- /*
- * WARNING! DO NOT EDIT THIS FILE DIRECTLY!
- *
- * This file was generated automatically and any changes may be lost.
- */
- #ifndef __HW_ECSPI_REGISTERS_H__
- #define __HW_ECSPI_REGISTERS_H__
- #include "regs.h"
- /*
- * i.MX6UL ECSPI
- *
- * ECSPI
- *
- * Registers defined in this header file:
- * - HW_ECSPI_RXDATA - Receive Data Register
- * - HW_ECSPI_TXDATA - Transmit Data Register
- * - HW_ECSPI_CONREG - Control Register
- * - HW_ECSPI_CONFIGREG - Config Register
- * - HW_ECSPI_INTREG - Interrupt Control Register
- * - HW_ECSPI_DMAREG - DMA Control Register
- * - HW_ECSPI_STATREG - Status Register
- * - HW_ECSPI_PERIODREG - Sample Period Control Register
- * - HW_ECSPI_TESTREG - Test Control Register
- * - HW_ECSPI_MSGDATA - Message Data Register
- *
- * - hw_ecspi_t - Struct containing all module registers.
- */
- //! @name Module base addresses
- //@{
- #ifndef REGS_ECSPI_BASE
- #define HW_ECSPI_INSTANCE_COUNT (4) //!< Number of instances of the ECSPI module.
- #define HW_ECSPI1 (1) //!< Instance number for ECSPI1.
- #define HW_ECSPI2 (2) //!< Instance number for ECSPI2.
- #define HW_ECSPI3 (3) //!< Instance number for ECSPI3.
- #define HW_ECSPI4 (4) //!< Instance number for ECSPI4.
- #define REGS_ECSPI1_BASE (0x02008000) //!< Base address for ECSPI instance number 1.
- #define REGS_ECSPI2_BASE (0x0200c000) //!< Base address for ECSPI instance number 2.
- #define REGS_ECSPI3_BASE (0x02010000) //!< Base address for ECSPI instance number 3.
- #define REGS_ECSPI4_BASE (0x02014000) //!< Base address for ECSPI instance number 4.
- //! @brief Get the base address of ECSPI by instance number.
- //! @param x ECSPI instance number, from 1 through 4.
- #define REGS_ECSPI_BASE(x) ( (x) == HW_ECSPI1 ? REGS_ECSPI1_BASE : (x) == HW_ECSPI2 ? REGS_ECSPI2_BASE : (x) == HW_ECSPI3 ? REGS_ECSPI3_BASE : (x) == HW_ECSPI4 ? REGS_ECSPI4_BASE : 0x00d00000)
- //! @brief Get the instance number given a base address.
- //! @param b Base address for an instance of ECSPI.
- #define REGS_ECSPI_INSTANCE(b) ( (b) == REGS_ECSPI1_BASE ? HW_ECSPI1 : (b) == REGS_ECSPI2_BASE ? HW_ECSPI2 : (b) == REGS_ECSPI3_BASE ? HW_ECSPI3 : (b) == REGS_ECSPI4_BASE ? HW_ECSPI4 : 0)
- #endif
- //@}
- //-------------------------------------------------------------------------------------------
- // HW_ECSPI_RXDATA - Receive Data Register
- //-------------------------------------------------------------------------------------------
- #ifndef __LANGUAGE_ASM__
- /*!
- * @brief HW_ECSPI_RXDATA - Receive Data Register (RO)
- *
- * Reset value: 0x00000000
- *
- * The Receive Data register (ECSPI_RXDATA) is a read-only register that forms the top word of the
- * 64 x 32 receive FIFO. This register holds the data received from an external SPI device during a
- * data transaction. Only word-sized read operations are allowed.
- */
- typedef union _hw_ecspi_rxdata
- {
- reg32_t U;
- struct _hw_ecspi_rxdata_bitfields
- {
- unsigned ECSPI_RXDATA : 32; //!< [31:0] Receive Data.
- } B;
- } hw_ecspi_rxdata_t;
- #endif
- /*!
- * @name Constants and macros for entire ECSPI_RXDATA register
- */
- //@{
- #define HW_ECSPI_RXDATA_ADDR(x) (REGS_ECSPI_BASE(x) + 0x0)
- #ifndef __LANGUAGE_ASM__
- #define HW_ECSPI_RXDATA(x) (*(volatile hw_ecspi_rxdata_t *) HW_ECSPI_RXDATA_ADDR(x))
- #define HW_ECSPI_RXDATA_RD(x) (HW_ECSPI_RXDATA(x).U)
- #endif
- //@}
- /*
- * constants & macros for individual ECSPI_RXDATA bitfields
- */
- /*! @name Register ECSPI_RXDATA, field ECSPI_RXDATA[31:0] (RO)
- *
- * Receive Data. This register holds the top word of the receive data FIFO. The FIFO is advanced for
- * each read of this register. The data read is undefined when the Receive Data Ready (RR) bit in
- * the Interrupt Control/Status register is cleared. Zeros are read when ECSPI is disabled.
- */
- //@{
- #define BP_ECSPI_RXDATA_ECSPI_RXDATA (0) //!< Bit position for ECSPI_RXDATA_ECSPI_RXDATA.
- #define BM_ECSPI_RXDATA_ECSPI_RXDATA (0xffffffff) //!< Bit mask for ECSPI_RXDATA_ECSPI_RXDATA.
- //! @brief Get value of ECSPI_RXDATA_ECSPI_RXDATA from a register value.
- #define BG_ECSPI_RXDATA_ECSPI_RXDATA(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_RXDATA_ECSPI_RXDATA) >> BP_ECSPI_RXDATA_ECSPI_RXDATA)
- //@}
- //-------------------------------------------------------------------------------------------
- // HW_ECSPI_TXDATA - Transmit Data Register
- //-------------------------------------------------------------------------------------------
- #ifndef __LANGUAGE_ASM__
- /*!
- * @brief HW_ECSPI_TXDATA - Transmit Data Register (WO)
- *
- * Reset value: 0x00000000
- *
- * The Transmit Data (ECSPI_TXDATA) register is a write-only data register that forms the bottom
- * word of the 64 x 32 TXFIFO. The TXFIFO can be written to as long as it is not full, even when the
- * SPI Exchange bit (XCH) in ECSPI_CONREG is set. This allows software to write to the TXFIFO during
- * a SPI data exchange process. Writes to this register are ignored when the ECSPI is disabled
- * (ECSPI_CONREG[EN] bit is cleared).
- */
- typedef union _hw_ecspi_txdata
- {
- reg32_t U;
- struct _hw_ecspi_txdata_bitfields
- {
- unsigned ECSPI_TXDATA : 32; //!< [31:0] Transmit Data.
- } B;
- } hw_ecspi_txdata_t;
- #endif
- /*!
- * @name Constants and macros for entire ECSPI_TXDATA register
- */
- //@{
- #define HW_ECSPI_TXDATA_ADDR(x) (REGS_ECSPI_BASE(x) + 0x4)
- #ifndef __LANGUAGE_ASM__
- #define HW_ECSPI_TXDATA(x) (*(volatile hw_ecspi_txdata_t *) HW_ECSPI_TXDATA_ADDR(x))
- #define HW_ECSPI_TXDATA_WR(x, v) (HW_ECSPI_TXDATA(x).U = (v))
- #endif
- //@}
- /*
- * constants & macros for individual ECSPI_TXDATA bitfields
- */
- /*! @name Register ECSPI_TXDATA, field ECSPI_TXDATA[31:0] (WO)
- *
- * Transmit Data. This register holds the top word of data loaded into the FIFO. Data written to
- * this register must be a word operation. The number of bits actually transmitted is determined by
- * the BIT_COUNT field of the corresponding SPI Control register. If this field contains more bits
- * than the number specified by BIT_COUNT, the extra bits are ignored. For example, to transfer 10
- * bits of data, a 32-bit word must be written to this register. Bits 9-0 are shifted out and bits
- * 31-10 are ignored. When the ECSPI is operating in Slave mode, zeros are shifted out when the FIFO
- * is empty. Zeros are read when ECSPI is disabled.
- */
- //@{
- #define BP_ECSPI_TXDATA_ECSPI_TXDATA (0) //!< Bit position for ECSPI_TXDATA_ECSPI_TXDATA.
- #define BM_ECSPI_TXDATA_ECSPI_TXDATA (0xffffffff) //!< Bit mask for ECSPI_TXDATA_ECSPI_TXDATA.
- //! @brief Get value of ECSPI_TXDATA_ECSPI_TXDATA from a register value.
- #define BG_ECSPI_TXDATA_ECSPI_TXDATA(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_TXDATA_ECSPI_TXDATA) >> BP_ECSPI_TXDATA_ECSPI_TXDATA)
- //! @brief Format value for bitfield ECSPI_TXDATA_ECSPI_TXDATA.
- #define BF_ECSPI_TXDATA_ECSPI_TXDATA(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_TXDATA_ECSPI_TXDATA) & BM_ECSPI_TXDATA_ECSPI_TXDATA)
- //@}
- //-------------------------------------------------------------------------------------------
- // HW_ECSPI_CONREG - Control Register
- //-------------------------------------------------------------------------------------------
- #ifndef __LANGUAGE_ASM__
- /*!
- * @brief HW_ECSPI_CONREG - Control Register (RW)
- *
- * Reset value: 0x00000000
- *
- * The Control Register (ECSPI_CONREG) allows software to enable the ECSPI , configure its operating
- * modes, specify the divider value, and SPI_RDY control signal, and define the transfer length.
- */
- typedef union _hw_ecspi_conreg
- {
- reg32_t U;
- struct _hw_ecspi_conreg_bitfields
- {
- unsigned EN : 1; //!< [0] SPI Block Enable Control.
- unsigned HT : 1; //!< [1] Hardware Trigger Enable.
- unsigned XCH : 1; //!< [2] SPI Exchange Bit.
- unsigned SMC : 1; //!< [3] Start Mode Control.
- unsigned CHANNEL_MODE : 4; //!< [7:4] SPI CHANNEL MODE selects the mode for each SPI channel.
- unsigned POST_DIVIDER : 4; //!< [11:8] SPI Post Divider.
- unsigned PRE_DIVIDER : 4; //!< [15:12] SPI Pre Divider.
- unsigned DRCTL : 2; //!< [17:16] SPI Data Ready Control.
- unsigned CHANNEL_SELECT : 2; //!< [19:18] SPI CHANNEL SELECT bits.
- unsigned BURST_LENGTH : 12; //!< [31:20] Burst Length.
- } B;
- } hw_ecspi_conreg_t;
- #endif
- /*!
- * @name Constants and macros for entire ECSPI_CONREG register
- */
- //@{
- #define HW_ECSPI_CONREG_ADDR(x) (REGS_ECSPI_BASE(x) + 0x8)
- #ifndef __LANGUAGE_ASM__
- #define HW_ECSPI_CONREG(x) (*(volatile hw_ecspi_conreg_t *) HW_ECSPI_CONREG_ADDR(x))
- #define HW_ECSPI_CONREG_RD(x) (HW_ECSPI_CONREG(x).U)
- #define HW_ECSPI_CONREG_WR(x, v) (HW_ECSPI_CONREG(x).U = (v))
- #define HW_ECSPI_CONREG_SET(x, v) (HW_ECSPI_CONREG_WR(x, HW_ECSPI_CONREG_RD(x) | (v)))
- #define HW_ECSPI_CONREG_CLR(x, v) (HW_ECSPI_CONREG_WR(x, HW_ECSPI_CONREG_RD(x) & ~(v)))
- #define HW_ECSPI_CONREG_TOG(x, v) (HW_ECSPI_CONREG_WR(x, HW_ECSPI_CONREG_RD(x) ^ (v)))
- #endif
- //@}
- /*
- * constants & macros for individual ECSPI_CONREG bitfields
- */
- /*! @name Register ECSPI_CONREG, field EN[0] (RW)
- *
- * SPI Block Enable Control. This bit enables the ECSPI. This bit must be set before writing to
- * other registers or initiating an exchange. Writing zero to this bit disables the block and resets
- * the internal logic with the exception of the ECSPI_CONREG. The block's internal clocks are gated
- * off whenever the block is disabled.
- *
- * Values:
- * - 0 - Disable the block.
- * - 1 - Enable the block.
- */
- //@{
- #define BP_ECSPI_CONREG_EN (0) //!< Bit position for ECSPI_CONREG_EN.
- #define BM_ECSPI_CONREG_EN (0x00000001) //!< Bit mask for ECSPI_CONREG_EN.
- //! @brief Get value of ECSPI_CONREG_EN from a register value.
- #define BG_ECSPI_CONREG_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONREG_EN) >> BP_ECSPI_CONREG_EN)
- //! @brief Format value for bitfield ECSPI_CONREG_EN.
- #define BF_ECSPI_CONREG_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONREG_EN) & BM_ECSPI_CONREG_EN)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the EN field to a new value.
- #define BW_ECSPI_CONREG_EN(x, v) (HW_ECSPI_CONREG_WR(x, (HW_ECSPI_CONREG_RD(x) & ~BM_ECSPI_CONREG_EN) | BF_ECSPI_CONREG_EN(v)))
- #endif
- //@}
- /*! @name Register ECSPI_CONREG, field HT[1] (RW)
- *
- * Hardware Trigger Enable. This bit is used in master mode only. It enables hardware trigger (HT)
- * mode. Note, HT mode is not supported by this product.
- *
- * Values:
- * - 0 - Disable HT mode.
- * - 1 - Enable HT mode.
- */
- //@{
- #define BP_ECSPI_CONREG_HT (1) //!< Bit position for ECSPI_CONREG_HT.
- #define BM_ECSPI_CONREG_HT (0x00000002) //!< Bit mask for ECSPI_CONREG_HT.
- //! @brief Get value of ECSPI_CONREG_HT from a register value.
- #define BG_ECSPI_CONREG_HT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONREG_HT) >> BP_ECSPI_CONREG_HT)
- //! @brief Format value for bitfield ECSPI_CONREG_HT.
- #define BF_ECSPI_CONREG_HT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONREG_HT) & BM_ECSPI_CONREG_HT)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the HT field to a new value.
- #define BW_ECSPI_CONREG_HT(x, v) (HW_ECSPI_CONREG_WR(x, (HW_ECSPI_CONREG_RD(x) & ~BM_ECSPI_CONREG_HT) | BF_ECSPI_CONREG_HT(v)))
- #endif
- //@}
- /*! @name Register ECSPI_CONREG, field XCH[2] (RW)
- *
- * SPI Exchange Bit. This bit applies only to channels configured in Master mode (CHANNEL MODE = 1).
- * If the Start Mode Control (SMC) bit is cleared, writing a 1 to this bit starts one SPI burst or
- * multiple SPI bursts according to the SPI SS Wave Form Select (SS_CTL). The XCH bit remains set
- * while either the data exchange is in progress, or when the ECSPI is waiting for an active input
- * if SPIRDY is enabled through DRCTL. This bit is cleared automatically when all data in the TXFIFO
- * and the shift register has been shifted out.
- *
- * Values:
- * - 0 - Idle.
- * - 1 - Initiates exchange (write) or busy (read).
- */
- //@{
- #define BP_ECSPI_CONREG_XCH (2) //!< Bit position for ECSPI_CONREG_XCH.
- #define BM_ECSPI_CONREG_XCH (0x00000004) //!< Bit mask for ECSPI_CONREG_XCH.
- //! @brief Get value of ECSPI_CONREG_XCH from a register value.
- #define BG_ECSPI_CONREG_XCH(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONREG_XCH) >> BP_ECSPI_CONREG_XCH)
- //! @brief Format value for bitfield ECSPI_CONREG_XCH.
- #define BF_ECSPI_CONREG_XCH(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONREG_XCH) & BM_ECSPI_CONREG_XCH)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the XCH field to a new value.
- #define BW_ECSPI_CONREG_XCH(x, v) (HW_ECSPI_CONREG_WR(x, (HW_ECSPI_CONREG_RD(x) & ~BM_ECSPI_CONREG_XCH) | BF_ECSPI_CONREG_XCH(v)))
- #endif
- //@}
- /*! @name Register ECSPI_CONREG, field SMC[3] (RW)
- *
- * Start Mode Control. This bit applies only to channels configured in Master mode (CHANNEL MODE =
- * 1). It controls how the ECSPI starts a SPI burst, either through the SPI exchange bit, or
- * immediately when the TXFIFO is written to.
- *
- * Values:
- * - 0 - SPI Exchange Bit (XCH) controls when a SPI burst can start. Setting the XCH bit will start a SPI
- * burst or multiple bursts. This is controlled by the SPI SS Wave Form Select (SS_CTL). Refer
- * to XCH and SS_CTL descriptions.
- * - 1 - Immediately starts a SPI burst when data is written in TXFIFO.
- */
- //@{
- #define BP_ECSPI_CONREG_SMC (3) //!< Bit position for ECSPI_CONREG_SMC.
- #define BM_ECSPI_CONREG_SMC (0x00000008) //!< Bit mask for ECSPI_CONREG_SMC.
- //! @brief Get value of ECSPI_CONREG_SMC from a register value.
- #define BG_ECSPI_CONREG_SMC(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONREG_SMC) >> BP_ECSPI_CONREG_SMC)
- //! @brief Format value for bitfield ECSPI_CONREG_SMC.
- #define BF_ECSPI_CONREG_SMC(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONREG_SMC) & BM_ECSPI_CONREG_SMC)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the SMC field to a new value.
- #define BW_ECSPI_CONREG_SMC(x, v) (HW_ECSPI_CONREG_WR(x, (HW_ECSPI_CONREG_RD(x) & ~BM_ECSPI_CONREG_SMC) | BF_ECSPI_CONREG_SMC(v)))
- #endif
- //@}
- /*! @name Register ECSPI_CONREG, field CHANNEL_MODE[7:4] (RW)
- *
- * SPI CHANNEL MODE selects the mode for each SPI channel. CHANNEL MODE[3] is for SPI channel 3.
- * CHANNEL MODE[2] is for SPI channel 2. CHANNEL MODE[1] is for SPI channel 1. CHANNEL MODE[0] is
- * for SPI channel 0.
- *
- * Values:
- * - 0 - Slave mode.
- * - 1 - Master mode.
- */
- //@{
- #define BP_ECSPI_CONREG_CHANNEL_MODE (4) //!< Bit position for ECSPI_CONREG_CHANNEL_MODE.
- #define BM_ECSPI_CONREG_CHANNEL_MODE (0x000000f0) //!< Bit mask for ECSPI_CONREG_CHANNEL_MODE.
- //! @brief Get value of ECSPI_CONREG_CHANNEL_MODE from a register value.
- #define BG_ECSPI_CONREG_CHANNEL_MODE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONREG_CHANNEL_MODE) >> BP_ECSPI_CONREG_CHANNEL_MODE)
- //! @brief Format value for bitfield ECSPI_CONREG_CHANNEL_MODE.
- #define BF_ECSPI_CONREG_CHANNEL_MODE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONREG_CHANNEL_MODE) & BM_ECSPI_CONREG_CHANNEL_MODE)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the CHANNEL_MODE field to a new value.
- #define BW_ECSPI_CONREG_CHANNEL_MODE(x, v) (HW_ECSPI_CONREG_WR(x, (HW_ECSPI_CONREG_RD(x) & ~BM_ECSPI_CONREG_CHANNEL_MODE) | BF_ECSPI_CONREG_CHANNEL_MODE(v)))
- #endif
- //@}
- /*! @name Register ECSPI_CONREG, field POST_DIVIDER[11:8] (RW)
- *
- * SPI Post Divider. ECSPI uses a two-stage divider to generate the SPI clock. This field defines
- * the post-divider of the reference clock using the equation: 2 n .
- *
- * Values:
- * - 0000 - Divide by 1.
- * - ... -
- * - 0001 - Divide by 2.
- * - 0010 - Divide by 4.
- * - 1110 - Divide by 2 14 .
- * - 1111 - Divide by 2 15 .
- */
- //@{
- #define BP_ECSPI_CONREG_POST_DIVIDER (8) //!< Bit position for ECSPI_CONREG_POST_DIVIDER.
- #define BM_ECSPI_CONREG_POST_DIVIDER (0x00000f00) //!< Bit mask for ECSPI_CONREG_POST_DIVIDER.
- //! @brief Get value of ECSPI_CONREG_POST_DIVIDER from a register value.
- #define BG_ECSPI_CONREG_POST_DIVIDER(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONREG_POST_DIVIDER) >> BP_ECSPI_CONREG_POST_DIVIDER)
- //! @brief Format value for bitfield ECSPI_CONREG_POST_DIVIDER.
- #define BF_ECSPI_CONREG_POST_DIVIDER(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONREG_POST_DIVIDER) & BM_ECSPI_CONREG_POST_DIVIDER)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the POST_DIVIDER field to a new value.
- #define BW_ECSPI_CONREG_POST_DIVIDER(x, v) (HW_ECSPI_CONREG_WR(x, (HW_ECSPI_CONREG_RD(x) & ~BM_ECSPI_CONREG_POST_DIVIDER) | BF_ECSPI_CONREG_POST_DIVIDER(v)))
- #endif
- //@}
- /*! @name Register ECSPI_CONREG, field PRE_DIVIDER[15:12] (RW)
- *
- * SPI Pre Divider. ECSPI uses a two-stage divider to generate the SPI clock. This field defines the
- * pre-divider of the reference clock.
- *
- * Values:
- * - 0000 - Divide by 1.
- * - ... -
- * - 0001 - Divide by 2.
- * - 0010 - Divide by 3.
- * - 1101 - Divide by 14.
- * - 1110 - Divide by 15.
- * - 1111 - Divide by 16.
- */
- //@{
- #define BP_ECSPI_CONREG_PRE_DIVIDER (12) //!< Bit position for ECSPI_CONREG_PRE_DIVIDER.
- #define BM_ECSPI_CONREG_PRE_DIVIDER (0x0000f000) //!< Bit mask for ECSPI_CONREG_PRE_DIVIDER.
- //! @brief Get value of ECSPI_CONREG_PRE_DIVIDER from a register value.
- #define BG_ECSPI_CONREG_PRE_DIVIDER(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONREG_PRE_DIVIDER) >> BP_ECSPI_CONREG_PRE_DIVIDER)
- //! @brief Format value for bitfield ECSPI_CONREG_PRE_DIVIDER.
- #define BF_ECSPI_CONREG_PRE_DIVIDER(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONREG_PRE_DIVIDER) & BM_ECSPI_CONREG_PRE_DIVIDER)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the PRE_DIVIDER field to a new value.
- #define BW_ECSPI_CONREG_PRE_DIVIDER(x, v) (HW_ECSPI_CONREG_WR(x, (HW_ECSPI_CONREG_RD(x) & ~BM_ECSPI_CONREG_PRE_DIVIDER) | BF_ECSPI_CONREG_PRE_DIVIDER(v)))
- #endif
- //@}
- /*! @name Register ECSPI_CONREG, field DRCTL[17:16] (RW)
- *
- * SPI Data Ready Control. This field selects the utilization of the SPI_RDY signal in master mode.
- * ECSPI checks this field before it starts an SPI burst.
- *
- * Values:
- * - 00 - The SPI_RDY signal is a don't care.
- * - 01 - Burst will be triggered by the falling edge of the SPI_RDY signal (edge-triggered).
- * - 10 - Burst will be triggered by a low level of the SPI_RDY signal (level-triggered).
- * - 11 - Reserved.
- */
- //@{
- #define BP_ECSPI_CONREG_DRCTL (16) //!< Bit position for ECSPI_CONREG_DRCTL.
- #define BM_ECSPI_CONREG_DRCTL (0x00030000) //!< Bit mask for ECSPI_CONREG_DRCTL.
- //! @brief Get value of ECSPI_CONREG_DRCTL from a register value.
- #define BG_ECSPI_CONREG_DRCTL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONREG_DRCTL) >> BP_ECSPI_CONREG_DRCTL)
- //! @brief Format value for bitfield ECSPI_CONREG_DRCTL.
- #define BF_ECSPI_CONREG_DRCTL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONREG_DRCTL) & BM_ECSPI_CONREG_DRCTL)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the DRCTL field to a new value.
- #define BW_ECSPI_CONREG_DRCTL(x, v) (HW_ECSPI_CONREG_WR(x, (HW_ECSPI_CONREG_RD(x) & ~BM_ECSPI_CONREG_DRCTL) | BF_ECSPI_CONREG_DRCTL(v)))
- #endif
- //@}
- /*! @name Register ECSPI_CONREG, field CHANNEL_SELECT[19:18] (RW)
- *
- * SPI CHANNEL SELECT bits. Select one of four external SPI Master/Slave Devices. In master mode,
- * these two bits select the external slave devices by asserting the Chip Select (SSn) outputs. Only
- * the selected Chip Select (SSn) signal can be active at a given time; the remaining three signals
- * will be negated.
- *
- * Values:
- * - 00 - Channel 0 is selected. Chip Select 0 (SS0) will be asserted.
- * - 01 - Channel 1 is selected. Chip Select 1 (SS1) will be asserted.
- * - 10 - Channel 2 is selected. Chip Select 2 (SS2) will be asserted.
- * - 11 - Channel 3 is selected. Chip Select 3 (SS3) will be asserted.
- */
- //@{
- #define BP_ECSPI_CONREG_CHANNEL_SELECT (18) //!< Bit position for ECSPI_CONREG_CHANNEL_SELECT.
- #define BM_ECSPI_CONREG_CHANNEL_SELECT (0x000c0000) //!< Bit mask for ECSPI_CONREG_CHANNEL_SELECT.
- //! @brief Get value of ECSPI_CONREG_CHANNEL_SELECT from a register value.
- #define BG_ECSPI_CONREG_CHANNEL_SELECT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONREG_CHANNEL_SELECT) >> BP_ECSPI_CONREG_CHANNEL_SELECT)
- //! @brief Format value for bitfield ECSPI_CONREG_CHANNEL_SELECT.
- #define BF_ECSPI_CONREG_CHANNEL_SELECT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONREG_CHANNEL_SELECT) & BM_ECSPI_CONREG_CHANNEL_SELECT)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the CHANNEL_SELECT field to a new value.
- #define BW_ECSPI_CONREG_CHANNEL_SELECT(x, v) (HW_ECSPI_CONREG_WR(x, (HW_ECSPI_CONREG_RD(x) & ~BM_ECSPI_CONREG_CHANNEL_SELECT) | BF_ECSPI_CONREG_CHANNEL_SELECT(v)))
- #endif
- //@}
- /*! @name Register ECSPI_CONREG, field BURST_LENGTH[31:20] (RW)
- *
- * Burst Length. This field defines the length of a SPI burst to be transferred. The Chip Select
- * (SS) will remain asserted until all bits in a SPI burst are shifted out. A maximum of 2^12 bits
- * can be transferred in a single SPI burst. In master mode, it controls the number of bits per SPI
- * burst. Since the shift register always loads 32-bit data from transmit FIFO, only the n least-
- * significant (n = BURST LENGTH + 1) will be shifted out. The remaining bits will be ignored. In
- * slave mode, only when SS_CTL is cleared, this field will take effect in the transfer. Number of
- * Valid Bits in a SPI burst.
- *
- * Values:
- * - 0x000 - A SPI burst contains the 1 LSB in a word.
- * - ... -
- * - ... -
- * - 0x001 - A SPI burst contains the 2 LSB in a word.
- * - 0x002 - A SPI burst contains the 3 LSB in a word.
- * - 0x01F - A SPI burst contains all 32 bits in a word.
- * - 0x020 - A SPI burst contains the 1 LSB in first word and all 32 bits in second word.
- * - 0x021 - A SPI burst contains the 2 LSB in first word and all 32 bits in second word.
- * - 0xFFE - A SPI burst contains the 31 LSB in first word and 2^7 -1 words.
- * - 0xFFF - A SPI burst contains 2^7 words.
- */
- //@{
- #define BP_ECSPI_CONREG_BURST_LENGTH (20) //!< Bit position for ECSPI_CONREG_BURST_LENGTH.
- #define BM_ECSPI_CONREG_BURST_LENGTH (0xfff00000) //!< Bit mask for ECSPI_CONREG_BURST_LENGTH.
- //! @brief Get value of ECSPI_CONREG_BURST_LENGTH from a register value.
- #define BG_ECSPI_CONREG_BURST_LENGTH(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONREG_BURST_LENGTH) >> BP_ECSPI_CONREG_BURST_LENGTH)
- //! @brief Format value for bitfield ECSPI_CONREG_BURST_LENGTH.
- #define BF_ECSPI_CONREG_BURST_LENGTH(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONREG_BURST_LENGTH) & BM_ECSPI_CONREG_BURST_LENGTH)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the BURST_LENGTH field to a new value.
- #define BW_ECSPI_CONREG_BURST_LENGTH(x, v) (HW_ECSPI_CONREG_WR(x, (HW_ECSPI_CONREG_RD(x) & ~BM_ECSPI_CONREG_BURST_LENGTH) | BF_ECSPI_CONREG_BURST_LENGTH(v)))
- #endif
- //@}
- //-------------------------------------------------------------------------------------------
- // HW_ECSPI_CONFIGREG - Config Register
- //-------------------------------------------------------------------------------------------
- #ifndef __LANGUAGE_ASM__
- /*!
- * @brief HW_ECSPI_CONFIGREG - Config Register (RW)
- *
- * Reset value: 0x00000000
- *
- * The Config Register (ECSPI_CONFIGREG) allows software to configure each SPI channel, configure
- * its operating modes, specify the phase and polarity of the clock, configure the Chip Select (SS),
- * and define the HT transfer length. Note, HT mode is not supported by this product.
- */
- typedef union _hw_ecspi_configreg
- {
- reg32_t U;
- struct _hw_ecspi_configreg_bitfields
- {
- unsigned SCLK_PHA : 4; //!< [3:0] SPI Clock/Data Phase Control.
- unsigned SCLK_POL : 4; //!< [7:4] SPI Clock Polarity Control.
- unsigned SS_CTL : 4; //!< [11:8] SPI SS Wave Form Select.
- unsigned SS_POL : 4; //!< [15:12] SPI SS Polarity Select.
- unsigned DATA_CTL : 4; //!< [19:16] DATA CTL.
- unsigned SCLK_CTL : 4; //!< [23:20] SCLK CTL.
- unsigned HT_LENGTH : 5; //!< [28:24] HT LENGTH.
- unsigned RESERVED0 : 3; //!< [31:29] Reserved
- } B;
- } hw_ecspi_configreg_t;
- #endif
- /*!
- * @name Constants and macros for entire ECSPI_CONFIGREG register
- */
- //@{
- #define HW_ECSPI_CONFIGREG_ADDR(x) (REGS_ECSPI_BASE(x) + 0xc)
- #ifndef __LANGUAGE_ASM__
- #define HW_ECSPI_CONFIGREG(x) (*(volatile hw_ecspi_configreg_t *) HW_ECSPI_CONFIGREG_ADDR(x))
- #define HW_ECSPI_CONFIGREG_RD(x) (HW_ECSPI_CONFIGREG(x).U)
- #define HW_ECSPI_CONFIGREG_WR(x, v) (HW_ECSPI_CONFIGREG(x).U = (v))
- #define HW_ECSPI_CONFIGREG_SET(x, v) (HW_ECSPI_CONFIGREG_WR(x, HW_ECSPI_CONFIGREG_RD(x) | (v)))
- #define HW_ECSPI_CONFIGREG_CLR(x, v) (HW_ECSPI_CONFIGREG_WR(x, HW_ECSPI_CONFIGREG_RD(x) & ~(v)))
- #define HW_ECSPI_CONFIGREG_TOG(x, v) (HW_ECSPI_CONFIGREG_WR(x, HW_ECSPI_CONFIGREG_RD(x) ^ (v)))
- #endif
- //@}
- /*
- * constants & macros for individual ECSPI_CONFIGREG bitfields
- */
- /*! @name Register ECSPI_CONFIGREG, field SCLK_PHA[3:0] (RW)
- *
- * SPI Clock/Data Phase Control. This field controls the clock/data phase relationship. See for more
- * information. SCLK PHA[3] is for SPI channel 3. SCLK PHA[2] is for SPI channel 2. SCLK PHA[1] is
- * for SPI channel 1. SCLK PHA[0] is for SPI channel 0.
- *
- * Values:
- * - 0 - Phase 0 operation.
- * - 1 - Phase 1 operation.
- */
- //@{
- #define BP_ECSPI_CONFIGREG_SCLK_PHA (0) //!< Bit position for ECSPI_CONFIGREG_SCLK_PHA.
- #define BM_ECSPI_CONFIGREG_SCLK_PHA (0x0000000f) //!< Bit mask for ECSPI_CONFIGREG_SCLK_PHA.
- //! @brief Get value of ECSPI_CONFIGREG_SCLK_PHA from a register value.
- #define BG_ECSPI_CONFIGREG_SCLK_PHA(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONFIGREG_SCLK_PHA) >> BP_ECSPI_CONFIGREG_SCLK_PHA)
- //! @brief Format value for bitfield ECSPI_CONFIGREG_SCLK_PHA.
- #define BF_ECSPI_CONFIGREG_SCLK_PHA(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONFIGREG_SCLK_PHA) & BM_ECSPI_CONFIGREG_SCLK_PHA)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the SCLK_PHA field to a new value.
- #define BW_ECSPI_CONFIGREG_SCLK_PHA(x, v) (HW_ECSPI_CONFIGREG_WR(x, (HW_ECSPI_CONFIGREG_RD(x) & ~BM_ECSPI_CONFIGREG_SCLK_PHA) | BF_ECSPI_CONFIGREG_SCLK_PHA(v)))
- #endif
- //@}
- /*! @name Register ECSPI_CONFIGREG, field SCLK_POL[7:4] (RW)
- *
- * SPI Clock Polarity Control. This field controls the polarity of the SCLK signal. See for more
- * information. SCLK_POL[3] is for SPI channel 3. SCLK_POL[2] is for SPI channel 2. SCLK_POL[1] is
- * for SPI channel 1. SCLK_POL[0] is for SPI channel 0.
- *
- * Values:
- * - 0 - Active high polarity (0 = Idle).
- * - 1 - Active low polarity (1 = Idle).
- */
- //@{
- #define BP_ECSPI_CONFIGREG_SCLK_POL (4) //!< Bit position for ECSPI_CONFIGREG_SCLK_POL.
- #define BM_ECSPI_CONFIGREG_SCLK_POL (0x000000f0) //!< Bit mask for ECSPI_CONFIGREG_SCLK_POL.
- //! @brief Get value of ECSPI_CONFIGREG_SCLK_POL from a register value.
- #define BG_ECSPI_CONFIGREG_SCLK_POL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONFIGREG_SCLK_POL) >> BP_ECSPI_CONFIGREG_SCLK_POL)
- //! @brief Format value for bitfield ECSPI_CONFIGREG_SCLK_POL.
- #define BF_ECSPI_CONFIGREG_SCLK_POL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONFIGREG_SCLK_POL) & BM_ECSPI_CONFIGREG_SCLK_POL)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the SCLK_POL field to a new value.
- #define BW_ECSPI_CONFIGREG_SCLK_POL(x, v) (HW_ECSPI_CONFIGREG_WR(x, (HW_ECSPI_CONFIGREG_RD(x) & ~BM_ECSPI_CONFIGREG_SCLK_POL) | BF_ECSPI_CONFIGREG_SCLK_POL(v)))
- #endif
- //@}
- /*! @name Register ECSPI_CONFIGREG, field SS_CTL[11:8] (RW)
- *
- * SPI SS Wave Form Select. In master mode, this field controls the output wave form of the Chip
- * Select (SS) signal when the SMC (Start Mode Control) bit is cleared. The SS_CTL are ignored if
- * the SMC bit is set. SS CTL[3] is for SPI channel 3. SS CTL[2] is for SPI channel 2. SS CTL[1] is
- * for SPI channel 1. SS CTL[0] is for SPI channel 0. In slave mode, this bit controls when the SPI
- * burst is completed. An SPI burst is completed by the Chip Select (SS) signal edges. (SSPOL = 0:
- * rising edge; SSPOL = 1: falling edge) The RXFIFO is advanced whenever a Chip Select (SS) signal
- * edge is detected or the shift register contains 32-bits of valid data.
- *
- * Values:
- * - 0 - In master mode - only one SPI burst will be transmitted.
- * - 0 - In slave mode - an SPI burst is completed when the number of bits received in the shift register is
- * equal to (BURST LENGTH + 1). Only the n least-significant bits (n = BURST LENGTH[4:0] + 1) of
- * the first received word are valid. All bits subsequent to the first received word in RXFIFO
- * are valid.
- * - 1 - In master mode - Negate Chip Select (SS) signal between SPI bursts. Multiple SPI bursts will be
- * transmitted. The SPI transfer will automatically stop when the TXFIFO is empty.
- * - 1 - In slave mode - an SPI burst is completed by the Chip Select (SS) signal edges. (SSPOL = 0: rising
- * edge; SSPOL = 1: falling edge) The RXFIFO is advanced whenever a Chip Select (SS) signal edge
- * is detected or the shift register contains 32-bits of valid data.
- */
- //@{
- #define BP_ECSPI_CONFIGREG_SS_CTL (8) //!< Bit position for ECSPI_CONFIGREG_SS_CTL.
- #define BM_ECSPI_CONFIGREG_SS_CTL (0x00000f00) //!< Bit mask for ECSPI_CONFIGREG_SS_CTL.
- //! @brief Get value of ECSPI_CONFIGREG_SS_CTL from a register value.
- #define BG_ECSPI_CONFIGREG_SS_CTL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONFIGREG_SS_CTL) >> BP_ECSPI_CONFIGREG_SS_CTL)
- //! @brief Format value for bitfield ECSPI_CONFIGREG_SS_CTL.
- #define BF_ECSPI_CONFIGREG_SS_CTL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONFIGREG_SS_CTL) & BM_ECSPI_CONFIGREG_SS_CTL)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the SS_CTL field to a new value.
- #define BW_ECSPI_CONFIGREG_SS_CTL(x, v) (HW_ECSPI_CONFIGREG_WR(x, (HW_ECSPI_CONFIGREG_RD(x) & ~BM_ECSPI_CONFIGREG_SS_CTL) | BF_ECSPI_CONFIGREG_SS_CTL(v)))
- #endif
- //@}
- /*! @name Register ECSPI_CONFIGREG, field SS_POL[15:12] (RW)
- *
- * SPI SS Polarity Select. In both Master and Slave modes, this field selects the polarity of the
- * Chip Select (SS) signal. SS POL[3] is for SPI channel 3. SS POL[2] is for SPI channel 2. SS
- * POL[1] is for SPI channel 1. SS POL[0] is for SPI channel 0.
- *
- * Values:
- * - 0 - Active low.
- * - 1 - Active high.
- */
- //@{
- #define BP_ECSPI_CONFIGREG_SS_POL (12) //!< Bit position for ECSPI_CONFIGREG_SS_POL.
- #define BM_ECSPI_CONFIGREG_SS_POL (0x0000f000) //!< Bit mask for ECSPI_CONFIGREG_SS_POL.
- //! @brief Get value of ECSPI_CONFIGREG_SS_POL from a register value.
- #define BG_ECSPI_CONFIGREG_SS_POL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONFIGREG_SS_POL) >> BP_ECSPI_CONFIGREG_SS_POL)
- //! @brief Format value for bitfield ECSPI_CONFIGREG_SS_POL.
- #define BF_ECSPI_CONFIGREG_SS_POL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONFIGREG_SS_POL) & BM_ECSPI_CONFIGREG_SS_POL)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the SS_POL field to a new value.
- #define BW_ECSPI_CONFIGREG_SS_POL(x, v) (HW_ECSPI_CONFIGREG_WR(x, (HW_ECSPI_CONFIGREG_RD(x) & ~BM_ECSPI_CONFIGREG_SS_POL) | BF_ECSPI_CONFIGREG_SS_POL(v)))
- #endif
- //@}
- /*! @name Register ECSPI_CONFIGREG, field DATA_CTL[19:16] (RW)
- *
- * DATA CTL. This field controls inactive state of the data line for each SPI channel. DATA CTL[3]
- * is for SPI channel 3. DATA CTL[2] is for SPI channel 2. DATA CTL[1] is for SPI channel 1. DATA
- * CTL[0] is for SPI channel 0.
- *
- * Values:
- * - 0 - Stay high.
- * - 1 - Stay low.
- */
- //@{
- #define BP_ECSPI_CONFIGREG_DATA_CTL (16) //!< Bit position for ECSPI_CONFIGREG_DATA_CTL.
- #define BM_ECSPI_CONFIGREG_DATA_CTL (0x000f0000) //!< Bit mask for ECSPI_CONFIGREG_DATA_CTL.
- //! @brief Get value of ECSPI_CONFIGREG_DATA_CTL from a register value.
- #define BG_ECSPI_CONFIGREG_DATA_CTL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONFIGREG_DATA_CTL) >> BP_ECSPI_CONFIGREG_DATA_CTL)
- //! @brief Format value for bitfield ECSPI_CONFIGREG_DATA_CTL.
- #define BF_ECSPI_CONFIGREG_DATA_CTL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONFIGREG_DATA_CTL) & BM_ECSPI_CONFIGREG_DATA_CTL)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the DATA_CTL field to a new value.
- #define BW_ECSPI_CONFIGREG_DATA_CTL(x, v) (HW_ECSPI_CONFIGREG_WR(x, (HW_ECSPI_CONFIGREG_RD(x) & ~BM_ECSPI_CONFIGREG_DATA_CTL) | BF_ECSPI_CONFIGREG_DATA_CTL(v)))
- #endif
- //@}
- /*! @name Register ECSPI_CONFIGREG, field SCLK_CTL[23:20] (RW)
- *
- * SCLK CTL. This field controls the inactive state of SCLK for each SPI channel. SCLK CTL[3] is for
- * SPI channel 3. SCLK CTL[2] is for SPI channel 2. SCLK CTL[1] is for SPI channel 1. SCLK CTL[0] is
- * for SPI channel 0.
- *
- * Values:
- * - 0 - Stay low.
- * - 1 - Stay high.
- */
- //@{
- #define BP_ECSPI_CONFIGREG_SCLK_CTL (20) //!< Bit position for ECSPI_CONFIGREG_SCLK_CTL.
- #define BM_ECSPI_CONFIGREG_SCLK_CTL (0x00f00000) //!< Bit mask for ECSPI_CONFIGREG_SCLK_CTL.
- //! @brief Get value of ECSPI_CONFIGREG_SCLK_CTL from a register value.
- #define BG_ECSPI_CONFIGREG_SCLK_CTL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONFIGREG_SCLK_CTL) >> BP_ECSPI_CONFIGREG_SCLK_CTL)
- //! @brief Format value for bitfield ECSPI_CONFIGREG_SCLK_CTL.
- #define BF_ECSPI_CONFIGREG_SCLK_CTL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONFIGREG_SCLK_CTL) & BM_ECSPI_CONFIGREG_SCLK_CTL)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the SCLK_CTL field to a new value.
- #define BW_ECSPI_CONFIGREG_SCLK_CTL(x, v) (HW_ECSPI_CONFIGREG_WR(x, (HW_ECSPI_CONFIGREG_RD(x) & ~BM_ECSPI_CONFIGREG_SCLK_CTL) | BF_ECSPI_CONFIGREG_SCLK_CTL(v)))
- #endif
- //@}
- /*! @name Register ECSPI_CONFIGREG, field HT_LENGTH[28:24] (RW)
- *
- * HT LENGTH. This field defines the message length in HT Mode. Note, HT mode is not supported by
- * this product. The length in bits of one message is (HT LENGTH + 1).
- */
- //@{
- #define BP_ECSPI_CONFIGREG_HT_LENGTH (24) //!< Bit position for ECSPI_CONFIGREG_HT_LENGTH.
- #define BM_ECSPI_CONFIGREG_HT_LENGTH (0x1f000000) //!< Bit mask for ECSPI_CONFIGREG_HT_LENGTH.
- //! @brief Get value of ECSPI_CONFIGREG_HT_LENGTH from a register value.
- #define BG_ECSPI_CONFIGREG_HT_LENGTH(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_CONFIGREG_HT_LENGTH) >> BP_ECSPI_CONFIGREG_HT_LENGTH)
- //! @brief Format value for bitfield ECSPI_CONFIGREG_HT_LENGTH.
- #define BF_ECSPI_CONFIGREG_HT_LENGTH(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_CONFIGREG_HT_LENGTH) & BM_ECSPI_CONFIGREG_HT_LENGTH)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the HT_LENGTH field to a new value.
- #define BW_ECSPI_CONFIGREG_HT_LENGTH(x, v) (HW_ECSPI_CONFIGREG_WR(x, (HW_ECSPI_CONFIGREG_RD(x) & ~BM_ECSPI_CONFIGREG_HT_LENGTH) | BF_ECSPI_CONFIGREG_HT_LENGTH(v)))
- #endif
- //@}
- //-------------------------------------------------------------------------------------------
- // HW_ECSPI_INTREG - Interrupt Control Register
- //-------------------------------------------------------------------------------------------
- #ifndef __LANGUAGE_ASM__
- /*!
- * @brief HW_ECSPI_INTREG - Interrupt Control Register (RW)
- *
- * Reset value: 0x00000000
- *
- * The Interrupt Control Register (ECSPI_INTREG) enables the generation of interrupts to the host
- * processor. If the ECSPI is disabled, this register reads zero.
- */
- typedef union _hw_ecspi_intreg
- {
- reg32_t U;
- struct _hw_ecspi_intreg_bitfields
- {
- unsigned TEEN : 1; //!< [0] TXFIFO Empty Interrupt enable.
- unsigned TDREN : 1; //!< [1] TXFIFO Data Request Interrupt enable.
- unsigned TFEN : 1; //!< [2] TXFIFO Full Interrupt enable.
- unsigned RREN : 1; //!< [3] RXFIFO Ready Interrupt enable.
- unsigned RDREN : 1; //!< [4] RXFIFO Data Request Interrupt enable.
- unsigned RFEN : 1; //!< [5] RXFIFO Full Interrupt enable.
- unsigned ROEN : 1; //!< [6] RXFIFO Overflow Interrupt enable.
- unsigned TCEN : 1; //!< [7] Transfer Completed Interrupt enable.
- unsigned RESERVED0 : 24; //!< [31:8] Reserved
- } B;
- } hw_ecspi_intreg_t;
- #endif
- /*!
- * @name Constants and macros for entire ECSPI_INTREG register
- */
- //@{
- #define HW_ECSPI_INTREG_ADDR(x) (REGS_ECSPI_BASE(x) + 0x10)
- #ifndef __LANGUAGE_ASM__
- #define HW_ECSPI_INTREG(x) (*(volatile hw_ecspi_intreg_t *) HW_ECSPI_INTREG_ADDR(x))
- #define HW_ECSPI_INTREG_RD(x) (HW_ECSPI_INTREG(x).U)
- #define HW_ECSPI_INTREG_WR(x, v) (HW_ECSPI_INTREG(x).U = (v))
- #define HW_ECSPI_INTREG_SET(x, v) (HW_ECSPI_INTREG_WR(x, HW_ECSPI_INTREG_RD(x) | (v)))
- #define HW_ECSPI_INTREG_CLR(x, v) (HW_ECSPI_INTREG_WR(x, HW_ECSPI_INTREG_RD(x) & ~(v)))
- #define HW_ECSPI_INTREG_TOG(x, v) (HW_ECSPI_INTREG_WR(x, HW_ECSPI_INTREG_RD(x) ^ (v)))
- #endif
- //@}
- /*
- * constants & macros for individual ECSPI_INTREG bitfields
- */
- /*! @name Register ECSPI_INTREG, field TEEN[0] (RW)
- *
- * TXFIFO Empty Interrupt enable. This bit enables the TXFIFO Empty Interrupt.
- *
- * Values:
- * - 0 - Disable
- * - 1 - Enable
- */
- //@{
- #define BP_ECSPI_INTREG_TEEN (0) //!< Bit position for ECSPI_INTREG_TEEN.
- #define BM_ECSPI_INTREG_TEEN (0x00000001) //!< Bit mask for ECSPI_INTREG_TEEN.
- //! @brief Get value of ECSPI_INTREG_TEEN from a register value.
- #define BG_ECSPI_INTREG_TEEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_INTREG_TEEN) >> BP_ECSPI_INTREG_TEEN)
- //! @brief Format value for bitfield ECSPI_INTREG_TEEN.
- #define BF_ECSPI_INTREG_TEEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_INTREG_TEEN) & BM_ECSPI_INTREG_TEEN)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the TEEN field to a new value.
- #define BW_ECSPI_INTREG_TEEN(x, v) (HW_ECSPI_INTREG_WR(x, (HW_ECSPI_INTREG_RD(x) & ~BM_ECSPI_INTREG_TEEN) | BF_ECSPI_INTREG_TEEN(v)))
- #endif
- //@}
- /*! @name Register ECSPI_INTREG, field TDREN[1] (RW)
- *
- * TXFIFO Data Request Interrupt enable. This bit enables the TXFIFO Data Request Interrupt when the
- * number of data entries in the TXFIFO is less than or equal to TX_THRESHOLD.
- *
- * Values:
- * - 0 - Disable
- * - 1 - Enable
- */
- //@{
- #define BP_ECSPI_INTREG_TDREN (1) //!< Bit position for ECSPI_INTREG_TDREN.
- #define BM_ECSPI_INTREG_TDREN (0x00000002) //!< Bit mask for ECSPI_INTREG_TDREN.
- //! @brief Get value of ECSPI_INTREG_TDREN from a register value.
- #define BG_ECSPI_INTREG_TDREN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_INTREG_TDREN) >> BP_ECSPI_INTREG_TDREN)
- //! @brief Format value for bitfield ECSPI_INTREG_TDREN.
- #define BF_ECSPI_INTREG_TDREN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_INTREG_TDREN) & BM_ECSPI_INTREG_TDREN)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the TDREN field to a new value.
- #define BW_ECSPI_INTREG_TDREN(x, v) (HW_ECSPI_INTREG_WR(x, (HW_ECSPI_INTREG_RD(x) & ~BM_ECSPI_INTREG_TDREN) | BF_ECSPI_INTREG_TDREN(v)))
- #endif
- //@}
- /*! @name Register ECSPI_INTREG, field TFEN[2] (RW)
- *
- * TXFIFO Full Interrupt enable. This bit enables the TXFIFO Full Interrupt.
- *
- * Values:
- * - 0 - Disable
- * - 1 - Enable
- */
- //@{
- #define BP_ECSPI_INTREG_TFEN (2) //!< Bit position for ECSPI_INTREG_TFEN.
- #define BM_ECSPI_INTREG_TFEN (0x00000004) //!< Bit mask for ECSPI_INTREG_TFEN.
- //! @brief Get value of ECSPI_INTREG_TFEN from a register value.
- #define BG_ECSPI_INTREG_TFEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_INTREG_TFEN) >> BP_ECSPI_INTREG_TFEN)
- //! @brief Format value for bitfield ECSPI_INTREG_TFEN.
- #define BF_ECSPI_INTREG_TFEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_INTREG_TFEN) & BM_ECSPI_INTREG_TFEN)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the TFEN field to a new value.
- #define BW_ECSPI_INTREG_TFEN(x, v) (HW_ECSPI_INTREG_WR(x, (HW_ECSPI_INTREG_RD(x) & ~BM_ECSPI_INTREG_TFEN) | BF_ECSPI_INTREG_TFEN(v)))
- #endif
- //@}
- /*! @name Register ECSPI_INTREG, field RREN[3] (RW)
- *
- * RXFIFO Ready Interrupt enable. This bit enables the RXFIFO Ready Interrupt.
- *
- * Values:
- * - 0 - Disable
- * - 1 - Enable
- */
- //@{
- #define BP_ECSPI_INTREG_RREN (3) //!< Bit position for ECSPI_INTREG_RREN.
- #define BM_ECSPI_INTREG_RREN (0x00000008) //!< Bit mask for ECSPI_INTREG_RREN.
- //! @brief Get value of ECSPI_INTREG_RREN from a register value.
- #define BG_ECSPI_INTREG_RREN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_INTREG_RREN) >> BP_ECSPI_INTREG_RREN)
- //! @brief Format value for bitfield ECSPI_INTREG_RREN.
- #define BF_ECSPI_INTREG_RREN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_INTREG_RREN) & BM_ECSPI_INTREG_RREN)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the RREN field to a new value.
- #define BW_ECSPI_INTREG_RREN(x, v) (HW_ECSPI_INTREG_WR(x, (HW_ECSPI_INTREG_RD(x) & ~BM_ECSPI_INTREG_RREN) | BF_ECSPI_INTREG_RREN(v)))
- #endif
- //@}
- /*! @name Register ECSPI_INTREG, field RDREN[4] (RW)
- *
- * RXFIFO Data Request Interrupt enable. This bit enables the RXFIFO Data Request Interrupt when the
- * number of data entries in the RXFIFO is greater than RX_THRESHOLD.
- *
- * Values:
- * - 0 - Disable
- * - 1 - Enable
- */
- //@{
- #define BP_ECSPI_INTREG_RDREN (4) //!< Bit position for ECSPI_INTREG_RDREN.
- #define BM_ECSPI_INTREG_RDREN (0x00000010) //!< Bit mask for ECSPI_INTREG_RDREN.
- //! @brief Get value of ECSPI_INTREG_RDREN from a register value.
- #define BG_ECSPI_INTREG_RDREN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_INTREG_RDREN) >> BP_ECSPI_INTREG_RDREN)
- //! @brief Format value for bitfield ECSPI_INTREG_RDREN.
- #define BF_ECSPI_INTREG_RDREN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_INTREG_RDREN) & BM_ECSPI_INTREG_RDREN)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the RDREN field to a new value.
- #define BW_ECSPI_INTREG_RDREN(x, v) (HW_ECSPI_INTREG_WR(x, (HW_ECSPI_INTREG_RD(x) & ~BM_ECSPI_INTREG_RDREN) | BF_ECSPI_INTREG_RDREN(v)))
- #endif
- //@}
- /*! @name Register ECSPI_INTREG, field RFEN[5] (RW)
- *
- * RXFIFO Full Interrupt enable. This bit enables the RXFIFO Full Interrupt.
- *
- * Values:
- * - 0 - Disable
- * - 1 - Enable
- */
- //@{
- #define BP_ECSPI_INTREG_RFEN (5) //!< Bit position for ECSPI_INTREG_RFEN.
- #define BM_ECSPI_INTREG_RFEN (0x00000020) //!< Bit mask for ECSPI_INTREG_RFEN.
- //! @brief Get value of ECSPI_INTREG_RFEN from a register value.
- #define BG_ECSPI_INTREG_RFEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_INTREG_RFEN) >> BP_ECSPI_INTREG_RFEN)
- //! @brief Format value for bitfield ECSPI_INTREG_RFEN.
- #define BF_ECSPI_INTREG_RFEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_INTREG_RFEN) & BM_ECSPI_INTREG_RFEN)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the RFEN field to a new value.
- #define BW_ECSPI_INTREG_RFEN(x, v) (HW_ECSPI_INTREG_WR(x, (HW_ECSPI_INTREG_RD(x) & ~BM_ECSPI_INTREG_RFEN) | BF_ECSPI_INTREG_RFEN(v)))
- #endif
- //@}
- /*! @name Register ECSPI_INTREG, field ROEN[6] (RW)
- *
- * RXFIFO Overflow Interrupt enable. This bit enables the RXFIFO Overflow Interrupt.
- *
- * Values:
- * - 0 - Disable
- * - 1 - Enable
- */
- //@{
- #define BP_ECSPI_INTREG_ROEN (6) //!< Bit position for ECSPI_INTREG_ROEN.
- #define BM_ECSPI_INTREG_ROEN (0x00000040) //!< Bit mask for ECSPI_INTREG_ROEN.
- //! @brief Get value of ECSPI_INTREG_ROEN from a register value.
- #define BG_ECSPI_INTREG_ROEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_INTREG_ROEN) >> BP_ECSPI_INTREG_ROEN)
- //! @brief Format value for bitfield ECSPI_INTREG_ROEN.
- #define BF_ECSPI_INTREG_ROEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_INTREG_ROEN) & BM_ECSPI_INTREG_ROEN)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the ROEN field to a new value.
- #define BW_ECSPI_INTREG_ROEN(x, v) (HW_ECSPI_INTREG_WR(x, (HW_ECSPI_INTREG_RD(x) & ~BM_ECSPI_INTREG_ROEN) | BF_ECSPI_INTREG_ROEN(v)))
- #endif
- //@}
- /*! @name Register ECSPI_INTREG, field TCEN[7] (RW)
- *
- * Transfer Completed Interrupt enable. This bit enables the Transfer Completed Interrupt.
- *
- * Values:
- * - 0 - Disable
- * - 1 - Enable
- */
- //@{
- #define BP_ECSPI_INTREG_TCEN (7) //!< Bit position for ECSPI_INTREG_TCEN.
- #define BM_ECSPI_INTREG_TCEN (0x00000080) //!< Bit mask for ECSPI_INTREG_TCEN.
- //! @brief Get value of ECSPI_INTREG_TCEN from a register value.
- #define BG_ECSPI_INTREG_TCEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_INTREG_TCEN) >> BP_ECSPI_INTREG_TCEN)
- //! @brief Format value for bitfield ECSPI_INTREG_TCEN.
- #define BF_ECSPI_INTREG_TCEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_INTREG_TCEN) & BM_ECSPI_INTREG_TCEN)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the TCEN field to a new value.
- #define BW_ECSPI_INTREG_TCEN(x, v) (HW_ECSPI_INTREG_WR(x, (HW_ECSPI_INTREG_RD(x) & ~BM_ECSPI_INTREG_TCEN) | BF_ECSPI_INTREG_TCEN(v)))
- #endif
- //@}
- //-------------------------------------------------------------------------------------------
- // HW_ECSPI_DMAREG - DMA Control Register
- //-------------------------------------------------------------------------------------------
- #ifndef __LANGUAGE_ASM__
- /*!
- * @brief HW_ECSPI_DMAREG - DMA Control Register (RW)
- *
- * Reset value: 0x00000000
- *
- * The Direct Memory Access Control Register (ECSPI_DMAREG) provides software a way to use an on-
- * chip DMA controller for ECSPI data. Internal DMA request signals enable direct data transfers
- * between the ECSPI FIFOs and system memory. The ECSPI sends out DMA requests when the appropriate
- * FIFO conditions are matched. If the ECSPI is disabled, this register is read as 0.
- */
- typedef union _hw_ecspi_dmareg
- {
- reg32_t U;
- struct _hw_ecspi_dmareg_bitfields
- {
- unsigned TX_THRESHOLD : 6; //!< [5:0] TX THRESHOLD.
- unsigned RESERVED0 : 1; //!< [6] Reserved
- unsigned TEDEN : 1; //!< [7] TXFIFO Empty DMA Request Enable.
- unsigned RESERVED1 : 8; //!< [15:8] Reserved
- unsigned RX_THRESHOLD : 6; //!< [21:16] RX THRESHOLD.
- unsigned RESERVED2 : 1; //!< [22] Reserved
- unsigned RXDEN : 1; //!< [23] RXFIFO DMA Request Enable.
- unsigned RX_DMA_LENGTH : 6; //!< [29:24] RX DMA LENGTH.
- unsigned RESERVED3 : 1; //!< [30] Reserved
- unsigned RXTDEN : 1; //!< [31] RXFIFO TAIL DMA Request Enable.
- } B;
- } hw_ecspi_dmareg_t;
- #endif
- /*!
- * @name Constants and macros for entire ECSPI_DMAREG register
- */
- //@{
- #define HW_ECSPI_DMAREG_ADDR(x) (REGS_ECSPI_BASE(x) + 0x14)
- #ifndef __LANGUAGE_ASM__
- #define HW_ECSPI_DMAREG(x) (*(volatile hw_ecspi_dmareg_t *) HW_ECSPI_DMAREG_ADDR(x))
- #define HW_ECSPI_DMAREG_RD(x) (HW_ECSPI_DMAREG(x).U)
- #define HW_ECSPI_DMAREG_WR(x, v) (HW_ECSPI_DMAREG(x).U = (v))
- #define HW_ECSPI_DMAREG_SET(x, v) (HW_ECSPI_DMAREG_WR(x, HW_ECSPI_DMAREG_RD(x) | (v)))
- #define HW_ECSPI_DMAREG_CLR(x, v) (HW_ECSPI_DMAREG_WR(x, HW_ECSPI_DMAREG_RD(x) & ~(v)))
- #define HW_ECSPI_DMAREG_TOG(x, v) (HW_ECSPI_DMAREG_WR(x, HW_ECSPI_DMAREG_RD(x) ^ (v)))
- #endif
- //@}
- /*
- * constants & macros for individual ECSPI_DMAREG bitfields
- */
- /*! @name Register ECSPI_DMAREG, field TX_THRESHOLD[5:0] (RW)
- *
- * TX THRESHOLD. This field defines the FIFO threshold that triggers a TX DMA/INT request. A TX
- * DMA/INT request is issued when the number of data entries in the TXFIFO is greater than
- * TX_THRESHOLD.
- */
- //@{
- #define BP_ECSPI_DMAREG_TX_THRESHOLD (0) //!< Bit position for ECSPI_DMAREG_TX_THRESHOLD.
- #define BM_ECSPI_DMAREG_TX_THRESHOLD (0x0000003f) //!< Bit mask for ECSPI_DMAREG_TX_THRESHOLD.
- //! @brief Get value of ECSPI_DMAREG_TX_THRESHOLD from a register value.
- #define BG_ECSPI_DMAREG_TX_THRESHOLD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_DMAREG_TX_THRESHOLD) >> BP_ECSPI_DMAREG_TX_THRESHOLD)
- //! @brief Format value for bitfield ECSPI_DMAREG_TX_THRESHOLD.
- #define BF_ECSPI_DMAREG_TX_THRESHOLD(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_DMAREG_TX_THRESHOLD) & BM_ECSPI_DMAREG_TX_THRESHOLD)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the TX_THRESHOLD field to a new value.
- #define BW_ECSPI_DMAREG_TX_THRESHOLD(x, v) (HW_ECSPI_DMAREG_WR(x, (HW_ECSPI_DMAREG_RD(x) & ~BM_ECSPI_DMAREG_TX_THRESHOLD) | BF_ECSPI_DMAREG_TX_THRESHOLD(v)))
- #endif
- //@}
- /*! @name Register ECSPI_DMAREG, field TEDEN[7] (RW)
- *
- * TXFIFO Empty DMA Request Enable. This bit enables/disables the TXFIFO Empty DMA Request.
- *
- * Values:
- * - 0 - Disable
- * - 1 - Enable
- */
- //@{
- #define BP_ECSPI_DMAREG_TEDEN (7) //!< Bit position for ECSPI_DMAREG_TEDEN.
- #define BM_ECSPI_DMAREG_TEDEN (0x00000080) //!< Bit mask for ECSPI_DMAREG_TEDEN.
- //! @brief Get value of ECSPI_DMAREG_TEDEN from a register value.
- #define BG_ECSPI_DMAREG_TEDEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_DMAREG_TEDEN) >> BP_ECSPI_DMAREG_TEDEN)
- //! @brief Format value for bitfield ECSPI_DMAREG_TEDEN.
- #define BF_ECSPI_DMAREG_TEDEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_DMAREG_TEDEN) & BM_ECSPI_DMAREG_TEDEN)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the TEDEN field to a new value.
- #define BW_ECSPI_DMAREG_TEDEN(x, v) (HW_ECSPI_DMAREG_WR(x, (HW_ECSPI_DMAREG_RD(x) & ~BM_ECSPI_DMAREG_TEDEN) | BF_ECSPI_DMAREG_TEDEN(v)))
- #endif
- //@}
- /*! @name Register ECSPI_DMAREG, field RX_THRESHOLD[21:16] (RW)
- *
- * RX THRESHOLD. This field defines the FIFO threshold that triggers a RX DMA/INT request. A RX
- * DMA/INT request is issued when the number of data entries in the RXFIFO is greater than
- * RX_THRESHOLD.
- */
- //@{
- #define BP_ECSPI_DMAREG_RX_THRESHOLD (16) //!< Bit position for ECSPI_DMAREG_RX_THRESHOLD.
- #define BM_ECSPI_DMAREG_RX_THRESHOLD (0x003f0000) //!< Bit mask for ECSPI_DMAREG_RX_THRESHOLD.
- //! @brief Get value of ECSPI_DMAREG_RX_THRESHOLD from a register value.
- #define BG_ECSPI_DMAREG_RX_THRESHOLD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_DMAREG_RX_THRESHOLD) >> BP_ECSPI_DMAREG_RX_THRESHOLD)
- //! @brief Format value for bitfield ECSPI_DMAREG_RX_THRESHOLD.
- #define BF_ECSPI_DMAREG_RX_THRESHOLD(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_DMAREG_RX_THRESHOLD) & BM_ECSPI_DMAREG_RX_THRESHOLD)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the RX_THRESHOLD field to a new value.
- #define BW_ECSPI_DMAREG_RX_THRESHOLD(x, v) (HW_ECSPI_DMAREG_WR(x, (HW_ECSPI_DMAREG_RD(x) & ~BM_ECSPI_DMAREG_RX_THRESHOLD) | BF_ECSPI_DMAREG_RX_THRESHOLD(v)))
- #endif
- //@}
- /*! @name Register ECSPI_DMAREG, field RXDEN[23] (RW)
- *
- * RXFIFO DMA Request Enable. This bit enables/disables the RXFIFO DMA Request.
- *
- * Values:
- * - 0 - Disable
- * - 1 - Enable
- */
- //@{
- #define BP_ECSPI_DMAREG_RXDEN (23) //!< Bit position for ECSPI_DMAREG_RXDEN.
- #define BM_ECSPI_DMAREG_RXDEN (0x00800000) //!< Bit mask for ECSPI_DMAREG_RXDEN.
- //! @brief Get value of ECSPI_DMAREG_RXDEN from a register value.
- #define BG_ECSPI_DMAREG_RXDEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_DMAREG_RXDEN) >> BP_ECSPI_DMAREG_RXDEN)
- //! @brief Format value for bitfield ECSPI_DMAREG_RXDEN.
- #define BF_ECSPI_DMAREG_RXDEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_DMAREG_RXDEN) & BM_ECSPI_DMAREG_RXDEN)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the RXDEN field to a new value.
- #define BW_ECSPI_DMAREG_RXDEN(x, v) (HW_ECSPI_DMAREG_WR(x, (HW_ECSPI_DMAREG_RD(x) & ~BM_ECSPI_DMAREG_RXDEN) | BF_ECSPI_DMAREG_RXDEN(v)))
- #endif
- //@}
- /*! @name Register ECSPI_DMAREG, field RX_DMA_LENGTH[29:24] (RW)
- *
- * RX DMA LENGTH. This field defines the burst length of a DMA operation. Applies only when RXTDEN
- * is set.
- */
- //@{
- #define BP_ECSPI_DMAREG_RX_DMA_LENGTH (24) //!< Bit position for ECSPI_DMAREG_RX_DMA_LENGTH.
- #define BM_ECSPI_DMAREG_RX_DMA_LENGTH (0x3f000000) //!< Bit mask for ECSPI_DMAREG_RX_DMA_LENGTH.
- //! @brief Get value of ECSPI_DMAREG_RX_DMA_LENGTH from a register value.
- #define BG_ECSPI_DMAREG_RX_DMA_LENGTH(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_DMAREG_RX_DMA_LENGTH) >> BP_ECSPI_DMAREG_RX_DMA_LENGTH)
- //! @brief Format value for bitfield ECSPI_DMAREG_RX_DMA_LENGTH.
- #define BF_ECSPI_DMAREG_RX_DMA_LENGTH(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_DMAREG_RX_DMA_LENGTH) & BM_ECSPI_DMAREG_RX_DMA_LENGTH)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the RX_DMA_LENGTH field to a new value.
- #define BW_ECSPI_DMAREG_RX_DMA_LENGTH(x, v) (HW_ECSPI_DMAREG_WR(x, (HW_ECSPI_DMAREG_RD(x) & ~BM_ECSPI_DMAREG_RX_DMA_LENGTH) | BF_ECSPI_DMAREG_RX_DMA_LENGTH(v)))
- #endif
- //@}
- /*! @name Register ECSPI_DMAREG, field RXTDEN[31] (RW)
- *
- * RXFIFO TAIL DMA Request Enable. This bit enables an internal counter that is increased at each
- * read of the RXFIFO. This counter is cleared automatically when it reaches RX DMA LENGTH. If the
- * number of words remaining in the RXFIFO is greater than or equal to RX DMA LENGTH, a DMA request
- * is generated even if it is less than or equal to RX_THRESHOLD.
- *
- * Values:
- * - 0 - Disable
- * - 1 - Enable
- */
- //@{
- #define BP_ECSPI_DMAREG_RXTDEN (31) //!< Bit position for ECSPI_DMAREG_RXTDEN.
- #define BM_ECSPI_DMAREG_RXTDEN (0x80000000) //!< Bit mask for ECSPI_DMAREG_RXTDEN.
- //! @brief Get value of ECSPI_DMAREG_RXTDEN from a register value.
- #define BG_ECSPI_DMAREG_RXTDEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_DMAREG_RXTDEN) >> BP_ECSPI_DMAREG_RXTDEN)
- //! @brief Format value for bitfield ECSPI_DMAREG_RXTDEN.
- #define BF_ECSPI_DMAREG_RXTDEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_DMAREG_RXTDEN) & BM_ECSPI_DMAREG_RXTDEN)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the RXTDEN field to a new value.
- #define BW_ECSPI_DMAREG_RXTDEN(x, v) (HW_ECSPI_DMAREG_WR(x, (HW_ECSPI_DMAREG_RD(x) & ~BM_ECSPI_DMAREG_RXTDEN) | BF_ECSPI_DMAREG_RXTDEN(v)))
- #endif
- //@}
- //-------------------------------------------------------------------------------------------
- // HW_ECSPI_STATREG - Status Register
- //-------------------------------------------------------------------------------------------
- #ifndef __LANGUAGE_ASM__
- /*!
- * @brief HW_ECSPI_STATREG - Status Register (RW)
- *
- * Reset value: 0x00000003
- *
- * The ECSPI Status Register (ECSPI_STATREG) reflects the status of the ECSPI's operating condition.
- * If the ECSPI is disabled, this register reads 0x0000_0003.
- */
- typedef union _hw_ecspi_statreg
- {
- reg32_t U;
- struct _hw_ecspi_statreg_bitfields
- {
- unsigned TE : 1; //!< [0] TXFIFO Empty.
- unsigned TDR : 1; //!< [1] TXFIFO Data Request.
- unsigned TF : 1; //!< [2] TXFIFO Full.
- unsigned RR : 1; //!< [3] RXFIFO Ready.
- unsigned RDR : 1; //!< [4] RXFIFO Data Request.
- unsigned RF : 1; //!< [5] RXFIFO Full.
- unsigned RO : 1; //!< [6] RXFIFO Overflow.
- unsigned TC : 1; //!< [7] Transfer Completed Status bit.
- unsigned RESERVED0 : 24; //!< [31:8] Reserved
- } B;
- } hw_ecspi_statreg_t;
- #endif
- /*!
- * @name Constants and macros for entire ECSPI_STATREG register
- */
- //@{
- #define HW_ECSPI_STATREG_ADDR(x) (REGS_ECSPI_BASE(x) + 0x18)
- #ifndef __LANGUAGE_ASM__
- #define HW_ECSPI_STATREG(x) (*(volatile hw_ecspi_statreg_t *) HW_ECSPI_STATREG_ADDR(x))
- #define HW_ECSPI_STATREG_RD(x) (HW_ECSPI_STATREG(x).U)
- #define HW_ECSPI_STATREG_WR(x, v) (HW_ECSPI_STATREG(x).U = (v))
- #define HW_ECSPI_STATREG_SET(x, v) (HW_ECSPI_STATREG_WR(x, HW_ECSPI_STATREG_RD(x) | (v)))
- #define HW_ECSPI_STATREG_CLR(x, v) (HW_ECSPI_STATREG_WR(x, HW_ECSPI_STATREG_RD(x) & ~(v)))
- #define HW_ECSPI_STATREG_TOG(x, v) (HW_ECSPI_STATREG_WR(x, HW_ECSPI_STATREG_RD(x) ^ (v)))
- #endif
- //@}
- /*
- * constants & macros for individual ECSPI_STATREG bitfields
- */
- /*! @name Register ECSPI_STATREG, field TE[0] (RO)
- *
- * TXFIFO Empty. This bit is set if the TXFIFO is empty.
- *
- * Values:
- * - 0 - TXFIFO contains one or more words.
- * - 1 - TXFIFO is empty.
- */
- //@{
- #define BP_ECSPI_STATREG_TE (0) //!< Bit position for ECSPI_STATREG_TE.
- #define BM_ECSPI_STATREG_TE (0x00000001) //!< Bit mask for ECSPI_STATREG_TE.
- //! @brief Get value of ECSPI_STATREG_TE from a register value.
- #define BG_ECSPI_STATREG_TE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_STATREG_TE) >> BP_ECSPI_STATREG_TE)
- //@}
- /*! @name Register ECSPI_STATREG, field TDR[1] (RO)
- *
- * TXFIFO Data Request.
- *
- * Values:
- * - 0 - Number of empty slots in TXFIFO is greater than TX_THRESHOLD.
- * - 1 - Number of empty slots in TXFIFO is not greater than TX_THRESHOLD.
- */
- //@{
- #define BP_ECSPI_STATREG_TDR (1) //!< Bit position for ECSPI_STATREG_TDR.
- #define BM_ECSPI_STATREG_TDR (0x00000002) //!< Bit mask for ECSPI_STATREG_TDR.
- //! @brief Get value of ECSPI_STATREG_TDR from a register value.
- #define BG_ECSPI_STATREG_TDR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_STATREG_TDR) >> BP_ECSPI_STATREG_TDR)
- //@}
- /*! @name Register ECSPI_STATREG, field TF[2] (RO)
- *
- * TXFIFO Full. This bit is set when if the TXFIFO is full.
- *
- * Values:
- * - 0 - TXFIFO is not Full.
- * - 1 - TXFIFO is Full.
- */
- //@{
- #define BP_ECSPI_STATREG_TF (2) //!< Bit position for ECSPI_STATREG_TF.
- #define BM_ECSPI_STATREG_TF (0x00000004) //!< Bit mask for ECSPI_STATREG_TF.
- //! @brief Get value of ECSPI_STATREG_TF from a register value.
- #define BG_ECSPI_STATREG_TF(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_STATREG_TF) >> BP_ECSPI_STATREG_TF)
- //@}
- /*! @name Register ECSPI_STATREG, field RR[3] (RO)
- *
- * RXFIFO Ready. This bit is set when one or more words are stored in the RXFIFO.
- *
- * Values:
- * - 0 - No valid data in RXFIFO.
- * - 1 - More than 1 word in RXFIFO.
- */
- //@{
- #define BP_ECSPI_STATREG_RR (3) //!< Bit position for ECSPI_STATREG_RR.
- #define BM_ECSPI_STATREG_RR (0x00000008) //!< Bit mask for ECSPI_STATREG_RR.
- //! @brief Get value of ECSPI_STATREG_RR from a register value.
- #define BG_ECSPI_STATREG_RR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_STATREG_RR) >> BP_ECSPI_STATREG_RR)
- //@}
- /*! @name Register ECSPI_STATREG, field RDR[4] (RO)
- *
- * RXFIFO Data Request.
- *
- * Values:
- * - 0 - When RXTDE is set - Number of data entries in the RXFIFO is not greater than RX_THRESHOLD.
- * - 0 - When RXTDE is clear - Number of data entries in the RXFIFO is not greater than RX_THRESHOLD.
- * - 1 - When RXTDE is set - Number of data entries in the RXFIFO is greater than RX_THRESHOLD or a DMA TAIL
- * DMA condition exists.
- * - 1 - When RXTDE is clear - Number of data entries in the RXFIFO is greater than RX_THRESHOLD.
- */
- //@{
- #define BP_ECSPI_STATREG_RDR (4) //!< Bit position for ECSPI_STATREG_RDR.
- #define BM_ECSPI_STATREG_RDR (0x00000010) //!< Bit mask for ECSPI_STATREG_RDR.
- //! @brief Get value of ECSPI_STATREG_RDR from a register value.
- #define BG_ECSPI_STATREG_RDR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_STATREG_RDR) >> BP_ECSPI_STATREG_RDR)
- //@}
- /*! @name Register ECSPI_STATREG, field RF[5] (RO)
- *
- * RXFIFO Full. This bit is set when the RXFIFO is full.
- *
- * Values:
- * - 0 - Not Full.
- * - 1 - Full.
- */
- //@{
- #define BP_ECSPI_STATREG_RF (5) //!< Bit position for ECSPI_STATREG_RF.
- #define BM_ECSPI_STATREG_RF (0x00000020) //!< Bit mask for ECSPI_STATREG_RF.
- //! @brief Get value of ECSPI_STATREG_RF from a register value.
- #define BG_ECSPI_STATREG_RF(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_STATREG_RF) >> BP_ECSPI_STATREG_RF)
- //@}
- /*! @name Register ECSPI_STATREG, field RO[6] (W1C)
- *
- * RXFIFO Overflow. When set, this bit indicates that RXFIFO has overflowed. Writing 1 to this bit
- * clears it.
- *
- * Values:
- * - 0 - RXFIFO has no overflow.
- * - 1 - RXFIFO has overflowed.
- */
- //@{
- #define BP_ECSPI_STATREG_RO (6) //!< Bit position for ECSPI_STATREG_RO.
- #define BM_ECSPI_STATREG_RO (0x00000040) //!< Bit mask for ECSPI_STATREG_RO.
- //! @brief Get value of ECSPI_STATREG_RO from a register value.
- #define BG_ECSPI_STATREG_RO(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_STATREG_RO) >> BP_ECSPI_STATREG_RO)
- //! @brief Format value for bitfield ECSPI_STATREG_RO.
- #define BF_ECSPI_STATREG_RO(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_STATREG_RO) & BM_ECSPI_STATREG_RO)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the RO field to a new value.
- #define BW_ECSPI_STATREG_RO(x, v) (HW_ECSPI_STATREG_WR(x, (HW_ECSPI_STATREG_RD(x) & ~BM_ECSPI_STATREG_RO) | BF_ECSPI_STATREG_RO(v)))
- #endif
- //@}
- /*! @name Register ECSPI_STATREG, field TC[7] (W1C)
- *
- * Transfer Completed Status bit. Writing 1 to this bit clears it.
- *
- * Values:
- * - 0 - Transfer in progress.
- * - 1 - Transfer completed.
- */
- //@{
- #define BP_ECSPI_STATREG_TC (7) //!< Bit position for ECSPI_STATREG_TC.
- #define BM_ECSPI_STATREG_TC (0x00000080) //!< Bit mask for ECSPI_STATREG_TC.
- //! @brief Get value of ECSPI_STATREG_TC from a register value.
- #define BG_ECSPI_STATREG_TC(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_STATREG_TC) >> BP_ECSPI_STATREG_TC)
- //! @brief Format value for bitfield ECSPI_STATREG_TC.
- #define BF_ECSPI_STATREG_TC(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_STATREG_TC) & BM_ECSPI_STATREG_TC)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the TC field to a new value.
- #define BW_ECSPI_STATREG_TC(x, v) (HW_ECSPI_STATREG_WR(x, (HW_ECSPI_STATREG_RD(x) & ~BM_ECSPI_STATREG_TC) | BF_ECSPI_STATREG_TC(v)))
- #endif
- //@}
- //-------------------------------------------------------------------------------------------
- // HW_ECSPI_PERIODREG - Sample Period Control Register
- //-------------------------------------------------------------------------------------------
- #ifndef __LANGUAGE_ASM__
- /*!
- * @brief HW_ECSPI_PERIODREG - Sample Period Control Register (RW)
- *
- * Reset value: 0x00000000
- *
- * The Sample Period Control Register (ECSPI_PERIODREG) provides software a way to insert delays
- * (wait states) between consecutive SPI transfers. Control bits in this register select the clock
- * source for the sample period counter and the delay count indicating the number of wait states to
- * be inserted between data transfers. The delay counts apply only when the current channel is
- * operating in Master mode (ECSPI_CONREG[CHANNEL MODE] = 1).ECSPI_PERIODREG also contains the CSD
- * CTRL field used to insert a delay between the Chip Select's active edge and the first SPI Clock
- * edge.
- */
- typedef union _hw_ecspi_periodreg
- {
- reg32_t U;
- struct _hw_ecspi_periodreg_bitfields
- {
- unsigned SAMPLE_PERIOD : 15; //!< [14:0] Sample Period Control.
- unsigned CSRC : 1; //!< [15] Clock Source Control.
- unsigned CSD_CTL : 6; //!< [21:16] Chip Select Delay Control bits.
- unsigned RESERVED0 : 10; //!< [31:22] Reserved
- } B;
- } hw_ecspi_periodreg_t;
- #endif
- /*!
- * @name Constants and macros for entire ECSPI_PERIODREG register
- */
- //@{
- #define HW_ECSPI_PERIODREG_ADDR(x) (REGS_ECSPI_BASE(x) + 0x1c)
- #ifndef __LANGUAGE_ASM__
- #define HW_ECSPI_PERIODREG(x) (*(volatile hw_ecspi_periodreg_t *) HW_ECSPI_PERIODREG_ADDR(x))
- #define HW_ECSPI_PERIODREG_RD(x) (HW_ECSPI_PERIODREG(x).U)
- #define HW_ECSPI_PERIODREG_WR(x, v) (HW_ECSPI_PERIODREG(x).U = (v))
- #define HW_ECSPI_PERIODREG_SET(x, v) (HW_ECSPI_PERIODREG_WR(x, HW_ECSPI_PERIODREG_RD(x) | (v)))
- #define HW_ECSPI_PERIODREG_CLR(x, v) (HW_ECSPI_PERIODREG_WR(x, HW_ECSPI_PERIODREG_RD(x) & ~(v)))
- #define HW_ECSPI_PERIODREG_TOG(x, v) (HW_ECSPI_PERIODREG_WR(x, HW_ECSPI_PERIODREG_RD(x) ^ (v)))
- #endif
- //@}
- /*
- * constants & macros for individual ECSPI_PERIODREG bitfields
- */
- /*! @name Register ECSPI_PERIODREG, field SAMPLE_PERIOD[14:0] (RW)
- *
- * Sample Period Control. These bits control the number of wait states to be inserted in data
- * transfers. During the idle clocks, the state of the SS output will operate according to the
- * SS_CTL control field in the ECSPI_CONREG register.
- *
- * Values:
- * - 0x0000 - 0 wait states inserted
- * - ... - ...
- * - 0x0001 - 1 wait state inserted
- * - 0x7FFE - 32766 wait states inserted
- * - 0x7FFF - 32767 wait states inserted
- */
- //@{
- #define BP_ECSPI_PERIODREG_SAMPLE_PERIOD (0) //!< Bit position for ECSPI_PERIODREG_SAMPLE_PERIOD.
- #define BM_ECSPI_PERIODREG_SAMPLE_PERIOD (0x00007fff) //!< Bit mask for ECSPI_PERIODREG_SAMPLE_PERIOD.
- //! @brief Get value of ECSPI_PERIODREG_SAMPLE_PERIOD from a register value.
- #define BG_ECSPI_PERIODREG_SAMPLE_PERIOD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_PERIODREG_SAMPLE_PERIOD) >> BP_ECSPI_PERIODREG_SAMPLE_PERIOD)
- //! @brief Format value for bitfield ECSPI_PERIODREG_SAMPLE_PERIOD.
- #define BF_ECSPI_PERIODREG_SAMPLE_PERIOD(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_PERIODREG_SAMPLE_PERIOD) & BM_ECSPI_PERIODREG_SAMPLE_PERIOD)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the SAMPLE_PERIOD field to a new value.
- #define BW_ECSPI_PERIODREG_SAMPLE_PERIOD(x, v) (HW_ECSPI_PERIODREG_WR(x, (HW_ECSPI_PERIODREG_RD(x) & ~BM_ECSPI_PERIODREG_SAMPLE_PERIOD) | BF_ECSPI_PERIODREG_SAMPLE_PERIOD(v)))
- #endif
- //@}
- /*! @name Register ECSPI_PERIODREG, field CSRC[15] (RW)
- *
- * Clock Source Control. This bit selects the clock source for the sample period counter.
- *
- * Values:
- * - 0 - SPI Clock (SCLK)
- * - 1 - Low-Frequency Reference Clock (32.768 KHz)
- */
- //@{
- #define BP_ECSPI_PERIODREG_CSRC (15) //!< Bit position for ECSPI_PERIODREG_CSRC.
- #define BM_ECSPI_PERIODREG_CSRC (0x00008000) //!< Bit mask for ECSPI_PERIODREG_CSRC.
- //! @brief Get value of ECSPI_PERIODREG_CSRC from a register value.
- #define BG_ECSPI_PERIODREG_CSRC(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_PERIODREG_CSRC) >> BP_ECSPI_PERIODREG_CSRC)
- //! @brief Format value for bitfield ECSPI_PERIODREG_CSRC.
- #define BF_ECSPI_PERIODREG_CSRC(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_PERIODREG_CSRC) & BM_ECSPI_PERIODREG_CSRC)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the CSRC field to a new value.
- #define BW_ECSPI_PERIODREG_CSRC(x, v) (HW_ECSPI_PERIODREG_WR(x, (HW_ECSPI_PERIODREG_RD(x) & ~BM_ECSPI_PERIODREG_CSRC) | BF_ECSPI_PERIODREG_CSRC(v)))
- #endif
- //@}
- /*! @name Register ECSPI_PERIODREG, field CSD_CTL[21:16] (RW)
- *
- * Chip Select Delay Control bits. This field defines how many SPI clocks will be inserted between
- * the chip select's active edge and the first SPI clock edge. The range is from 0 to 63.
- */
- //@{
- #define BP_ECSPI_PERIODREG_CSD_CTL (16) //!< Bit position for ECSPI_PERIODREG_CSD_CTL.
- #define BM_ECSPI_PERIODREG_CSD_CTL (0x003f0000) //!< Bit mask for ECSPI_PERIODREG_CSD_CTL.
- //! @brief Get value of ECSPI_PERIODREG_CSD_CTL from a register value.
- #define BG_ECSPI_PERIODREG_CSD_CTL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_PERIODREG_CSD_CTL) >> BP_ECSPI_PERIODREG_CSD_CTL)
- //! @brief Format value for bitfield ECSPI_PERIODREG_CSD_CTL.
- #define BF_ECSPI_PERIODREG_CSD_CTL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_PERIODREG_CSD_CTL) & BM_ECSPI_PERIODREG_CSD_CTL)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the CSD_CTL field to a new value.
- #define BW_ECSPI_PERIODREG_CSD_CTL(x, v) (HW_ECSPI_PERIODREG_WR(x, (HW_ECSPI_PERIODREG_RD(x) & ~BM_ECSPI_PERIODREG_CSD_CTL) | BF_ECSPI_PERIODREG_CSD_CTL(v)))
- #endif
- //@}
- //-------------------------------------------------------------------------------------------
- // HW_ECSPI_TESTREG - Test Control Register
- //-------------------------------------------------------------------------------------------
- #ifndef __LANGUAGE_ASM__
- /*!
- * @brief HW_ECSPI_TESTREG - Test Control Register (RW)
- *
- * Reset value: 0x00000000
- *
- * The Test Control Register (ECSPI_TESTREG) provides software a mechanism to internally connect the
- * receive and transmit devices of the ECSPI , and monitor the contents of the receive and transmit
- * FIFOs.
- */
- typedef union _hw_ecspi_testreg
- {
- reg32_t U;
- struct _hw_ecspi_testreg_bitfields
- {
- unsigned TXCNT : 7; //!< [6:0] TXFIFO Counter.
- unsigned RESERVED0 : 1; //!< [7] Reserved
- unsigned RXCNT : 7; //!< [14:8] RXFIFO Counter.
- unsigned RESERVED1 : 16; //!< [30:15] Reserved.
- unsigned LBC : 1; //!< [31] Loop Back Control.
- } B;
- } hw_ecspi_testreg_t;
- #endif
- /*!
- * @name Constants and macros for entire ECSPI_TESTREG register
- */
- //@{
- #define HW_ECSPI_TESTREG_ADDR(x) (REGS_ECSPI_BASE(x) + 0x20)
- #ifndef __LANGUAGE_ASM__
- #define HW_ECSPI_TESTREG(x) (*(volatile hw_ecspi_testreg_t *) HW_ECSPI_TESTREG_ADDR(x))
- #define HW_ECSPI_TESTREG_RD(x) (HW_ECSPI_TESTREG(x).U)
- #define HW_ECSPI_TESTREG_WR(x, v) (HW_ECSPI_TESTREG(x).U = (v))
- #define HW_ECSPI_TESTREG_SET(x, v) (HW_ECSPI_TESTREG_WR(x, HW_ECSPI_TESTREG_RD(x) | (v)))
- #define HW_ECSPI_TESTREG_CLR(x, v) (HW_ECSPI_TESTREG_WR(x, HW_ECSPI_TESTREG_RD(x) & ~(v)))
- #define HW_ECSPI_TESTREG_TOG(x, v) (HW_ECSPI_TESTREG_WR(x, HW_ECSPI_TESTREG_RD(x) ^ (v)))
- #endif
- //@}
- /*
- * constants & macros for individual ECSPI_TESTREG bitfields
- */
- /*! @name Register ECSPI_TESTREG, field TXCNT[6:0] (RW)
- *
- * TXFIFO Counter. This field indicates the number of words in the TXFIFO.
- */
- //@{
- #define BP_ECSPI_TESTREG_TXCNT (0) //!< Bit position for ECSPI_TESTREG_TXCNT.
- #define BM_ECSPI_TESTREG_TXCNT (0x0000007f) //!< Bit mask for ECSPI_TESTREG_TXCNT.
- //! @brief Get value of ECSPI_TESTREG_TXCNT from a register value.
- #define BG_ECSPI_TESTREG_TXCNT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_TESTREG_TXCNT) >> BP_ECSPI_TESTREG_TXCNT)
- //! @brief Format value for bitfield ECSPI_TESTREG_TXCNT.
- #define BF_ECSPI_TESTREG_TXCNT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_TESTREG_TXCNT) & BM_ECSPI_TESTREG_TXCNT)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the TXCNT field to a new value.
- #define BW_ECSPI_TESTREG_TXCNT(x, v) (HW_ECSPI_TESTREG_WR(x, (HW_ECSPI_TESTREG_RD(x) & ~BM_ECSPI_TESTREG_TXCNT) | BF_ECSPI_TESTREG_TXCNT(v)))
- #endif
- //@}
- /*! @name Register ECSPI_TESTREG, field RXCNT[14:8] (RW)
- *
- * RXFIFO Counter. This field indicates the number of words in the RXFIFO.
- */
- //@{
- #define BP_ECSPI_TESTREG_RXCNT (8) //!< Bit position for ECSPI_TESTREG_RXCNT.
- #define BM_ECSPI_TESTREG_RXCNT (0x00007f00) //!< Bit mask for ECSPI_TESTREG_RXCNT.
- //! @brief Get value of ECSPI_TESTREG_RXCNT from a register value.
- #define BG_ECSPI_TESTREG_RXCNT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_TESTREG_RXCNT) >> BP_ECSPI_TESTREG_RXCNT)
- //! @brief Format value for bitfield ECSPI_TESTREG_RXCNT.
- #define BF_ECSPI_TESTREG_RXCNT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_TESTREG_RXCNT) & BM_ECSPI_TESTREG_RXCNT)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the RXCNT field to a new value.
- #define BW_ECSPI_TESTREG_RXCNT(x, v) (HW_ECSPI_TESTREG_WR(x, (HW_ECSPI_TESTREG_RD(x) & ~BM_ECSPI_TESTREG_RXCNT) | BF_ECSPI_TESTREG_RXCNT(v)))
- #endif
- //@}
- /*! @name Register ECSPI_TESTREG, field LBC[31] (RW)
- *
- * Loop Back Control. This bit is used in Master mode only. When this bit is set, the ECSPI connects
- * the transmitter and receiver sections internally, and the data shifted out from the most-
- * significant bit of the shift register is looped back into the least-significant bit of the Shift
- * register. In this way, a self-test of the complete transmit/receive path can be made. The output
- * pins are not affected, and the input pins are ignored.
- *
- * Values:
- * - 0 - Not connected.
- * - 1 - Transmitter and receiver sections internally connected for Loopback.
- */
- //@{
- #define BP_ECSPI_TESTREG_LBC (31) //!< Bit position for ECSPI_TESTREG_LBC.
- #define BM_ECSPI_TESTREG_LBC (0x80000000) //!< Bit mask for ECSPI_TESTREG_LBC.
- //! @brief Get value of ECSPI_TESTREG_LBC from a register value.
- #define BG_ECSPI_TESTREG_LBC(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_TESTREG_LBC) >> BP_ECSPI_TESTREG_LBC)
- //! @brief Format value for bitfield ECSPI_TESTREG_LBC.
- #define BF_ECSPI_TESTREG_LBC(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_TESTREG_LBC) & BM_ECSPI_TESTREG_LBC)
- #ifndef __LANGUAGE_ASM__
- //! @brief Set the LBC field to a new value.
- #define BW_ECSPI_TESTREG_LBC(x, v) (HW_ECSPI_TESTREG_WR(x, (HW_ECSPI_TESTREG_RD(x) & ~BM_ECSPI_TESTREG_LBC) | BF_ECSPI_TESTREG_LBC(v)))
- #endif
- //@}
- //-------------------------------------------------------------------------------------------
- // HW_ECSPI_MSGDATA - Message Data Register
- //-------------------------------------------------------------------------------------------
- #ifndef __LANGUAGE_ASM__
- /*!
- * @brief HW_ECSPI_MSGDATA - Message Data Register (WO)
- *
- * Reset value: 0x00000000
- *
- * The Message Data Register (ECSPI_MSGDATA) forms the top word of the 16 x 32 MSG Data FIFO. Only
- * word-size accesses are allowed for this register. Reads to this register return zero, and writes
- * to this register store data in the MSG Data FIFO.
- */
- typedef union _hw_ecspi_msgdata
- {
- reg32_t U;
- struct _hw_ecspi_msgdata_bitfields
- {
- unsigned ECSPI_MSGDATA : 32; //!< [31:0] ECSPI_MSGDATA holds the top word of MSG Data FIFO.
- } B;
- } hw_ecspi_msgdata_t;
- #endif
- /*!
- * @name Constants and macros for entire ECSPI_MSGDATA register
- */
- //@{
- #define HW_ECSPI_MSGDATA_ADDR(x) (REGS_ECSPI_BASE(x) + 0x40)
- #ifndef __LANGUAGE_ASM__
- #define HW_ECSPI_MSGDATA(x) (*(volatile hw_ecspi_msgdata_t *) HW_ECSPI_MSGDATA_ADDR(x))
- #define HW_ECSPI_MSGDATA_WR(x, v) (HW_ECSPI_MSGDATA(x).U = (v))
- #endif
- //@}
- /*
- * constants & macros for individual ECSPI_MSGDATA bitfields
- */
- /*! @name Register ECSPI_MSGDATA, field ECSPI_MSGDATA[31:0] (WO)
- *
- * ECSPI_MSGDATA holds the top word of MSG Data FIFO. The MSG Data FIFO is advanced for each write
- * of this register. The data read is zero. The data written to this register is stored in the MSG
- * Data FIFO.
- */
- //@{
- #define BP_ECSPI_MSGDATA_ECSPI_MSGDATA (0) //!< Bit position for ECSPI_MSGDATA_ECSPI_MSGDATA.
- #define BM_ECSPI_MSGDATA_ECSPI_MSGDATA (0xffffffff) //!< Bit mask for ECSPI_MSGDATA_ECSPI_MSGDATA.
- //! @brief Get value of ECSPI_MSGDATA_ECSPI_MSGDATA from a register value.
- #define BG_ECSPI_MSGDATA_ECSPI_MSGDATA(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_ECSPI_MSGDATA_ECSPI_MSGDATA) >> BP_ECSPI_MSGDATA_ECSPI_MSGDATA)
- //! @brief Format value for bitfield ECSPI_MSGDATA_ECSPI_MSGDATA.
- #define BF_ECSPI_MSGDATA_ECSPI_MSGDATA(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_ECSPI_MSGDATA_ECSPI_MSGDATA) & BM_ECSPI_MSGDATA_ECSPI_MSGDATA)
- //@}
- //-------------------------------------------------------------------------------------------
- // hw_ecspi_t - module struct
- //-------------------------------------------------------------------------------------------
- /*!
- * @brief All ECSPI module registers.
- */
- #ifndef __LANGUAGE_ASM__
- #pragma pack(1)
- typedef struct _hw_ecspi
- {
- volatile hw_ecspi_rxdata_t RXDATA; //!< Receive Data Register
- volatile hw_ecspi_txdata_t TXDATA; //!< Transmit Data Register
- volatile hw_ecspi_conreg_t CONREG; //!< Control Register
- volatile hw_ecspi_configreg_t CONFIGREG; //!< Config Register
- volatile hw_ecspi_intreg_t INTREG; //!< Interrupt Control Register
- volatile hw_ecspi_dmareg_t DMAREG; //!< DMA Control Register
- volatile hw_ecspi_statreg_t STATREG; //!< Status Register
- volatile hw_ecspi_periodreg_t PERIODREG; //!< Sample Period Control Register
- volatile hw_ecspi_testreg_t TESTREG; //!< Test Control Register
- reg32_t _reserved0[7];
- volatile hw_ecspi_msgdata_t MSGDATA; //!< Message Data Register
- } hw_ecspi_t;
- #pragma pack()
- //! @brief Macro to access all ECSPI registers.
- //! @param x ECSPI instance number.
- //! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct,
- //! use the '&' operator, like <code>&HW_ECSPI(0)</code>.
- #define HW_ECSPI(x) (*(hw_ecspi_t *) REGS_ECSPI_BASE(x))
- #endif
- #endif // __HW_ECSPI_REGISTERS_H__
- // v18/121106/1.2.2
- // EOF
|