4123 lines
180 KiB
C
4123 lines
180 KiB
C
/*
|
|
* 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_SSI_REGISTERS_H__
|
|
#define __HW_SSI_REGISTERS_H__
|
|
|
|
#include "regs.h"
|
|
|
|
/*
|
|
* i.MX6DQ SSI
|
|
*
|
|
* SSI
|
|
*
|
|
* Registers defined in this header file:
|
|
* - HW_SSI_STXn - SSI Transmit Data Register n
|
|
* - HW_SSI_SRXn - SSI Receive Data Register n
|
|
* - HW_SSI_SCR - SSI Control Register
|
|
* - HW_SSI_SISR - SSI Interrupt Status Register
|
|
* - HW_SSI_SIER - SSI Interrupt Enable Register
|
|
* - HW_SSI_STCR - SSI Transmit Configuration Register
|
|
* - HW_SSI_SRCR - SSI Receive Configuration Register
|
|
* - HW_SSI_STCCR - SSI Transmit Clock Control Register
|
|
* - HW_SSI_SRCCR - SSI Receive Clock Control Register
|
|
* - HW_SSI_SFCSR - SSI FIFO Control/Status Register
|
|
* - HW_SSI_SACNT - SSI AC97 Control Register
|
|
* - HW_SSI_SACADD - SSI AC97 Command Address Register
|
|
* - HW_SSI_SACDAT - SSI AC97 Command Data Register
|
|
* - HW_SSI_SATAG - SSI AC97 Tag Register
|
|
* - HW_SSI_STMSK - SSI Transmit Time Slot Mask Register
|
|
* - HW_SSI_SRMSK - SSI Receive Time Slot Mask Register
|
|
* - HW_SSI_SACCST - SSI AC97 Channel Status Register
|
|
* - HW_SSI_SACCEN - SSI AC97 Channel Enable Register
|
|
* - HW_SSI_SACCDIS - SSI AC97 Channel Disable Register
|
|
*
|
|
* - hw_ssi_t - Struct containing all module registers.
|
|
*/
|
|
|
|
//! @name Module base addresses
|
|
//@{
|
|
#ifndef REGS_SSI_BASE
|
|
#define HW_SSI_INSTANCE_COUNT (3) //!< Number of instances of the SSI module.
|
|
#define HW_SSI1 (1) //!< Instance number for SSI1.
|
|
#define HW_SSI2 (2) //!< Instance number for SSI2.
|
|
#define HW_SSI3 (3) //!< Instance number for SSI3.
|
|
#define REGS_SSI1_BASE (0x02028000) //!< Base address for SSI instance number 1.
|
|
#define REGS_SSI2_BASE (0x0202c000) //!< Base address for SSI instance number 2.
|
|
#define REGS_SSI3_BASE (0x02030000) //!< Base address for SSI instance number 3.
|
|
|
|
//! @brief Get the base address of SSI by instance number.
|
|
//! @param x SSI instance number, from 1 through 3.
|
|
#define REGS_SSI_BASE(x) ( (x) == HW_SSI1 ? REGS_SSI1_BASE : (x) == HW_SSI2 ? REGS_SSI2_BASE : (x) == HW_SSI3 ? REGS_SSI3_BASE : 0x00d00000)
|
|
|
|
//! @brief Get the instance number given a base address.
|
|
//! @param b Base address for an instance of SSI.
|
|
#define REGS_SSI_INSTANCE(b) ( (b) == REGS_SSI1_BASE ? HW_SSI1 : (b) == REGS_SSI2_BASE ? HW_SSI2 : (b) == REGS_SSI3_BASE ? HW_SSI3 : 0)
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_STXn - SSI Transmit Data Register n
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_STXn - SSI Transmit Data Register n (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* Enable SSI (SSIEN=1) before writing to SSI Transmit Data Registers.
|
|
*/
|
|
typedef union _hw_ssi_stxn
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_stxn_bitfields
|
|
{
|
|
unsigned STXN : 32; //!< [31:0] SSI Transmit Data.
|
|
} B;
|
|
} hw_ssi_stxn_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_STXn register
|
|
*/
|
|
//@{
|
|
//! @brief Number of instances of the SSI_STXn register.
|
|
#define HW_SSI_STXn_COUNT (2)
|
|
|
|
#define HW_SSI_STXn_ADDR(n, x) (REGS_SSI_BASE(x) + 0x0 + (0x4 * (n)))
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_STXn(x, n) (*(volatile hw_ssi_stxn_t *) HW_SSI_STXn_ADDR(n, x))
|
|
#define HW_SSI_STXn_RD(x, n) (HW_SSI_STXn(x, n).U)
|
|
#define HW_SSI_STXn_WR(x, n, v) (HW_SSI_STXn(x, n).U = (v))
|
|
#define HW_SSI_STXn_SET(x, n, v) (HW_SSI_STXn_WR(x, n, HW_SSI_STXn_RD(x, n) | (v)))
|
|
#define HW_SSI_STXn_CLR(x, n, v) (HW_SSI_STXn_WR(x, n, HW_SSI_STXn_RD(x, n) & ~(v)))
|
|
#define HW_SSI_STXn_TOG(x, n, v) (HW_SSI_STXn_WR(x, n, HW_SSI_STXn_RD(x, n) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_STXn bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_STXn, field STXN[31:0] (RW)
|
|
*
|
|
* SSI Transmit Data. These bits store the data to be transmitted by the These are implemented as
|
|
* the first word of their respective Tx FIFOs. Data written to these registers is transferred to
|
|
* the Transmit Shift Register (TXSR), when shifting of the previous data is complete. If both FIFOs
|
|
* are in use, data is alternately transferred from STX0 and STX1, to TXSR. Multiple writes to the
|
|
* STX registers will not result in the previous data being over-written by the subsequent data.
|
|
* STX1 can only be used in Two-Channel mode of operation. Protection from over-writing is present
|
|
* irrespective of whether the transmitter is enabled or not. Example 1: If Tx FIFO0 is in use and
|
|
* user writes Data1... Data16 to STX0, Data16 will not over-write Data1. Data1... Data15 are stored
|
|
* in the FIFO while Data16 is discarded. Example 2: If Tx FIFO0 is not in use and user writes
|
|
* Data1, Data2 to STX0, then Data2 will not over-write Data1 and will be discarded.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STXn_STXN (0) //!< Bit position for SSI_STXn_STXN.
|
|
#define BM_SSI_STXn_STXN (0xffffffff) //!< Bit mask for SSI_STXn_STXN.
|
|
|
|
//! @brief Get value of SSI_STXn_STXN from a register value.
|
|
#define BG_SSI_STXn_STXN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STXn_STXN) >> BP_SSI_STXn_STXN)
|
|
|
|
//! @brief Format value for bitfield SSI_STXn_STXN.
|
|
#define BF_SSI_STXn_STXN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STXn_STXN) & BM_SSI_STXn_STXN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the STXN field to a new value.
|
|
#define BW_SSI_STXn_STXN(x, n, v) (HW_SSI_STXn_WR(x, n, (HW_SSI_STXn_RD(x, n) & ~BM_SSI_STXn_STXN) | BF_SSI_STXn_STXN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_SRXn - SSI Receive Data Register n
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_SRXn - SSI Receive Data Register n (RO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*/
|
|
typedef union _hw_ssi_srxn
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_srxn_bitfields
|
|
{
|
|
unsigned SRXN : 32; //!< [31:0] SSI Receive Data.
|
|
} B;
|
|
} hw_ssi_srxn_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_SRXn register
|
|
*/
|
|
//@{
|
|
//! @brief Number of instances of the SSI_SRXn register.
|
|
#define HW_SSI_SRXn_COUNT (2)
|
|
|
|
#define HW_SSI_SRXn_ADDR(n, x) (REGS_SSI_BASE(x) + 0x8 + (0x4 * (n)))
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_SRXn(x, n) (*(volatile hw_ssi_srxn_t *) HW_SSI_SRXn_ADDR(n, x))
|
|
#define HW_SSI_SRXn_RD(x, n) (HW_SSI_SRXn(x, n).U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_SRXn bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_SRXn, field SRXN[31:0] (RO)
|
|
*
|
|
* SSI Receive Data. These bits store the data received by the These are implemented as the first
|
|
* word of their respective Rx FIFOs. These bits receive data from the RXSR depending on the mode of
|
|
* operation. In case both FIFOs are in use, data is transferred to each data register alternately.
|
|
* SRX1 can only be used in Two-Channel mode of operation.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRXn_SRXN (0) //!< Bit position for SSI_SRXn_SRXN.
|
|
#define BM_SSI_SRXn_SRXN (0xffffffff) //!< Bit mask for SSI_SRXn_SRXN.
|
|
|
|
//! @brief Get value of SSI_SRXn_SRXN from a register value.
|
|
#define BG_SSI_SRXn_SRXN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRXn_SRXN) >> BP_SSI_SRXn_SRXN)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_SCR - SSI Control Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_SCR - SSI Control Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* The SSI Control Register (SSI_SCR) sets up the SSI reset is controlled by bit 0 in the SSI_SCR.
|
|
* SSI operating modes are also selected in this register (except AC97 mode which is selected in the
|
|
* SSI_SACNT register).
|
|
*/
|
|
typedef union _hw_ssi_scr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_scr_bitfields
|
|
{
|
|
unsigned SSIEN : 1; //!< [0] SSIEN - SSI Enable
|
|
unsigned TE : 1; //!< [1] Transmit Enable.
|
|
unsigned RE : 1; //!< [2] Receive Enable.
|
|
unsigned NET : 1; //!< [3] Network Mode.
|
|
unsigned SYN : 1; //!< [4] Synchronous Mode.
|
|
unsigned I2S_MODE : 2; //!< [6:5] I2S Mode Select.
|
|
unsigned SYS_CLK_EN : 1; //!< [7] Network Clock (Oversampling Clock) Enable.
|
|
unsigned TCH_EN : 1; //!< [8] Two-Channel Operation Enable.
|
|
unsigned CLK_IST : 1; //!< [9] Clock Idle State.
|
|
unsigned TFR_CLK_DIS : 1; //!< [10] Transmit Frame Clock Disable.
|
|
unsigned RFR_CLK_DIS : 1; //!< [11] Receive Frame Clock Disable.
|
|
unsigned SYNC_TX_FS : 1; //!< [12] SYNC_FS_TX bit provides a safe window for TE to be visible to the internal circuit which is just after FS occurrence.
|
|
unsigned RESERVED0 : 19; //!< [31:13] Reserved
|
|
} B;
|
|
} hw_ssi_scr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_SCR register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_SCR_ADDR(x) (REGS_SSI_BASE(x) + 0x10)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_SCR(x) (*(volatile hw_ssi_scr_t *) HW_SSI_SCR_ADDR(x))
|
|
#define HW_SSI_SCR_RD(x) (HW_SSI_SCR(x).U)
|
|
#define HW_SSI_SCR_WR(x, v) (HW_SSI_SCR(x).U = (v))
|
|
#define HW_SSI_SCR_SET(x, v) (HW_SSI_SCR_WR(x, HW_SSI_SCR_RD(x) | (v)))
|
|
#define HW_SSI_SCR_CLR(x, v) (HW_SSI_SCR_WR(x, HW_SSI_SCR_RD(x) & ~(v)))
|
|
#define HW_SSI_SCR_TOG(x, v) (HW_SSI_SCR_WR(x, HW_SSI_SCR_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_SCR bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_SCR, field SSIEN[0] (RW)
|
|
*
|
|
* SSIEN - SSI Enable This bit is used to enable/disable the SSI. When disabled, all SSI status bits
|
|
* are preset to the same state produced by the power-on reset, all control bits are unaffected, the
|
|
* contents of Tx and Rx FIFOs are cleared. When SSI is disabled, all internal clocks are disabled
|
|
* (except register access clock).
|
|
*
|
|
* Values:
|
|
* - DISABLED = 0 - SSI is disabled.
|
|
* - ENABLED = 1 - SSI is enabled.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SCR_SSIEN (0) //!< Bit position for SSI_SCR_SSIEN.
|
|
#define BM_SSI_SCR_SSIEN (0x00000001) //!< Bit mask for SSI_SCR_SSIEN.
|
|
|
|
//! @brief Get value of SSI_SCR_SSIEN from a register value.
|
|
#define BG_SSI_SCR_SSIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SCR_SSIEN) >> BP_SSI_SCR_SSIEN)
|
|
|
|
//! @brief Format value for bitfield SSI_SCR_SSIEN.
|
|
#define BF_SSI_SCR_SSIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SCR_SSIEN) & BM_SSI_SCR_SSIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SSIEN field to a new value.
|
|
#define BW_SSI_SCR_SSIEN(x, v) (HW_SSI_SCR_WR(x, (HW_SSI_SCR_RD(x) & ~BM_SSI_SCR_SSIEN) | BF_SSI_SCR_SSIEN(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SCR_SSIEN_V(v) BF_SSI_SCR_SSIEN(BV_SSI_SCR_SSIEN__##v)
|
|
|
|
#define BV_SSI_SCR_SSIEN__DISABLED (0x0) //!< SSI is disabled.
|
|
#define BV_SSI_SCR_SSIEN__ENABLED (0x1) //!< SSI is enabled.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SCR, field TE[1] (RW)
|
|
*
|
|
* Transmit Enable. This control bit enables the transmit section of the SSI. It enables the
|
|
* transfer of the contents of the STX registers to the TXSR and also enables the internal transmit
|
|
* clock. The transmit section is enabled when this bit is set and a frame boundary is detected.
|
|
* When this bit is cleared, the transmitter continues to send data until the end of the current
|
|
* frame and then stops. Data can be written to the STX registers with the TE bit cleared (the
|
|
* corresponding TDE bit will be cleared). If the TE bit is cleared and then set again before the
|
|
* second to last bit of the last time slot in the current frame, data transmission continues
|
|
* without interruption. The normal transmit enable sequence is to write data to the STX register(s)
|
|
* and then set the TE bit. The normal disable sequence is to clear the TE and TIE bits after the
|
|
* TDE bit is set. In gated clock mode, clearing the TE bit results in the clock stopping after the
|
|
* data currently in TXSR has shifted out. When the TE bit is set, the clock starts immediately (for
|
|
* internal gated clock mode). TE should not be toggled in the same frame. After enabling/disabling
|
|
* transmission, SSI expects 4 setup clock cycles before arrival of frame-sync for frame-sync to be
|
|
* accepted/rejected by In case of fewer clock cycles, there is high probability of the frame-sync
|
|
* to get missed. Note: If continuos clock is not provided, SSI expects 6 clock cycles before
|
|
* arrival of frame-sync for frame-sync to be accepted by
|
|
*
|
|
* Values:
|
|
* - DISABLED = 0 - Transmit section disabled.
|
|
* - ENABLED = 1 - Transmit section enabled.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SCR_TE (1) //!< Bit position for SSI_SCR_TE.
|
|
#define BM_SSI_SCR_TE (0x00000002) //!< Bit mask for SSI_SCR_TE.
|
|
|
|
//! @brief Get value of SSI_SCR_TE from a register value.
|
|
#define BG_SSI_SCR_TE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SCR_TE) >> BP_SSI_SCR_TE)
|
|
|
|
//! @brief Format value for bitfield SSI_SCR_TE.
|
|
#define BF_SSI_SCR_TE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SCR_TE) & BM_SSI_SCR_TE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TE field to a new value.
|
|
#define BW_SSI_SCR_TE(x, v) (HW_SSI_SCR_WR(x, (HW_SSI_SCR_RD(x) & ~BM_SSI_SCR_TE) | BF_SSI_SCR_TE(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SCR_TE_V(v) BF_SSI_SCR_TE(BV_SSI_SCR_TE__##v)
|
|
|
|
#define BV_SSI_SCR_TE__DISABLED (0x0) //!< Transmit section disabled.
|
|
#define BV_SSI_SCR_TE__ENABLED (0x1) //!< Transmit section enabled.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SCR, field RE[2] (RW)
|
|
*
|
|
* Receive Enable. This control bit enables the receive section of the SSI. When this bit is
|
|
* enabled, data reception starts with the arrival of the next frame sync. If data is being received
|
|
* when this bit is cleared, data reception continues until the end of the current frame and then
|
|
* stops. If this bit is set again before the second to last bit of the last time slot in the
|
|
* current frame, then reception continues without interruption. RE should not be toggled in the
|
|
* same frame.
|
|
*
|
|
* Values:
|
|
* - DISABLED = 0 - Receive section disabled.
|
|
* - ENABLED = 1 - Receive section enabled.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SCR_RE (2) //!< Bit position for SSI_SCR_RE.
|
|
#define BM_SSI_SCR_RE (0x00000004) //!< Bit mask for SSI_SCR_RE.
|
|
|
|
//! @brief Get value of SSI_SCR_RE from a register value.
|
|
#define BG_SSI_SCR_RE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SCR_RE) >> BP_SSI_SCR_RE)
|
|
|
|
//! @brief Format value for bitfield SSI_SCR_RE.
|
|
#define BF_SSI_SCR_RE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SCR_RE) & BM_SSI_SCR_RE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RE field to a new value.
|
|
#define BW_SSI_SCR_RE(x, v) (HW_SSI_SCR_WR(x, (HW_SSI_SCR_RD(x) & ~BM_SSI_SCR_RE) | BF_SSI_SCR_RE(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SCR_RE_V(v) BF_SSI_SCR_RE(BV_SSI_SCR_RE__##v)
|
|
|
|
#define BV_SSI_SCR_RE__DISABLED (0x0) //!< Receive section disabled.
|
|
#define BV_SSI_SCR_RE__ENABLED (0x1) //!< Receive section enabled.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SCR, field NET[3] (RW)
|
|
*
|
|
* Network Mode. This bit controls whether SSI is in network mode or not.
|
|
*
|
|
* Values:
|
|
* - DISABLED = 0 - Network mode not selected.
|
|
* - ENABLED = 1 - Network mode selected.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SCR_NET (3) //!< Bit position for SSI_SCR_NET.
|
|
#define BM_SSI_SCR_NET (0x00000008) //!< Bit mask for SSI_SCR_NET.
|
|
|
|
//! @brief Get value of SSI_SCR_NET from a register value.
|
|
#define BG_SSI_SCR_NET(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SCR_NET) >> BP_SSI_SCR_NET)
|
|
|
|
//! @brief Format value for bitfield SSI_SCR_NET.
|
|
#define BF_SSI_SCR_NET(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SCR_NET) & BM_SSI_SCR_NET)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the NET field to a new value.
|
|
#define BW_SSI_SCR_NET(x, v) (HW_SSI_SCR_WR(x, (HW_SSI_SCR_RD(x) & ~BM_SSI_SCR_NET) | BF_SSI_SCR_NET(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SCR_NET_V(v) BF_SSI_SCR_NET(BV_SSI_SCR_NET__##v)
|
|
|
|
#define BV_SSI_SCR_NET__DISABLED (0x0) //!< Network mode not selected.
|
|
#define BV_SSI_SCR_NET__ENABLED (0x1) //!< Network mode selected.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SCR, field SYN[4] (RW)
|
|
*
|
|
* Synchronous Mode. This bit controls whether SSI is in synchronous mode or not. In synchronous
|
|
* mode, the transmit and receive sections of SSI share a common clock port (STCK) and frame sync
|
|
* port (STFS).
|
|
*
|
|
* Values:
|
|
* - ASYNC_MODE = 0 - Asynchronous mode selected.
|
|
* - SYNC_MODE = 1 - Synchronous mode selected.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SCR_SYN (4) //!< Bit position for SSI_SCR_SYN.
|
|
#define BM_SSI_SCR_SYN (0x00000010) //!< Bit mask for SSI_SCR_SYN.
|
|
|
|
//! @brief Get value of SSI_SCR_SYN from a register value.
|
|
#define BG_SSI_SCR_SYN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SCR_SYN) >> BP_SSI_SCR_SYN)
|
|
|
|
//! @brief Format value for bitfield SSI_SCR_SYN.
|
|
#define BF_SSI_SCR_SYN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SCR_SYN) & BM_SSI_SCR_SYN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SYN field to a new value.
|
|
#define BW_SSI_SCR_SYN(x, v) (HW_SSI_SCR_WR(x, (HW_SSI_SCR_RD(x) & ~BM_SSI_SCR_SYN) | BF_SSI_SCR_SYN(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SCR_SYN_V(v) BF_SSI_SCR_SYN(BV_SSI_SCR_SYN__##v)
|
|
|
|
#define BV_SSI_SCR_SYN__ASYNC_MODE (0x0) //!< Asynchronous mode selected.
|
|
#define BV_SSI_SCR_SYN__SYNC_MODE (0x1) //!< Synchronous mode selected.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SCR, field I2S_MODE[6:5] (RW)
|
|
*
|
|
* I2S Mode Select. These bits allow the SSI to operate in Normal, I2S Master or I2S Slave mode.
|
|
* Refer to for a detailed description of I2S Mode of operation. Refer to for details regarding
|
|
* settings.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SCR_I2S_MODE (5) //!< Bit position for SSI_SCR_I2S_MODE.
|
|
#define BM_SSI_SCR_I2S_MODE (0x00000060) //!< Bit mask for SSI_SCR_I2S_MODE.
|
|
|
|
//! @brief Get value of SSI_SCR_I2S_MODE from a register value.
|
|
#define BG_SSI_SCR_I2S_MODE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SCR_I2S_MODE) >> BP_SSI_SCR_I2S_MODE)
|
|
|
|
//! @brief Format value for bitfield SSI_SCR_I2S_MODE.
|
|
#define BF_SSI_SCR_I2S_MODE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SCR_I2S_MODE) & BM_SSI_SCR_I2S_MODE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the I2S_MODE field to a new value.
|
|
#define BW_SSI_SCR_I2S_MODE(x, v) (HW_SSI_SCR_WR(x, (HW_SSI_SCR_RD(x) & ~BM_SSI_SCR_I2S_MODE) | BF_SSI_SCR_I2S_MODE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SCR, field SYS_CLK_EN[7] (RW)
|
|
*
|
|
* Network Clock (Oversampling Clock) Enable. When set, this bit allows the SSI to output the
|
|
* network clock at the SRCK port, provided that synchronous mode, and transmit internal clock mode
|
|
* are set. The relationship between bit clock and network clock is determined by DIV2, PSR, and PM
|
|
* bits. This feature is especially useful in I2S Master mode to output network clock (oversampling
|
|
* clock) on SRCK port.
|
|
*
|
|
* Values:
|
|
* - NOT_OUTPUT = 0 - network clock not output on SRCK port.
|
|
* - OUTPUT = 1 - network clock output on SRCK port.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SCR_SYS_CLK_EN (7) //!< Bit position for SSI_SCR_SYS_CLK_EN.
|
|
#define BM_SSI_SCR_SYS_CLK_EN (0x00000080) //!< Bit mask for SSI_SCR_SYS_CLK_EN.
|
|
|
|
//! @brief Get value of SSI_SCR_SYS_CLK_EN from a register value.
|
|
#define BG_SSI_SCR_SYS_CLK_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SCR_SYS_CLK_EN) >> BP_SSI_SCR_SYS_CLK_EN)
|
|
|
|
//! @brief Format value for bitfield SSI_SCR_SYS_CLK_EN.
|
|
#define BF_SSI_SCR_SYS_CLK_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SCR_SYS_CLK_EN) & BM_SSI_SCR_SYS_CLK_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SYS_CLK_EN field to a new value.
|
|
#define BW_SSI_SCR_SYS_CLK_EN(x, v) (HW_SSI_SCR_WR(x, (HW_SSI_SCR_RD(x) & ~BM_SSI_SCR_SYS_CLK_EN) | BF_SSI_SCR_SYS_CLK_EN(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SCR_SYS_CLK_EN_V(v) BF_SSI_SCR_SYS_CLK_EN(BV_SSI_SCR_SYS_CLK_EN__##v)
|
|
|
|
#define BV_SSI_SCR_SYS_CLK_EN__NOT_OUTPUT (0x0) //!< network clock not output on SRCK port.
|
|
#define BV_SSI_SCR_SYS_CLK_EN__OUTPUT (0x1) //!< network clock output on SRCK port.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SCR, field TCH_EN[8] (RW)
|
|
*
|
|
* Two-Channel Operation Enable. This bit allows SSI to operate in the two-channel mode.In this mode
|
|
* while receiving, the RXSR transfers data to SRX0 and SRX1 alternately and while transmitting,
|
|
* data is alternately transferred from STX0 and STX1 to TXSR. For an even number of slots, Two-
|
|
* Channel Operation can be enabled to optimize usage of both FIFOs or disabled as in the case of
|
|
* odd number of active slots. This feature is especially useful in I2S mode, where data for Left
|
|
* Speaker can be placed in Tx-FIFO0 and for Right speaker in Tx-FIFO1.
|
|
*
|
|
* Values:
|
|
* - DISABLED = 0 - Two-channel mode disabled.
|
|
* - ENABLED = 1 - Two-channel mode enabled.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SCR_TCH_EN (8) //!< Bit position for SSI_SCR_TCH_EN.
|
|
#define BM_SSI_SCR_TCH_EN (0x00000100) //!< Bit mask for SSI_SCR_TCH_EN.
|
|
|
|
//! @brief Get value of SSI_SCR_TCH_EN from a register value.
|
|
#define BG_SSI_SCR_TCH_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SCR_TCH_EN) >> BP_SSI_SCR_TCH_EN)
|
|
|
|
//! @brief Format value for bitfield SSI_SCR_TCH_EN.
|
|
#define BF_SSI_SCR_TCH_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SCR_TCH_EN) & BM_SSI_SCR_TCH_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TCH_EN field to a new value.
|
|
#define BW_SSI_SCR_TCH_EN(x, v) (HW_SSI_SCR_WR(x, (HW_SSI_SCR_RD(x) & ~BM_SSI_SCR_TCH_EN) | BF_SSI_SCR_TCH_EN(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SCR_TCH_EN_V(v) BF_SSI_SCR_TCH_EN(BV_SSI_SCR_TCH_EN__##v)
|
|
|
|
#define BV_SSI_SCR_TCH_EN__DISABLED (0x0) //!< Two-channel mode disabled.
|
|
#define BV_SSI_SCR_TCH_EN__ENABLED (0x1) //!< Two-channel mode enabled.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SCR, field CLK_IST[9] (RW)
|
|
*
|
|
* Clock Idle State. This bit controls the idle state of the transmit clock port during SSI internal
|
|
* gated mode. Note: When Clock idle state is '1' the clock polarity should always be negedge
|
|
* triggered and when Clock idle = '0' the clock polarity should always be positive edge triggered.
|
|
*
|
|
* Values:
|
|
* - IDLE_0 = 0 - Clock idle state is '0'.
|
|
* - IDLE_1 = 1 - Clock idle state is '1'.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SCR_CLK_IST (9) //!< Bit position for SSI_SCR_CLK_IST.
|
|
#define BM_SSI_SCR_CLK_IST (0x00000200) //!< Bit mask for SSI_SCR_CLK_IST.
|
|
|
|
//! @brief Get value of SSI_SCR_CLK_IST from a register value.
|
|
#define BG_SSI_SCR_CLK_IST(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SCR_CLK_IST) >> BP_SSI_SCR_CLK_IST)
|
|
|
|
//! @brief Format value for bitfield SSI_SCR_CLK_IST.
|
|
#define BF_SSI_SCR_CLK_IST(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SCR_CLK_IST) & BM_SSI_SCR_CLK_IST)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CLK_IST field to a new value.
|
|
#define BW_SSI_SCR_CLK_IST(x, v) (HW_SSI_SCR_WR(x, (HW_SSI_SCR_RD(x) & ~BM_SSI_SCR_CLK_IST) | BF_SSI_SCR_CLK_IST(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SCR_CLK_IST_V(v) BF_SSI_SCR_CLK_IST(BV_SSI_SCR_CLK_IST__##v)
|
|
|
|
#define BV_SSI_SCR_CLK_IST__IDLE_0 (0x0) //!< Clock idle state is '0'.
|
|
#define BV_SSI_SCR_CLK_IST__IDLE_1 (0x1) //!< Clock idle state is '1'.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SCR, field TFR_CLK_DIS[10] (RW)
|
|
*
|
|
* Transmit Frame Clock Disable. This bit provide option to keep the Frame-sync and Clock enabled or
|
|
* disabled after current transmit frame, in which transmitter is disabled by clearing TE bit.
|
|
* Writing to this bit has effect only when SSI is enabled TE is disabled.
|
|
*
|
|
* Values:
|
|
* - CONTINUE = 0 - Continue Frame-sync/Clock generation after current frame during which TE is cleared. This may be
|
|
* required when Frame-sync and Clocks are required from SSI, even when no data is to be
|
|
* received.
|
|
* - STOP = 1 - Stop Frame-sync/Clock generation at next frame boundary. This will be effective also in case where
|
|
* transmitter is already disabled in current or previous frames.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SCR_TFR_CLK_DIS (10) //!< Bit position for SSI_SCR_TFR_CLK_DIS.
|
|
#define BM_SSI_SCR_TFR_CLK_DIS (0x00000400) //!< Bit mask for SSI_SCR_TFR_CLK_DIS.
|
|
|
|
//! @brief Get value of SSI_SCR_TFR_CLK_DIS from a register value.
|
|
#define BG_SSI_SCR_TFR_CLK_DIS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SCR_TFR_CLK_DIS) >> BP_SSI_SCR_TFR_CLK_DIS)
|
|
|
|
//! @brief Format value for bitfield SSI_SCR_TFR_CLK_DIS.
|
|
#define BF_SSI_SCR_TFR_CLK_DIS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SCR_TFR_CLK_DIS) & BM_SSI_SCR_TFR_CLK_DIS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TFR_CLK_DIS field to a new value.
|
|
#define BW_SSI_SCR_TFR_CLK_DIS(x, v) (HW_SSI_SCR_WR(x, (HW_SSI_SCR_RD(x) & ~BM_SSI_SCR_TFR_CLK_DIS) | BF_SSI_SCR_TFR_CLK_DIS(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SCR_TFR_CLK_DIS_V(v) BF_SSI_SCR_TFR_CLK_DIS(BV_SSI_SCR_TFR_CLK_DIS__##v)
|
|
|
|
#define BV_SSI_SCR_TFR_CLK_DIS__CONTINUE (0x0) //!< Continue Frame-sync/Clock generation after current frame during which TE is cleared. This may be required when Frame-sync and Clocks are required from SSI, even when no data is to be received.
|
|
#define BV_SSI_SCR_TFR_CLK_DIS__STOP (0x1) //!< Stop Frame-sync/Clock generation at next frame boundary. This will be effective also in case where transmitter is already disabled in current or previous frames.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SCR, field RFR_CLK_DIS[11] (RW)
|
|
*
|
|
* Receive Frame Clock Disable. This bit provides the option to keep the Frame-sync and Clock
|
|
* enabled or to disable them after the receive frame in which the receiver is disabled. Writing to
|
|
* this bit has effect only when RE is disabled.The receiver is disabled by clearing the RE bit.
|
|
*
|
|
* Values:
|
|
* - CONTINUE = 0 - Continue Frame-sync/Clock generation after current frame during which RE is cleared. This may be
|
|
* required when Frame-sync and Clocks are required from SSI, even when no data is to be
|
|
* received.
|
|
* - STOP = 1 - Stop Frame-sync/Clock generation at next frame boundary. This will be effective also in case where
|
|
* receiver is already disabled in current or previous frames.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SCR_RFR_CLK_DIS (11) //!< Bit position for SSI_SCR_RFR_CLK_DIS.
|
|
#define BM_SSI_SCR_RFR_CLK_DIS (0x00000800) //!< Bit mask for SSI_SCR_RFR_CLK_DIS.
|
|
|
|
//! @brief Get value of SSI_SCR_RFR_CLK_DIS from a register value.
|
|
#define BG_SSI_SCR_RFR_CLK_DIS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SCR_RFR_CLK_DIS) >> BP_SSI_SCR_RFR_CLK_DIS)
|
|
|
|
//! @brief Format value for bitfield SSI_SCR_RFR_CLK_DIS.
|
|
#define BF_SSI_SCR_RFR_CLK_DIS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SCR_RFR_CLK_DIS) & BM_SSI_SCR_RFR_CLK_DIS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RFR_CLK_DIS field to a new value.
|
|
#define BW_SSI_SCR_RFR_CLK_DIS(x, v) (HW_SSI_SCR_WR(x, (HW_SSI_SCR_RD(x) & ~BM_SSI_SCR_RFR_CLK_DIS) | BF_SSI_SCR_RFR_CLK_DIS(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SCR_RFR_CLK_DIS_V(v) BF_SSI_SCR_RFR_CLK_DIS(BV_SSI_SCR_RFR_CLK_DIS__##v)
|
|
|
|
#define BV_SSI_SCR_RFR_CLK_DIS__CONTINUE (0x0) //!< Continue Frame-sync/Clock generation after current frame during which RE is cleared. This may be required when Frame-sync and Clocks are required from SSI, even when no data is to be received.
|
|
#define BV_SSI_SCR_RFR_CLK_DIS__STOP (0x1) //!< Stop Frame-sync/Clock generation at next frame boundary. This will be effective also in case where receiver is already disabled in current or previous frames.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SCR, field SYNC_TX_FS[12] (RW)
|
|
*
|
|
* SYNC_FS_TX bit provides a safe window for TE to be visible to the internal circuit which is just
|
|
* after FS occurrence. When SYNC_TX_FS is set, TE(SCR[1]) gets latched on FS occurrence & latched
|
|
* TE is used to enable/disable SSI transmitter. TE needs setup of 2 bit-clock cycles before
|
|
* occurrence of FS. If TE is changed within 2 bit-clock cycles of FS occurrence, there is high
|
|
* probability that TE will be latched on next FS. Note: With TFR_CLK_DIS feature on, TE is used
|
|
* directly to enable transmitter in following cases (i) Sync mode & Rx disabled (ii) Async Mode.
|
|
* Latched-TE is used to disable the transmitter. This bit has no relevance in gated mode and AC97
|
|
* mode.
|
|
*
|
|
* Values:
|
|
* - TE_NOT_LATCHED = 0 - TE not latched with FS occurrence & used directly for transmitter enable/disable.
|
|
* - TE_LATCHED = 1 - TE latched with FS occurrence & latched-TE used for transmitter enable/disable.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SCR_SYNC_TX_FS (12) //!< Bit position for SSI_SCR_SYNC_TX_FS.
|
|
#define BM_SSI_SCR_SYNC_TX_FS (0x00001000) //!< Bit mask for SSI_SCR_SYNC_TX_FS.
|
|
|
|
//! @brief Get value of SSI_SCR_SYNC_TX_FS from a register value.
|
|
#define BG_SSI_SCR_SYNC_TX_FS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SCR_SYNC_TX_FS) >> BP_SSI_SCR_SYNC_TX_FS)
|
|
|
|
//! @brief Format value for bitfield SSI_SCR_SYNC_TX_FS.
|
|
#define BF_SSI_SCR_SYNC_TX_FS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SCR_SYNC_TX_FS) & BM_SSI_SCR_SYNC_TX_FS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SYNC_TX_FS field to a new value.
|
|
#define BW_SSI_SCR_SYNC_TX_FS(x, v) (HW_SSI_SCR_WR(x, (HW_SSI_SCR_RD(x) & ~BM_SSI_SCR_SYNC_TX_FS) | BF_SSI_SCR_SYNC_TX_FS(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SCR_SYNC_TX_FS_V(v) BF_SSI_SCR_SYNC_TX_FS(BV_SSI_SCR_SYNC_TX_FS__##v)
|
|
|
|
#define BV_SSI_SCR_SYNC_TX_FS__TE_NOT_LATCHED (0x0) //!< TE not latched with FS occurrence & used directly for transmitter enable/disable.
|
|
#define BV_SSI_SCR_SYNC_TX_FS__TE_LATCHED (0x1) //!< TE latched with FS occurrence & latched-TE used for transmitter enable/disable.
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_SISR - SSI Interrupt Status Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_SISR - SSI Interrupt Status Register (W1C)
|
|
*
|
|
* Reset value: 0x00003003
|
|
*
|
|
* The SSI Interrupt Status Register (SSI_SISR) is used to monitor the SSI. This register is used by
|
|
* the core to interrogate the status of the In gated mode of operation the TFS, RFS, TLS, RLS, TFRC
|
|
* and RFRC bits of AISR register are not generated. The status bits are described in the following
|
|
* table. SSI Status flags are valid when SSI is enabled. See and for interrupt source mapping. All
|
|
* the flags in the SSI_SISR are updated after the first bit of the next SSI word has completed
|
|
* transmission or reception. Certain status bits (ROE0/1 and TUE0/1) are cleared by writing 1 to
|
|
* the corresponding interrupt status bit in SSI_SISR.
|
|
*/
|
|
typedef union _hw_ssi_sisr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_sisr_bitfields
|
|
{
|
|
unsigned TFE0 : 1; //!< [0] Transmit FIFO Empty 0.
|
|
unsigned TFE1 : 1; //!< [1] Transmit FIFO Empty 1.
|
|
unsigned RFF0 : 1; //!< [2] Receive FIFO Full 0.
|
|
unsigned RFF1 : 1; //!< [3] Receive FIFO Full 1.
|
|
unsigned RLS : 1; //!< [4] Receive Last Time Slot.
|
|
unsigned TLS : 1; //!< [5] Transmit Last Time Slot.
|
|
unsigned RFS : 1; //!< [6] Receive Frame Sync.
|
|
unsigned TFS : 1; //!< [7] Transmit Frame Sync.
|
|
unsigned TUE0 : 1; //!< [8] Transmitter Underrun Error 0.
|
|
unsigned TUE1 : 1; //!< [9] Transmitter Underrun Error 1.
|
|
unsigned ROE0 : 1; //!< [10] Receiver Overrun Error 0.
|
|
unsigned ROE1 : 1; //!< [11] Receiver Overrun Error 1.
|
|
unsigned TDE0 : 1; //!< [12] Transmit Data Register Empty 0.
|
|
unsigned TDE1 : 1; //!< [13] Transmit Data Register Empty 1.
|
|
unsigned RDR0 : 1; //!< [14] Receive Data Ready 0.
|
|
unsigned RDR1 : 1; //!< [15] Receive Data Ready 1.
|
|
unsigned RXT : 1; //!< [16] Receive Tag Updated.
|
|
unsigned CMDDU : 1; //!< [17] Command Data Register Updated.
|
|
unsigned CMDAU : 1; //!< [18] Command Address Register Updated.
|
|
unsigned RESERVED0 : 4; //!< [22:19] Reserved
|
|
unsigned TFRC : 1; //!< [23] Transmit Frame Complete.
|
|
unsigned RFRC : 1; //!< [24] Receive Frame Complete.
|
|
unsigned RESERVED1 : 7; //!< [31:25] Reserved
|
|
} B;
|
|
} hw_ssi_sisr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_SISR register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_SISR_ADDR(x) (REGS_SSI_BASE(x) + 0x14)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_SISR(x) (*(volatile hw_ssi_sisr_t *) HW_SSI_SISR_ADDR(x))
|
|
#define HW_SSI_SISR_RD(x) (HW_SSI_SISR(x).U)
|
|
#define HW_SSI_SISR_WR(x, v) (HW_SSI_SISR(x).U = (v))
|
|
#define HW_SSI_SISR_SET(x, v) (HW_SSI_SISR_WR(x, HW_SSI_SISR_RD(x) | (v)))
|
|
#define HW_SSI_SISR_CLR(x, v) (HW_SSI_SISR_WR(x, HW_SSI_SISR_RD(x) & ~(v)))
|
|
#define HW_SSI_SISR_TOG(x, v) (HW_SSI_SISR_WR(x, HW_SSI_SISR_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_SISR bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_SISR, field TFE0[0] (RO)
|
|
*
|
|
* Transmit FIFO Empty 0. This flag is set when the empty slots in Tx FIFO exceed or are equal to
|
|
* the selected Tx FIFO WaterMark 0 (TFWM0) threshold. The setting of TFE0 only causes an interrupt
|
|
* when TIE and TFE0_EN are set and Tx FIFO0 is enabled. The TFE0 bit is automatically cleared when
|
|
* the data level in Tx FIFO0 becomes more than the amount specified by the watermark bits. The TFE0
|
|
* bit is set by POR and SSI reset.
|
|
*
|
|
* Values:
|
|
* - HAS_DATA = 0 - Transmit FIFO0 has data for transmission.
|
|
* - EMPTY = 1 - Transmit FIFO0 is empty.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_TFE0 (0) //!< Bit position for SSI_SISR_TFE0.
|
|
#define BM_SSI_SISR_TFE0 (0x00000001) //!< Bit mask for SSI_SISR_TFE0.
|
|
|
|
//! @brief Get value of SSI_SISR_TFE0 from a register value.
|
|
#define BG_SSI_SISR_TFE0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_TFE0) >> BP_SSI_SISR_TFE0)
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SISR_TFE0_V(v) BF_SSI_SISR_TFE0(BV_SSI_SISR_TFE0__##v)
|
|
|
|
#define BV_SSI_SISR_TFE0__HAS_DATA (0x0) //!< Transmit FIFO0 has data for transmission.
|
|
#define BV_SSI_SISR_TFE0__EMPTY (0x1) //!< Transmit FIFO0 is empty.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field TFE1[1] (RO)
|
|
*
|
|
* Transmit FIFO Empty 1. This flag is set when the empty slots in Tx FIFO exceed or are equal to
|
|
* the selected Tx FIFO WaterMark 1 (TFWM1) threshold and the Two-Channel mode is selected. The
|
|
* setting of TFE1 only causes an interrupt when TIE and TFE1_EN are set, Tx FIFO1 is enabled and
|
|
* Two-Channel mode is selected. The TFE1 bit is automatically cleared when the data level in Tx
|
|
* FIFO1 becomes more than the amount specified by the watermark bits. The TFE1 bit is set by POR
|
|
* and SSI reset.
|
|
*
|
|
* Values:
|
|
* - HAS_DATA = 0 - Transmit FIFO1 has data for transmission.
|
|
* - EMPTY = 1 - Transmit FIFO1 is empty.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_TFE1 (1) //!< Bit position for SSI_SISR_TFE1.
|
|
#define BM_SSI_SISR_TFE1 (0x00000002) //!< Bit mask for SSI_SISR_TFE1.
|
|
|
|
//! @brief Get value of SSI_SISR_TFE1 from a register value.
|
|
#define BG_SSI_SISR_TFE1(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_TFE1) >> BP_SSI_SISR_TFE1)
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SISR_TFE1_V(v) BF_SSI_SISR_TFE1(BV_SSI_SISR_TFE1__##v)
|
|
|
|
#define BV_SSI_SISR_TFE1__HAS_DATA (0x0) //!< Transmit FIFO1 has data for transmission.
|
|
#define BV_SSI_SISR_TFE1__EMPTY (0x1) //!< Transmit FIFO1 is empty.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field RFF0[2] (RO)
|
|
*
|
|
* Receive FIFO Full 0. This flag is set when Rx FIFO0 is enabled and the data level in Rx FIFO0
|
|
* reaches the selected Rx FIFO WaterMark 0 (RFWM0) threshold. The setting of RFF0 only causes an
|
|
* interrupt when RIE and RFF0_EN are set and Rx FIFO0 is enabled. RFF0 is automatically cleared
|
|
* when the amount of data in Rx FIFO0 falls below the threshold. The RFF0 bit is cleared by POR and
|
|
* SSI reset. When Rx FIFO0 contains 15 words, the maximum it can hold, all further data received
|
|
* (for storage in this FIFO) is ignored until the FIFO contents are read.
|
|
*
|
|
* Values:
|
|
* - NOT_FULL = 0 - Space available in Receive FIFO0.
|
|
* - FULL = 1 - Receive FIFO0 is full.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_RFF0 (2) //!< Bit position for SSI_SISR_RFF0.
|
|
#define BM_SSI_SISR_RFF0 (0x00000004) //!< Bit mask for SSI_SISR_RFF0.
|
|
|
|
//! @brief Get value of SSI_SISR_RFF0 from a register value.
|
|
#define BG_SSI_SISR_RFF0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_RFF0) >> BP_SSI_SISR_RFF0)
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SISR_RFF0_V(v) BF_SSI_SISR_RFF0(BV_SSI_SISR_RFF0__##v)
|
|
|
|
#define BV_SSI_SISR_RFF0__NOT_FULL (0x0) //!< Space available in Receive FIFO0.
|
|
#define BV_SSI_SISR_RFF0__FULL (0x1) //!< Receive FIFO0 is full.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field RFF1[3] (RO)
|
|
*
|
|
* Receive FIFO Full 1. This flag is set when Rx FIFO1 is enabled, the data level in Rx FIFO1
|
|
* reaches the selected Rx FIFO WaterMark 1 (RFWM1) threshold and the SSI is in Two-Channel mode.
|
|
* The setting of RFF1 only causes an interrupt when RIE and RFF1_EN are set, Rx FIFO1 is enabled
|
|
* and the Two-Channel mode is selected. RFF1 is automatically cleared when the amount of data in Rx
|
|
* FIFO1 falls below the threshold. The RFF1 bit is cleared by POR and SSI reset. When Rx FIFO1
|
|
* contains 15 words, the maximum it can hold, all further data received (for storage in this FIFO)
|
|
* is ignored until the FIFO contents are read.
|
|
*
|
|
* Values:
|
|
* - NOT_FULL = 0 - Space available in Receive FIFO1.
|
|
* - FULL = 1 - Receive FIFO1 is full.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_RFF1 (3) //!< Bit position for SSI_SISR_RFF1.
|
|
#define BM_SSI_SISR_RFF1 (0x00000008) //!< Bit mask for SSI_SISR_RFF1.
|
|
|
|
//! @brief Get value of SSI_SISR_RFF1 from a register value.
|
|
#define BG_SSI_SISR_RFF1(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_RFF1) >> BP_SSI_SISR_RFF1)
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SISR_RFF1_V(v) BF_SSI_SISR_RFF1(BV_SSI_SISR_RFF1__##v)
|
|
|
|
#define BV_SSI_SISR_RFF1__NOT_FULL (0x0) //!< Space available in Receive FIFO1.
|
|
#define BV_SSI_SISR_RFF1__FULL (0x1) //!< Receive FIFO1 is full.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field RLS[4] (RO)
|
|
*
|
|
* Receive Last Time Slot. This flag indicates the last time slot in a frame. When set, it indicates
|
|
* that the current time slot is the last receive time slot of the frame. RLS is set at the end of
|
|
* the last time slot and causes the SSI to issue an interrupt (if RIE and RLS_EN are set). RLS is
|
|
* cleared when the SISR is read with this bit set. The RLS bit is cleared by POR and SSI reset.
|
|
*
|
|
* Values:
|
|
* - 0 - Current time slot is not last time slot of frame.
|
|
* - 1 - Current time slot is the last receive time slot of frame.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_RLS (4) //!< Bit position for SSI_SISR_RLS.
|
|
#define BM_SSI_SISR_RLS (0x00000010) //!< Bit mask for SSI_SISR_RLS.
|
|
|
|
//! @brief Get value of SSI_SISR_RLS from a register value.
|
|
#define BG_SSI_SISR_RLS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_RLS) >> BP_SSI_SISR_RLS)
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field TLS[5] (RO)
|
|
*
|
|
* Transmit Last Time Slot. This flag indicates the last time slot in a frame. When set, it
|
|
* indicates that the current time slot is the last time slot of the frame. TLS is set at the start
|
|
* of the last transmit time slot and causes the SSI to issue an interrupt (if TIE and TLS_EN are
|
|
* set). TLS is not generated when frame rate is 1 in normal mode of operation. TLS is cleared when
|
|
* the SISR is read with this bit set. The TLS bit is cleared by POR and SSI reset.
|
|
*
|
|
* Values:
|
|
* - 0 - Current time slot is not last time slot of frame.
|
|
* - 1 - Current time slot is the last transmit time slot of frame.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_TLS (5) //!< Bit position for SSI_SISR_TLS.
|
|
#define BM_SSI_SISR_TLS (0x00000020) //!< Bit mask for SSI_SISR_TLS.
|
|
|
|
//! @brief Get value of SSI_SISR_TLS from a register value.
|
|
#define BG_SSI_SISR_TLS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_TLS) >> BP_SSI_SISR_TLS)
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field RFS[6] (RO)
|
|
*
|
|
* Receive Frame Sync. This flag indicates the occurrence of receive frame sync. In Network mode,
|
|
* the RFS bit is set when the first slot of the frame is being received. It is cleared when the
|
|
* next slot begins to be received. In Normal mode, this bit is always high (When DC = 0). This flag
|
|
* causes an interrupt if RIE and RFS_EN are set. The RFS bit is cleared by POR and SSI reset.
|
|
*
|
|
* Values:
|
|
* - 0 - No Occurrence of Receive frame sync.
|
|
* - 1 - Receive frame sync occurred during reception of next word in SRX registers.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_RFS (6) //!< Bit position for SSI_SISR_RFS.
|
|
#define BM_SSI_SISR_RFS (0x00000040) //!< Bit mask for SSI_SISR_RFS.
|
|
|
|
//! @brief Get value of SSI_SISR_RFS from a register value.
|
|
#define BG_SSI_SISR_RFS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_RFS) >> BP_SSI_SISR_RFS)
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field TFS[7] (RO)
|
|
*
|
|
* Transmit Frame Sync. This flag indicates the occurrence of transmit frame sync. Data written to
|
|
* the STX registers during the time slot when the TFS flag is set, is sent during the second time
|
|
* slot (in Network mode) or in the next first time slot (in Normal mode). In Network mode, the TFS
|
|
* bit is set during transmission of the first time slot of the frame and is then cleared when
|
|
* starting transmission of the next time slot. In Normal mode, this bit is high for the first time
|
|
* slot. This flag causes an interrupt if TIE and TFS_EN are set. The TFS bit is cleared by POR and
|
|
* SSI reset.
|
|
*
|
|
* Values:
|
|
* - 0 - No Occurrence of Transmit frame sync.
|
|
* - 1 - Transmit frame sync occurred during transmission of last word written to STX registers.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_TFS (7) //!< Bit position for SSI_SISR_TFS.
|
|
#define BM_SSI_SISR_TFS (0x00000080) //!< Bit mask for SSI_SISR_TFS.
|
|
|
|
//! @brief Get value of SSI_SISR_TFS from a register value.
|
|
#define BG_SSI_SISR_TFS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_TFS) >> BP_SSI_SISR_TFS)
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field TUE0[8] (W1C)
|
|
*
|
|
* Transmitter Underrun Error 0. This flag is set when the TXSR is empty (no data to be
|
|
* transmitted), the TDE0 flag is set and a transmit time slot occurs. When a transmit underrun
|
|
* error occurs, the previous data is retransmitted. In Network mode, each time slot requires data
|
|
* transmission (unless masked through STMSK register), when the transmitter is enabled (TE is set).
|
|
* The TUE0 flag causes an interrupt if TIE and TUE0_EN are set. The TUE0 bit is cleared by POR and
|
|
* SSI reset. It is also cleared by writing '1' to this bit.
|
|
*
|
|
* Values:
|
|
* - 0 - Default interrupt issued to the Core.
|
|
* - 1 - Exception interrupt issued to the Core.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_TUE0 (8) //!< Bit position for SSI_SISR_TUE0.
|
|
#define BM_SSI_SISR_TUE0 (0x00000100) //!< Bit mask for SSI_SISR_TUE0.
|
|
|
|
//! @brief Get value of SSI_SISR_TUE0 from a register value.
|
|
#define BG_SSI_SISR_TUE0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_TUE0) >> BP_SSI_SISR_TUE0)
|
|
|
|
//! @brief Format value for bitfield SSI_SISR_TUE0.
|
|
#define BF_SSI_SISR_TUE0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SISR_TUE0) & BM_SSI_SISR_TUE0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TUE0 field to a new value.
|
|
#define BW_SSI_SISR_TUE0(x, v) (HW_SSI_SISR_WR(x, (HW_SSI_SISR_RD(x) & ~BM_SSI_SISR_TUE0) | BF_SSI_SISR_TUE0(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field TUE1[9] (W1C)
|
|
*
|
|
* Transmitter Underrun Error 1. This flag is set when the TXSR is empty (no data to be
|
|
* transmitted), the TDE1 flag is set, a transmit time slot occurs and the SSI is in Two-Channel
|
|
* mode. When a transmit underrun error occurs, the previous data is retransmitted. In Network mode,
|
|
* each time slot requires data transmission (unless masked through STMSK register), when the
|
|
* transmitter is enabled (TE is set). The TUE1 flag causes an interrupt if TIE and TUE1_EN are set.
|
|
* The TUE1 bit is cleared by POR and SSI reset. It is also cleared by writing '1' to this bit.
|
|
*
|
|
* Values:
|
|
* - 0 - Default interrupt issued to the Core.
|
|
* - 1 - Exception interrupt issued to the Core.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_TUE1 (9) //!< Bit position for SSI_SISR_TUE1.
|
|
#define BM_SSI_SISR_TUE1 (0x00000200) //!< Bit mask for SSI_SISR_TUE1.
|
|
|
|
//! @brief Get value of SSI_SISR_TUE1 from a register value.
|
|
#define BG_SSI_SISR_TUE1(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_TUE1) >> BP_SSI_SISR_TUE1)
|
|
|
|
//! @brief Format value for bitfield SSI_SISR_TUE1.
|
|
#define BF_SSI_SISR_TUE1(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SISR_TUE1) & BM_SSI_SISR_TUE1)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TUE1 field to a new value.
|
|
#define BW_SSI_SISR_TUE1(x, v) (HW_SSI_SISR_WR(x, (HW_SSI_SISR_RD(x) & ~BM_SSI_SISR_TUE1) | BF_SSI_SISR_TUE1(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field ROE0[10] (W1C)
|
|
*
|
|
* Receiver Overrun Error 0. This flag is set when the RXSR is filled and ready to transfer to SRX0
|
|
* register or to Rx FIFO 0 (when enabled) and these are already full. If Rx FIFO 0 is enabled, this
|
|
* is indicated by RFF0 flag, else this is indicated by the RDR0 flag. The RXSR is not transferred
|
|
* in this case. The ROE0 flag causes an interrupt if RIE and ROE0_EN are set. The ROE0 bit is
|
|
* cleared by POR and SSI reset. It is also cleared by writing '1' to this bit. Clearing the RE bit
|
|
* does not affect the ROE0 bit.
|
|
*
|
|
* Values:
|
|
* - 0 - Default interrupt issued to the Core.
|
|
* - 1 - Exception interrupt issued to the Core.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_ROE0 (10) //!< Bit position for SSI_SISR_ROE0.
|
|
#define BM_SSI_SISR_ROE0 (0x00000400) //!< Bit mask for SSI_SISR_ROE0.
|
|
|
|
//! @brief Get value of SSI_SISR_ROE0 from a register value.
|
|
#define BG_SSI_SISR_ROE0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_ROE0) >> BP_SSI_SISR_ROE0)
|
|
|
|
//! @brief Format value for bitfield SSI_SISR_ROE0.
|
|
#define BF_SSI_SISR_ROE0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SISR_ROE0) & BM_SSI_SISR_ROE0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the ROE0 field to a new value.
|
|
#define BW_SSI_SISR_ROE0(x, v) (HW_SSI_SISR_WR(x, (HW_SSI_SISR_RD(x) & ~BM_SSI_SISR_ROE0) | BF_SSI_SISR_ROE0(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field ROE1[11] (W1C)
|
|
*
|
|
* Receiver Overrun Error 1. This flag is set when the RXSR is filled and ready to transfer to SRX1
|
|
* register or to Rx FIFO 1 (when enabled) and these are already full and Two-Channel mode is
|
|
* selected. If Rx FIFO 1 is enabled, this is indicated by RFF1 flag, else this is indicated by the
|
|
* RDR1 flag. The RXSR is not transferred in this case. The ROE1 flag causes an interrupt if RIE and
|
|
* ROE1_EN are set. The ROE1 bit is cleared by POR and SSI reset. It is also cleared by writing '1'
|
|
* to this bit. Clearing the RE bit does not affect the ROE1 bit.
|
|
*
|
|
* Values:
|
|
* - 0 - Default interrupt issued to the Core.
|
|
* - 1 - Exception interrupt issued to the Core.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_ROE1 (11) //!< Bit position for SSI_SISR_ROE1.
|
|
#define BM_SSI_SISR_ROE1 (0x00000800) //!< Bit mask for SSI_SISR_ROE1.
|
|
|
|
//! @brief Get value of SSI_SISR_ROE1 from a register value.
|
|
#define BG_SSI_SISR_ROE1(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_ROE1) >> BP_SSI_SISR_ROE1)
|
|
|
|
//! @brief Format value for bitfield SSI_SISR_ROE1.
|
|
#define BF_SSI_SISR_ROE1(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SISR_ROE1) & BM_SSI_SISR_ROE1)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the ROE1 field to a new value.
|
|
#define BW_SSI_SISR_ROE1(x, v) (HW_SSI_SISR_WR(x, (HW_SSI_SISR_RD(x) & ~BM_SSI_SISR_ROE1) | BF_SSI_SISR_ROE1(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field TDE0[12] (RO)
|
|
*
|
|
* Transmit Data Register Empty 0. This flag is set whenever data is transferred to TXSR from STX0
|
|
* register. If Tx FIFO 0 is enabled, this occurs when there is at least one empty slot in STX0 or
|
|
* Tx FIFO 0. If Tx FIFO 0 is not enabled, this occurs when the contents of STX0 are transferred to
|
|
* TXSR. The TDE0 bit is cleared when the Core writes to STX0. If TIE and TDE0_EN are set, an SSI
|
|
* Transmit Data 0 interrupt request is issued on setting of TDE0 bit. The TDE0 bit is cleared by
|
|
* POR and SSI reset.
|
|
*
|
|
* Values:
|
|
* - 0 - Data available for transmission.
|
|
* - 1 - Data needs to be written by the Core for transmission.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_TDE0 (12) //!< Bit position for SSI_SISR_TDE0.
|
|
#define BM_SSI_SISR_TDE0 (0x00001000) //!< Bit mask for SSI_SISR_TDE0.
|
|
|
|
//! @brief Get value of SSI_SISR_TDE0 from a register value.
|
|
#define BG_SSI_SISR_TDE0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_TDE0) >> BP_SSI_SISR_TDE0)
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field TDE1[13] (RO)
|
|
*
|
|
* Transmit Data Register Empty 1. This flag is set whenever data is transferred to TXSR from STX1
|
|
* register and Two-Channel mode is selected. If Tx FIFO1 is enabled, this occurs when there is at
|
|
* least one empty slot in STX1 or Tx FIFO1. If Tx FIFO1 is not enabled, this occurs when the
|
|
* contents of STX1 are transferred to TXSR. The TDE1 bit is cleared when the Core writes to STX1.
|
|
* If TIE and TDE1_EN are set, an SSI Transmit Data 1 interrupt request is issued on setting of TDE1
|
|
* bit. The TDE1 bit is cleared by POR and SSI reset.
|
|
*
|
|
* Values:
|
|
* - 0 - Data available for transmission.
|
|
* - 1 - Data needs to be written by the Core for transmission.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_TDE1 (13) //!< Bit position for SSI_SISR_TDE1.
|
|
#define BM_SSI_SISR_TDE1 (0x00002000) //!< Bit mask for SSI_SISR_TDE1.
|
|
|
|
//! @brief Get value of SSI_SISR_TDE1 from a register value.
|
|
#define BG_SSI_SISR_TDE1(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_TDE1) >> BP_SSI_SISR_TDE1)
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field RDR0[14] (RO)
|
|
*
|
|
* Receive Data Ready 0. This flag bit is set when SRX0 or Rx FIFO 0 is loaded with a new value.
|
|
* RDR0 is cleared when the Core reads the SRX0 register. If Rx FIFO 0 is enabled, RDR0 is cleared
|
|
* when the FIFO is empty. If RIE and RDR0_EN are set, a Receive Data 0 interrupt request is issued
|
|
* on setting of RDR0 bit in case Rx FIFO0 is disabled, if the FIFO is enabled, the interrupt is
|
|
* issued on RFF0 assertion. The RDR0 bit is cleared by POR and SSI reset.
|
|
*
|
|
* Values:
|
|
* - 0 - No new data for Core to read.
|
|
* - 1 - New data for Core to read.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_RDR0 (14) //!< Bit position for SSI_SISR_RDR0.
|
|
#define BM_SSI_SISR_RDR0 (0x00004000) //!< Bit mask for SSI_SISR_RDR0.
|
|
|
|
//! @brief Get value of SSI_SISR_RDR0 from a register value.
|
|
#define BG_SSI_SISR_RDR0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_RDR0) >> BP_SSI_SISR_RDR0)
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field RDR1[15] (RO)
|
|
*
|
|
* Receive Data Ready 1. This flag bit is set when SRX1 or Rx FIFO 1 is loaded with a new value and
|
|
* Two-Channel mode is selected. RDR1 is cleared when the Core reads the SRX1 register. If Rx FIFO 1
|
|
* is enabled, RDR1 is cleared when the FIFO is empty. If RIE and RDR1_EN are set, a Receive Data 1
|
|
* interrupt request is issued on setting of RDR1 bit in case Rx FIFO1 is disabled, if the FIFO is
|
|
* enabled, the interrupt is issued on RFF1 assertion. The RDR1 bit is cleared by POR and SSI reset.
|
|
*
|
|
* Values:
|
|
* - 0 - No new data for Core to read.
|
|
* - 1 - New data for Core to read.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_RDR1 (15) //!< Bit position for SSI_SISR_RDR1.
|
|
#define BM_SSI_SISR_RDR1 (0x00008000) //!< Bit mask for SSI_SISR_RDR1.
|
|
|
|
//! @brief Get value of SSI_SISR_RDR1 from a register value.
|
|
#define BG_SSI_SISR_RDR1(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_RDR1) >> BP_SSI_SISR_RDR1)
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field RXT[16] (RO)
|
|
*
|
|
* Receive Tag Updated. This status bit is set each time there is a difference in the previous and
|
|
* current value of the received tag. It causes the Receive Tag Interrupt (if RXT_EN bit is set).
|
|
* This bit is cleared on reading the SATAG register.
|
|
*
|
|
* Values:
|
|
* - 0 - No change in SATAG register.
|
|
* - 1 - SATAG register updated with different value.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_RXT (16) //!< Bit position for SSI_SISR_RXT.
|
|
#define BM_SSI_SISR_RXT (0x00010000) //!< Bit mask for SSI_SISR_RXT.
|
|
|
|
//! @brief Get value of SSI_SISR_RXT from a register value.
|
|
#define BG_SSI_SISR_RXT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_RXT) >> BP_SSI_SISR_RXT)
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field CMDDU[17] (RO)
|
|
*
|
|
* Command Data Register Updated. This bit causes the Command Data Updated interrupt (when CMDDU_EN
|
|
* bit is set). This status bit is set each time there is a difference in the previous and current
|
|
* value of the received Command Data. This bit is cleared on reading the SACDAT register.
|
|
*
|
|
* Values:
|
|
* - 0 - No change in SACDAT register.
|
|
* - 1 - SACDAT register updated with different value.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_CMDDU (17) //!< Bit position for SSI_SISR_CMDDU.
|
|
#define BM_SSI_SISR_CMDDU (0x00020000) //!< Bit mask for SSI_SISR_CMDDU.
|
|
|
|
//! @brief Get value of SSI_SISR_CMDDU from a register value.
|
|
#define BG_SSI_SISR_CMDDU(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_CMDDU) >> BP_SSI_SISR_CMDDU)
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field CMDAU[18] (RO)
|
|
*
|
|
* Command Address Register Updated. This bit causes the Command Address Updated interrupt (when
|
|
* CMDAU_EN bit is set). This status bit is set each time there is a difference in the previous and
|
|
* current value of the received Command Address. This bit is cleared on reading the SACADD
|
|
* register.
|
|
*
|
|
* Values:
|
|
* - 0 - No change in SACADD register.
|
|
* - 1 - SACADD register updated with different value.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_CMDAU (18) //!< Bit position for SSI_SISR_CMDAU.
|
|
#define BM_SSI_SISR_CMDAU (0x00040000) //!< Bit mask for SSI_SISR_CMDAU.
|
|
|
|
//! @brief Get value of SSI_SISR_CMDAU from a register value.
|
|
#define BG_SSI_SISR_CMDAU(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_CMDAU) >> BP_SSI_SISR_CMDAU)
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field TFRC[23] (RO)
|
|
*
|
|
* Transmit Frame Complete. This flag is set at the end of the frame during which Transmitter is
|
|
* disabled. If Transmit Frame & Clock are not disabled in the same frame, this flag is also set at
|
|
* the end of the frame in which Transmit Frame & Clock are disabled. See description of TFR_CLK_DIS
|
|
* bit for more details on how to disable Transmit Frame & Clock or keep them enabled after
|
|
* transmitter is disabled.
|
|
*
|
|
* Values:
|
|
* - 0 - End of Frame not reached
|
|
* - 1 - End of frame reached after disabling TE or disabling TFR_CLK_DIS, when transmitter is already
|
|
* disabled.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_TFRC (23) //!< Bit position for SSI_SISR_TFRC.
|
|
#define BM_SSI_SISR_TFRC (0x00800000) //!< Bit mask for SSI_SISR_TFRC.
|
|
|
|
//! @brief Get value of SSI_SISR_TFRC from a register value.
|
|
#define BG_SSI_SISR_TFRC(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_TFRC) >> BP_SSI_SISR_TFRC)
|
|
//@}
|
|
|
|
/*! @name Register SSI_SISR, field RFRC[24] (RO)
|
|
*
|
|
* Receive Frame Complete. This flag is set at the end of the frame during which Receiver is
|
|
* disabled. If Receive Frame & Clock are not disabled in the same frame, this flag is also set at
|
|
* the end of the frame in which Receive Frame & Clock are disabled. See the description of
|
|
* RFR_CLK_DIS bit for more details on how to disable Receiver Frame & Clock or keep them enabled
|
|
* after receiver is disabled.
|
|
*
|
|
* Values:
|
|
* - 0 - End of Frame not reached
|
|
* - 1 - End of frame reached after disabling RE or disabling RFR_CLK_DIS, when receiver is already disabled.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SISR_RFRC (24) //!< Bit position for SSI_SISR_RFRC.
|
|
#define BM_SSI_SISR_RFRC (0x01000000) //!< Bit mask for SSI_SISR_RFRC.
|
|
|
|
//! @brief Get value of SSI_SISR_RFRC from a register value.
|
|
#define BG_SSI_SISR_RFRC(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SISR_RFRC) >> BP_SSI_SISR_RFRC)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_SIER - SSI Interrupt Enable Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_SIER - SSI Interrupt Enable Register (RW)
|
|
*
|
|
* Reset value: 0x00003003
|
|
*
|
|
* The SSI Interrupt Enable Register (SIER) is a 25-bit register used to set up the SSI interrupts
|
|
* and DMA requests.
|
|
*/
|
|
typedef union _hw_ssi_sier
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_sier_bitfields
|
|
{
|
|
unsigned TFE0IE : 1; //!< [0] Transmit FIFO Empty 0 Interrupt Enable.
|
|
unsigned TFE1IE : 1; //!< [1] Transmit FIFO Empty 1 Interrupt Enable.
|
|
unsigned RFF0IE : 1; //!< [2] Receive FIFO Full 0 Interrupt Enable.
|
|
unsigned RFF1IE : 1; //!< [3] Receive FIFO Full 1 Interrupt Enable.
|
|
unsigned RLSIE : 1; //!< [4] Receive Last Time Slot Interrupt Enable.
|
|
unsigned TLSIE : 1; //!< [5] Transmit Last Time Slot Interrupt Enable.
|
|
unsigned RFSIE : 1; //!< [6] Receive Frame Sync Interrupt Enable.
|
|
unsigned TFSIE : 1; //!< [7] Transmit Frame Sync Interrupt Enable.
|
|
unsigned TUE0IE : 1; //!< [8] Transmitter Underrun Error 0 Interrupt Enable.
|
|
unsigned TUE1IE : 1; //!< [9] Transmitter Underrun Error 1 Interrupt Enable.
|
|
unsigned ROE0IE : 1; //!< [10] Receiver Overrun Error 0 Interrupt Enable.
|
|
unsigned ROE1IE : 1; //!< [11] Receiver Overrun Error 1 Interrupt Enable.
|
|
unsigned TDE0IE : 1; //!< [12] Transmit Data Register Empty 0 Interrupt Enable.
|
|
unsigned TDE1IE : 1; //!< [13] Transmit Data Register Empty 1 Interrupt Enable.
|
|
unsigned RDR0IE : 1; //!< [14] Receive Data Ready 0 Interrupt Enable.
|
|
unsigned RDR1IE : 1; //!< [15] Receive Data Ready 1 Interrupt Enable.
|
|
unsigned RXTIE : 1; //!< [16] Receive Tag Updated Interrupt Enable.
|
|
unsigned CMDDUIE : 1; //!< [17] Command Data Register Updated Interrupt Enable.
|
|
unsigned CMDAUIE : 1; //!< [18] Command Address Register Updated Interrupt Enable.
|
|
unsigned TIE : 1; //!< [19] Transmit Interrupt Enable.
|
|
unsigned TDMAE : 1; //!< [20] Transmit DMA Enable.
|
|
unsigned RIE : 1; //!< [21] Receive Interrupt Enable.
|
|
unsigned RDMAE : 1; //!< [22] Receive DMA Enable.
|
|
unsigned TFRCIE : 1; //!< [23] Transmit Frame Complete Interrupt Enable.
|
|
unsigned RFRCIE : 1; //!< [24] Receive Frame Complete Interrupt Enable.
|
|
unsigned RESERVED0 : 7; //!< [31:25] Reserved
|
|
} B;
|
|
} hw_ssi_sier_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_SIER register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_SIER_ADDR(x) (REGS_SSI_BASE(x) + 0x18)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_SIER(x) (*(volatile hw_ssi_sier_t *) HW_SSI_SIER_ADDR(x))
|
|
#define HW_SSI_SIER_RD(x) (HW_SSI_SIER(x).U)
|
|
#define HW_SSI_SIER_WR(x, v) (HW_SSI_SIER(x).U = (v))
|
|
#define HW_SSI_SIER_SET(x, v) (HW_SSI_SIER_WR(x, HW_SSI_SIER_RD(x) | (v)))
|
|
#define HW_SSI_SIER_CLR(x, v) (HW_SSI_SIER_WR(x, HW_SSI_SIER_RD(x) & ~(v)))
|
|
#define HW_SSI_SIER_TOG(x, v) (HW_SSI_SIER_WR(x, HW_SSI_SIER_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_SIER bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_SIER, field TFE0IE[0] (RW)
|
|
*
|
|
* Transmit FIFO Empty 0 Interrupt Enable. Enable Bit. Controls whether the corresponding status bit
|
|
* in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_TFE0IE (0) //!< Bit position for SSI_SIER_TFE0IE.
|
|
#define BM_SSI_SIER_TFE0IE (0x00000001) //!< Bit mask for SSI_SIER_TFE0IE.
|
|
|
|
//! @brief Get value of SSI_SIER_TFE0IE from a register value.
|
|
#define BG_SSI_SIER_TFE0IE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_TFE0IE) >> BP_SSI_SIER_TFE0IE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_TFE0IE.
|
|
#define BF_SSI_SIER_TFE0IE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_TFE0IE) & BM_SSI_SIER_TFE0IE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TFE0IE field to a new value.
|
|
#define BW_SSI_SIER_TFE0IE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_TFE0IE) | BF_SSI_SIER_TFE0IE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field TFE1IE[1] (RW)
|
|
*
|
|
* Transmit FIFO Empty 1 Interrupt Enable. Enable Bit. Controls whether the corresponding status bit
|
|
* in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_TFE1IE (1) //!< Bit position for SSI_SIER_TFE1IE.
|
|
#define BM_SSI_SIER_TFE1IE (0x00000002) //!< Bit mask for SSI_SIER_TFE1IE.
|
|
|
|
//! @brief Get value of SSI_SIER_TFE1IE from a register value.
|
|
#define BG_SSI_SIER_TFE1IE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_TFE1IE) >> BP_SSI_SIER_TFE1IE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_TFE1IE.
|
|
#define BF_SSI_SIER_TFE1IE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_TFE1IE) & BM_SSI_SIER_TFE1IE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TFE1IE field to a new value.
|
|
#define BW_SSI_SIER_TFE1IE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_TFE1IE) | BF_SSI_SIER_TFE1IE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field RFF0IE[2] (RW)
|
|
*
|
|
* Receive FIFO Full 0 Interrupt Enable. Enable Bit. Controls whether the corresponding status bit
|
|
* in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_RFF0IE (2) //!< Bit position for SSI_SIER_RFF0IE.
|
|
#define BM_SSI_SIER_RFF0IE (0x00000004) //!< Bit mask for SSI_SIER_RFF0IE.
|
|
|
|
//! @brief Get value of SSI_SIER_RFF0IE from a register value.
|
|
#define BG_SSI_SIER_RFF0IE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_RFF0IE) >> BP_SSI_SIER_RFF0IE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_RFF0IE.
|
|
#define BF_SSI_SIER_RFF0IE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_RFF0IE) & BM_SSI_SIER_RFF0IE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RFF0IE field to a new value.
|
|
#define BW_SSI_SIER_RFF0IE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_RFF0IE) | BF_SSI_SIER_RFF0IE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field RFF1IE[3] (RW)
|
|
*
|
|
* Receive FIFO Full 1 Interrupt Enable. Enable Bit. Controls whether the corresponding status bit
|
|
* in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_RFF1IE (3) //!< Bit position for SSI_SIER_RFF1IE.
|
|
#define BM_SSI_SIER_RFF1IE (0x00000008) //!< Bit mask for SSI_SIER_RFF1IE.
|
|
|
|
//! @brief Get value of SSI_SIER_RFF1IE from a register value.
|
|
#define BG_SSI_SIER_RFF1IE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_RFF1IE) >> BP_SSI_SIER_RFF1IE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_RFF1IE.
|
|
#define BF_SSI_SIER_RFF1IE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_RFF1IE) & BM_SSI_SIER_RFF1IE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RFF1IE field to a new value.
|
|
#define BW_SSI_SIER_RFF1IE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_RFF1IE) | BF_SSI_SIER_RFF1IE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field RLSIE[4] (RW)
|
|
*
|
|
* Receive Last Time Slot Interrupt Enable. Enable Bit. Controls whether the corresponding status
|
|
* bit in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_RLSIE (4) //!< Bit position for SSI_SIER_RLSIE.
|
|
#define BM_SSI_SIER_RLSIE (0x00000010) //!< Bit mask for SSI_SIER_RLSIE.
|
|
|
|
//! @brief Get value of SSI_SIER_RLSIE from a register value.
|
|
#define BG_SSI_SIER_RLSIE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_RLSIE) >> BP_SSI_SIER_RLSIE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_RLSIE.
|
|
#define BF_SSI_SIER_RLSIE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_RLSIE) & BM_SSI_SIER_RLSIE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RLSIE field to a new value.
|
|
#define BW_SSI_SIER_RLSIE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_RLSIE) | BF_SSI_SIER_RLSIE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field TLSIE[5] (RO)
|
|
*
|
|
* Transmit Last Time Slot Interrupt Enable. Enable Bit. Controls whether the corresponding status
|
|
* bit in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_TLSIE (5) //!< Bit position for SSI_SIER_TLSIE.
|
|
#define BM_SSI_SIER_TLSIE (0x00000020) //!< Bit mask for SSI_SIER_TLSIE.
|
|
|
|
//! @brief Get value of SSI_SIER_TLSIE from a register value.
|
|
#define BG_SSI_SIER_TLSIE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_TLSIE) >> BP_SSI_SIER_TLSIE)
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field RFSIE[6] (RW)
|
|
*
|
|
* Receive Frame Sync Interrupt Enable. Enable Bit. Controls whether the corresponding status bit in
|
|
* SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_RFSIE (6) //!< Bit position for SSI_SIER_RFSIE.
|
|
#define BM_SSI_SIER_RFSIE (0x00000040) //!< Bit mask for SSI_SIER_RFSIE.
|
|
|
|
//! @brief Get value of SSI_SIER_RFSIE from a register value.
|
|
#define BG_SSI_SIER_RFSIE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_RFSIE) >> BP_SSI_SIER_RFSIE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_RFSIE.
|
|
#define BF_SSI_SIER_RFSIE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_RFSIE) & BM_SSI_SIER_RFSIE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RFSIE field to a new value.
|
|
#define BW_SSI_SIER_RFSIE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_RFSIE) | BF_SSI_SIER_RFSIE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field TFSIE[7] (RW)
|
|
*
|
|
* Transmit Frame Sync Interrupt Enable. Enable Bit. Controls whether the corresponding status bit
|
|
* in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_TFSIE (7) //!< Bit position for SSI_SIER_TFSIE.
|
|
#define BM_SSI_SIER_TFSIE (0x00000080) //!< Bit mask for SSI_SIER_TFSIE.
|
|
|
|
//! @brief Get value of SSI_SIER_TFSIE from a register value.
|
|
#define BG_SSI_SIER_TFSIE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_TFSIE) >> BP_SSI_SIER_TFSIE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_TFSIE.
|
|
#define BF_SSI_SIER_TFSIE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_TFSIE) & BM_SSI_SIER_TFSIE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TFSIE field to a new value.
|
|
#define BW_SSI_SIER_TFSIE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_TFSIE) | BF_SSI_SIER_TFSIE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field TUE0IE[8] (RW)
|
|
*
|
|
* Transmitter Underrun Error 0 Interrupt Enable. Enable Bit. Controls whether the corresponding
|
|
* status bit in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_TUE0IE (8) //!< Bit position for SSI_SIER_TUE0IE.
|
|
#define BM_SSI_SIER_TUE0IE (0x00000100) //!< Bit mask for SSI_SIER_TUE0IE.
|
|
|
|
//! @brief Get value of SSI_SIER_TUE0IE from a register value.
|
|
#define BG_SSI_SIER_TUE0IE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_TUE0IE) >> BP_SSI_SIER_TUE0IE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_TUE0IE.
|
|
#define BF_SSI_SIER_TUE0IE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_TUE0IE) & BM_SSI_SIER_TUE0IE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TUE0IE field to a new value.
|
|
#define BW_SSI_SIER_TUE0IE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_TUE0IE) | BF_SSI_SIER_TUE0IE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field TUE1IE[9] (RW)
|
|
*
|
|
* Transmitter Underrun Error 1 Interrupt Enable. Enable Bit. Controls whether the corresponding
|
|
* status bit in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_TUE1IE (9) //!< Bit position for SSI_SIER_TUE1IE.
|
|
#define BM_SSI_SIER_TUE1IE (0x00000200) //!< Bit mask for SSI_SIER_TUE1IE.
|
|
|
|
//! @brief Get value of SSI_SIER_TUE1IE from a register value.
|
|
#define BG_SSI_SIER_TUE1IE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_TUE1IE) >> BP_SSI_SIER_TUE1IE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_TUE1IE.
|
|
#define BF_SSI_SIER_TUE1IE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_TUE1IE) & BM_SSI_SIER_TUE1IE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TUE1IE field to a new value.
|
|
#define BW_SSI_SIER_TUE1IE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_TUE1IE) | BF_SSI_SIER_TUE1IE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field ROE0IE[10] (RW)
|
|
*
|
|
* Receiver Overrun Error 0 Interrupt Enable. Enable Bit. Controls whether the corresponding status
|
|
* bit in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_ROE0IE (10) //!< Bit position for SSI_SIER_ROE0IE.
|
|
#define BM_SSI_SIER_ROE0IE (0x00000400) //!< Bit mask for SSI_SIER_ROE0IE.
|
|
|
|
//! @brief Get value of SSI_SIER_ROE0IE from a register value.
|
|
#define BG_SSI_SIER_ROE0IE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_ROE0IE) >> BP_SSI_SIER_ROE0IE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_ROE0IE.
|
|
#define BF_SSI_SIER_ROE0IE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_ROE0IE) & BM_SSI_SIER_ROE0IE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the ROE0IE field to a new value.
|
|
#define BW_SSI_SIER_ROE0IE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_ROE0IE) | BF_SSI_SIER_ROE0IE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field ROE1IE[11] (RW)
|
|
*
|
|
* Receiver Overrun Error 1 Interrupt Enable. Enable Bit. Controls whether the corresponding status
|
|
* bit in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_ROE1IE (11) //!< Bit position for SSI_SIER_ROE1IE.
|
|
#define BM_SSI_SIER_ROE1IE (0x00000800) //!< Bit mask for SSI_SIER_ROE1IE.
|
|
|
|
//! @brief Get value of SSI_SIER_ROE1IE from a register value.
|
|
#define BG_SSI_SIER_ROE1IE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_ROE1IE) >> BP_SSI_SIER_ROE1IE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_ROE1IE.
|
|
#define BF_SSI_SIER_ROE1IE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_ROE1IE) & BM_SSI_SIER_ROE1IE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the ROE1IE field to a new value.
|
|
#define BW_SSI_SIER_ROE1IE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_ROE1IE) | BF_SSI_SIER_ROE1IE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field TDE0IE[12] (RW)
|
|
*
|
|
* Transmit Data Register Empty 0 Interrupt Enable. Enable Bit. Controls whether the corresponding
|
|
* status bit in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_TDE0IE (12) //!< Bit position for SSI_SIER_TDE0IE.
|
|
#define BM_SSI_SIER_TDE0IE (0x00001000) //!< Bit mask for SSI_SIER_TDE0IE.
|
|
|
|
//! @brief Get value of SSI_SIER_TDE0IE from a register value.
|
|
#define BG_SSI_SIER_TDE0IE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_TDE0IE) >> BP_SSI_SIER_TDE0IE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_TDE0IE.
|
|
#define BF_SSI_SIER_TDE0IE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_TDE0IE) & BM_SSI_SIER_TDE0IE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TDE0IE field to a new value.
|
|
#define BW_SSI_SIER_TDE0IE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_TDE0IE) | BF_SSI_SIER_TDE0IE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field TDE1IE[13] (RW)
|
|
*
|
|
* Transmit Data Register Empty 1 Interrupt Enable. Enable Bit. Controls whether the corresponding
|
|
* status bit in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_TDE1IE (13) //!< Bit position for SSI_SIER_TDE1IE.
|
|
#define BM_SSI_SIER_TDE1IE (0x00002000) //!< Bit mask for SSI_SIER_TDE1IE.
|
|
|
|
//! @brief Get value of SSI_SIER_TDE1IE from a register value.
|
|
#define BG_SSI_SIER_TDE1IE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_TDE1IE) >> BP_SSI_SIER_TDE1IE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_TDE1IE.
|
|
#define BF_SSI_SIER_TDE1IE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_TDE1IE) & BM_SSI_SIER_TDE1IE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TDE1IE field to a new value.
|
|
#define BW_SSI_SIER_TDE1IE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_TDE1IE) | BF_SSI_SIER_TDE1IE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field RDR0IE[14] (RW)
|
|
*
|
|
* Receive Data Ready 0 Interrupt Enable. Enable Bit. Controls whether the corresponding status bit
|
|
* in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_RDR0IE (14) //!< Bit position for SSI_SIER_RDR0IE.
|
|
#define BM_SSI_SIER_RDR0IE (0x00004000) //!< Bit mask for SSI_SIER_RDR0IE.
|
|
|
|
//! @brief Get value of SSI_SIER_RDR0IE from a register value.
|
|
#define BG_SSI_SIER_RDR0IE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_RDR0IE) >> BP_SSI_SIER_RDR0IE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_RDR0IE.
|
|
#define BF_SSI_SIER_RDR0IE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_RDR0IE) & BM_SSI_SIER_RDR0IE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RDR0IE field to a new value.
|
|
#define BW_SSI_SIER_RDR0IE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_RDR0IE) | BF_SSI_SIER_RDR0IE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field RDR1IE[15] (RW)
|
|
*
|
|
* Receive Data Ready 1 Interrupt Enable. Enable Bit. Controls whether the corresponding status bit
|
|
* in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_RDR1IE (15) //!< Bit position for SSI_SIER_RDR1IE.
|
|
#define BM_SSI_SIER_RDR1IE (0x00008000) //!< Bit mask for SSI_SIER_RDR1IE.
|
|
|
|
//! @brief Get value of SSI_SIER_RDR1IE from a register value.
|
|
#define BG_SSI_SIER_RDR1IE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_RDR1IE) >> BP_SSI_SIER_RDR1IE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_RDR1IE.
|
|
#define BF_SSI_SIER_RDR1IE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_RDR1IE) & BM_SSI_SIER_RDR1IE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RDR1IE field to a new value.
|
|
#define BW_SSI_SIER_RDR1IE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_RDR1IE) | BF_SSI_SIER_RDR1IE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field RXTIE[16] (RW)
|
|
*
|
|
* Receive Tag Updated Interrupt Enable. Enable Bit. Controls whether the corresponding status bit
|
|
* in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_RXTIE (16) //!< Bit position for SSI_SIER_RXTIE.
|
|
#define BM_SSI_SIER_RXTIE (0x00010000) //!< Bit mask for SSI_SIER_RXTIE.
|
|
|
|
//! @brief Get value of SSI_SIER_RXTIE from a register value.
|
|
#define BG_SSI_SIER_RXTIE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_RXTIE) >> BP_SSI_SIER_RXTIE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_RXTIE.
|
|
#define BF_SSI_SIER_RXTIE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_RXTIE) & BM_SSI_SIER_RXTIE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RXTIE field to a new value.
|
|
#define BW_SSI_SIER_RXTIE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_RXTIE) | BF_SSI_SIER_RXTIE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field CMDDUIE[17] (RW)
|
|
*
|
|
* Command Data Register Updated Interrupt Enable. Enable Bit. Controls whether the corresponding
|
|
* status bit in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_CMDDUIE (17) //!< Bit position for SSI_SIER_CMDDUIE.
|
|
#define BM_SSI_SIER_CMDDUIE (0x00020000) //!< Bit mask for SSI_SIER_CMDDUIE.
|
|
|
|
//! @brief Get value of SSI_SIER_CMDDUIE from a register value.
|
|
#define BG_SSI_SIER_CMDDUIE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_CMDDUIE) >> BP_SSI_SIER_CMDDUIE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_CMDDUIE.
|
|
#define BF_SSI_SIER_CMDDUIE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_CMDDUIE) & BM_SSI_SIER_CMDDUIE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CMDDUIE field to a new value.
|
|
#define BW_SSI_SIER_CMDDUIE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_CMDDUIE) | BF_SSI_SIER_CMDDUIE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field CMDAUIE[18] (RW)
|
|
*
|
|
* Command Address Register Updated Interrupt Enable. Enable Bit. Controls whether the corresponding
|
|
* status bit in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_CMDAUIE (18) //!< Bit position for SSI_SIER_CMDAUIE.
|
|
#define BM_SSI_SIER_CMDAUIE (0x00040000) //!< Bit mask for SSI_SIER_CMDAUIE.
|
|
|
|
//! @brief Get value of SSI_SIER_CMDAUIE from a register value.
|
|
#define BG_SSI_SIER_CMDAUIE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_CMDAUIE) >> BP_SSI_SIER_CMDAUIE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_CMDAUIE.
|
|
#define BF_SSI_SIER_CMDAUIE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_CMDAUIE) & BM_SSI_SIER_CMDAUIE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CMDAUIE field to a new value.
|
|
#define BW_SSI_SIER_CMDAUIE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_CMDAUIE) | BF_SSI_SIER_CMDAUIE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field TIE[19] (RW)
|
|
*
|
|
* Transmit Interrupt Enable. This control bit allows the SSI to issue transmitter data related
|
|
* interrupts to the Core. Refer to for a detailed description of this bit.
|
|
*
|
|
* Values:
|
|
* - 0 - SSI Transmitter Interrupt requests disabled.
|
|
* - 1 - SSI Transmitter Interrupt requests enabled.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_TIE (19) //!< Bit position for SSI_SIER_TIE.
|
|
#define BM_SSI_SIER_TIE (0x00080000) //!< Bit mask for SSI_SIER_TIE.
|
|
|
|
//! @brief Get value of SSI_SIER_TIE from a register value.
|
|
#define BG_SSI_SIER_TIE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_TIE) >> BP_SSI_SIER_TIE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_TIE.
|
|
#define BF_SSI_SIER_TIE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_TIE) & BM_SSI_SIER_TIE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TIE field to a new value.
|
|
#define BW_SSI_SIER_TIE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_TIE) | BF_SSI_SIER_TIE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field TDMAE[20] (RW)
|
|
*
|
|
* Transmit DMA Enable. This bit allows SSI to request for DMA transfers. When enabled, DMA requests
|
|
* are generated when any of the TFE0/1 bits in the SISR are set and if the corresponding TFEN bit
|
|
* is also set. If the corresponding FIFO is disabled, a DMA request is generated when the
|
|
* corresponding TDE bit is set.
|
|
*
|
|
* Values:
|
|
* - 0 - SSI Transmitter DMA requests disabled.
|
|
* - 1 - SSI Transmitter DMA requests enabled.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_TDMAE (20) //!< Bit position for SSI_SIER_TDMAE.
|
|
#define BM_SSI_SIER_TDMAE (0x00100000) //!< Bit mask for SSI_SIER_TDMAE.
|
|
|
|
//! @brief Get value of SSI_SIER_TDMAE from a register value.
|
|
#define BG_SSI_SIER_TDMAE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_TDMAE) >> BP_SSI_SIER_TDMAE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_TDMAE.
|
|
#define BF_SSI_SIER_TDMAE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_TDMAE) & BM_SSI_SIER_TDMAE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TDMAE field to a new value.
|
|
#define BW_SSI_SIER_TDMAE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_TDMAE) | BF_SSI_SIER_TDMAE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field RIE[21] (RW)
|
|
*
|
|
* Receive Interrupt Enable. This control bit allows the SSI to issue receiver related interrupts to
|
|
* the Core. Refer to for a detailed description of this bit.
|
|
*
|
|
* Values:
|
|
* - 0 - SSI Receiver Interrupt requests disabled.
|
|
* - 1 - SSI Receiver Interrupt requests enabled.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_RIE (21) //!< Bit position for SSI_SIER_RIE.
|
|
#define BM_SSI_SIER_RIE (0x00200000) //!< Bit mask for SSI_SIER_RIE.
|
|
|
|
//! @brief Get value of SSI_SIER_RIE from a register value.
|
|
#define BG_SSI_SIER_RIE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_RIE) >> BP_SSI_SIER_RIE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_RIE.
|
|
#define BF_SSI_SIER_RIE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_RIE) & BM_SSI_SIER_RIE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RIE field to a new value.
|
|
#define BW_SSI_SIER_RIE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_RIE) | BF_SSI_SIER_RIE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field RDMAE[22] (RW)
|
|
*
|
|
* Receive DMA Enable. This bit allows SSI to request for DMA transfers. When enabled, DMA requests
|
|
* are generated when any of the RFF0/1 bits in the SISR are set and if the corresponding RFEN bit
|
|
* is also set. If the corresponding FIFO is disabled, a DMA request is generated when the
|
|
* corresponding RDR bit is set.
|
|
*
|
|
* Values:
|
|
* - 0 - SSI Receiver DMA requests disabled.
|
|
* - 1 - SSI Receiver DMA requests enabled.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_RDMAE (22) //!< Bit position for SSI_SIER_RDMAE.
|
|
#define BM_SSI_SIER_RDMAE (0x00400000) //!< Bit mask for SSI_SIER_RDMAE.
|
|
|
|
//! @brief Get value of SSI_SIER_RDMAE from a register value.
|
|
#define BG_SSI_SIER_RDMAE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_RDMAE) >> BP_SSI_SIER_RDMAE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_RDMAE.
|
|
#define BF_SSI_SIER_RDMAE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_RDMAE) & BM_SSI_SIER_RDMAE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RDMAE field to a new value.
|
|
#define BW_SSI_SIER_RDMAE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_RDMAE) | BF_SSI_SIER_RDMAE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field TFRCIE[23] (RW)
|
|
*
|
|
* Transmit Frame Complete Interrupt Enable. Enable Bit. Controls whether the corresponding status
|
|
* bit in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_TFRCIE (23) //!< Bit position for SSI_SIER_TFRCIE.
|
|
#define BM_SSI_SIER_TFRCIE (0x00800000) //!< Bit mask for SSI_SIER_TFRCIE.
|
|
|
|
//! @brief Get value of SSI_SIER_TFRCIE from a register value.
|
|
#define BG_SSI_SIER_TFRCIE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_TFRCIE) >> BP_SSI_SIER_TFRCIE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_TFRCIE.
|
|
#define BF_SSI_SIER_TFRCIE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_TFRCIE) & BM_SSI_SIER_TFRCIE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TFRCIE field to a new value.
|
|
#define BW_SSI_SIER_TFRCIE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_TFRCIE) | BF_SSI_SIER_TFRCIE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SIER, field RFRCIE[24] (RW)
|
|
*
|
|
* Receive Frame Complete Interrupt Enable. Enable Bit. Controls whether the corresponding status
|
|
* bit in SISR can issue an interrupt to the core or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Corresponding status bit cannot issue interrupt.
|
|
* - 1 - Corresponding status bit can issue interrupt.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SIER_RFRCIE (24) //!< Bit position for SSI_SIER_RFRCIE.
|
|
#define BM_SSI_SIER_RFRCIE (0x01000000) //!< Bit mask for SSI_SIER_RFRCIE.
|
|
|
|
//! @brief Get value of SSI_SIER_RFRCIE from a register value.
|
|
#define BG_SSI_SIER_RFRCIE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SIER_RFRCIE) >> BP_SSI_SIER_RFRCIE)
|
|
|
|
//! @brief Format value for bitfield SSI_SIER_RFRCIE.
|
|
#define BF_SSI_SIER_RFRCIE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SIER_RFRCIE) & BM_SSI_SIER_RFRCIE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RFRCIE field to a new value.
|
|
#define BW_SSI_SIER_RFRCIE(x, v) (HW_SSI_SIER_WR(x, (HW_SSI_SIER_RD(x) & ~BM_SSI_SIER_RFRCIE) | BF_SSI_SIER_RFRCIE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_STCR - SSI Transmit Configuration Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_STCR - SSI Transmit Configuration Register (RW)
|
|
*
|
|
* Reset value: 0x00000200
|
|
*
|
|
* The SSI Transmit Configuration Register (SSI_STCR) is a read/write control register used to
|
|
* direct the transmit operation of the STCR controls the direction of the bit clock and frame sync
|
|
* ports, STCK and STFS. Interrupt enable bit for the transmit sections is provided in this control
|
|
* register. The Power-on reset clears all SSI_STCR bits. However, SSI reset does not affect the
|
|
* SSI_STCR bits. The SSI_STCR bits are described in the following paragraphs. See the Programmable
|
|
* Registers section for the programming model of the SSI. The SSI Control Register (SSI_SCR) must
|
|
* first be set to enable interrupts. Next, the SSI interrupt bit in the Interrupt Enable Register
|
|
* (SSI_SIER) must be set to enable the interrupt. Finally, the interrupt can be enabled from within
|
|
* the
|
|
*/
|
|
typedef union _hw_ssi_stcr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_stcr_bitfields
|
|
{
|
|
unsigned TEFS : 1; //!< [0] Transmit Early Frame Sync.
|
|
unsigned TFSL : 1; //!< [1] Transmit Frame Sync Length.
|
|
unsigned TFSI : 1; //!< [2] Transmit Frame Sync Invert.
|
|
unsigned TSCKP : 1; //!< [3] Transmit Clock Polarity.
|
|
unsigned TSHFD : 1; //!< [4] Transmit Shift Direction.
|
|
unsigned TXDIR : 1; //!< [5] Transmit Clock Direction.
|
|
unsigned TFDIR : 1; //!< [6] Transmit Frame Direction.
|
|
unsigned TFEN0 : 1; //!< [7] Transmit FIFO Enable 0.
|
|
unsigned TFEN1 : 1; //!< [8] Transmit FIFO Enable 1.
|
|
unsigned TXBIT0 : 1; //!< [9] Transmit Bit 0.
|
|
unsigned RESERVED0 : 22; //!< [31:10] Reserved
|
|
} B;
|
|
} hw_ssi_stcr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_STCR register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_STCR_ADDR(x) (REGS_SSI_BASE(x) + 0x1c)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_STCR(x) (*(volatile hw_ssi_stcr_t *) HW_SSI_STCR_ADDR(x))
|
|
#define HW_SSI_STCR_RD(x) (HW_SSI_STCR(x).U)
|
|
#define HW_SSI_STCR_WR(x, v) (HW_SSI_STCR(x).U = (v))
|
|
#define HW_SSI_STCR_SET(x, v) (HW_SSI_STCR_WR(x, HW_SSI_STCR_RD(x) | (v)))
|
|
#define HW_SSI_STCR_CLR(x, v) (HW_SSI_STCR_WR(x, HW_SSI_STCR_RD(x) & ~(v)))
|
|
#define HW_SSI_STCR_TOG(x, v) (HW_SSI_STCR_WR(x, HW_SSI_STCR_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_STCR bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_STCR, field TEFS[0] (RW)
|
|
*
|
|
* Transmit Early Frame Sync. This bit controls when the frame sync is initiated for the transmit
|
|
* section. The frame sync signal is deasserted after one bit-for-bit length frame sync and after
|
|
* one word-for-word length frame sync. In case of synchronous operation, the frame sync can also be
|
|
* initiated on receiving the first bit of data.
|
|
*
|
|
* Values:
|
|
* - FIRST_BIT = 0 - Transmit frame sync initiated as the first bit of data is transmitted.
|
|
* - ONE_BIT_BEFORE = 1 - Transmit frame sync is initiated one bit before the data is transmitted.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STCR_TEFS (0) //!< Bit position for SSI_STCR_TEFS.
|
|
#define BM_SSI_STCR_TEFS (0x00000001) //!< Bit mask for SSI_STCR_TEFS.
|
|
|
|
//! @brief Get value of SSI_STCR_TEFS from a register value.
|
|
#define BG_SSI_STCR_TEFS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STCR_TEFS) >> BP_SSI_STCR_TEFS)
|
|
|
|
//! @brief Format value for bitfield SSI_STCR_TEFS.
|
|
#define BF_SSI_STCR_TEFS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STCR_TEFS) & BM_SSI_STCR_TEFS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TEFS field to a new value.
|
|
#define BW_SSI_STCR_TEFS(x, v) (HW_SSI_STCR_WR(x, (HW_SSI_STCR_RD(x) & ~BM_SSI_STCR_TEFS) | BF_SSI_STCR_TEFS(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_STCR_TEFS_V(v) BF_SSI_STCR_TEFS(BV_SSI_STCR_TEFS__##v)
|
|
|
|
#define BV_SSI_STCR_TEFS__FIRST_BIT (0x0) //!< Transmit frame sync initiated as the first bit of data is transmitted.
|
|
#define BV_SSI_STCR_TEFS__ONE_BIT_BEFORE (0x1) //!< Transmit frame sync is initiated one bit before the data is transmitted.
|
|
//@}
|
|
|
|
/*! @name Register SSI_STCR, field TFSL[1] (RW)
|
|
*
|
|
* Transmit Frame Sync Length. This bit controls the length of the frame sync signal to be generated
|
|
* or recognized for the transmit section. The length of a word-long frame sync is same as the
|
|
* length of the data word selected by WL[3:0].
|
|
*
|
|
* Values:
|
|
* - ONE_WORD = 0 - Transmit frame sync is one-word long.
|
|
* - ONE_CLOCK_BIT = 1 - Transmit frame sync is one-clock-bit long.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STCR_TFSL (1) //!< Bit position for SSI_STCR_TFSL.
|
|
#define BM_SSI_STCR_TFSL (0x00000002) //!< Bit mask for SSI_STCR_TFSL.
|
|
|
|
//! @brief Get value of SSI_STCR_TFSL from a register value.
|
|
#define BG_SSI_STCR_TFSL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STCR_TFSL) >> BP_SSI_STCR_TFSL)
|
|
|
|
//! @brief Format value for bitfield SSI_STCR_TFSL.
|
|
#define BF_SSI_STCR_TFSL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STCR_TFSL) & BM_SSI_STCR_TFSL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TFSL field to a new value.
|
|
#define BW_SSI_STCR_TFSL(x, v) (HW_SSI_STCR_WR(x, (HW_SSI_STCR_RD(x) & ~BM_SSI_STCR_TFSL) | BF_SSI_STCR_TFSL(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_STCR_TFSL_V(v) BF_SSI_STCR_TFSL(BV_SSI_STCR_TFSL__##v)
|
|
|
|
#define BV_SSI_STCR_TFSL__ONE_WORD (0x0) //!< Transmit frame sync is one-word long.
|
|
#define BV_SSI_STCR_TFSL__ONE_CLOCK_BIT (0x1) //!< Transmit frame sync is one-clock-bit long.
|
|
//@}
|
|
|
|
/*! @name Register SSI_STCR, field TFSI[2] (RW)
|
|
*
|
|
* Transmit Frame Sync Invert. This bit controls the active state of the frame sync I/O signal for
|
|
* the transmit section of SSI.
|
|
*
|
|
* Values:
|
|
* - ACTIVE_HIGH = 0 - Transmit frame sync is active high.
|
|
* - ACTIVE_LOW = 1 - Transmit frame sync is active low.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STCR_TFSI (2) //!< Bit position for SSI_STCR_TFSI.
|
|
#define BM_SSI_STCR_TFSI (0x00000004) //!< Bit mask for SSI_STCR_TFSI.
|
|
|
|
//! @brief Get value of SSI_STCR_TFSI from a register value.
|
|
#define BG_SSI_STCR_TFSI(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STCR_TFSI) >> BP_SSI_STCR_TFSI)
|
|
|
|
//! @brief Format value for bitfield SSI_STCR_TFSI.
|
|
#define BF_SSI_STCR_TFSI(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STCR_TFSI) & BM_SSI_STCR_TFSI)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TFSI field to a new value.
|
|
#define BW_SSI_STCR_TFSI(x, v) (HW_SSI_STCR_WR(x, (HW_SSI_STCR_RD(x) & ~BM_SSI_STCR_TFSI) | BF_SSI_STCR_TFSI(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_STCR_TFSI_V(v) BF_SSI_STCR_TFSI(BV_SSI_STCR_TFSI__##v)
|
|
|
|
#define BV_SSI_STCR_TFSI__ACTIVE_HIGH (0x0) //!< Transmit frame sync is active high.
|
|
#define BV_SSI_STCR_TFSI__ACTIVE_LOW (0x1) //!< Transmit frame sync is active low.
|
|
//@}
|
|
|
|
/*! @name Register SSI_STCR, field TSCKP[3] (RW)
|
|
*
|
|
* Transmit Clock Polarity. This bit controls which bit clock edge is used to clock out data for the
|
|
* transmit section. Note: TSCKP is 0 CLK_IST = 0; TSCKP is 1CLK_IST = 1
|
|
*
|
|
* Values:
|
|
* - RISING_EDGE = 0 - Data clocked out on rising edge of bit clock.
|
|
* - FALLING_EDGE = 1 - Data clocked out on falling edge of bit clock.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STCR_TSCKP (3) //!< Bit position for SSI_STCR_TSCKP.
|
|
#define BM_SSI_STCR_TSCKP (0x00000008) //!< Bit mask for SSI_STCR_TSCKP.
|
|
|
|
//! @brief Get value of SSI_STCR_TSCKP from a register value.
|
|
#define BG_SSI_STCR_TSCKP(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STCR_TSCKP) >> BP_SSI_STCR_TSCKP)
|
|
|
|
//! @brief Format value for bitfield SSI_STCR_TSCKP.
|
|
#define BF_SSI_STCR_TSCKP(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STCR_TSCKP) & BM_SSI_STCR_TSCKP)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TSCKP field to a new value.
|
|
#define BW_SSI_STCR_TSCKP(x, v) (HW_SSI_STCR_WR(x, (HW_SSI_STCR_RD(x) & ~BM_SSI_STCR_TSCKP) | BF_SSI_STCR_TSCKP(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_STCR_TSCKP_V(v) BF_SSI_STCR_TSCKP(BV_SSI_STCR_TSCKP__##v)
|
|
|
|
#define BV_SSI_STCR_TSCKP__RISING_EDGE (0x0) //!< Data clocked out on rising edge of bit clock.
|
|
#define BV_SSI_STCR_TSCKP__FALLING_EDGE (0x1) //!< Data clocked out on falling edge of bit clock.
|
|
//@}
|
|
|
|
/*! @name Register SSI_STCR, field TSHFD[4] (RW)
|
|
*
|
|
* Transmit Shift Direction. This bit controls whether the MSB or LSB will be transmitted first in a
|
|
* sample. The CODEC device labels the MSB as bit 0, whereas the Core labels the LSB as bit 0.
|
|
* Therefore, when using a standard CODEC, Core MSB (CODEC LSB) is shifted in first (TSHFD cleared).
|
|
*
|
|
* Values:
|
|
* - MSB_FIRST = 0 - Data transmitted MSB first.
|
|
* - LSB_FIRST = 1 - Data transmitted LSB first.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STCR_TSHFD (4) //!< Bit position for SSI_STCR_TSHFD.
|
|
#define BM_SSI_STCR_TSHFD (0x00000010) //!< Bit mask for SSI_STCR_TSHFD.
|
|
|
|
//! @brief Get value of SSI_STCR_TSHFD from a register value.
|
|
#define BG_SSI_STCR_TSHFD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STCR_TSHFD) >> BP_SSI_STCR_TSHFD)
|
|
|
|
//! @brief Format value for bitfield SSI_STCR_TSHFD.
|
|
#define BF_SSI_STCR_TSHFD(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STCR_TSHFD) & BM_SSI_STCR_TSHFD)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TSHFD field to a new value.
|
|
#define BW_SSI_STCR_TSHFD(x, v) (HW_SSI_STCR_WR(x, (HW_SSI_STCR_RD(x) & ~BM_SSI_STCR_TSHFD) | BF_SSI_STCR_TSHFD(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_STCR_TSHFD_V(v) BF_SSI_STCR_TSHFD(BV_SSI_STCR_TSHFD__##v)
|
|
|
|
#define BV_SSI_STCR_TSHFD__MSB_FIRST (0x0) //!< Data transmitted MSB first.
|
|
#define BV_SSI_STCR_TSHFD__LSB_FIRST (0x1) //!< Data transmitted LSB first.
|
|
//@}
|
|
|
|
/*! @name Register SSI_STCR, field TXDIR[5] (RW)
|
|
*
|
|
* Transmit Clock Direction. This bit controls the direction and source of the clock signal used to
|
|
* clock the TXSR. Internally generated clock is output through the STCK port. External clock is
|
|
* taken from this port. Refer to for details of clock pin configurations.
|
|
*
|
|
* Values:
|
|
* - EXTERNAL = 0 - Transmit Clock is external.
|
|
* - INTERNAL = 1 - Transmit Clock generated internally.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STCR_TXDIR (5) //!< Bit position for SSI_STCR_TXDIR.
|
|
#define BM_SSI_STCR_TXDIR (0x00000020) //!< Bit mask for SSI_STCR_TXDIR.
|
|
|
|
//! @brief Get value of SSI_STCR_TXDIR from a register value.
|
|
#define BG_SSI_STCR_TXDIR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STCR_TXDIR) >> BP_SSI_STCR_TXDIR)
|
|
|
|
//! @brief Format value for bitfield SSI_STCR_TXDIR.
|
|
#define BF_SSI_STCR_TXDIR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STCR_TXDIR) & BM_SSI_STCR_TXDIR)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TXDIR field to a new value.
|
|
#define BW_SSI_STCR_TXDIR(x, v) (HW_SSI_STCR_WR(x, (HW_SSI_STCR_RD(x) & ~BM_SSI_STCR_TXDIR) | BF_SSI_STCR_TXDIR(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_STCR_TXDIR_V(v) BF_SSI_STCR_TXDIR(BV_SSI_STCR_TXDIR__##v)
|
|
|
|
#define BV_SSI_STCR_TXDIR__EXTERNAL (0x0) //!< Transmit Clock is external.
|
|
#define BV_SSI_STCR_TXDIR__INTERNAL (0x1) //!< Transmit Clock generated internally.
|
|
//@}
|
|
|
|
/*! @name Register SSI_STCR, field TFDIR[6] (RW)
|
|
*
|
|
* Transmit Frame Direction. This bit controls the direction and source of the transmit frame sync
|
|
* signal. Internally generated frame sync signal is sent out through the STFS port and external
|
|
* frame sync is taken from the same port.
|
|
*
|
|
* Values:
|
|
* - EXTERNAL = 0 - Frame Sync is external.
|
|
* - INTERNAL = 1 - Frame Sync generated internally.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STCR_TFDIR (6) //!< Bit position for SSI_STCR_TFDIR.
|
|
#define BM_SSI_STCR_TFDIR (0x00000040) //!< Bit mask for SSI_STCR_TFDIR.
|
|
|
|
//! @brief Get value of SSI_STCR_TFDIR from a register value.
|
|
#define BG_SSI_STCR_TFDIR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STCR_TFDIR) >> BP_SSI_STCR_TFDIR)
|
|
|
|
//! @brief Format value for bitfield SSI_STCR_TFDIR.
|
|
#define BF_SSI_STCR_TFDIR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STCR_TFDIR) & BM_SSI_STCR_TFDIR)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TFDIR field to a new value.
|
|
#define BW_SSI_STCR_TFDIR(x, v) (HW_SSI_STCR_WR(x, (HW_SSI_STCR_RD(x) & ~BM_SSI_STCR_TFDIR) | BF_SSI_STCR_TFDIR(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_STCR_TFDIR_V(v) BF_SSI_STCR_TFDIR(BV_SSI_STCR_TFDIR__##v)
|
|
|
|
#define BV_SSI_STCR_TFDIR__EXTERNAL (0x0) //!< Frame Sync is external.
|
|
#define BV_SSI_STCR_TFDIR__INTERNAL (0x1) //!< Frame Sync generated internally.
|
|
//@}
|
|
|
|
/*! @name Register SSI_STCR, field TFEN0[7] (RW)
|
|
*
|
|
* Transmit FIFO Enable 0. This bit enables transmit FIFO 0. When enabled, the FIFO allows 15
|
|
* samples to be transmitted by the SSI per channel (a 9th sample can be shifting out) before TDE0
|
|
* bit is set. When the FIFO is disabled, an interrupt is generated when a single sample is
|
|
* transferred to the transmit shift register (provided the interrupt is enabled).
|
|
*
|
|
* Values:
|
|
* - 0 - Transmit FIFO 0 disabled.
|
|
* - 1 - Transmit FIFO 0 enabled.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STCR_TFEN0 (7) //!< Bit position for SSI_STCR_TFEN0.
|
|
#define BM_SSI_STCR_TFEN0 (0x00000080) //!< Bit mask for SSI_STCR_TFEN0.
|
|
|
|
//! @brief Get value of SSI_STCR_TFEN0 from a register value.
|
|
#define BG_SSI_STCR_TFEN0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STCR_TFEN0) >> BP_SSI_STCR_TFEN0)
|
|
|
|
//! @brief Format value for bitfield SSI_STCR_TFEN0.
|
|
#define BF_SSI_STCR_TFEN0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STCR_TFEN0) & BM_SSI_STCR_TFEN0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TFEN0 field to a new value.
|
|
#define BW_SSI_STCR_TFEN0(x, v) (HW_SSI_STCR_WR(x, (HW_SSI_STCR_RD(x) & ~BM_SSI_STCR_TFEN0) | BF_SSI_STCR_TFEN0(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_STCR, field TFEN1[8] (RW)
|
|
*
|
|
* Transmit FIFO Enable 1. This bit enables transmit FIFO 1. When enabled, the FIFO allows 15
|
|
* samples to be transmitted by the SSI (per channel) (a 9th sample can be shifting out) before TDE1
|
|
* bit is set. When the FIFO is disabled, an interrupt is generated when a single sample is
|
|
* transferred to the transmit shift register (provided the interrupt is enabled).
|
|
*
|
|
* Values:
|
|
* - 0 - Transmit FIFO 1 disabled.
|
|
* - 1 - Transmit FIFO 1 enabled.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STCR_TFEN1 (8) //!< Bit position for SSI_STCR_TFEN1.
|
|
#define BM_SSI_STCR_TFEN1 (0x00000100) //!< Bit mask for SSI_STCR_TFEN1.
|
|
|
|
//! @brief Get value of SSI_STCR_TFEN1 from a register value.
|
|
#define BG_SSI_STCR_TFEN1(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STCR_TFEN1) >> BP_SSI_STCR_TFEN1)
|
|
|
|
//! @brief Format value for bitfield SSI_STCR_TFEN1.
|
|
#define BF_SSI_STCR_TFEN1(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STCR_TFEN1) & BM_SSI_STCR_TFEN1)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TFEN1 field to a new value.
|
|
#define BW_SSI_STCR_TFEN1(x, v) (HW_SSI_STCR_WR(x, (HW_SSI_STCR_RD(x) & ~BM_SSI_STCR_TFEN1) | BF_SSI_STCR_TFEN1(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_STCR, field TXBIT0[9] (RW)
|
|
*
|
|
* Transmit Bit 0. This control bit allows SSI to transmit the data word from bit position 0 or
|
|
* 15/31 in the transmit shift register. The shifting data direction can be MSB or LSB first,
|
|
* controlled by the TSHFD bit.
|
|
*
|
|
* Values:
|
|
* - MSB_ALIGNED = 0 - Shifting with respect to bit 31 (if word length = 16, 18, 20, 22 or 24) or bit 15 (if word length =
|
|
* 8, 10 or 12) of transmit shift register (MSB aligned).
|
|
* - LSB_ALIGNED = 1 - Shifting with respect to bit 0 of transmit shift register (LSB aligned).
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STCR_TXBIT0 (9) //!< Bit position for SSI_STCR_TXBIT0.
|
|
#define BM_SSI_STCR_TXBIT0 (0x00000200) //!< Bit mask for SSI_STCR_TXBIT0.
|
|
|
|
//! @brief Get value of SSI_STCR_TXBIT0 from a register value.
|
|
#define BG_SSI_STCR_TXBIT0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STCR_TXBIT0) >> BP_SSI_STCR_TXBIT0)
|
|
|
|
//! @brief Format value for bitfield SSI_STCR_TXBIT0.
|
|
#define BF_SSI_STCR_TXBIT0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STCR_TXBIT0) & BM_SSI_STCR_TXBIT0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TXBIT0 field to a new value.
|
|
#define BW_SSI_STCR_TXBIT0(x, v) (HW_SSI_STCR_WR(x, (HW_SSI_STCR_RD(x) & ~BM_SSI_STCR_TXBIT0) | BF_SSI_STCR_TXBIT0(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_STCR_TXBIT0_V(v) BF_SSI_STCR_TXBIT0(BV_SSI_STCR_TXBIT0__##v)
|
|
|
|
#define BV_SSI_STCR_TXBIT0__MSB_ALIGNED (0x0) //!< Shifting with respect to bit 31 (if word length = 16, 18, 20, 22 or 24) or bit 15 (if word length = 8, 10 or 12) of transmit shift register (MSB aligned).
|
|
#define BV_SSI_STCR_TXBIT0__LSB_ALIGNED (0x1) //!< Shifting with respect to bit 0 of transmit shift register (LSB aligned).
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_SRCR - SSI Receive Configuration Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_SRCR - SSI Receive Configuration Register (RW)
|
|
*
|
|
* Reset value: 0x00000200
|
|
*
|
|
* The SSI Receive Configuration Register (SSI_SRCR) is a read/write control register used to direct
|
|
* the receive operation of the SSI. SSI.SRCR controls the direction of the bit clock and frame sync
|
|
* ports, SRCK and SRFS. Interrupt enable bit for the transmit sections is provided in this control
|
|
* register. The Power-on reset clears all SSI_SRCR bits. However, SSI reset does not affect the
|
|
* SSI_SRCR bits.
|
|
*/
|
|
typedef union _hw_ssi_srcr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_srcr_bitfields
|
|
{
|
|
unsigned REFS : 1; //!< [0] Receive Early Frame Sync.
|
|
unsigned RFSL : 1; //!< [1] Receive Frame Sync Length.
|
|
unsigned RFSI : 1; //!< [2] Receive Frame Sync Invert.
|
|
unsigned RSCKP : 1; //!< [3] Receive Clock Polarity.
|
|
unsigned RSHFD : 1; //!< [4] Receive Shift Direction.
|
|
unsigned RXDIR : 1; //!< [5] Receive Clock Direction.
|
|
unsigned RFDIR : 1; //!< [6] Receive Frame Direction.
|
|
unsigned RFEN0 : 1; //!< [7] Receive FIFO Enable 0.
|
|
unsigned RFEN1 : 1; //!< [8] Receive FIFO Enable 1.
|
|
unsigned RXBIT0 : 1; //!< [9] Receive Bit 0.
|
|
unsigned RXEXT : 1; //!< [10] Receive Data Extension.
|
|
unsigned RESERVED0 : 21; //!< [31:11] Reserved
|
|
} B;
|
|
} hw_ssi_srcr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_SRCR register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_SRCR_ADDR(x) (REGS_SSI_BASE(x) + 0x20)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_SRCR(x) (*(volatile hw_ssi_srcr_t *) HW_SSI_SRCR_ADDR(x))
|
|
#define HW_SSI_SRCR_RD(x) (HW_SSI_SRCR(x).U)
|
|
#define HW_SSI_SRCR_WR(x, v) (HW_SSI_SRCR(x).U = (v))
|
|
#define HW_SSI_SRCR_SET(x, v) (HW_SSI_SRCR_WR(x, HW_SSI_SRCR_RD(x) | (v)))
|
|
#define HW_SSI_SRCR_CLR(x, v) (HW_SSI_SRCR_WR(x, HW_SSI_SRCR_RD(x) & ~(v)))
|
|
#define HW_SSI_SRCR_TOG(x, v) (HW_SSI_SRCR_WR(x, HW_SSI_SRCR_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_SRCR bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_SRCR, field REFS[0] (RW)
|
|
*
|
|
* Receive Early Frame Sync. This bit controls when the frame sync is initiated for the receive
|
|
* section. The frame sync is disabled after one bit-for-bit length frame sync and after one word-
|
|
* for-word length frame sync.
|
|
*
|
|
* Values:
|
|
* - FIRST_BIT = 0 - Receive frame sync initiated as the first bit of data is received.
|
|
* - ONE_BIT_BEFORE = 1 - Receive frame sync is initiated one bit before the data is received.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRCR_REFS (0) //!< Bit position for SSI_SRCR_REFS.
|
|
#define BM_SSI_SRCR_REFS (0x00000001) //!< Bit mask for SSI_SRCR_REFS.
|
|
|
|
//! @brief Get value of SSI_SRCR_REFS from a register value.
|
|
#define BG_SSI_SRCR_REFS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRCR_REFS) >> BP_SSI_SRCR_REFS)
|
|
|
|
//! @brief Format value for bitfield SSI_SRCR_REFS.
|
|
#define BF_SSI_SRCR_REFS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRCR_REFS) & BM_SSI_SRCR_REFS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the REFS field to a new value.
|
|
#define BW_SSI_SRCR_REFS(x, v) (HW_SSI_SRCR_WR(x, (HW_SSI_SRCR_RD(x) & ~BM_SSI_SRCR_REFS) | BF_SSI_SRCR_REFS(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SRCR_REFS_V(v) BF_SSI_SRCR_REFS(BV_SSI_SRCR_REFS__##v)
|
|
|
|
#define BV_SSI_SRCR_REFS__FIRST_BIT (0x0) //!< Receive frame sync initiated as the first bit of data is received.
|
|
#define BV_SSI_SRCR_REFS__ONE_BIT_BEFORE (0x1) //!< Receive frame sync is initiated one bit before the data is received.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SRCR, field RFSL[1] (RW)
|
|
*
|
|
* Receive Frame Sync Length. This bit controls the length of the frame sync signal to be generated
|
|
* or recognized for the receive section. The length of a word-long frame sync is same as the length
|
|
* of the data word selected by WL[3:0].
|
|
*
|
|
* Values:
|
|
* - ONE_WORD = 0 - Receive frame sync is one-word long.
|
|
* - ONE_CLOCK_BIT = 1 - Receive frame sync is one-clock-bit long.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRCR_RFSL (1) //!< Bit position for SSI_SRCR_RFSL.
|
|
#define BM_SSI_SRCR_RFSL (0x00000002) //!< Bit mask for SSI_SRCR_RFSL.
|
|
|
|
//! @brief Get value of SSI_SRCR_RFSL from a register value.
|
|
#define BG_SSI_SRCR_RFSL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRCR_RFSL) >> BP_SSI_SRCR_RFSL)
|
|
|
|
//! @brief Format value for bitfield SSI_SRCR_RFSL.
|
|
#define BF_SSI_SRCR_RFSL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRCR_RFSL) & BM_SSI_SRCR_RFSL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RFSL field to a new value.
|
|
#define BW_SSI_SRCR_RFSL(x, v) (HW_SSI_SRCR_WR(x, (HW_SSI_SRCR_RD(x) & ~BM_SSI_SRCR_RFSL) | BF_SSI_SRCR_RFSL(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SRCR_RFSL_V(v) BF_SSI_SRCR_RFSL(BV_SSI_SRCR_RFSL__##v)
|
|
|
|
#define BV_SSI_SRCR_RFSL__ONE_WORD (0x0) //!< Receive frame sync is one-word long.
|
|
#define BV_SSI_SRCR_RFSL__ONE_CLOCK_BIT (0x1) //!< Receive frame sync is one-clock-bit long.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SRCR, field RFSI[2] (RW)
|
|
*
|
|
* Receive Frame Sync Invert. This bit controls the active state of the frame sync I/O signal for
|
|
* the receive section of SSI.
|
|
*
|
|
* Values:
|
|
* - ACTIVE_HIGH = 0 - Receive frame sync is active high.
|
|
* - ACTIVE_LOW = 1 - Receive frame sync is active low.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRCR_RFSI (2) //!< Bit position for SSI_SRCR_RFSI.
|
|
#define BM_SSI_SRCR_RFSI (0x00000004) //!< Bit mask for SSI_SRCR_RFSI.
|
|
|
|
//! @brief Get value of SSI_SRCR_RFSI from a register value.
|
|
#define BG_SSI_SRCR_RFSI(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRCR_RFSI) >> BP_SSI_SRCR_RFSI)
|
|
|
|
//! @brief Format value for bitfield SSI_SRCR_RFSI.
|
|
#define BF_SSI_SRCR_RFSI(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRCR_RFSI) & BM_SSI_SRCR_RFSI)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RFSI field to a new value.
|
|
#define BW_SSI_SRCR_RFSI(x, v) (HW_SSI_SRCR_WR(x, (HW_SSI_SRCR_RD(x) & ~BM_SSI_SRCR_RFSI) | BF_SSI_SRCR_RFSI(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SRCR_RFSI_V(v) BF_SSI_SRCR_RFSI(BV_SSI_SRCR_RFSI__##v)
|
|
|
|
#define BV_SSI_SRCR_RFSI__ACTIVE_HIGH (0x0) //!< Receive frame sync is active high.
|
|
#define BV_SSI_SRCR_RFSI__ACTIVE_LOW (0x1) //!< Receive frame sync is active low.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SRCR, field RSCKP[3] (RW)
|
|
*
|
|
* Receive Clock Polarity. This bit controls which bit clock edge is used to latch in data for the
|
|
* receive section.
|
|
*
|
|
* Values:
|
|
* - FALLING_EDGE = 0 - Data latched on falling edge of bit clock.
|
|
* - RISING_EDGE = 1 - Data latched on rising edge of bit clock.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRCR_RSCKP (3) //!< Bit position for SSI_SRCR_RSCKP.
|
|
#define BM_SSI_SRCR_RSCKP (0x00000008) //!< Bit mask for SSI_SRCR_RSCKP.
|
|
|
|
//! @brief Get value of SSI_SRCR_RSCKP from a register value.
|
|
#define BG_SSI_SRCR_RSCKP(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRCR_RSCKP) >> BP_SSI_SRCR_RSCKP)
|
|
|
|
//! @brief Format value for bitfield SSI_SRCR_RSCKP.
|
|
#define BF_SSI_SRCR_RSCKP(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRCR_RSCKP) & BM_SSI_SRCR_RSCKP)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RSCKP field to a new value.
|
|
#define BW_SSI_SRCR_RSCKP(x, v) (HW_SSI_SRCR_WR(x, (HW_SSI_SRCR_RD(x) & ~BM_SSI_SRCR_RSCKP) | BF_SSI_SRCR_RSCKP(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SRCR_RSCKP_V(v) BF_SSI_SRCR_RSCKP(BV_SSI_SRCR_RSCKP__##v)
|
|
|
|
#define BV_SSI_SRCR_RSCKP__FALLING_EDGE (0x0) //!< Data latched on falling edge of bit clock.
|
|
#define BV_SSI_SRCR_RSCKP__RISING_EDGE (0x1) //!< Data latched on rising edge of bit clock.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SRCR, field RSHFD[4] (RW)
|
|
*
|
|
* Receive Shift Direction. This bit controls whether the MSB or LSB will be received first in a
|
|
* sample. The CODEC device labels the MSB as bit 0, whereas the Core labels the LSB as bit 0.
|
|
* Therefore, when using a standard CODEC, Core MSB (CODEC LSB) is shifted in first (RSHFD cleared).
|
|
*
|
|
* Values:
|
|
* - MSB_FIRST = 0 - Data received MSB first.
|
|
* - LSB_FIRST = 1 - Data received LSB first.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRCR_RSHFD (4) //!< Bit position for SSI_SRCR_RSHFD.
|
|
#define BM_SSI_SRCR_RSHFD (0x00000010) //!< Bit mask for SSI_SRCR_RSHFD.
|
|
|
|
//! @brief Get value of SSI_SRCR_RSHFD from a register value.
|
|
#define BG_SSI_SRCR_RSHFD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRCR_RSHFD) >> BP_SSI_SRCR_RSHFD)
|
|
|
|
//! @brief Format value for bitfield SSI_SRCR_RSHFD.
|
|
#define BF_SSI_SRCR_RSHFD(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRCR_RSHFD) & BM_SSI_SRCR_RSHFD)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RSHFD field to a new value.
|
|
#define BW_SSI_SRCR_RSHFD(x, v) (HW_SSI_SRCR_WR(x, (HW_SSI_SRCR_RD(x) & ~BM_SSI_SRCR_RSHFD) | BF_SSI_SRCR_RSHFD(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SRCR_RSHFD_V(v) BF_SSI_SRCR_RSHFD(BV_SSI_SRCR_RSHFD__##v)
|
|
|
|
#define BV_SSI_SRCR_RSHFD__MSB_FIRST (0x0) //!< Data received MSB first.
|
|
#define BV_SSI_SRCR_RSHFD__LSB_FIRST (0x1) //!< Data received LSB first.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SRCR, field RXDIR[5] (RW)
|
|
*
|
|
* Receive Clock Direction. This bit controls the direction and source of the clock signal used to
|
|
* clock the RXSR. Internally generated clock is output through the SRCK port. External clock is
|
|
* taken from this port. Refer to for details on clock pin configurations.
|
|
*
|
|
* Values:
|
|
* - EXTERNAL = 0 - Receive Clock is external.
|
|
* - INTERNAL = 1 - Receive Clock generated internally.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRCR_RXDIR (5) //!< Bit position for SSI_SRCR_RXDIR.
|
|
#define BM_SSI_SRCR_RXDIR (0x00000020) //!< Bit mask for SSI_SRCR_RXDIR.
|
|
|
|
//! @brief Get value of SSI_SRCR_RXDIR from a register value.
|
|
#define BG_SSI_SRCR_RXDIR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRCR_RXDIR) >> BP_SSI_SRCR_RXDIR)
|
|
|
|
//! @brief Format value for bitfield SSI_SRCR_RXDIR.
|
|
#define BF_SSI_SRCR_RXDIR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRCR_RXDIR) & BM_SSI_SRCR_RXDIR)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RXDIR field to a new value.
|
|
#define BW_SSI_SRCR_RXDIR(x, v) (HW_SSI_SRCR_WR(x, (HW_SSI_SRCR_RD(x) & ~BM_SSI_SRCR_RXDIR) | BF_SSI_SRCR_RXDIR(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SRCR_RXDIR_V(v) BF_SSI_SRCR_RXDIR(BV_SSI_SRCR_RXDIR__##v)
|
|
|
|
#define BV_SSI_SRCR_RXDIR__EXTERNAL (0x0) //!< Receive Clock is external.
|
|
#define BV_SSI_SRCR_RXDIR__INTERNAL (0x1) //!< Receive Clock generated internally.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SRCR, field RFDIR[6] (RW)
|
|
*
|
|
* Receive Frame Direction. This bit controls the direction and source of the receive frame sync
|
|
* signal. Internally generated frame sync signal is sent out through the SRFS port and external
|
|
* frame sync is taken from the same port.
|
|
*
|
|
* Values:
|
|
* - EXTERNAL = 0 - Frame Sync is external.
|
|
* - INTERNAL = 1 - Frame Sync generated internally.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRCR_RFDIR (6) //!< Bit position for SSI_SRCR_RFDIR.
|
|
#define BM_SSI_SRCR_RFDIR (0x00000040) //!< Bit mask for SSI_SRCR_RFDIR.
|
|
|
|
//! @brief Get value of SSI_SRCR_RFDIR from a register value.
|
|
#define BG_SSI_SRCR_RFDIR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRCR_RFDIR) >> BP_SSI_SRCR_RFDIR)
|
|
|
|
//! @brief Format value for bitfield SSI_SRCR_RFDIR.
|
|
#define BF_SSI_SRCR_RFDIR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRCR_RFDIR) & BM_SSI_SRCR_RFDIR)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RFDIR field to a new value.
|
|
#define BW_SSI_SRCR_RFDIR(x, v) (HW_SSI_SRCR_WR(x, (HW_SSI_SRCR_RD(x) & ~BM_SSI_SRCR_RFDIR) | BF_SSI_SRCR_RFDIR(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SRCR_RFDIR_V(v) BF_SSI_SRCR_RFDIR(BV_SSI_SRCR_RFDIR__##v)
|
|
|
|
#define BV_SSI_SRCR_RFDIR__EXTERNAL (0x0) //!< Frame Sync is external.
|
|
#define BV_SSI_SRCR_RFDIR__INTERNAL (0x1) //!< Frame Sync generated internally.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SRCR, field RFEN0[7] (RW)
|
|
*
|
|
* Receive FIFO Enable 0. This bit enables receive FIFO 0. When enabled, the FIFO allows 15 samples
|
|
* to be received by the SSI (per channel) (a 16th sample can be shifting in) before RDR0 bit is
|
|
* set. When the FIFO is disabled, an interrupt is generated when a single sample is received by the
|
|
* SSI (provided the interrupt is enabled).
|
|
*
|
|
* Values:
|
|
* - 0 - Receive FIFO 0 disabled.
|
|
* - 1 - Receive FIFO 0 enabled.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRCR_RFEN0 (7) //!< Bit position for SSI_SRCR_RFEN0.
|
|
#define BM_SSI_SRCR_RFEN0 (0x00000080) //!< Bit mask for SSI_SRCR_RFEN0.
|
|
|
|
//! @brief Get value of SSI_SRCR_RFEN0 from a register value.
|
|
#define BG_SSI_SRCR_RFEN0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRCR_RFEN0) >> BP_SSI_SRCR_RFEN0)
|
|
|
|
//! @brief Format value for bitfield SSI_SRCR_RFEN0.
|
|
#define BF_SSI_SRCR_RFEN0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRCR_RFEN0) & BM_SSI_SRCR_RFEN0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RFEN0 field to a new value.
|
|
#define BW_SSI_SRCR_RFEN0(x, v) (HW_SSI_SRCR_WR(x, (HW_SSI_SRCR_RD(x) & ~BM_SSI_SRCR_RFEN0) | BF_SSI_SRCR_RFEN0(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SRCR, field RFEN1[8] (RW)
|
|
*
|
|
* Receive FIFO Enable 1. This bit enables receive FIFO 1. When enabled, the FIFO allows 15 samples
|
|
* to be received by the SSI per channel (a 16th sample can be shifting in) before RDR1 bit is set.
|
|
* When the FIFO is disabled, an interrupt is generated when a single sample is received by the SSI
|
|
* (provided the interrupt is enabled).
|
|
*
|
|
* Values:
|
|
* - 0 - Receive FIFO 1 disabled.
|
|
* - 1 - Receive FIFO 1 enabled.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRCR_RFEN1 (8) //!< Bit position for SSI_SRCR_RFEN1.
|
|
#define BM_SSI_SRCR_RFEN1 (0x00000100) //!< Bit mask for SSI_SRCR_RFEN1.
|
|
|
|
//! @brief Get value of SSI_SRCR_RFEN1 from a register value.
|
|
#define BG_SSI_SRCR_RFEN1(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRCR_RFEN1) >> BP_SSI_SRCR_RFEN1)
|
|
|
|
//! @brief Format value for bitfield SSI_SRCR_RFEN1.
|
|
#define BF_SSI_SRCR_RFEN1(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRCR_RFEN1) & BM_SSI_SRCR_RFEN1)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RFEN1 field to a new value.
|
|
#define BW_SSI_SRCR_RFEN1(x, v) (HW_SSI_SRCR_WR(x, (HW_SSI_SRCR_RD(x) & ~BM_SSI_SRCR_RFEN1) | BF_SSI_SRCR_RFEN1(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SRCR, field RXBIT0[9] (RW)
|
|
*
|
|
* Receive Bit 0. This control bit allows SSI to receive the data word at bit position 0 or 15/31 in
|
|
* the receive shift register. The shifting data direction can be MSB or LSB first, controlled by
|
|
* the RSHFD bit.
|
|
*
|
|
* Values:
|
|
* - MSB_ALIGNED = 0 - Shifting with respect to bit 31 (if word length = 16, 18, 20, 22 or 24) or bit 15 (if word length =
|
|
* 8, 10 or 12) of receive shift register (MSB aligned).
|
|
* - LSB_ALIGNED = 1 - Shifting with respect to bit 0 of receive shift register (LSB aligned).
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRCR_RXBIT0 (9) //!< Bit position for SSI_SRCR_RXBIT0.
|
|
#define BM_SSI_SRCR_RXBIT0 (0x00000200) //!< Bit mask for SSI_SRCR_RXBIT0.
|
|
|
|
//! @brief Get value of SSI_SRCR_RXBIT0 from a register value.
|
|
#define BG_SSI_SRCR_RXBIT0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRCR_RXBIT0) >> BP_SSI_SRCR_RXBIT0)
|
|
|
|
//! @brief Format value for bitfield SSI_SRCR_RXBIT0.
|
|
#define BF_SSI_SRCR_RXBIT0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRCR_RXBIT0) & BM_SSI_SRCR_RXBIT0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RXBIT0 field to a new value.
|
|
#define BW_SSI_SRCR_RXBIT0(x, v) (HW_SSI_SRCR_WR(x, (HW_SSI_SRCR_RD(x) & ~BM_SSI_SRCR_RXBIT0) | BF_SSI_SRCR_RXBIT0(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SRCR_RXBIT0_V(v) BF_SSI_SRCR_RXBIT0(BV_SSI_SRCR_RXBIT0__##v)
|
|
|
|
#define BV_SSI_SRCR_RXBIT0__MSB_ALIGNED (0x0) //!< Shifting with respect to bit 31 (if word length = 16, 18, 20, 22 or 24) or bit 15 (if word length = 8, 10 or 12) of receive shift register (MSB aligned).
|
|
#define BV_SSI_SRCR_RXBIT0__LSB_ALIGNED (0x1) //!< Shifting with respect to bit 0 of receive shift register (LSB aligned).
|
|
//@}
|
|
|
|
/*! @name Register SSI_SRCR, field RXEXT[10] (RW)
|
|
*
|
|
* Receive Data Extension. This control bit allows SSI to store the received data word in sign
|
|
* extended form. This bit affects data storage only in case received data is LSB aligned
|
|
* (SRCR[9]=1)
|
|
*
|
|
* Values:
|
|
* - OFF = 0 - Sign extension turned off.
|
|
* - ON = 1 - Sign extension turned on.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRCR_RXEXT (10) //!< Bit position for SSI_SRCR_RXEXT.
|
|
#define BM_SSI_SRCR_RXEXT (0x00000400) //!< Bit mask for SSI_SRCR_RXEXT.
|
|
|
|
//! @brief Get value of SSI_SRCR_RXEXT from a register value.
|
|
#define BG_SSI_SRCR_RXEXT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRCR_RXEXT) >> BP_SSI_SRCR_RXEXT)
|
|
|
|
//! @brief Format value for bitfield SSI_SRCR_RXEXT.
|
|
#define BF_SSI_SRCR_RXEXT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRCR_RXEXT) & BM_SSI_SRCR_RXEXT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RXEXT field to a new value.
|
|
#define BW_SSI_SRCR_RXEXT(x, v) (HW_SSI_SRCR_WR(x, (HW_SSI_SRCR_RD(x) & ~BM_SSI_SRCR_RXEXT) | BF_SSI_SRCR_RXEXT(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SRCR_RXEXT_V(v) BF_SSI_SRCR_RXEXT(BV_SSI_SRCR_RXEXT__##v)
|
|
|
|
#define BV_SSI_SRCR_RXEXT__OFF (0x0) //!< Sign extension turned off.
|
|
#define BV_SSI_SRCR_RXEXT__ON (0x1) //!< Sign extension turned on.
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_STCCR - SSI Transmit Clock Control Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_STCCR - SSI Transmit Clock Control Register (RW)
|
|
*
|
|
* Reset value: 0x00040000
|
|
*
|
|
* The SSI Transmit and Receive Control (SSI_STCCR and SSI_SRCCR) registers are 19-bit, read/write
|
|
* control registers used to direct the operation of the SSI. The Clock Controller Module (CCM) can
|
|
* source the SSI clock (SSI's sys clock from CCM's ssi_clk_root) from multiple sources and perform
|
|
* fractional division to support commonly used audio bit rates. The CCM can maintain the SSI's sys
|
|
* clock frequency at a constant rate even in cases where the ipg_clk (from CCM) frequency changes.
|
|
* These registers control the SSI clock generator, bit and frame sync rates, word length, and
|
|
* number of words per frame for the serial data. The SSI.STCCR register is dedicated to the
|
|
* transmit section, and the SSI_SRCCR register is dedicated to the receive section except in
|
|
* Synchronous mode, in which the SSI_STCCR register controls both the receive and transmit
|
|
* sections. Power-on reset clears all SSI_STCCR and SSI_SRCCR bits. SSI reset does not affect the
|
|
* SSI_STCCR and SSI_SRCCR bits. The control bits are described in the following paragraphs.
|
|
* Although the bit patterns of the SSI_STCCR and SSI_SRCCR registers are the same, the contents of
|
|
* these two registers can be programmed differently. SSI Data Length WL3 WL2 WL1 WL0 Number of
|
|
* Bits/Word Supported in Implementation 0 0 0 0 2 No 0 0 0 1 4 No 0 0 1 0 6 No 0 0 1 1 8 Yes 0 1 0
|
|
* 0 10 Yes 0 1 0 1 12 Yes 0 1 1 0 14 No 0 1 1 1 16 Yes 1 0 0 0 18 Yes 1 0 0 1 20 Yes 1 0 1 0 22 Yes
|
|
* 1 0 1 1 24 Yes 1 1 0 0 26 No 1 1 0 1 28 No 1 1 1 0 30 No 1 1 1 1 32 No
|
|
*/
|
|
typedef union _hw_ssi_stccr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_stccr_bitfields
|
|
{
|
|
unsigned PM7_PM0 : 8; //!< [7:0] Prescaler Modulus Select.
|
|
unsigned DC4_DC0 : 5; //!< [12:8] Frame Rate Divider Control.
|
|
unsigned WL3_WL0 : 4; //!< [16:13] Word Length Control.
|
|
unsigned PSR : 1; //!< [17] Prescaler Range.
|
|
unsigned DIV2 : 1; //!< [18] Divide By 2.
|
|
unsigned RESERVED0 : 13; //!< [31:19] Reserved
|
|
} B;
|
|
} hw_ssi_stccr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_STCCR register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_STCCR_ADDR(x) (REGS_SSI_BASE(x) + 0x24)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_STCCR(x) (*(volatile hw_ssi_stccr_t *) HW_SSI_STCCR_ADDR(x))
|
|
#define HW_SSI_STCCR_RD(x) (HW_SSI_STCCR(x).U)
|
|
#define HW_SSI_STCCR_WR(x, v) (HW_SSI_STCCR(x).U = (v))
|
|
#define HW_SSI_STCCR_SET(x, v) (HW_SSI_STCCR_WR(x, HW_SSI_STCCR_RD(x) | (v)))
|
|
#define HW_SSI_STCCR_CLR(x, v) (HW_SSI_STCCR_WR(x, HW_SSI_STCCR_RD(x) & ~(v)))
|
|
#define HW_SSI_STCCR_TOG(x, v) (HW_SSI_STCCR_WR(x, HW_SSI_STCCR_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_STCCR bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_STCCR, field PM7_PM0[7:0] (RW)
|
|
*
|
|
* Prescaler Modulus Select. These bits control the prescale divider in the clock generator. This
|
|
* prescaler is used only in Internal Clock mode to divide the internal clock. The bit clock output
|
|
* is available at the clock port. A divide ratio from 1 to 256 (PM[7:0] = 0x00 to 0xFF) can be
|
|
* selected. Refer to for details regarding settings.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STCCR_PM7_PM0 (0) //!< Bit position for SSI_STCCR_PM7_PM0.
|
|
#define BM_SSI_STCCR_PM7_PM0 (0x000000ff) //!< Bit mask for SSI_STCCR_PM7_PM0.
|
|
|
|
//! @brief Get value of SSI_STCCR_PM7_PM0 from a register value.
|
|
#define BG_SSI_STCCR_PM7_PM0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STCCR_PM7_PM0) >> BP_SSI_STCCR_PM7_PM0)
|
|
|
|
//! @brief Format value for bitfield SSI_STCCR_PM7_PM0.
|
|
#define BF_SSI_STCCR_PM7_PM0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STCCR_PM7_PM0) & BM_SSI_STCCR_PM7_PM0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the PM7_PM0 field to a new value.
|
|
#define BW_SSI_STCCR_PM7_PM0(x, v) (HW_SSI_STCCR_WR(x, (HW_SSI_STCCR_RD(x) & ~BM_SSI_STCCR_PM7_PM0) | BF_SSI_STCCR_PM7_PM0(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_STCCR, field DC4_DC0[12:8] (RW)
|
|
*
|
|
* Frame Rate Divider Control. These bits are used to control the divide ratio for the programmable
|
|
* frame rate dividers. The divide ratio works on the word clock. In Normal mode, this ratio
|
|
* determines the word transfer rate. In Network mode, this ratio sets the number of words per
|
|
* frame. The divide ratio ranges from 1 to 32 in Normal mode and from 2 to 32 in Network mode. In
|
|
* Normal mode, a divide ratio of 1 (DC=00000) provides continuous periodic data word transfer. A
|
|
* bit-length frame sync must be used in this case. These bits can be programmed with values ranging
|
|
* from "00000" to "11111" to control the number of words in a frame.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STCCR_DC4_DC0 (8) //!< Bit position for SSI_STCCR_DC4_DC0.
|
|
#define BM_SSI_STCCR_DC4_DC0 (0x00001f00) //!< Bit mask for SSI_STCCR_DC4_DC0.
|
|
|
|
//! @brief Get value of SSI_STCCR_DC4_DC0 from a register value.
|
|
#define BG_SSI_STCCR_DC4_DC0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STCCR_DC4_DC0) >> BP_SSI_STCCR_DC4_DC0)
|
|
|
|
//! @brief Format value for bitfield SSI_STCCR_DC4_DC0.
|
|
#define BF_SSI_STCCR_DC4_DC0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STCCR_DC4_DC0) & BM_SSI_STCCR_DC4_DC0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DC4_DC0 field to a new value.
|
|
#define BW_SSI_STCCR_DC4_DC0(x, v) (HW_SSI_STCCR_WR(x, (HW_SSI_STCCR_RD(x) & ~BM_SSI_STCCR_DC4_DC0) | BF_SSI_STCCR_DC4_DC0(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_STCCR, field WL3_WL0[16:13] (RW)
|
|
*
|
|
* Word Length Control. These bits are used to control the length of the data words being
|
|
* transferred by the SSI. These bits control the Word Length Divider in the Clock Generator. They
|
|
* also control the frame sync pulse length when the FSL bit is cleared. In I2S Master mode, the SSI
|
|
* works with a fixed word length of 32, and the WL bits are used to control the amount of valid
|
|
* data in those 32 bits. In AC97 Mode of operation, if word length is set to any value other than
|
|
* 16 bits, it will result in a word length of 20 bits.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STCCR_WL3_WL0 (13) //!< Bit position for SSI_STCCR_WL3_WL0.
|
|
#define BM_SSI_STCCR_WL3_WL0 (0x0001e000) //!< Bit mask for SSI_STCCR_WL3_WL0.
|
|
|
|
//! @brief Get value of SSI_STCCR_WL3_WL0 from a register value.
|
|
#define BG_SSI_STCCR_WL3_WL0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STCCR_WL3_WL0) >> BP_SSI_STCCR_WL3_WL0)
|
|
|
|
//! @brief Format value for bitfield SSI_STCCR_WL3_WL0.
|
|
#define BF_SSI_STCCR_WL3_WL0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STCCR_WL3_WL0) & BM_SSI_STCCR_WL3_WL0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the WL3_WL0 field to a new value.
|
|
#define BW_SSI_STCCR_WL3_WL0(x, v) (HW_SSI_STCCR_WR(x, (HW_SSI_STCCR_RD(x) & ~BM_SSI_STCCR_WL3_WL0) | BF_SSI_STCCR_WL3_WL0(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_STCCR, field PSR[17] (RW)
|
|
*
|
|
* Prescaler Range. This bit controls a fixed divide-by-eight prescaler in series with the variable
|
|
* prescaler. It extends the range of the prescaler for those cases where a slower bit clock is
|
|
* required. 0 Prescaler bypassed. 1 Prescaler used to divide clock by 8.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STCCR_PSR (17) //!< Bit position for SSI_STCCR_PSR.
|
|
#define BM_SSI_STCCR_PSR (0x00020000) //!< Bit mask for SSI_STCCR_PSR.
|
|
|
|
//! @brief Get value of SSI_STCCR_PSR from a register value.
|
|
#define BG_SSI_STCCR_PSR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STCCR_PSR) >> BP_SSI_STCCR_PSR)
|
|
|
|
//! @brief Format value for bitfield SSI_STCCR_PSR.
|
|
#define BF_SSI_STCCR_PSR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STCCR_PSR) & BM_SSI_STCCR_PSR)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the PSR field to a new value.
|
|
#define BW_SSI_STCCR_PSR(x, v) (HW_SSI_STCCR_WR(x, (HW_SSI_STCCR_RD(x) & ~BM_SSI_STCCR_PSR) | BF_SSI_STCCR_PSR(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_STCCR, field DIV2[18] (RW)
|
|
*
|
|
* Divide By 2. This bit controls a divide-by-two divider in series with the rest of the prescalers.
|
|
* 0 Divider bypassed. 1 Divider used to divide clock by 2.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STCCR_DIV2 (18) //!< Bit position for SSI_STCCR_DIV2.
|
|
#define BM_SSI_STCCR_DIV2 (0x00040000) //!< Bit mask for SSI_STCCR_DIV2.
|
|
|
|
//! @brief Get value of SSI_STCCR_DIV2 from a register value.
|
|
#define BG_SSI_STCCR_DIV2(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STCCR_DIV2) >> BP_SSI_STCCR_DIV2)
|
|
|
|
//! @brief Format value for bitfield SSI_STCCR_DIV2.
|
|
#define BF_SSI_STCCR_DIV2(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STCCR_DIV2) & BM_SSI_STCCR_DIV2)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DIV2 field to a new value.
|
|
#define BW_SSI_STCCR_DIV2(x, v) (HW_SSI_STCCR_WR(x, (HW_SSI_STCCR_RD(x) & ~BM_SSI_STCCR_DIV2) | BF_SSI_STCCR_DIV2(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_SRCCR - SSI Receive Clock Control Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_SRCCR - SSI Receive Clock Control Register (RW)
|
|
*
|
|
* Reset value: 0x00040000
|
|
*
|
|
* The SSI Transmit and Receive Control (SSI_STCCR and SSI_SRCCR) registers are 19-bit, read/write
|
|
* control registers used to direct the operation of the SSI. The Clock Controller Module (CCM) can
|
|
* source the SSI clock (SSI's sys clock-from CCM's ssi_clk_root) from multiple sources and perform
|
|
* fractional division to support commonly used audio bit rates. The CCM can maintain the SSI's sys
|
|
* clock frequency at a constant rate even in cases where the ipg_clk from CCM frequency changes.
|
|
* These registers control the SSI clock generator, bit and frame sync rates, word length, and
|
|
* number of words per frame for the serial data. The SSI_STCCR register is dedicated to the
|
|
* transmit section, and the SSI_SRCCR register is dedicated to the receive section except in
|
|
* Synchronous mode, in which the SSI_STCCR register controls both the receive and transmit
|
|
* sections. Power-on reset clears all SSI_STCCR and SSI_SRCCR bits. SSI reset does not affect the
|
|
* SSI_STCCR and SSI_SRCCR bits. The control bits are described in the following paragraphs.
|
|
* Although the bit patterns of the SSI_STCCR and SSI_SRCCR registers are the same, the contents of
|
|
* these two registers can be programmed differently. SSI Data Length WL3 WL2 WL1 WL0 Number of
|
|
* Bits/Word Supported in Implementation 0 0 0 0 2 No 0 0 0 1 4 No 0 0 1 0 6 No 0 0 1 1 8 Yes 0 1 0
|
|
* 0 10 Yes 0 1 0 1 12 Yes 0 1 1 0 14 No 0 1 1 1 16 Yes 1 0 0 0 18 Yes 1 0 0 1 20 Yes 1 0 1 0 22 Yes
|
|
* 1 0 1 1 24 Yes 1 1 0 0 26 No 1 1 0 1 28 No 1 1 1 0 30 No 1 1 1 1 32 No
|
|
*/
|
|
typedef union _hw_ssi_srccr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_srccr_bitfields
|
|
{
|
|
unsigned PM7_PM0 : 8; //!< [7:0] Prescaler Modulus Select.
|
|
unsigned DC4_DC0 : 5; //!< [12:8] Frame Rate Divider Control.
|
|
unsigned WL3_WL0 : 4; //!< [16:13] Word Length Control.
|
|
unsigned PSR : 1; //!< [17] Prescaler Range.
|
|
unsigned DIV2 : 1; //!< [18] Divide By 2.
|
|
unsigned RESERVED0 : 13; //!< [31:19] Reserved
|
|
} B;
|
|
} hw_ssi_srccr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_SRCCR register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_SRCCR_ADDR(x) (REGS_SSI_BASE(x) + 0x28)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_SRCCR(x) (*(volatile hw_ssi_srccr_t *) HW_SSI_SRCCR_ADDR(x))
|
|
#define HW_SSI_SRCCR_RD(x) (HW_SSI_SRCCR(x).U)
|
|
#define HW_SSI_SRCCR_WR(x, v) (HW_SSI_SRCCR(x).U = (v))
|
|
#define HW_SSI_SRCCR_SET(x, v) (HW_SSI_SRCCR_WR(x, HW_SSI_SRCCR_RD(x) | (v)))
|
|
#define HW_SSI_SRCCR_CLR(x, v) (HW_SSI_SRCCR_WR(x, HW_SSI_SRCCR_RD(x) & ~(v)))
|
|
#define HW_SSI_SRCCR_TOG(x, v) (HW_SSI_SRCCR_WR(x, HW_SSI_SRCCR_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_SRCCR bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_SRCCR, field PM7_PM0[7:0] (RW)
|
|
*
|
|
* Prescaler Modulus Select. These bits control the prescale divider in the clock generator. This
|
|
* prescaler is used only in Internal Clock mode to divide the internal clock. The bit clock output
|
|
* is available at the clock port. A divide ratio from 1 to 256 (PM[7:0] = 0x00 to 0xFF) can be
|
|
* selected. Refer to for details regarding settings.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRCCR_PM7_PM0 (0) //!< Bit position for SSI_SRCCR_PM7_PM0.
|
|
#define BM_SSI_SRCCR_PM7_PM0 (0x000000ff) //!< Bit mask for SSI_SRCCR_PM7_PM0.
|
|
|
|
//! @brief Get value of SSI_SRCCR_PM7_PM0 from a register value.
|
|
#define BG_SSI_SRCCR_PM7_PM0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRCCR_PM7_PM0) >> BP_SSI_SRCCR_PM7_PM0)
|
|
|
|
//! @brief Format value for bitfield SSI_SRCCR_PM7_PM0.
|
|
#define BF_SSI_SRCCR_PM7_PM0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRCCR_PM7_PM0) & BM_SSI_SRCCR_PM7_PM0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the PM7_PM0 field to a new value.
|
|
#define BW_SSI_SRCCR_PM7_PM0(x, v) (HW_SSI_SRCCR_WR(x, (HW_SSI_SRCCR_RD(x) & ~BM_SSI_SRCCR_PM7_PM0) | BF_SSI_SRCCR_PM7_PM0(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SRCCR, field DC4_DC0[12:8] (RW)
|
|
*
|
|
* Frame Rate Divider Control. These bits are used to control the divide ratio for the programmable
|
|
* frame rate dividers. The divide ratio works on the word clock. In Normal mode, this ratio
|
|
* determines the word transfer rate. In Network mode, this ratio sets the number of words per
|
|
* frame. The divide ratio ranges from 1 to 32 in Normal mode and from 2 to 32 in Network mode. In
|
|
* Normal mode, a divide ratio of 1 (DC=00000) provides continuous periodic data word transfer. A
|
|
* bit-length frame sync must be used in this case. These bits can be programmed with values ranging
|
|
* from "00000" to "11111" to control the number of words in a frame.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRCCR_DC4_DC0 (8) //!< Bit position for SSI_SRCCR_DC4_DC0.
|
|
#define BM_SSI_SRCCR_DC4_DC0 (0x00001f00) //!< Bit mask for SSI_SRCCR_DC4_DC0.
|
|
|
|
//! @brief Get value of SSI_SRCCR_DC4_DC0 from a register value.
|
|
#define BG_SSI_SRCCR_DC4_DC0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRCCR_DC4_DC0) >> BP_SSI_SRCCR_DC4_DC0)
|
|
|
|
//! @brief Format value for bitfield SSI_SRCCR_DC4_DC0.
|
|
#define BF_SSI_SRCCR_DC4_DC0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRCCR_DC4_DC0) & BM_SSI_SRCCR_DC4_DC0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DC4_DC0 field to a new value.
|
|
#define BW_SSI_SRCCR_DC4_DC0(x, v) (HW_SSI_SRCCR_WR(x, (HW_SSI_SRCCR_RD(x) & ~BM_SSI_SRCCR_DC4_DC0) | BF_SSI_SRCCR_DC4_DC0(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SRCCR, field WL3_WL0[16:13] (RW)
|
|
*
|
|
* Word Length Control. These bits are used to control the length of the data words being
|
|
* transferred by the SSI. These bits control the Word Length Divider in the Clock Generator. They
|
|
* also control the frame sync pulse length when the FSL bit is cleared. In I2S Master mode, the SSI
|
|
* works with a fixed word length of 32, and the WL bits are used to control the amount of valid
|
|
* data in those 32 bits. In AC97 Mode of operation, if word length is set to any value other than
|
|
* 16 bits, it will result in a word length of 20 bits.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRCCR_WL3_WL0 (13) //!< Bit position for SSI_SRCCR_WL3_WL0.
|
|
#define BM_SSI_SRCCR_WL3_WL0 (0x0001e000) //!< Bit mask for SSI_SRCCR_WL3_WL0.
|
|
|
|
//! @brief Get value of SSI_SRCCR_WL3_WL0 from a register value.
|
|
#define BG_SSI_SRCCR_WL3_WL0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRCCR_WL3_WL0) >> BP_SSI_SRCCR_WL3_WL0)
|
|
|
|
//! @brief Format value for bitfield SSI_SRCCR_WL3_WL0.
|
|
#define BF_SSI_SRCCR_WL3_WL0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRCCR_WL3_WL0) & BM_SSI_SRCCR_WL3_WL0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the WL3_WL0 field to a new value.
|
|
#define BW_SSI_SRCCR_WL3_WL0(x, v) (HW_SSI_SRCCR_WR(x, (HW_SSI_SRCCR_RD(x) & ~BM_SSI_SRCCR_WL3_WL0) | BF_SSI_SRCCR_WL3_WL0(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SRCCR, field PSR[17] (RW)
|
|
*
|
|
* Prescaler Range. This bit controls a fixed divide-by-eight prescaler in series with the variable
|
|
* prescaler. It extends the range of the prescaler for those cases where a slower bit clock is
|
|
* required. 0 Prescaler bypassed. 1 Prescaler used to divide clock by 8.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRCCR_PSR (17) //!< Bit position for SSI_SRCCR_PSR.
|
|
#define BM_SSI_SRCCR_PSR (0x00020000) //!< Bit mask for SSI_SRCCR_PSR.
|
|
|
|
//! @brief Get value of SSI_SRCCR_PSR from a register value.
|
|
#define BG_SSI_SRCCR_PSR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRCCR_PSR) >> BP_SSI_SRCCR_PSR)
|
|
|
|
//! @brief Format value for bitfield SSI_SRCCR_PSR.
|
|
#define BF_SSI_SRCCR_PSR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRCCR_PSR) & BM_SSI_SRCCR_PSR)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the PSR field to a new value.
|
|
#define BW_SSI_SRCCR_PSR(x, v) (HW_SSI_SRCCR_WR(x, (HW_SSI_SRCCR_RD(x) & ~BM_SSI_SRCCR_PSR) | BF_SSI_SRCCR_PSR(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SRCCR, field DIV2[18] (RW)
|
|
*
|
|
* Divide By 2. This bit controls a divide-by-two divider in series with the rest of the prescalers.
|
|
* 0 Divider bypassed. 1 Divider used to divide clock by 2.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRCCR_DIV2 (18) //!< Bit position for SSI_SRCCR_DIV2.
|
|
#define BM_SSI_SRCCR_DIV2 (0x00040000) //!< Bit mask for SSI_SRCCR_DIV2.
|
|
|
|
//! @brief Get value of SSI_SRCCR_DIV2 from a register value.
|
|
#define BG_SSI_SRCCR_DIV2(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRCCR_DIV2) >> BP_SSI_SRCCR_DIV2)
|
|
|
|
//! @brief Format value for bitfield SSI_SRCCR_DIV2.
|
|
#define BF_SSI_SRCCR_DIV2(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRCCR_DIV2) & BM_SSI_SRCCR_DIV2)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DIV2 field to a new value.
|
|
#define BW_SSI_SRCCR_DIV2(x, v) (HW_SSI_SRCCR_WR(x, (HW_SSI_SRCCR_RD(x) & ~BM_SSI_SRCCR_DIV2) | BF_SSI_SRCCR_DIV2(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_SFCSR - SSI FIFO Control/Status Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_SFCSR - SSI FIFO Control/Status Register (RW)
|
|
*
|
|
* Reset value: 0x00810081
|
|
*
|
|
* The SSI FIFO Control / Status Register indicates the status of the Transmit FIFO Empty flag, with
|
|
* different settings of the Transmit FIFO WaterMark bits and varying amounts of data in the Tx FIFO
|
|
* . Status of Transmit FIFO Empty Flag Transmit FIFO Watermark (TFWM) Number of data in Tx-Fifo 1 2
|
|
* 3 4 5 6 7 8 9 10 11 12 13 14 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 2 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 3
|
|
* 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 4 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 5 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 6 1
|
|
* 1 1 1 1 1 1 1 1 0 0 0 0 0 0 7 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 8 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 9 1 1
|
|
* 1 1 1 1 0 0 0 0 0 0 0 0 0 10 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 11 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 12 1
|
|
* 1 1 0 0 0 0 0 0 0 0 0 0 0 0 13 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 14 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15
|
|
* 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
*/
|
|
typedef union _hw_ssi_sfcsr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_sfcsr_bitfields
|
|
{
|
|
unsigned TFWM0 : 4; //!< [3:0] Transmit FIFO Empty WaterMark 0.
|
|
unsigned RFWM0 : 4; //!< [7:4] Receive FIFO Full WaterMark 0.
|
|
unsigned TFCNT0 : 4; //!< [11:8] Transmit FIFO Counter 0.
|
|
unsigned RFCNT0 : 4; //!< [15:12] Receive FIFO Counter 0.
|
|
unsigned TFWM1 : 4; //!< [19:16] Transmit FIFO Empty WaterMark 1.
|
|
unsigned RFWM1 : 4; //!< [23:20] Receive FIFO Full WaterMark 1.
|
|
unsigned TFCNT1 : 4; //!< [27:24] Transmit FIFO Counter1.
|
|
unsigned RFCNT1 : 4; //!< [31:28] Receive FIFO Counter1.
|
|
} B;
|
|
} hw_ssi_sfcsr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_SFCSR register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_SFCSR_ADDR(x) (REGS_SSI_BASE(x) + 0x2c)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_SFCSR(x) (*(volatile hw_ssi_sfcsr_t *) HW_SSI_SFCSR_ADDR(x))
|
|
#define HW_SSI_SFCSR_RD(x) (HW_SSI_SFCSR(x).U)
|
|
#define HW_SSI_SFCSR_WR(x, v) (HW_SSI_SFCSR(x).U = (v))
|
|
#define HW_SSI_SFCSR_SET(x, v) (HW_SSI_SFCSR_WR(x, HW_SSI_SFCSR_RD(x) | (v)))
|
|
#define HW_SSI_SFCSR_CLR(x, v) (HW_SSI_SFCSR_WR(x, HW_SSI_SFCSR_RD(x) & ~(v)))
|
|
#define HW_SSI_SFCSR_TOG(x, v) (HW_SSI_SFCSR_WR(x, HW_SSI_SFCSR_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_SFCSR bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_SFCSR, field TFWM0[3:0] (RW)
|
|
*
|
|
* Transmit FIFO Empty WaterMark 0. These bits control the threshold at which the TFE0 flag will be
|
|
* set. The TFE0 flag is set whenever the empty slots in Tx FIFO exceed or are equal to the selected
|
|
* threshold. See SSI_SFCSR_bf4 for details regarding settings for transmit FIFO watermark bits.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SFCSR_TFWM0 (0) //!< Bit position for SSI_SFCSR_TFWM0.
|
|
#define BM_SSI_SFCSR_TFWM0 (0x0000000f) //!< Bit mask for SSI_SFCSR_TFWM0.
|
|
|
|
//! @brief Get value of SSI_SFCSR_TFWM0 from a register value.
|
|
#define BG_SSI_SFCSR_TFWM0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SFCSR_TFWM0) >> BP_SSI_SFCSR_TFWM0)
|
|
|
|
//! @brief Format value for bitfield SSI_SFCSR_TFWM0.
|
|
#define BF_SSI_SFCSR_TFWM0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SFCSR_TFWM0) & BM_SSI_SFCSR_TFWM0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TFWM0 field to a new value.
|
|
#define BW_SSI_SFCSR_TFWM0(x, v) (HW_SSI_SFCSR_WR(x, (HW_SSI_SFCSR_RD(x) & ~BM_SSI_SFCSR_TFWM0) | BF_SSI_SFCSR_TFWM0(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SFCSR, field RFWM0[7:4] (RW)
|
|
*
|
|
* Receive FIFO Full WaterMark 0. These bits control the threshold at which the RFF0 flag will be
|
|
* set. The RFF0 flag is set whenever the data level in Rx FIFO 0 reaches the selected threshold.
|
|
* See SSI_SFCSR_bf3 for details regarding settings for receive FIFO watermark bits.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SFCSR_RFWM0 (4) //!< Bit position for SSI_SFCSR_RFWM0.
|
|
#define BM_SSI_SFCSR_RFWM0 (0x000000f0) //!< Bit mask for SSI_SFCSR_RFWM0.
|
|
|
|
//! @brief Get value of SSI_SFCSR_RFWM0 from a register value.
|
|
#define BG_SSI_SFCSR_RFWM0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SFCSR_RFWM0) >> BP_SSI_SFCSR_RFWM0)
|
|
|
|
//! @brief Format value for bitfield SSI_SFCSR_RFWM0.
|
|
#define BF_SSI_SFCSR_RFWM0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SFCSR_RFWM0) & BM_SSI_SFCSR_RFWM0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RFWM0 field to a new value.
|
|
#define BW_SSI_SFCSR_RFWM0(x, v) (HW_SSI_SFCSR_WR(x, (HW_SSI_SFCSR_RD(x) & ~BM_SSI_SFCSR_RFWM0) | BF_SSI_SFCSR_RFWM0(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SFCSR, field TFCNT0[11:8] (RW)
|
|
*
|
|
* Transmit FIFO Counter 0. These bits indicate the number of data words in Transmit FIFO 0. See
|
|
* SSI_SFCSR_bf2 for details regarding settings for transmit FIFO counter bits.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SFCSR_TFCNT0 (8) //!< Bit position for SSI_SFCSR_TFCNT0.
|
|
#define BM_SSI_SFCSR_TFCNT0 (0x00000f00) //!< Bit mask for SSI_SFCSR_TFCNT0.
|
|
|
|
//! @brief Get value of SSI_SFCSR_TFCNT0 from a register value.
|
|
#define BG_SSI_SFCSR_TFCNT0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SFCSR_TFCNT0) >> BP_SSI_SFCSR_TFCNT0)
|
|
|
|
//! @brief Format value for bitfield SSI_SFCSR_TFCNT0.
|
|
#define BF_SSI_SFCSR_TFCNT0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SFCSR_TFCNT0) & BM_SSI_SFCSR_TFCNT0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TFCNT0 field to a new value.
|
|
#define BW_SSI_SFCSR_TFCNT0(x, v) (HW_SSI_SFCSR_WR(x, (HW_SSI_SFCSR_RD(x) & ~BM_SSI_SFCSR_TFCNT0) | BF_SSI_SFCSR_TFCNT0(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SFCSR, field RFCNT0[15:12] (RW)
|
|
*
|
|
* Receive FIFO Counter 0. These bits indicate the number of data words in Receive FIFO 0. See
|
|
* SSI_SFCSR_bf1 for details regarding settings for receive FIFO counter bits.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SFCSR_RFCNT0 (12) //!< Bit position for SSI_SFCSR_RFCNT0.
|
|
#define BM_SSI_SFCSR_RFCNT0 (0x0000f000) //!< Bit mask for SSI_SFCSR_RFCNT0.
|
|
|
|
//! @brief Get value of SSI_SFCSR_RFCNT0 from a register value.
|
|
#define BG_SSI_SFCSR_RFCNT0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SFCSR_RFCNT0) >> BP_SSI_SFCSR_RFCNT0)
|
|
|
|
//! @brief Format value for bitfield SSI_SFCSR_RFCNT0.
|
|
#define BF_SSI_SFCSR_RFCNT0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SFCSR_RFCNT0) & BM_SSI_SFCSR_RFCNT0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RFCNT0 field to a new value.
|
|
#define BW_SSI_SFCSR_RFCNT0(x, v) (HW_SSI_SFCSR_WR(x, (HW_SSI_SFCSR_RD(x) & ~BM_SSI_SFCSR_RFCNT0) | BF_SSI_SFCSR_RFCNT0(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SFCSR, field TFWM1[19:16] (RW)
|
|
*
|
|
* Transmit FIFO Empty WaterMark 1. These bits control the threshold at which the TFE1 flag will be
|
|
* set. The TFE1 flag is set whenever the empty slots in Tx FIFO exceed or are equal to the selected
|
|
* threshold.
|
|
*
|
|
* Values:
|
|
* - 0000 - Reserved
|
|
* - 0001 - TFE set when there are more than or equal to 1 empty slots in Transmit FIFO (default). Transmit FIFO
|
|
* empty is set when TxFIFO <= 14 data.
|
|
* - 0010 - TFE set when there are more than or equal to 2 empty slots in Transmit FIFO. Transmit FIFO empty is
|
|
* set when TxFIFO <= 13 data.
|
|
* - 0011 - TFE set when there are more than or equal to 3 empty slots in Transmit FIFO. Transmit FIFO empty is
|
|
* set when TxFIFO <= 12 data.
|
|
* - 0100 - TFE set when there are more than or equal to 4 empty slots in Transmit FIFO. Transmit FIFO empty is
|
|
* set when TxFIFO <= 11 data.
|
|
* - 0101 - TFE set when there are more than or equal to 5 empty slots in Transmit FIFO. Transmit FIFO empty is
|
|
* set when TxFIFO <= 10 data.
|
|
* - 0110 - TFE set when there are more than or equal to 6 empty slots in Transmit FIFO. Transmit FIFO empty is
|
|
* set when TxFIFO <= 9 data.
|
|
* - 0111 - TFE set when there are more than or equal to 7 empty slots in Transmit FIFO. Transmit FIFO empty is
|
|
* set when TxFIFO <= 8 data.
|
|
* - 1000 - TFE set when there are more than or equal to 8 empty slots in Transmit FIFO. Transmit FIFO empty is
|
|
* set when TxFIFO <= 7 data.
|
|
* - 1001 - TFE set when there are more than or equal to 9 empty slots in Transmit FIFO. Transmit FIFO empty is
|
|
* set when TxFIFO <= 6 data.
|
|
* - 1010 - TFE set when there are more than or equal to 10 empty slots in Transmit FIFO. Transmit FIFO empty is
|
|
* set when TxFIFO <= 5 data.
|
|
* - 1011 - TFE set when there are more than or equal to 11 empty slots in Transmit FIFO. Transmit FIFO empty is
|
|
* set when TxFIFO <= 4 data.
|
|
* - 1100 - TFE set when there are more than or equal to 12 empty slots in Transmit FIFO. Transmit FIFO empty is
|
|
* set when TxFIFO <= 3 data.
|
|
* - 1101 - TFE set when there are more than or equal to 13 empty slots in Transmit FIFO. Transmit FIFO empty is
|
|
* set when TxFIFO <= 2 data.
|
|
* - 1110 - TFE set when there are more than or equal to 14 empty slots in Transmit FIFO. Transmit FIFO empty is
|
|
* set when TxFIFO <= 1 data.
|
|
* - 1111 - TFE set when there are 15 empty slots in Transmit FIFO. Transmit FIFO empty is set when TxFIFO = 0
|
|
* data.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SFCSR_TFWM1 (16) //!< Bit position for SSI_SFCSR_TFWM1.
|
|
#define BM_SSI_SFCSR_TFWM1 (0x000f0000) //!< Bit mask for SSI_SFCSR_TFWM1.
|
|
|
|
//! @brief Get value of SSI_SFCSR_TFWM1 from a register value.
|
|
#define BG_SSI_SFCSR_TFWM1(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SFCSR_TFWM1) >> BP_SSI_SFCSR_TFWM1)
|
|
|
|
//! @brief Format value for bitfield SSI_SFCSR_TFWM1.
|
|
#define BF_SSI_SFCSR_TFWM1(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SFCSR_TFWM1) & BM_SSI_SFCSR_TFWM1)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TFWM1 field to a new value.
|
|
#define BW_SSI_SFCSR_TFWM1(x, v) (HW_SSI_SFCSR_WR(x, (HW_SSI_SFCSR_RD(x) & ~BM_SSI_SFCSR_TFWM1) | BF_SSI_SFCSR_TFWM1(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SFCSR, field RFWM1[23:20] (RW)
|
|
*
|
|
* Receive FIFO Full WaterMark 1. These bits control the threshold at which the RFF1 flag will be
|
|
* set. The RFF1 flag is set whenever the data level in Rx FIFO 1 reaches the selected threshold.
|
|
*
|
|
* Values:
|
|
* - 0000 - Reserved
|
|
* - 0001 - RFF set when at least one data word has been written to the Receive FIFO. Set when RxFIFO = 1,2.....
|
|
* 15 data words
|
|
* - 0010 - RFF set when 2 or more data words have been written to the Receive FIFO. Set when RxFIFO = 2,3.....
|
|
* 15 data words
|
|
* - 0011 - RFF set when 3 or more data words have been written to the Receive FIFO. Set when RxFIFO = 3,4.....
|
|
* 15 data words
|
|
* - 0100 - RFF set when 4 or more data words have been written to the Receive FIFO. Set when RxFIFO = 4,5.....
|
|
* 15 data words
|
|
* - 0101 - RFF set when 5 or more data words have been written to the Receive FIFO. Set when RxFIFO = 5,6.....
|
|
* 15 data words
|
|
* - 0110 - RFF set when 6 or more data words have been written to the Receive.. Set when RxFIFO = 6,7 ......15
|
|
* data words
|
|
* - 0111 - RFF set when 7 or more data words have been written to the Receive FIFO. Set when RxFIFO = 7,8
|
|
* ......15 data words
|
|
* - 1000 - RFF set when 8 or more data words have been written to the Receive FIFO. Set when RxFIFO = 8,9.....
|
|
* 15 data words
|
|
* - 1001 - RFF set when 9 or more data words have been written to the Receive FIFO. Set when RxFIFO =
|
|
* 9,10.....15 data words
|
|
* - 1010 - RFF set when 10 or more data words have been written to the Receive FIFO. Set when RxFIFO =
|
|
* 10,11.....15 data words
|
|
* - 1011 - RFF set when 11 or more data words have been written to the Receive FIFO. Set when RxFIFO =
|
|
* 11,12.....15 data words
|
|
* - 1100 - RFF set when 12 or more data words have been written to the Receive FIFO. Set when RxFIFO =
|
|
* 12,13.....15 data words
|
|
* - 1101 - RFF set when 13 or more data words have been written to the Receive FIFO. Set when RxFIFO =
|
|
* 13,14,15data words
|
|
* - 1110 - RFF set when 14 or more data words have been written to the Receive FIFO. Set when RxFIFO = 14,15
|
|
* data words
|
|
* - 1111 - RFF set when 15 data words have been written to the Receive FIFO (default). Set when RxFIFO = 15
|
|
* data words
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SFCSR_RFWM1 (20) //!< Bit position for SSI_SFCSR_RFWM1.
|
|
#define BM_SSI_SFCSR_RFWM1 (0x00f00000) //!< Bit mask for SSI_SFCSR_RFWM1.
|
|
|
|
//! @brief Get value of SSI_SFCSR_RFWM1 from a register value.
|
|
#define BG_SSI_SFCSR_RFWM1(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SFCSR_RFWM1) >> BP_SSI_SFCSR_RFWM1)
|
|
|
|
//! @brief Format value for bitfield SSI_SFCSR_RFWM1.
|
|
#define BF_SSI_SFCSR_RFWM1(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SFCSR_RFWM1) & BM_SSI_SFCSR_RFWM1)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RFWM1 field to a new value.
|
|
#define BW_SSI_SFCSR_RFWM1(x, v) (HW_SSI_SFCSR_WR(x, (HW_SSI_SFCSR_RD(x) & ~BM_SSI_SFCSR_RFWM1) | BF_SSI_SFCSR_RFWM1(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SFCSR, field TFCNT1[27:24] (RW)
|
|
*
|
|
* Transmit FIFO Counter1. These bits indicate the number of data words in Transmit FIFO.
|
|
*
|
|
* Values:
|
|
* - 0000 - 0 data word in transmit FIFO
|
|
* - 0001 - 1 data word in transmit FIFO
|
|
* - 0010 - 2 data word in transmit FIFO
|
|
* - 0011 - 3 data word in transmit FIFO
|
|
* - 0100 - 4 data word in transmit FIFO
|
|
* - 0101 - 5 data word in transmit FIFO
|
|
* - 0110 - 6 data word in transmit FIFO
|
|
* - 0111 - 7 data word in transmit FIFO
|
|
* - 1000 - 8 data word in transmit FIFO
|
|
* - 1001 - 9 data word in transmit FIFO
|
|
* - 1010 - 10 data word in transmit FIFO
|
|
* - 1011 - 11 data word in transmit FIFO
|
|
* - 1100 - 12 data word in transmit FIFO
|
|
* - 1101 - 13 data word in transmit FIFO
|
|
* - 1110 - 14 data word in transmit FIFO
|
|
* - 1111 - 15 data word in transmit FIFO
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SFCSR_TFCNT1 (24) //!< Bit position for SSI_SFCSR_TFCNT1.
|
|
#define BM_SSI_SFCSR_TFCNT1 (0x0f000000) //!< Bit mask for SSI_SFCSR_TFCNT1.
|
|
|
|
//! @brief Get value of SSI_SFCSR_TFCNT1 from a register value.
|
|
#define BG_SSI_SFCSR_TFCNT1(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SFCSR_TFCNT1) >> BP_SSI_SFCSR_TFCNT1)
|
|
|
|
//! @brief Format value for bitfield SSI_SFCSR_TFCNT1.
|
|
#define BF_SSI_SFCSR_TFCNT1(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SFCSR_TFCNT1) & BM_SSI_SFCSR_TFCNT1)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TFCNT1 field to a new value.
|
|
#define BW_SSI_SFCSR_TFCNT1(x, v) (HW_SSI_SFCSR_WR(x, (HW_SSI_SFCSR_RD(x) & ~BM_SSI_SFCSR_TFCNT1) | BF_SSI_SFCSR_TFCNT1(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SFCSR, field RFCNT1[31:28] (RW)
|
|
*
|
|
* Receive FIFO Counter1. These bits indicate the number of data words in Receive FIFO 1.
|
|
*
|
|
* Values:
|
|
* - 0000 - 0 data word in receive FIFO
|
|
* - 0001 - 1 data word in receive FIFO
|
|
* - 0010 - 2 data word in receive FIFO
|
|
* - 0011 - 3 data word in receive FIFO
|
|
* - 0100 - 4 data word in receive FIFO
|
|
* - 0101 - 5 data word in receive FIFO
|
|
* - 0110 - 6 data word in receive FIFO
|
|
* - 0111 - 7 data word in receive FIFO
|
|
* - 1000 - 8 data word in receive FIFO
|
|
* - 1001 - 9 data word in receive FIFO
|
|
* - 1010 - 10 data word in receive FIFO
|
|
* - 1011 - 11 data word in receive FIFO
|
|
* - 1100 - 12 data word in receive FIFO
|
|
* - 1101 - 13 data word in receive FIFO
|
|
* - 1110 - 14 data word in receive FIFO
|
|
* - 1111 - 15 data word in receive FIFO
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SFCSR_RFCNT1 (28) //!< Bit position for SSI_SFCSR_RFCNT1.
|
|
#define BM_SSI_SFCSR_RFCNT1 (0xf0000000) //!< Bit mask for SSI_SFCSR_RFCNT1.
|
|
|
|
//! @brief Get value of SSI_SFCSR_RFCNT1 from a register value.
|
|
#define BG_SSI_SFCSR_RFCNT1(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SFCSR_RFCNT1) >> BP_SSI_SFCSR_RFCNT1)
|
|
|
|
//! @brief Format value for bitfield SSI_SFCSR_RFCNT1.
|
|
#define BF_SSI_SFCSR_RFCNT1(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SFCSR_RFCNT1) & BM_SSI_SFCSR_RFCNT1)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RFCNT1 field to a new value.
|
|
#define BW_SSI_SFCSR_RFCNT1(x, v) (HW_SSI_SFCSR_WR(x, (HW_SSI_SFCSR_RD(x) & ~BM_SSI_SFCSR_RFCNT1) | BF_SSI_SFCSR_RFCNT1(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_SACNT - SSI AC97 Control Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_SACNT - SSI AC97 Control Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*/
|
|
typedef union _hw_ssi_sacnt
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_sacnt_bitfields
|
|
{
|
|
unsigned AC97EN : 1; //!< [0] AC97 Mode Enable.
|
|
unsigned FV : 1; //!< [1] Fixed/Variable Operation.
|
|
unsigned TIF : 1; //!< [2] Tag in FIFO.
|
|
unsigned RD : 1; //!< [3] Read Command.
|
|
unsigned WR : 1; //!< [4] Write Command.
|
|
unsigned FRDIV : 6; //!< [10:5] Frame Rate Divider.
|
|
unsigned RESERVED0 : 21; //!< [31:11] Reserved
|
|
} B;
|
|
} hw_ssi_sacnt_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_SACNT register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_SACNT_ADDR(x) (REGS_SSI_BASE(x) + 0x38)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_SACNT(x) (*(volatile hw_ssi_sacnt_t *) HW_SSI_SACNT_ADDR(x))
|
|
#define HW_SSI_SACNT_RD(x) (HW_SSI_SACNT(x).U)
|
|
#define HW_SSI_SACNT_WR(x, v) (HW_SSI_SACNT(x).U = (v))
|
|
#define HW_SSI_SACNT_SET(x, v) (HW_SSI_SACNT_WR(x, HW_SSI_SACNT_RD(x) | (v)))
|
|
#define HW_SSI_SACNT_CLR(x, v) (HW_SSI_SACNT_WR(x, HW_SSI_SACNT_RD(x) & ~(v)))
|
|
#define HW_SSI_SACNT_TOG(x, v) (HW_SSI_SACNT_WR(x, HW_SSI_SACNT_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_SACNT bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_SACNT, field AC97EN[0] (RW)
|
|
*
|
|
* AC97 Mode Enable. This bit is used to enable SSI AC97 operation. Refer to for details of AC97
|
|
* operation.
|
|
*
|
|
* Values:
|
|
* - 0 - AC97 mode disabled.
|
|
* - 1 - SSI in AC97 mode.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SACNT_AC97EN (0) //!< Bit position for SSI_SACNT_AC97EN.
|
|
#define BM_SSI_SACNT_AC97EN (0x00000001) //!< Bit mask for SSI_SACNT_AC97EN.
|
|
|
|
//! @brief Get value of SSI_SACNT_AC97EN from a register value.
|
|
#define BG_SSI_SACNT_AC97EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SACNT_AC97EN) >> BP_SSI_SACNT_AC97EN)
|
|
|
|
//! @brief Format value for bitfield SSI_SACNT_AC97EN.
|
|
#define BF_SSI_SACNT_AC97EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SACNT_AC97EN) & BM_SSI_SACNT_AC97EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the AC97EN field to a new value.
|
|
#define BW_SSI_SACNT_AC97EN(x, v) (HW_SSI_SACNT_WR(x, (HW_SSI_SACNT_RD(x) & ~BM_SSI_SACNT_AC97EN) | BF_SSI_SACNT_AC97EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SACNT, field FV[1] (RW)
|
|
*
|
|
* Fixed/Variable Operation. This bit selects whether the SSI is in AC97 Fixed mode or AC97 Variable
|
|
* mode.
|
|
*
|
|
* Values:
|
|
* - FIXED = 0 - AC97 Fixed Mode.
|
|
* - VARIABLE = 1 - AC97 Variable Mode.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SACNT_FV (1) //!< Bit position for SSI_SACNT_FV.
|
|
#define BM_SSI_SACNT_FV (0x00000002) //!< Bit mask for SSI_SACNT_FV.
|
|
|
|
//! @brief Get value of SSI_SACNT_FV from a register value.
|
|
#define BG_SSI_SACNT_FV(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SACNT_FV) >> BP_SSI_SACNT_FV)
|
|
|
|
//! @brief Format value for bitfield SSI_SACNT_FV.
|
|
#define BF_SSI_SACNT_FV(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SACNT_FV) & BM_SSI_SACNT_FV)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the FV field to a new value.
|
|
#define BW_SSI_SACNT_FV(x, v) (HW_SSI_SACNT_WR(x, (HW_SSI_SACNT_RD(x) & ~BM_SSI_SACNT_FV) | BF_SSI_SACNT_FV(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SACNT_FV_V(v) BF_SSI_SACNT_FV(BV_SSI_SACNT_FV__##v)
|
|
|
|
#define BV_SSI_SACNT_FV__FIXED (0x0) //!< AC97 Fixed Mode.
|
|
#define BV_SSI_SACNT_FV__VARIABLE (0x1) //!< AC97 Variable Mode.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SACNT, field TIF[2] (RW)
|
|
*
|
|
* Tag in FIFO. This bit controls the destination of the information received in AC97 tag slot (Slot
|
|
* #0).
|
|
*
|
|
* Values:
|
|
* - SATAG_REGISTER = 0 - Tag info stored in SATAG register.
|
|
* - RX_FIFO0 = 1 - Tag info stored in Rx FIFO 0.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SACNT_TIF (2) //!< Bit position for SSI_SACNT_TIF.
|
|
#define BM_SSI_SACNT_TIF (0x00000004) //!< Bit mask for SSI_SACNT_TIF.
|
|
|
|
//! @brief Get value of SSI_SACNT_TIF from a register value.
|
|
#define BG_SSI_SACNT_TIF(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SACNT_TIF) >> BP_SSI_SACNT_TIF)
|
|
|
|
//! @brief Format value for bitfield SSI_SACNT_TIF.
|
|
#define BF_SSI_SACNT_TIF(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SACNT_TIF) & BM_SSI_SACNT_TIF)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TIF field to a new value.
|
|
#define BW_SSI_SACNT_TIF(x, v) (HW_SSI_SACNT_WR(x, (HW_SSI_SACNT_RD(x) & ~BM_SSI_SACNT_TIF) | BF_SSI_SACNT_TIF(v)))
|
|
#endif
|
|
|
|
//! @brief Macro to simplify usage of value macros.
|
|
#define BF_SSI_SACNT_TIF_V(v) BF_SSI_SACNT_TIF(BV_SSI_SACNT_TIF__##v)
|
|
|
|
#define BV_SSI_SACNT_TIF__SATAG_REGISTER (0x0) //!< Tag info stored in SATAG register.
|
|
#define BV_SSI_SACNT_TIF__RX_FIFO0 (0x1) //!< Tag info stored in Rx FIFO 0.
|
|
//@}
|
|
|
|
/*! @name Register SSI_SACNT, field RD[3] (RW)
|
|
*
|
|
* Read Command. This bit specifies whether the next frame will carry an AC97 Read Command or not.
|
|
* The programmer should take care that only one of the bits (WR or RD) is set at a time. When this
|
|
* bit is set, the corresponding tag bit (corresponding to Command Address slot of the next Tx
|
|
* frame) is automatically set. This bit is automatically cleared by the SSI after completing
|
|
* transmission of a frame.
|
|
*
|
|
* Values:
|
|
* - 0 - Next frame will not have a Read Command.
|
|
* - 1 - Next frame will have a Read Command.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SACNT_RD (3) //!< Bit position for SSI_SACNT_RD.
|
|
#define BM_SSI_SACNT_RD (0x00000008) //!< Bit mask for SSI_SACNT_RD.
|
|
|
|
//! @brief Get value of SSI_SACNT_RD from a register value.
|
|
#define BG_SSI_SACNT_RD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SACNT_RD) >> BP_SSI_SACNT_RD)
|
|
|
|
//! @brief Format value for bitfield SSI_SACNT_RD.
|
|
#define BF_SSI_SACNT_RD(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SACNT_RD) & BM_SSI_SACNT_RD)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RD field to a new value.
|
|
#define BW_SSI_SACNT_RD(x, v) (HW_SSI_SACNT_WR(x, (HW_SSI_SACNT_RD(x) & ~BM_SSI_SACNT_RD) | BF_SSI_SACNT_RD(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SACNT, field WR[4] (RW)
|
|
*
|
|
* Write Command. This bit specifies whether the next frame will carry an AC97 Write Command or not.
|
|
* The programmer should take care that only one of the bits (WR or RD) is set at a time. When this
|
|
* bit is set, the corresponding tag bits (corresponding to Command Address and Command Data slots
|
|
* of the next Tx frame) are automatically set. This bit is automatically cleared by the SSI after
|
|
* completing transmission of a frame.
|
|
*
|
|
* Values:
|
|
* - 0 - Next frame will not have a Write Command.
|
|
* - 1 - Next frame will have a Write Command.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SACNT_WR (4) //!< Bit position for SSI_SACNT_WR.
|
|
#define BM_SSI_SACNT_WR (0x00000010) //!< Bit mask for SSI_SACNT_WR.
|
|
|
|
//! @brief Get value of SSI_SACNT_WR from a register value.
|
|
#define BG_SSI_SACNT_WR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SACNT_WR) >> BP_SSI_SACNT_WR)
|
|
|
|
//! @brief Format value for bitfield SSI_SACNT_WR.
|
|
#define BF_SSI_SACNT_WR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SACNT_WR) & BM_SSI_SACNT_WR)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the WR field to a new value.
|
|
#define BW_SSI_SACNT_WR(x, v) (HW_SSI_SACNT_WR(x, (HW_SSI_SACNT_RD(x) & ~BM_SSI_SACNT_WR) | BF_SSI_SACNT_WR(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SSI_SACNT, field FRDIV[10:5] (RW)
|
|
*
|
|
* Frame Rate Divider. These bits control the frequency of AC97 data transmission/reception. They
|
|
* are programmed with the number of frames for which the SSI should be idle, after operating in one
|
|
* frame. Through these bits, AC97 frequency of operation, from 48 KHz (000000) to 1 KHz (101111)
|
|
* can be achieved. Sample Value: 001010 (10 Decimal) = SSI will operate once every 11 frames.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SACNT_FRDIV (5) //!< Bit position for SSI_SACNT_FRDIV.
|
|
#define BM_SSI_SACNT_FRDIV (0x000007e0) //!< Bit mask for SSI_SACNT_FRDIV.
|
|
|
|
//! @brief Get value of SSI_SACNT_FRDIV from a register value.
|
|
#define BG_SSI_SACNT_FRDIV(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SACNT_FRDIV) >> BP_SSI_SACNT_FRDIV)
|
|
|
|
//! @brief Format value for bitfield SSI_SACNT_FRDIV.
|
|
#define BF_SSI_SACNT_FRDIV(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SACNT_FRDIV) & BM_SSI_SACNT_FRDIV)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the FRDIV field to a new value.
|
|
#define BW_SSI_SACNT_FRDIV(x, v) (HW_SSI_SACNT_WR(x, (HW_SSI_SACNT_RD(x) & ~BM_SSI_SACNT_FRDIV) | BF_SSI_SACNT_FRDIV(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_SACADD - SSI AC97 Command Address Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_SACADD - SSI AC97 Command Address Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*/
|
|
typedef union _hw_ssi_sacadd
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_sacadd_bitfields
|
|
{
|
|
unsigned SACADD : 19; //!< [18:0] AC97 Command Address.
|
|
unsigned RESERVED0 : 13; //!< [31:19] Reserved
|
|
} B;
|
|
} hw_ssi_sacadd_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_SACADD register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_SACADD_ADDR(x) (REGS_SSI_BASE(x) + 0x3c)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_SACADD(x) (*(volatile hw_ssi_sacadd_t *) HW_SSI_SACADD_ADDR(x))
|
|
#define HW_SSI_SACADD_RD(x) (HW_SSI_SACADD(x).U)
|
|
#define HW_SSI_SACADD_WR(x, v) (HW_SSI_SACADD(x).U = (v))
|
|
#define HW_SSI_SACADD_SET(x, v) (HW_SSI_SACADD_WR(x, HW_SSI_SACADD_RD(x) | (v)))
|
|
#define HW_SSI_SACADD_CLR(x, v) (HW_SSI_SACADD_WR(x, HW_SSI_SACADD_RD(x) & ~(v)))
|
|
#define HW_SSI_SACADD_TOG(x, v) (HW_SSI_SACADD_WR(x, HW_SSI_SACADD_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_SACADD bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_SACADD, field SACADD[18:0] (RW)
|
|
*
|
|
* AC97 Command Address. These bits store the Command Address Slot information (bit 19 of the slot
|
|
* is sent in accordance with the Read and Write Command bits in SSI_SACNT register). These bits can
|
|
* be updated by a direct write from the Core. They are also updated with the information received
|
|
* in the incoming Command Address Slot. If the contents of these bits change due to an update, the
|
|
* CMDAU bit in SISR is set.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SACADD_SACADD (0) //!< Bit position for SSI_SACADD_SACADD.
|
|
#define BM_SSI_SACADD_SACADD (0x0007ffff) //!< Bit mask for SSI_SACADD_SACADD.
|
|
|
|
//! @brief Get value of SSI_SACADD_SACADD from a register value.
|
|
#define BG_SSI_SACADD_SACADD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SACADD_SACADD) >> BP_SSI_SACADD_SACADD)
|
|
|
|
//! @brief Format value for bitfield SSI_SACADD_SACADD.
|
|
#define BF_SSI_SACADD_SACADD(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SACADD_SACADD) & BM_SSI_SACADD_SACADD)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SACADD field to a new value.
|
|
#define BW_SSI_SACADD_SACADD(x, v) (HW_SSI_SACADD_WR(x, (HW_SSI_SACADD_RD(x) & ~BM_SSI_SACADD_SACADD) | BF_SSI_SACADD_SACADD(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_SACDAT - SSI AC97 Command Data Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_SACDAT - SSI AC97 Command Data Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*/
|
|
typedef union _hw_ssi_sacdat
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_sacdat_bitfields
|
|
{
|
|
unsigned SACDAT : 20; //!< [19:0] AC97 Command Data.
|
|
unsigned RESERVED0 : 12; //!< [31:20] Reserved
|
|
} B;
|
|
} hw_ssi_sacdat_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_SACDAT register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_SACDAT_ADDR(x) (REGS_SSI_BASE(x) + 0x40)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_SACDAT(x) (*(volatile hw_ssi_sacdat_t *) HW_SSI_SACDAT_ADDR(x))
|
|
#define HW_SSI_SACDAT_RD(x) (HW_SSI_SACDAT(x).U)
|
|
#define HW_SSI_SACDAT_WR(x, v) (HW_SSI_SACDAT(x).U = (v))
|
|
#define HW_SSI_SACDAT_SET(x, v) (HW_SSI_SACDAT_WR(x, HW_SSI_SACDAT_RD(x) | (v)))
|
|
#define HW_SSI_SACDAT_CLR(x, v) (HW_SSI_SACDAT_WR(x, HW_SSI_SACDAT_RD(x) & ~(v)))
|
|
#define HW_SSI_SACDAT_TOG(x, v) (HW_SSI_SACDAT_WR(x, HW_SSI_SACDAT_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_SACDAT bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_SACDAT, field SACDAT[19:0] (RW)
|
|
*
|
|
* AC97 Command Data. The outgoing Command Data Slot carries the information contained in these
|
|
* bits. These bits can be updated by a direct write from the Core. They are also updated with the
|
|
* information received in the incoming Command Data Slot. If the contents of these bits change due
|
|
* to an update, the CMDDU bit in SISR is set. These bits are transmitted only during AC97 Write
|
|
* Command. During AC97 Read Command, 0x00000 is transmitted in time slot #2.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SACDAT_SACDAT (0) //!< Bit position for SSI_SACDAT_SACDAT.
|
|
#define BM_SSI_SACDAT_SACDAT (0x000fffff) //!< Bit mask for SSI_SACDAT_SACDAT.
|
|
|
|
//! @brief Get value of SSI_SACDAT_SACDAT from a register value.
|
|
#define BG_SSI_SACDAT_SACDAT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SACDAT_SACDAT) >> BP_SSI_SACDAT_SACDAT)
|
|
|
|
//! @brief Format value for bitfield SSI_SACDAT_SACDAT.
|
|
#define BF_SSI_SACDAT_SACDAT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SACDAT_SACDAT) & BM_SSI_SACDAT_SACDAT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SACDAT field to a new value.
|
|
#define BW_SSI_SACDAT_SACDAT(x, v) (HW_SSI_SACDAT_WR(x, (HW_SSI_SACDAT_RD(x) & ~BM_SSI_SACDAT_SACDAT) | BF_SSI_SACDAT_SACDAT(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_SATAG - SSI AC97 Tag Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_SATAG - SSI AC97 Tag Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*/
|
|
typedef union _hw_ssi_satag
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_satag_bitfields
|
|
{
|
|
unsigned SATAG : 16; //!< [15:0] AC97 Tag Value.
|
|
unsigned RESERVED0 : 16; //!< [31:16] Reserved
|
|
} B;
|
|
} hw_ssi_satag_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_SATAG register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_SATAG_ADDR(x) (REGS_SSI_BASE(x) + 0x44)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_SATAG(x) (*(volatile hw_ssi_satag_t *) HW_SSI_SATAG_ADDR(x))
|
|
#define HW_SSI_SATAG_RD(x) (HW_SSI_SATAG(x).U)
|
|
#define HW_SSI_SATAG_WR(x, v) (HW_SSI_SATAG(x).U = (v))
|
|
#define HW_SSI_SATAG_SET(x, v) (HW_SSI_SATAG_WR(x, HW_SSI_SATAG_RD(x) | (v)))
|
|
#define HW_SSI_SATAG_CLR(x, v) (HW_SSI_SATAG_WR(x, HW_SSI_SATAG_RD(x) & ~(v)))
|
|
#define HW_SSI_SATAG_TOG(x, v) (HW_SSI_SATAG_WR(x, HW_SSI_SATAG_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_SATAG bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_SATAG, field SATAG[15:0] (RW)
|
|
*
|
|
* AC97 Tag Value. Writing to this register (by the Core) sets the value of the Tx-Tag in AC97 fixed
|
|
* mode of operation. On a read, the Core gets the Rx-Tag Value received (in the last frame) from
|
|
* the Codec. If TIF bit in SSI_SACNT register is set, the TAG value is also stored in Rx-FIFO in
|
|
* addition to SATAG register. When the received Tag value changes, the RXT bit in SISR register is
|
|
* set. Bits SATAG[1:0] convey the Codec -ID. In current implementation only Primary Codecs are
|
|
* supported. Thus writing value 2'b00 to this field is mandatory.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SATAG_SATAG (0) //!< Bit position for SSI_SATAG_SATAG.
|
|
#define BM_SSI_SATAG_SATAG (0x0000ffff) //!< Bit mask for SSI_SATAG_SATAG.
|
|
|
|
//! @brief Get value of SSI_SATAG_SATAG from a register value.
|
|
#define BG_SSI_SATAG_SATAG(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SATAG_SATAG) >> BP_SSI_SATAG_SATAG)
|
|
|
|
//! @brief Format value for bitfield SSI_SATAG_SATAG.
|
|
#define BF_SSI_SATAG_SATAG(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SATAG_SATAG) & BM_SSI_SATAG_SATAG)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SATAG field to a new value.
|
|
#define BW_SSI_SATAG_SATAG(x, v) (HW_SSI_SATAG_WR(x, (HW_SSI_SATAG_RD(x) & ~BM_SSI_SATAG_SATAG) | BF_SSI_SATAG_SATAG(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_STMSK - SSI Transmit Time Slot Mask Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_STMSK - SSI Transmit Time Slot Mask Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*/
|
|
typedef union _hw_ssi_stmsk
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_stmsk_bitfields
|
|
{
|
|
unsigned STMSK : 32; //!< [31:0] Transmit Mask.
|
|
} B;
|
|
} hw_ssi_stmsk_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_STMSK register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_STMSK_ADDR(x) (REGS_SSI_BASE(x) + 0x48)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_STMSK(x) (*(volatile hw_ssi_stmsk_t *) HW_SSI_STMSK_ADDR(x))
|
|
#define HW_SSI_STMSK_RD(x) (HW_SSI_STMSK(x).U)
|
|
#define HW_SSI_STMSK_WR(x, v) (HW_SSI_STMSK(x).U = (v))
|
|
#define HW_SSI_STMSK_SET(x, v) (HW_SSI_STMSK_WR(x, HW_SSI_STMSK_RD(x) | (v)))
|
|
#define HW_SSI_STMSK_CLR(x, v) (HW_SSI_STMSK_WR(x, HW_SSI_STMSK_RD(x) & ~(v)))
|
|
#define HW_SSI_STMSK_TOG(x, v) (HW_SSI_STMSK_WR(x, HW_SSI_STMSK_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_STMSK bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_STMSK, field STMSK[31:0] (RW)
|
|
*
|
|
* Transmit Mask. These bits indicate which slot has been masked in the current frame. The Core can
|
|
* write to this register to control the time slots in which the SSI transmits data. Each bit has
|
|
* info corresponding to the respective time slot in the frame. Transmit mask bits should not be
|
|
* used in I2S Slave mode of operation. SSI_STMSK register value must be set before enabling
|
|
* Transmission.
|
|
*
|
|
* Values:
|
|
* - 0 - Valid Time Slot.
|
|
* - 1 - Time Slot masked (no data transmitted in this time slot).
|
|
*/
|
|
//@{
|
|
#define BP_SSI_STMSK_STMSK (0) //!< Bit position for SSI_STMSK_STMSK.
|
|
#define BM_SSI_STMSK_STMSK (0xffffffff) //!< Bit mask for SSI_STMSK_STMSK.
|
|
|
|
//! @brief Get value of SSI_STMSK_STMSK from a register value.
|
|
#define BG_SSI_STMSK_STMSK(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_STMSK_STMSK) >> BP_SSI_STMSK_STMSK)
|
|
|
|
//! @brief Format value for bitfield SSI_STMSK_STMSK.
|
|
#define BF_SSI_STMSK_STMSK(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_STMSK_STMSK) & BM_SSI_STMSK_STMSK)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the STMSK field to a new value.
|
|
#define BW_SSI_STMSK_STMSK(x, v) (HW_SSI_STMSK_WR(x, (HW_SSI_STMSK_RD(x) & ~BM_SSI_STMSK_STMSK) | BF_SSI_STMSK_STMSK(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_SRMSK - SSI Receive Time Slot Mask Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_SRMSK - SSI Receive Time Slot Mask Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*/
|
|
typedef union _hw_ssi_srmsk
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_srmsk_bitfields
|
|
{
|
|
unsigned SRMSK : 32; //!< [31:0] Receive Mask.
|
|
} B;
|
|
} hw_ssi_srmsk_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_SRMSK register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_SRMSK_ADDR(x) (REGS_SSI_BASE(x) + 0x4c)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_SRMSK(x) (*(volatile hw_ssi_srmsk_t *) HW_SSI_SRMSK_ADDR(x))
|
|
#define HW_SSI_SRMSK_RD(x) (HW_SSI_SRMSK(x).U)
|
|
#define HW_SSI_SRMSK_WR(x, v) (HW_SSI_SRMSK(x).U = (v))
|
|
#define HW_SSI_SRMSK_SET(x, v) (HW_SSI_SRMSK_WR(x, HW_SSI_SRMSK_RD(x) | (v)))
|
|
#define HW_SSI_SRMSK_CLR(x, v) (HW_SSI_SRMSK_WR(x, HW_SSI_SRMSK_RD(x) & ~(v)))
|
|
#define HW_SSI_SRMSK_TOG(x, v) (HW_SSI_SRMSK_WR(x, HW_SSI_SRMSK_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_SRMSK bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_SRMSK, field SRMSK[31:0] (RW)
|
|
*
|
|
* Receive Mask. These bits indicate which slot has been masked in the current frame. The Core can
|
|
* write to this register to control the time slots in which the SSI receives data. Each bit has
|
|
* info corresponding to the respective time slot in the frame. SSI_SRMSK register value must be set
|
|
* before enabling Receiver. Receive mask bits should not be used in I2S Slave mode of operation.
|
|
*
|
|
* Values:
|
|
* - 0 - Valid Time Slot.
|
|
* - 1 - Time Slot masked (no data received in this time slot).
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SRMSK_SRMSK (0) //!< Bit position for SSI_SRMSK_SRMSK.
|
|
#define BM_SSI_SRMSK_SRMSK (0xffffffff) //!< Bit mask for SSI_SRMSK_SRMSK.
|
|
|
|
//! @brief Get value of SSI_SRMSK_SRMSK from a register value.
|
|
#define BG_SSI_SRMSK_SRMSK(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SRMSK_SRMSK) >> BP_SSI_SRMSK_SRMSK)
|
|
|
|
//! @brief Format value for bitfield SSI_SRMSK_SRMSK.
|
|
#define BF_SSI_SRMSK_SRMSK(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SRMSK_SRMSK) & BM_SSI_SRMSK_SRMSK)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SRMSK field to a new value.
|
|
#define BW_SSI_SRMSK_SRMSK(x, v) (HW_SSI_SRMSK_WR(x, (HW_SSI_SRMSK_RD(x) & ~BM_SSI_SRMSK_SRMSK) | BF_SSI_SRMSK_SRMSK(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_SACCST - SSI AC97 Channel Status Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_SACCST - SSI AC97 Channel Status Register (RO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*/
|
|
typedef union _hw_ssi_saccst
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_saccst_bitfields
|
|
{
|
|
unsigned SACCST : 10; //!< [9:0] AC97 Channel Status.
|
|
unsigned RESERVED0 : 22; //!< [31:10] Reserved
|
|
} B;
|
|
} hw_ssi_saccst_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_SACCST register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_SACCST_ADDR(x) (REGS_SSI_BASE(x) + 0x50)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_SACCST(x) (*(volatile hw_ssi_saccst_t *) HW_SSI_SACCST_ADDR(x))
|
|
#define HW_SSI_SACCST_RD(x) (HW_SSI_SACCST(x).U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_SACCST bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_SACCST, field SACCST[9:0] (RO)
|
|
*
|
|
* AC97 Channel Status. These bits indicate which data slot has been enabled in AC97 variable mode
|
|
* operation. This register is updated in case the core enables/disables a channel through a write
|
|
* to SSI_SACCEN/SSI_SACCDIS register or the external codec enables a channel by sending a '1' in
|
|
* the corresponding SLOTREQ bit. Bit [0] corresponds to the first data slot in an AC97 frame (Slot
|
|
* #3) and Bit [9] corresponds to the tenth data slot (slot #12). The contents of this register only
|
|
* have relevance while the SSI is operating in AC97 variable mode. Writes to this register result
|
|
* in an error response on the block interface.
|
|
*
|
|
* Values:
|
|
* - 0 - Data channel disabled.
|
|
* - 1 - Data channel enabled.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SACCST_SACCST (0) //!< Bit position for SSI_SACCST_SACCST.
|
|
#define BM_SSI_SACCST_SACCST (0x000003ff) //!< Bit mask for SSI_SACCST_SACCST.
|
|
|
|
//! @brief Get value of SSI_SACCST_SACCST from a register value.
|
|
#define BG_SSI_SACCST_SACCST(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SACCST_SACCST) >> BP_SSI_SACCST_SACCST)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_SACCEN - SSI AC97 Channel Enable Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_SACCEN - SSI AC97 Channel Enable Register (WO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*/
|
|
typedef union _hw_ssi_saccen
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_saccen_bitfields
|
|
{
|
|
unsigned SACCEN : 10; //!< [9:0] AC97 Channel Enable.
|
|
unsigned RESERVED0 : 22; //!< [31:10] Reserved
|
|
} B;
|
|
} hw_ssi_saccen_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_SACCEN register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_SACCEN_ADDR(x) (REGS_SSI_BASE(x) + 0x54)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_SACCEN(x) (*(volatile hw_ssi_saccen_t *) HW_SSI_SACCEN_ADDR(x))
|
|
#define HW_SSI_SACCEN_WR(x, v) (HW_SSI_SACCEN(x).U = (v))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_SACCEN bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_SACCEN, field SACCEN[9:0] (WO)
|
|
*
|
|
* AC97 Channel Enable. The Core writes a '1' to these bits to enable an AC97 data channel. Writing
|
|
* a '0' has no effect. Bit [0] corresponds to the first data slot in an AC97 frame (Slot #3) and
|
|
* Bit [9] corresponds to the tenth data slot (slot #12). Writes to these bits only have effect in
|
|
* the AC97 Variable mode of operation. These bits are always read as '0' by the Core.
|
|
*
|
|
* Values:
|
|
* - 0 - Write Has no effect.
|
|
* - 1 - Write Enables the corresponding data channel.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SACCEN_SACCEN (0) //!< Bit position for SSI_SACCEN_SACCEN.
|
|
#define BM_SSI_SACCEN_SACCEN (0x000003ff) //!< Bit mask for SSI_SACCEN_SACCEN.
|
|
|
|
//! @brief Get value of SSI_SACCEN_SACCEN from a register value.
|
|
#define BG_SSI_SACCEN_SACCEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SACCEN_SACCEN) >> BP_SSI_SACCEN_SACCEN)
|
|
|
|
//! @brief Format value for bitfield SSI_SACCEN_SACCEN.
|
|
#define BF_SSI_SACCEN_SACCEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SACCEN_SACCEN) & BM_SSI_SACCEN_SACCEN)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SSI_SACCDIS - SSI AC97 Channel Disable Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SSI_SACCDIS - SSI AC97 Channel Disable Register (WO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*/
|
|
typedef union _hw_ssi_saccdis
|
|
{
|
|
reg32_t U;
|
|
struct _hw_ssi_saccdis_bitfields
|
|
{
|
|
unsigned SACCDIS : 10; //!< [9:0] AC97 Channel Disable.
|
|
unsigned RESERVED0 : 22; //!< [31:10] Reserved
|
|
} B;
|
|
} hw_ssi_saccdis_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SSI_SACCDIS register
|
|
*/
|
|
//@{
|
|
#define HW_SSI_SACCDIS_ADDR(x) (REGS_SSI_BASE(x) + 0x58)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SSI_SACCDIS(x) (*(volatile hw_ssi_saccdis_t *) HW_SSI_SACCDIS_ADDR(x))
|
|
#define HW_SSI_SACCDIS_WR(x, v) (HW_SSI_SACCDIS(x).U = (v))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SSI_SACCDIS bitfields
|
|
*/
|
|
|
|
/*! @name Register SSI_SACCDIS, field SACCDIS[9:0] (WO)
|
|
*
|
|
* AC97 Channel Disable. The Core writes a '1' to these bits to disable an AC97 data channel.
|
|
* Writing a '0' has no effect. Bit [0] corresponds to the first data slot in an AC97 frame (Slot
|
|
* #3) and Bit [9] corresponds to the tenth data slot (slot #12). Writes to these bits only have
|
|
* effect in the AC97 Variable mode of operation. These bits are always read as '0' by the Core.
|
|
*
|
|
* Values:
|
|
* - 0 - Write Has no effect.
|
|
* - 1 - Write Disables the corresponding data channel.
|
|
*/
|
|
//@{
|
|
#define BP_SSI_SACCDIS_SACCDIS (0) //!< Bit position for SSI_SACCDIS_SACCDIS.
|
|
#define BM_SSI_SACCDIS_SACCDIS (0x000003ff) //!< Bit mask for SSI_SACCDIS_SACCDIS.
|
|
|
|
//! @brief Get value of SSI_SACCDIS_SACCDIS from a register value.
|
|
#define BG_SSI_SACCDIS_SACCDIS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SSI_SACCDIS_SACCDIS) >> BP_SSI_SACCDIS_SACCDIS)
|
|
|
|
//! @brief Format value for bitfield SSI_SACCDIS_SACCDIS.
|
|
#define BF_SSI_SACCDIS_SACCDIS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SSI_SACCDIS_SACCDIS) & BM_SSI_SACCDIS_SACCDIS)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// hw_ssi_t - module struct
|
|
//-------------------------------------------------------------------------------------------
|
|
/*!
|
|
* @brief All SSI module registers.
|
|
*/
|
|
#ifndef __LANGUAGE_ASM__
|
|
#pragma pack(1)
|
|
typedef struct _hw_ssi
|
|
{
|
|
volatile hw_ssi_stxn_t STXn[2]; //!< SSI Transmit Data Register n
|
|
volatile hw_ssi_srxn_t SRXn[2]; //!< SSI Receive Data Register n
|
|
volatile hw_ssi_scr_t SCR; //!< SSI Control Register
|
|
volatile hw_ssi_sisr_t SISR; //!< SSI Interrupt Status Register
|
|
volatile hw_ssi_sier_t SIER; //!< SSI Interrupt Enable Register
|
|
volatile hw_ssi_stcr_t STCR; //!< SSI Transmit Configuration Register
|
|
volatile hw_ssi_srcr_t SRCR; //!< SSI Receive Configuration Register
|
|
volatile hw_ssi_stccr_t STCCR; //!< SSI Transmit Clock Control Register
|
|
volatile hw_ssi_srccr_t SRCCR; //!< SSI Receive Clock Control Register
|
|
volatile hw_ssi_sfcsr_t SFCSR; //!< SSI FIFO Control/Status Register
|
|
reg32_t _reserved0[2];
|
|
volatile hw_ssi_sacnt_t SACNT; //!< SSI AC97 Control Register
|
|
volatile hw_ssi_sacadd_t SACADD; //!< SSI AC97 Command Address Register
|
|
volatile hw_ssi_sacdat_t SACDAT; //!< SSI AC97 Command Data Register
|
|
volatile hw_ssi_satag_t SATAG; //!< SSI AC97 Tag Register
|
|
volatile hw_ssi_stmsk_t STMSK; //!< SSI Transmit Time Slot Mask Register
|
|
volatile hw_ssi_srmsk_t SRMSK; //!< SSI Receive Time Slot Mask Register
|
|
volatile hw_ssi_saccst_t SACCST; //!< SSI AC97 Channel Status Register
|
|
volatile hw_ssi_saccen_t SACCEN; //!< SSI AC97 Channel Enable Register
|
|
volatile hw_ssi_saccdis_t SACCDIS; //!< SSI AC97 Channel Disable Register
|
|
} hw_ssi_t;
|
|
#pragma pack()
|
|
|
|
//! @brief Macro to access all SSI registers.
|
|
//! @param x SSI instance number.
|
|
//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct,
|
|
//! use the '&' operator, like <code>&HW_SSI(0)</code>.
|
|
#define HW_SSI(x) (*(hw_ssi_t *) REGS_SSI_BASE(x))
|
|
#endif
|
|
|
|
#endif // __HW_SSI_REGISTERS_H__
|
|
// v18/121106/1.2.2
|
|
// EOF
|