4621 lines
191 KiB
C
4621 lines
191 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_SATA_REGISTERS_H__
|
|
#define __HW_SATA_REGISTERS_H__
|
|
|
|
#include "regs.h"
|
|
|
|
/*
|
|
* i.MX6DQ SATA
|
|
*
|
|
* SATA
|
|
*
|
|
* Registers defined in this header file:
|
|
* - HW_SATA_CAP - HBA Capabilites Register
|
|
* - HW_SATA_GHC - Global HBA Control Register
|
|
* - HW_SATA_IS - Interrupt Status Register
|
|
* - HW_SATA_PI - Ports Implemented Register
|
|
* - HW_SATA_VS - AHCl Version Register
|
|
* - HW_SATA_CCC_CTL - Command Completion Coalescing Control
|
|
* - HW_SATA_CCC_PORTS - Command Completion Coalescing Ports
|
|
* - HW_SATA_CAP2 - HBA Capabilities Extended Register
|
|
* - HW_SATA_BISTAFR - BIST Activate FIS Register
|
|
* - HW_SATA_BISTCR - BIST Control Register
|
|
* - HW_SATA_BISTFCTR - BIST FIS Count Register
|
|
* - HW_SATA_BISTSR - BIST Status Register
|
|
* - HW_SATA_OOBR - OOB Register
|
|
* - HW_SATA_GPCR - General Purpose Control Register
|
|
* - HW_SATA_GPSR - General Purpose Status Register
|
|
* - HW_SATA_TIMER1MS - Timer 1-ms Register
|
|
* - HW_SATA_TESTR - Test Register
|
|
* - HW_SATA_VERSIONR - Version Register
|
|
* - HW_SATA_P0CLB - Port0 Command List Base Address Register
|
|
* - HW_SATA_P0FB - Port0 FIS Base Address Register
|
|
* - HW_SATA_P0IS - Port0 Interrupt Status Register
|
|
* - HW_SATA_P0IE - Port0 Interrupt Enable Register
|
|
* - HW_SATA_P0CMD - Port0 Command Register
|
|
* - HW_SATA_P0TFD - Port0 Task File Data Register
|
|
* - HW_SATA_P0SIG - Port0 Signature Register
|
|
* - HW_SATA_P0SSTS - Port0 Serial ATA Status Register
|
|
* - HW_SATA_P0SCTL - Port0 Serial ATA Control {SControl} Register
|
|
* - HW_SATA_P0SERR - Port0 Serial ATA Error Register
|
|
* - HW_SATA_P0SACT - Port0 Serial ATA Active Register
|
|
* - HW_SATA_P0CI - Port0 Command Issue Register
|
|
* - HW_SATA_P0SNTF - Port0 Serial ATA Notification Register
|
|
* - HW_SATA_P0DMACR - Port0 DMA Control Register
|
|
* - HW_SATA_P0PHYCR - Port0 PHY Control Register
|
|
* - HW_SATA_P0PHYSR - Port0 PHY Status Register
|
|
*
|
|
* - hw_sata_t - Struct containing all module registers.
|
|
*/
|
|
|
|
//! @name Module base addresses
|
|
//@{
|
|
#ifndef REGS_SATA_BASE
|
|
#define HW_SATA_INSTANCE_COUNT (1) //!< Number of instances of the SATA module.
|
|
#define REGS_SATA_BASE (0x02200000) //!< Base address for SATA.
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_CAP - HBA Capabilites Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_CAP - HBA Capabilites Register (RO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register indicates basic capabilities of the SATA block to the software.
|
|
*/
|
|
typedef union _hw_sata_cap
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_cap_bitfields
|
|
{
|
|
unsigned NP : 5; //!< [4:0] Number of Ports.
|
|
unsigned SXS : 1; //!< [5] Supports External SATA.
|
|
unsigned EMS : 1; //!< [6] Enclosure Management Support.
|
|
unsigned CCCS : 1; //!< [7] Command Completion Coalescing Support.
|
|
unsigned NCS : 5; //!< [12:8] Number of Command Slots.
|
|
unsigned PSC : 1; //!< [13] Partial State Capable.
|
|
unsigned SSC : 1; //!< [14] Slumber State Capable.
|
|
unsigned PMD : 1; //!< [15] PIO Multiple DRQ Block.
|
|
unsigned RESERVED0 : 1; //!< [16] Reserved.
|
|
unsigned SMP : 1; //!< [17] Supports Port Multiplier.
|
|
unsigned SAM : 1; //!< [18] Supports AHCI Mode Only.
|
|
unsigned RESERVED1 : 1; //!< [19] Reserved.
|
|
unsigned ISS : 4; //!< [23:20] Interface Speed Support.
|
|
unsigned SCLO : 1; //!< [24] Supports Command List Override.
|
|
unsigned SAL : 1; //!< [25] Supports Activity LED.
|
|
unsigned SALP : 1; //!< [26] Supports Aggressive Link Power Management.
|
|
unsigned SSS : 1; //!< [27] Supports Staggered Spin-up.
|
|
unsigned SMPS : 1; //!< [28] Supports Mechanical Presence Switch.
|
|
unsigned SSNTF : 1; //!< [29] Supports SNotification Register.
|
|
unsigned SNCQ : 1; //!< [30] Supports Native Command Queuing.
|
|
unsigned S64A : 1; //!< [31] Supports 64-bit Addressing
|
|
} B;
|
|
} hw_sata_cap_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_CAP register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_CAP_ADDR (REGS_SATA_BASE + 0x0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_CAP (*(volatile hw_sata_cap_t *) HW_SATA_CAP_ADDR)
|
|
#define HW_SATA_CAP_RD() (HW_SATA_CAP.U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_CAP bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_CAP, field NP[4:0] (RO)
|
|
*
|
|
* Number of Ports. 0's based value indicating the number of Ports supported by the SATA block: The
|
|
* options for this field are: • 0x00: 1 Port • 0x01: 2 Ports • 0x02: 3 Ports Reset Value: 0x00
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_NP (0) //!< Bit position for SATA_CAP_NP.
|
|
#define BM_SATA_CAP_NP (0x0000001f) //!< Bit mask for SATA_CAP_NP.
|
|
|
|
//! @brief Get value of SATA_CAP_NP from a register value.
|
|
#define BG_SATA_CAP_NP(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_NP) >> BP_SATA_CAP_NP)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field SXS[5] (RO)
|
|
*
|
|
* Supports External SATA. The options for this field are: 1 Indicates that the SATA block has one
|
|
* or more Ports that has a signal only connector (power is not part of that connector) that is
|
|
* externally accessible. When this bit is set to 1, the software can refer to the SATA_P 0 CMD[ESP]
|
|
* bit to determine whether a specific Port has its signal connector externally accessible. 0
|
|
* Indicates that the SATA block has no Ports that have a signal only connector externally
|
|
* accessible. Reset Value: Configurable
|
|
*
|
|
* Values:
|
|
* - 0 - when all of the SATA_P 0 CMD[ESP]=0
|
|
* - 1 - when any of the SATA_P 0 CMD[ESP]=1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_SXS (5) //!< Bit position for SATA_CAP_SXS.
|
|
#define BM_SATA_CAP_SXS (0x00000020) //!< Bit mask for SATA_CAP_SXS.
|
|
|
|
//! @brief Get value of SATA_CAP_SXS from a register value.
|
|
#define BG_SATA_CAP_SXS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_SXS) >> BP_SATA_CAP_SXS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field EMS[6] (RO)
|
|
*
|
|
* Enclosure Management Support. SATA block does not support enclosure management.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_EMS (6) //!< Bit position for SATA_CAP_EMS.
|
|
#define BM_SATA_CAP_EMS (0x00000040) //!< Bit mask for SATA_CAP_EMS.
|
|
|
|
//! @brief Get value of SATA_CAP_EMS from a register value.
|
|
#define BG_SATA_CAP_EMS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_EMS) >> BP_SATA_CAP_EMS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field CCCS[7] (RO)
|
|
*
|
|
* Command Completion Coalescing Support. SATA block supports command completion coalescing.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_CCCS (7) //!< Bit position for SATA_CAP_CCCS.
|
|
#define BM_SATA_CAP_CCCS (0x00000080) //!< Bit mask for SATA_CAP_CCCS.
|
|
|
|
//! @brief Get value of SATA_CAP_CCCS from a register value.
|
|
#define BG_SATA_CAP_CCCS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_CCCS) >> BP_SATA_CAP_CCCS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field NCS[12:8] (RO)
|
|
*
|
|
* Number of Command Slots. SATA block supports 32 command slots per Port.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_NCS (8) //!< Bit position for SATA_CAP_NCS.
|
|
#define BM_SATA_CAP_NCS (0x00001f00) //!< Bit mask for SATA_CAP_NCS.
|
|
|
|
//! @brief Get value of SATA_CAP_NCS from a register value.
|
|
#define BG_SATA_CAP_NCS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_NCS) >> BP_SATA_CAP_NCS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field PSC[13] (RO)
|
|
*
|
|
* Partial State Capable. SATA block supports transitions to the interface PARTIAL power management
|
|
* state.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_PSC (13) //!< Bit position for SATA_CAP_PSC.
|
|
#define BM_SATA_CAP_PSC (0x00002000) //!< Bit mask for SATA_CAP_PSC.
|
|
|
|
//! @brief Get value of SATA_CAP_PSC from a register value.
|
|
#define BG_SATA_CAP_PSC(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_PSC) >> BP_SATA_CAP_PSC)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field SSC[14] (RO)
|
|
*
|
|
* Slumber State Capable. SATA block supports transitions to the interface SLUMBER power management
|
|
* state.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_SSC (14) //!< Bit position for SATA_CAP_SSC.
|
|
#define BM_SATA_CAP_SSC (0x00004000) //!< Bit mask for SATA_CAP_SSC.
|
|
|
|
//! @brief Get value of SATA_CAP_SSC from a register value.
|
|
#define BG_SATA_CAP_SSC(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_SSC) >> BP_SATA_CAP_SSC)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field PMD[15] (RO)
|
|
*
|
|
* PIO Multiple DRQ Block. SATA block supports multiple DRQ block data transfers for the PIO command
|
|
* protocol.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_PMD (15) //!< Bit position for SATA_CAP_PMD.
|
|
#define BM_SATA_CAP_PMD (0x00008000) //!< Bit mask for SATA_CAP_PMD.
|
|
|
|
//! @brief Get value of SATA_CAP_PMD from a register value.
|
|
#define BG_SATA_CAP_PMD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_PMD) >> BP_SATA_CAP_PMD)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field SMP[17] (RO)
|
|
*
|
|
* Supports Port Multiplier. SATA block supports command-based switching Port Multiplier on any of
|
|
* its Ports.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_SMP (17) //!< Bit position for SATA_CAP_SMP.
|
|
#define BM_SATA_CAP_SMP (0x00020000) //!< Bit mask for SATA_CAP_SMP.
|
|
|
|
//! @brief Get value of SATA_CAP_SMP from a register value.
|
|
#define BG_SATA_CAP_SMP(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_SMP) >> BP_SATA_CAP_SMP)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field SAM[18] (RO)
|
|
*
|
|
* Supports AHCI Mode Only. SATA block supports AHCI mode only and does not support legacy, task-
|
|
* file based register interface.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_SAM (18) //!< Bit position for SATA_CAP_SAM.
|
|
#define BM_SATA_CAP_SAM (0x00040000) //!< Bit mask for SATA_CAP_SAM.
|
|
|
|
//! @brief Get value of SATA_CAP_SAM from a register value.
|
|
#define BG_SATA_CAP_SAM(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_SAM) >> BP_SATA_CAP_SAM)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field ISS[23:20] (RU)
|
|
*
|
|
* Interface Speed Support. Reserved. Returns 0x2 on read.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_ISS (20) //!< Bit position for SATA_CAP_ISS.
|
|
#define BM_SATA_CAP_ISS (0x00f00000) //!< Bit mask for SATA_CAP_ISS.
|
|
|
|
//! @brief Get value of SATA_CAP_ISS from a register value.
|
|
#define BG_SATA_CAP_ISS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_ISS) >> BP_SATA_CAP_ISS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field SCLO[24] (RO)
|
|
*
|
|
* Supports Command List Override. SATA block supports the SATA_P 0 CMD[CLO] bit functionality for
|
|
* Port Multiplier devices' enumeration.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_SCLO (24) //!< Bit position for SATA_CAP_SCLO.
|
|
#define BM_SATA_CAP_SCLO (0x01000000) //!< Bit mask for SATA_CAP_SCLO.
|
|
|
|
//! @brief Get value of SATA_CAP_SCLO from a register value.
|
|
#define BG_SATA_CAP_SCLO(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_SCLO) >> BP_SATA_CAP_SCLO)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field SAL[25] (RO)
|
|
*
|
|
* Supports Activity LED. SATA block supports activity indication using signal p 0 _act_led.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_SAL (25) //!< Bit position for SATA_CAP_SAL.
|
|
#define BM_SATA_CAP_SAL (0x02000000) //!< Bit mask for SATA_CAP_SAL.
|
|
|
|
//! @brief Get value of SATA_CAP_SAL from a register value.
|
|
#define BG_SATA_CAP_SAL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_SAL) >> BP_SATA_CAP_SAL)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field SALP[26] (RO)
|
|
*
|
|
* Supports Aggressive Link Power Management. SATA block supports auto-generating (Port-initiated)
|
|
* Link Layer requests to the PARTIAL or SLUMBER power management states when there are no commands
|
|
* to process.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_SALP (26) //!< Bit position for SATA_CAP_SALP.
|
|
#define BM_SATA_CAP_SALP (0x04000000) //!< Bit mask for SATA_CAP_SALP.
|
|
|
|
//! @brief Get value of SATA_CAP_SALP from a register value.
|
|
#define BG_SATA_CAP_SALP(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_SALP) >> BP_SATA_CAP_SALP)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field SSS[27] (RO)
|
|
*
|
|
* Supports Staggered Spin-up. This bit is set by the system firmware/BIOS to indicate platform
|
|
* support for staggered devices' spin-up. SATA block supports this feature through the SATA_P 0
|
|
* CMD[SUD] bit functionality.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_SSS (27) //!< Bit position for SATA_CAP_SSS.
|
|
#define BM_SATA_CAP_SSS (0x08000000) //!< Bit mask for SATA_CAP_SSS.
|
|
|
|
//! @brief Get value of SATA_CAP_SSS from a register value.
|
|
#define BG_SATA_CAP_SSS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_SSS) >> BP_SATA_CAP_SSS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field SMPS[28] (RO)
|
|
*
|
|
* Supports Mechanical Presence Switch. This bit is set by the system firmware/BIOS when the
|
|
* platform supports mechanical presence switch for hot plug operation. Dependencies: This field is
|
|
* implemented only when parameter (Macro configuration parm) DEV_MP_SWITCH==Include. When this
|
|
* field is not implemented, this field is reserved, and reads 1'b0.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_SMPS (28) //!< Bit position for SATA_CAP_SMPS.
|
|
#define BM_SATA_CAP_SMPS (0x10000000) //!< Bit mask for SATA_CAP_SMPS.
|
|
|
|
//! @brief Get value of SATA_CAP_SMPS from a register value.
|
|
#define BG_SATA_CAP_SMPS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_SMPS) >> BP_SATA_CAP_SMPS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field SSNTF[29] (RO)
|
|
*
|
|
* Supports SNotification Register. SATA block supports SATA_P 0 SNTF (SNotification) register and
|
|
* its associated functionality.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_SSNTF (29) //!< Bit position for SATA_CAP_SSNTF.
|
|
#define BM_SATA_CAP_SSNTF (0x20000000) //!< Bit mask for SATA_CAP_SSNTF.
|
|
|
|
//! @brief Get value of SATA_CAP_SSNTF from a register value.
|
|
#define BG_SATA_CAP_SSNTF(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_SSNTF) >> BP_SATA_CAP_SSNTF)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field SNCQ[30] (RO)
|
|
*
|
|
* Supports Native Command Queuing. SATA block supports SATA native command queueing by handling DMA
|
|
* Setup FIS natively.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_SNCQ (30) //!< Bit position for SATA_CAP_SNCQ.
|
|
#define BM_SATA_CAP_SNCQ (0x40000000) //!< Bit mask for SATA_CAP_SNCQ.
|
|
|
|
//! @brief Get value of SATA_CAP_SNCQ from a register value.
|
|
#define BG_SATA_CAP_SNCQ(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_SNCQ) >> BP_SATA_CAP_SNCQ)
|
|
//@}
|
|
|
|
/*! @name Register SATA_CAP, field S64A[31] (RO)
|
|
*
|
|
* Supports 64-bit Addressing SATA block supports 64-bit addressable data structures by utilizing
|
|
* PFFBU and P#CLBU registers. Reset Value: Configurable.
|
|
*
|
|
* Values:
|
|
* - 0 - when M_HADDR_WIDTH=32
|
|
* - 1 - when M_HADDR_WIDTH=64
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP_S64A (31) //!< Bit position for SATA_CAP_S64A.
|
|
#define BM_SATA_CAP_S64A (0x80000000) //!< Bit mask for SATA_CAP_S64A.
|
|
|
|
//! @brief Get value of SATA_CAP_S64A from a register value.
|
|
#define BG_SATA_CAP_S64A(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP_S64A) >> BP_SATA_CAP_S64A)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_GHC - Global HBA Control Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_GHC - Global HBA Control Register (RW)
|
|
*
|
|
* Reset value: 0x80000000
|
|
*
|
|
* This register controls various global actions of the SATA block.
|
|
*/
|
|
typedef union _hw_sata_ghc
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_ghc_bitfields
|
|
{
|
|
unsigned HR : 1; //!< [0] HBA Reset.
|
|
unsigned IE : 1; //!< [1] Interrupt Enable.
|
|
unsigned RESERVED0 : 29; //!< [30:2] Reserved
|
|
unsigned AE : 1; //!< [31] AHCI Enable.
|
|
} B;
|
|
} hw_sata_ghc_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_GHC register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_GHC_ADDR (REGS_SATA_BASE + 0x4)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_GHC (*(volatile hw_sata_ghc_t *) HW_SATA_GHC_ADDR)
|
|
#define HW_SATA_GHC_RD() (HW_SATA_GHC.U)
|
|
#define HW_SATA_GHC_WR(v) (HW_SATA_GHC.U = (v))
|
|
#define HW_SATA_GHC_SET(v) (HW_SATA_GHC_WR(HW_SATA_GHC_RD() | (v)))
|
|
#define HW_SATA_GHC_CLR(v) (HW_SATA_GHC_WR(HW_SATA_GHC_RD() & ~(v)))
|
|
#define HW_SATA_GHC_TOG(v) (HW_SATA_GHC_WR(HW_SATA_GHC_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_GHC bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_GHC, field HR[0] (WO)
|
|
*
|
|
* HBA Reset. When set by the software, this bit causes an internal Global reset of the SATA block.
|
|
* All state machines that relate to data transfers and queueing return to an idle state, and all
|
|
* the Ports are re-initialized by sending COMRESET When staggered spin-up is not supported. When
|
|
* staggered spin-up is supported, then the software must spin-up each Port after this reset has
|
|
* completed. See for details. The SATA block clears this bit when the reset action is done. A
|
|
* software write of 0 has no effect.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_GHC_HR (0) //!< Bit position for SATA_GHC_HR.
|
|
#define BM_SATA_GHC_HR (0x00000001) //!< Bit mask for SATA_GHC_HR.
|
|
|
|
//! @brief Get value of SATA_GHC_HR from a register value.
|
|
#define BG_SATA_GHC_HR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_GHC_HR) >> BP_SATA_GHC_HR)
|
|
|
|
//! @brief Format value for bitfield SATA_GHC_HR.
|
|
#define BF_SATA_GHC_HR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_GHC_HR) & BM_SATA_GHC_HR)
|
|
//@}
|
|
|
|
/*! @name Register SATA_GHC, field IE[1] (RW)
|
|
*
|
|
* Interrupt Enable. This global bit enables interrupts from the SATA block. When cleared, all
|
|
* interrupt sources from all the Ports are disabled (masked). When set, interrupts are enabled and
|
|
* any SATA block interrupt event causes intrq output assertion. This field is reset on Global reset
|
|
* (SATA_GHC[HR]=1).
|
|
*/
|
|
//@{
|
|
#define BP_SATA_GHC_IE (1) //!< Bit position for SATA_GHC_IE.
|
|
#define BM_SATA_GHC_IE (0x00000002) //!< Bit mask for SATA_GHC_IE.
|
|
|
|
//! @brief Get value of SATA_GHC_IE from a register value.
|
|
#define BG_SATA_GHC_IE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_GHC_IE) >> BP_SATA_GHC_IE)
|
|
|
|
//! @brief Format value for bitfield SATA_GHC_IE.
|
|
#define BF_SATA_GHC_IE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_GHC_IE) & BM_SATA_GHC_IE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the IE field to a new value.
|
|
#define BW_SATA_GHC_IE(v) (HW_SATA_GHC_WR((HW_SATA_GHC_RD() & ~BM_SATA_GHC_IE) | BF_SATA_GHC_IE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_GHC, field AE[31] (RW)
|
|
*
|
|
* AHCI Enable. This bit is always set since SATA block supports only AHCI mode as indicated by the
|
|
* SATA_CAP[SAM]=1.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_GHC_AE (31) //!< Bit position for SATA_GHC_AE.
|
|
#define BM_SATA_GHC_AE (0x80000000) //!< Bit mask for SATA_GHC_AE.
|
|
|
|
//! @brief Get value of SATA_GHC_AE from a register value.
|
|
#define BG_SATA_GHC_AE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_GHC_AE) >> BP_SATA_GHC_AE)
|
|
|
|
//! @brief Format value for bitfield SATA_GHC_AE.
|
|
#define BF_SATA_GHC_AE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_GHC_AE) & BM_SATA_GHC_AE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the AE field to a new value.
|
|
#define BW_SATA_GHC_AE(v) (HW_SATA_GHC_WR((HW_SATA_GHC_RD() & ~BM_SATA_GHC_AE) | BF_SATA_GHC_AE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_IS - Interrupt Status Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_IS - Interrupt Status Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register indicates which of the Ports within the SATA block have an interrupt pending and
|
|
* require service. This register is reset on Global reset (SATA_GHC[HR]=1). Size: 32 bits Address
|
|
* offset: 0x08 Read/write access: Read/Write One to Clear Reset: 0x0000_00000
|
|
*/
|
|
typedef union _hw_sata_is
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_is_bitfields
|
|
{
|
|
unsigned IPS : 2; //!< [1:0] Interrupt Pending Status.
|
|
unsigned RESERVED0 : 30; //!< [31:2] Reserved.
|
|
} B;
|
|
} hw_sata_is_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_IS register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_IS_ADDR (REGS_SATA_BASE + 0x8)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_IS (*(volatile hw_sata_is_t *) HW_SATA_IS_ADDR)
|
|
#define HW_SATA_IS_RD() (HW_SATA_IS.U)
|
|
#define HW_SATA_IS_WR(v) (HW_SATA_IS.U = (v))
|
|
#define HW_SATA_IS_SET(v) (HW_SATA_IS_WR(HW_SATA_IS_RD() | (v)))
|
|
#define HW_SATA_IS_CLR(v) (HW_SATA_IS_WR(HW_SATA_IS_RD() & ~(v)))
|
|
#define HW_SATA_IS_TOG(v) (HW_SATA_IS_WR(HW_SATA_IS_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_IS bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_IS, field IPS[1:0] (W1C)
|
|
*
|
|
* Interrupt Pending Status. When bit 1is set, this indicates that Port 0 has an interrupt pending.
|
|
* This bit is set when the Port has an interrupt event pending and the interrupt source is enabled
|
|
* (see the definition of the SATA_P 0 IE register). Bit 0 of the IPS field is not used.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_IS_IPS (0) //!< Bit position for SATA_IS_IPS.
|
|
#define BM_SATA_IS_IPS (0x00000003) //!< Bit mask for SATA_IS_IPS.
|
|
|
|
//! @brief Get value of SATA_IS_IPS from a register value.
|
|
#define BG_SATA_IS_IPS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_IS_IPS) >> BP_SATA_IS_IPS)
|
|
|
|
//! @brief Format value for bitfield SATA_IS_IPS.
|
|
#define BF_SATA_IS_IPS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_IS_IPS) & BM_SATA_IS_IPS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the IPS field to a new value.
|
|
#define BW_SATA_IS_IPS(v) (HW_SATA_IS_WR((HW_SATA_IS_RD() & ~BM_SATA_IS_IPS) | BF_SATA_IS_IPS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_PI - Ports Implemented Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_PI - Ports Implemented Register (RO)
|
|
*
|
|
* Reset value: 0xeedecfeeae
|
|
*
|
|
* This register indicates which Ports are exposed by the SATA block and are available for the
|
|
* software to use. It is loaded by the BIOS. For example, when the SATA block supports 8 Ports as
|
|
* indicated in the SATA_CAP[NP], only Ports 1, 3, 5, and 7 could be available, while Ports 0, 2, 4,
|
|
* and 6 being unavailable. The contents of this register are relevant to the SATA_CCC_PORTS
|
|
* (Command Completion Coalescing Ports) register.
|
|
*/
|
|
typedef union _hw_sata_pi
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_pi_bitfields
|
|
{
|
|
unsigned PI : 1; //!< [0] Ports Implemented.
|
|
unsigned RESERVED0 : 31; //!< [31:1] Reserved.
|
|
} B;
|
|
} hw_sata_pi_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_PI register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_PI_ADDR (REGS_SATA_BASE + 0xc)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_PI (*(volatile hw_sata_pi_t *) HW_SATA_PI_ADDR)
|
|
#define HW_SATA_PI_RD() (HW_SATA_PI.U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_PI bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_PI, field PI[0] (RO)
|
|
*
|
|
* Ports Implemented. BIOS must set this bit to 1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_PI_PI (0) //!< Bit position for SATA_PI_PI.
|
|
#define BM_SATA_PI_PI (0x00000001) //!< Bit mask for SATA_PI_PI.
|
|
|
|
//! @brief Get value of SATA_PI_PI from a register value.
|
|
#define BG_SATA_PI_PI(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_PI_PI) >> BP_SATA_PI_PI)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_VS - AHCl Version Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_VS - AHCl Version Register (RO)
|
|
*
|
|
* Reset value: 0x00010300
|
|
*
|
|
* This register indicates the major and minor version of the AHCI specification that the SATA block
|
|
* implementation supports. The SATA block supports version 1.30. The SATA block core currently
|
|
* complies fully with AHCI version 1.10 , and complies with AHCI version 1.3, except with respect
|
|
* to FIS-based switching. FIS-based switching is not currently supported.
|
|
*/
|
|
typedef union _hw_sata_vs
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_vs_bitfields
|
|
{
|
|
unsigned MNR : 16; //!< [15:0] Minor Version Number.
|
|
unsigned MJR : 16; //!< [31:16] Major Version Number.
|
|
} B;
|
|
} hw_sata_vs_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_VS register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_VS_ADDR (REGS_SATA_BASE + 0x10)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_VS (*(volatile hw_sata_vs_t *) HW_SATA_VS_ADDR)
|
|
#define HW_SATA_VS_RD() (HW_SATA_VS.U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_VS bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_VS, field MNR[15:0] (RO)
|
|
*
|
|
* Minor Version Number. Indicates that the minor AHCI version is 30.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_VS_MNR (0) //!< Bit position for SATA_VS_MNR.
|
|
#define BM_SATA_VS_MNR (0x0000ffff) //!< Bit mask for SATA_VS_MNR.
|
|
|
|
//! @brief Get value of SATA_VS_MNR from a register value.
|
|
#define BG_SATA_VS_MNR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_VS_MNR) >> BP_SATA_VS_MNR)
|
|
//@}
|
|
|
|
/*! @name Register SATA_VS, field MJR[31:16] (RO)
|
|
*
|
|
* Major Version Number. Indicates that the major AHCI version is 1.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_VS_MJR (16) //!< Bit position for SATA_VS_MJR.
|
|
#define BM_SATA_VS_MJR (0xffff0000) //!< Bit mask for SATA_VS_MJR.
|
|
|
|
//! @brief Get value of SATA_VS_MJR from a register value.
|
|
#define BG_SATA_VS_MJR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_VS_MJR) >> BP_SATA_VS_MJR)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_CCC_CTL - Command Completion Coalescing Control
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_CCC_CTL - Command Completion Coalescing Control (RW)
|
|
*
|
|
* Reset value: 0xeedecfeeae
|
|
*
|
|
* This register is used to configure the command completion coalescing (CCC) feature for the SATA
|
|
* block core. It is reset on Global reset.
|
|
*/
|
|
typedef union _hw_sata_ccc_ctl
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_ccc_ctl_bitfields
|
|
{
|
|
unsigned EN : 1; //!< [0] Enable.
|
|
unsigned RESERVED0 : 2; //!< [2:1] Reserved.
|
|
unsigned INT : 5; //!< [7:3] Interrupt.
|
|
unsigned CC : 8; //!< [15:8] Command Completions.
|
|
unsigned TV : 16; //!< [31:16] Time-out Value.
|
|
} B;
|
|
} hw_sata_ccc_ctl_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_CCC_CTL register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_CCC_CTL_ADDR (REGS_SATA_BASE + 0x14)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_CCC_CTL (*(volatile hw_sata_ccc_ctl_t *) HW_SATA_CCC_CTL_ADDR)
|
|
#define HW_SATA_CCC_CTL_RD() (HW_SATA_CCC_CTL.U)
|
|
#define HW_SATA_CCC_CTL_WR(v) (HW_SATA_CCC_CTL.U = (v))
|
|
#define HW_SATA_CCC_CTL_SET(v) (HW_SATA_CCC_CTL_WR(HW_SATA_CCC_CTL_RD() | (v)))
|
|
#define HW_SATA_CCC_CTL_CLR(v) (HW_SATA_CCC_CTL_WR(HW_SATA_CCC_CTL_RD() & ~(v)))
|
|
#define HW_SATA_CCC_CTL_TOG(v) (HW_SATA_CCC_CTL_WR(HW_SATA_CCC_CTL_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_CCC_CTL bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_CCC_CTL, field EN[0] (RW)
|
|
*
|
|
* Enable. When field SATA_CCC_CTL[EN]==1, the software can not change the fields SATA_CCC_CTL[TV]
|
|
* and SATA_CCC_CTL[CC]. The options for this field are:
|
|
*
|
|
* Values:
|
|
* - 0 - CCC feature is disabled and no CCC interrupts are generated.
|
|
* - 1 - CCC feature is enabled and CCC interrupts may be generated based on the time-out or command
|
|
* completion conditions.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CCC_CTL_EN (0) //!< Bit position for SATA_CCC_CTL_EN.
|
|
#define BM_SATA_CCC_CTL_EN (0x00000001) //!< Bit mask for SATA_CCC_CTL_EN.
|
|
|
|
//! @brief Get value of SATA_CCC_CTL_EN from a register value.
|
|
#define BG_SATA_CCC_CTL_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CCC_CTL_EN) >> BP_SATA_CCC_CTL_EN)
|
|
|
|
//! @brief Format value for bitfield SATA_CCC_CTL_EN.
|
|
#define BF_SATA_CCC_CTL_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_CCC_CTL_EN) & BM_SATA_CCC_CTL_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the EN field to a new value.
|
|
#define BW_SATA_CCC_CTL_EN(v) (HW_SATA_CCC_CTL_WR((HW_SATA_CCC_CTL_RD() & ~BM_SATA_CCC_CTL_EN) | BF_SATA_CCC_CTL_EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_CCC_CTL, field INT[7:3] (RW)
|
|
*
|
|
* Interrupt. Set this field to 0x01.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CCC_CTL_INT (3) //!< Bit position for SATA_CCC_CTL_INT.
|
|
#define BM_SATA_CCC_CTL_INT (0x000000f8) //!< Bit mask for SATA_CCC_CTL_INT.
|
|
|
|
//! @brief Get value of SATA_CCC_CTL_INT from a register value.
|
|
#define BG_SATA_CCC_CTL_INT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CCC_CTL_INT) >> BP_SATA_CCC_CTL_INT)
|
|
|
|
//! @brief Format value for bitfield SATA_CCC_CTL_INT.
|
|
#define BF_SATA_CCC_CTL_INT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_CCC_CTL_INT) & BM_SATA_CCC_CTL_INT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the INT field to a new value.
|
|
#define BW_SATA_CCC_CTL_INT(v) (HW_SATA_CCC_CTL_WR((HW_SATA_CCC_CTL_RD() & ~BM_SATA_CCC_CTL_INT) | BF_SATA_CCC_CTL_INT(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_CCC_CTL, field CC[15:8] (RW)
|
|
*
|
|
* Command Completions. This field specifies the number of command completions that are necessary to
|
|
* cause a CCC interrupt. The value 0x00 for this field disables CCC interrupts being generated
|
|
* based on the number of commands completed. In this case, CCC interrupts are only generated based
|
|
* on the timer. Software loads this value prior to enabling CCC: Field access is: • RW when
|
|
* SATA_CCC_CTL[EN]==0 • RO when SATA_CCC_CTL[EN]==1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CCC_CTL_CC (8) //!< Bit position for SATA_CCC_CTL_CC.
|
|
#define BM_SATA_CCC_CTL_CC (0x0000ff00) //!< Bit mask for SATA_CCC_CTL_CC.
|
|
|
|
//! @brief Get value of SATA_CCC_CTL_CC from a register value.
|
|
#define BG_SATA_CCC_CTL_CC(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CCC_CTL_CC) >> BP_SATA_CCC_CTL_CC)
|
|
|
|
//! @brief Format value for bitfield SATA_CCC_CTL_CC.
|
|
#define BF_SATA_CCC_CTL_CC(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_CCC_CTL_CC) & BM_SATA_CCC_CTL_CC)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CC field to a new value.
|
|
#define BW_SATA_CCC_CTL_CC(v) (HW_SATA_CCC_CTL_WR((HW_SATA_CCC_CTL_RD() & ~BM_SATA_CCC_CTL_CC) | BF_SATA_CCC_CTL_CC(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_CCC_CTL, field TV[31:16] (RW)
|
|
*
|
|
* Time-out Value. This field specifies the CCC time-out value in 1ms intervals. The software loads
|
|
* this value prior to enabling CCC. The options for this field are: • RW when SATA_CCC_CTL[EN]==0.
|
|
* • RO when SATA_CCC_CTL[EN]==1. A time-out value of 0x0000 is reserved and should not be used.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CCC_CTL_TV (16) //!< Bit position for SATA_CCC_CTL_TV.
|
|
#define BM_SATA_CCC_CTL_TV (0xffff0000) //!< Bit mask for SATA_CCC_CTL_TV.
|
|
|
|
//! @brief Get value of SATA_CCC_CTL_TV from a register value.
|
|
#define BG_SATA_CCC_CTL_TV(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CCC_CTL_TV) >> BP_SATA_CCC_CTL_TV)
|
|
|
|
//! @brief Format value for bitfield SATA_CCC_CTL_TV.
|
|
#define BF_SATA_CCC_CTL_TV(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_CCC_CTL_TV) & BM_SATA_CCC_CTL_TV)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TV field to a new value.
|
|
#define BW_SATA_CCC_CTL_TV(v) (HW_SATA_CCC_CTL_WR((HW_SATA_CCC_CTL_RD() & ~BM_SATA_CCC_CTL_TV) | BF_SATA_CCC_CTL_TV(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_CCC_PORTS - Command Completion Coalescing Ports
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_CCC_PORTS - Command Completion Coalescing Ports (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register specifies the Ports that are coalesced as part of the command completion coalescing
|
|
* (CCC) feature when SATA_CCC_CTL[EN]==1. It is reset on Global reset.
|
|
*/
|
|
typedef union _hw_sata_ccc_ports
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_ccc_ports_bitfields
|
|
{
|
|
unsigned PRT : 32; //!< [31:0] Ports.
|
|
} B;
|
|
} hw_sata_ccc_ports_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_CCC_PORTS register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_CCC_PORTS_ADDR (REGS_SATA_BASE + 0x18)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_CCC_PORTS (*(volatile hw_sata_ccc_ports_t *) HW_SATA_CCC_PORTS_ADDR)
|
|
#define HW_SATA_CCC_PORTS_RD() (HW_SATA_CCC_PORTS.U)
|
|
#define HW_SATA_CCC_PORTS_WR(v) (HW_SATA_CCC_PORTS.U = (v))
|
|
#define HW_SATA_CCC_PORTS_SET(v) (HW_SATA_CCC_PORTS_WR(HW_SATA_CCC_PORTS_RD() | (v)))
|
|
#define HW_SATA_CCC_PORTS_CLR(v) (HW_SATA_CCC_PORTS_WR(HW_SATA_CCC_PORTS_RD() & ~(v)))
|
|
#define HW_SATA_CCC_PORTS_TOG(v) (HW_SATA_CCC_PORTS_WR(HW_SATA_CCC_PORTS_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_CCC_PORTS bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_CCC_PORTS, field PRT[31:0] (RW)
|
|
*
|
|
* Ports. This field is bit significant. Each bit corresponds to a particular Port, where bit 0
|
|
* corresponds to Port0. Bits set in this register must have the corresponding bit set in the
|
|
* SATA_PI (Ports Implemented Register). The options for this field are:
|
|
*
|
|
* Values:
|
|
* - 0 - the corresponding Port is not part of the CCC feature.
|
|
* - 1 - the corresponding Port is part of the CCC feature.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CCC_PORTS_PRT (0) //!< Bit position for SATA_CCC_PORTS_PRT.
|
|
#define BM_SATA_CCC_PORTS_PRT (0xffffffff) //!< Bit mask for SATA_CCC_PORTS_PRT.
|
|
|
|
//! @brief Get value of SATA_CCC_PORTS_PRT from a register value.
|
|
#define BG_SATA_CCC_PORTS_PRT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CCC_PORTS_PRT) >> BP_SATA_CCC_PORTS_PRT)
|
|
|
|
//! @brief Format value for bitfield SATA_CCC_PORTS_PRT.
|
|
#define BF_SATA_CCC_PORTS_PRT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_CCC_PORTS_PRT) & BM_SATA_CCC_PORTS_PRT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the PRT field to a new value.
|
|
#define BW_SATA_CCC_PORTS_PRT(v) (HW_SATA_CCC_PORTS_WR((HW_SATA_CCC_PORTS_RD() & ~BM_SATA_CCC_PORTS_PRT) | BF_SATA_CCC_PORTS_PRT(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_CAP2 - HBA Capabilities Extended Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_CAP2 - HBA Capabilities Extended Register (RO)
|
|
*
|
|
* Reset value: 0x00000004
|
|
*
|
|
* This register indicates capabilites of the SATA block core to the software.
|
|
*/
|
|
typedef union _hw_sata_cap2
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_cap2_bitfields
|
|
{
|
|
unsigned RESERVED0 : 2; //!< [1:0] Reserved.
|
|
unsigned APST : 1; //!< [2] Automatic Partial to Slumber Transitions.
|
|
unsigned RESERVED1 : 29; //!< [31:3] Reserved
|
|
} B;
|
|
} hw_sata_cap2_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_CAP2 register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_CAP2_ADDR (REGS_SATA_BASE + 0x24)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_CAP2 (*(volatile hw_sata_cap2_t *) HW_SATA_CAP2_ADDR)
|
|
#define HW_SATA_CAP2_RD() (HW_SATA_CAP2.U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_CAP2 bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_CAP2, field APST[2] (RO)
|
|
*
|
|
* Automatic Partial to Slumber Transitions. SATA block supports automatic Partial to Slumber
|
|
* transitions.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_CAP2_APST (2) //!< Bit position for SATA_CAP2_APST.
|
|
#define BM_SATA_CAP2_APST (0x00000004) //!< Bit mask for SATA_CAP2_APST.
|
|
|
|
//! @brief Get value of SATA_CAP2_APST from a register value.
|
|
#define BG_SATA_CAP2_APST(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_CAP2_APST) >> BP_SATA_CAP2_APST)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_BISTAFR - BIST Activate FIS Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_BISTAFR - BIST Activate FIS Register (RO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register contains the pattern definition (bits [23:16] of the first DWORD) and data pattern
|
|
* (bits [7:0] of the second DWORD) fields of the received BIST Activate FIS. These fields define
|
|
* the SATA block loopback responder mode requested by the device. It is updated every time a new
|
|
* BIST Activate FIS is received from the device. Reset on Global or Port reset.
|
|
*/
|
|
typedef union _hw_sata_bistafr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_bistafr_bitfields
|
|
{
|
|
unsigned PD : 8; //!< [7:0] Pattern Definition
|
|
unsigned NCP : 8; //!< [15:8] Least significant byte of the received BIST Activate FIS second DWORD (bits [7:0]).
|
|
unsigned RESERVED0 : 16; //!< [31:16] Reserved.
|
|
} B;
|
|
} hw_sata_bistafr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_BISTAFR register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_BISTAFR_ADDR (REGS_SATA_BASE + 0xa0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_BISTAFR (*(volatile hw_sata_bistafr_t *) HW_SATA_BISTAFR_ADDR)
|
|
#define HW_SATA_BISTAFR_RD() (HW_SATA_BISTAFR.U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_BISTAFR bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_BISTAFR, field PD[7:0] (RO)
|
|
*
|
|
* Pattern Definition Indicates the pattern definition field of the received BIST Activate FIS -
|
|
* bits [23:16] of the first DWORD. It is used to put the SATA block in one of the following BIST
|
|
* modes: For far-end transmit only modes SATA_BISTAFR[NCP] field contains the required data
|
|
* pattern.
|
|
*
|
|
* Values:
|
|
* - 0x08 - Far-end analog (when PHY supports this mode)
|
|
* - 0x10 - Far-end retimed
|
|
* - 0x80 - Far-end transmit only
|
|
* - 0xA0 - Far-end transmit only with scrambler bypassed
|
|
* - All other values - should not be used by the device, otherwise, the FIS is negatively acknowledged with R_ERRp.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_BISTAFR_PD (0) //!< Bit position for SATA_BISTAFR_PD.
|
|
#define BM_SATA_BISTAFR_PD (0x000000ff) //!< Bit mask for SATA_BISTAFR_PD.
|
|
|
|
//! @brief Get value of SATA_BISTAFR_PD from a register value.
|
|
#define BG_SATA_BISTAFR_PD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_BISTAFR_PD) >> BP_SATA_BISTAFR_PD)
|
|
//@}
|
|
|
|
/*! @name Register SATA_BISTAFR, field NCP[15:8] (RO)
|
|
*
|
|
* Least significant byte of the received BIST Activate FIS second DWORD (bits [7:0]). This value
|
|
* defines the required pattern for far-end transmit only mode (SATA_BISTAFR[PD]=0x80 or 0xA0): When
|
|
* none of these values is decoded, the simultaneous switching pattern is transmitted by default.
|
|
*
|
|
* Values:
|
|
* - 0x4A - High frequency test pattern (HFTP)
|
|
* - 0x78 - Mid frequency test pattern (MFTP)
|
|
* - 0x7E - Low frequency test pattern (LFTP)
|
|
* - 0x7F - Simultaneous switching outputs pattern (SSOP)
|
|
* - 0x8B - Lone Bit pattern (LBP)
|
|
* - 0xAB - Low frequency spectral component pattern (LFSCP)
|
|
* - 0xB5 - High transition density pattern (HTDP)
|
|
* - 0xF1 - Low transition density pattern (LTDP)
|
|
*/
|
|
//@{
|
|
#define BP_SATA_BISTAFR_NCP (8) //!< Bit position for SATA_BISTAFR_NCP.
|
|
#define BM_SATA_BISTAFR_NCP (0x0000ff00) //!< Bit mask for SATA_BISTAFR_NCP.
|
|
|
|
//! @brief Get value of SATA_BISTAFR_NCP from a register value.
|
|
#define BG_SATA_BISTAFR_NCP(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_BISTAFR_NCP) >> BP_SATA_BISTAFR_NCP)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_BISTCR - BIST Control Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_BISTCR - BIST Control Register (RW)
|
|
*
|
|
* Reset value: 0x00000700
|
|
*
|
|
* This register is used in BIST initiator modes. It is loaded by the host software prior to sending
|
|
* BIST Activate FIS to the device (via TXBISTPD write). It is reset on a Global or Port reset.
|
|
*/
|
|
typedef union _hw_sata_bistcr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_bistcr_bitfields
|
|
{
|
|
unsigned PATTERN : 4; //!< [3:0] This field defines one of the following SATA compliant patterns for far-end retimed/ far-end analog/ near-end analog initiator modes, or non-compliant patterns for transmit-only responder mode when initiated by the software writing to the SATA_BISTCR[TXO] bit.
|
|
unsigned PV : 1; //!< [4] Pattern Version
|
|
unsigned FLIP : 1; //!< [5] Flip Disparity
|
|
unsigned ERREN : 1; //!< [6] Error Enable.
|
|
unsigned RESERVED0 : 1; //!< [7] Reserved.
|
|
unsigned LLC : 3; //!< [10:8] Link Layer Control
|
|
unsigned RESERVED1 : 1; //!< [11] Reserved.
|
|
unsigned SDFE : 1; //!< [12] Signal Detect Feature Enable
|
|
unsigned RESERVED2 : 1; //!< [13] Reserved.
|
|
unsigned QPHYINIT : 1; //!< [14] When set, this bit enables quick PHY initialization feature.
|
|
unsigned RESERVED3 : 1; //!< [15] Reserved.
|
|
unsigned NEALB : 1; //!< [16] Near-End Analog Loopback
|
|
unsigned CNTCLR : 1; //!< [17] Counter Clear
|
|
unsigned TXO : 1; //!< [18] Transmit Only.
|
|
unsigned RESERVED4 : 1; //!< [19] Reserved.
|
|
unsigned FERLB : 1; //!< [20] Far-end Retimed Loopback.
|
|
unsigned RESERVED5 : 11; //!< [31:21] Reserved.
|
|
} B;
|
|
} hw_sata_bistcr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_BISTCR register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_BISTCR_ADDR (REGS_SATA_BASE + 0xa4)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_BISTCR (*(volatile hw_sata_bistcr_t *) HW_SATA_BISTCR_ADDR)
|
|
#define HW_SATA_BISTCR_RD() (HW_SATA_BISTCR.U)
|
|
#define HW_SATA_BISTCR_WR(v) (HW_SATA_BISTCR.U = (v))
|
|
#define HW_SATA_BISTCR_SET(v) (HW_SATA_BISTCR_WR(HW_SATA_BISTCR_RD() | (v)))
|
|
#define HW_SATA_BISTCR_CLR(v) (HW_SATA_BISTCR_WR(HW_SATA_BISTCR_RD() & ~(v)))
|
|
#define HW_SATA_BISTCR_TOG(v) (HW_SATA_BISTCR_WR(HW_SATA_BISTCR_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_BISTCR bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_BISTCR, field PATTERN[3:0] (RW)
|
|
*
|
|
* This field defines one of the following SATA compliant patterns for far-end retimed/ far-end
|
|
* analog/ near-end analog initiator modes, or non-compliant patterns for transmit-only responder
|
|
* mode when initiated by the software writing to the SATA_BISTCR[TXO] bit. If the value is none of
|
|
* the listed below, Composite pattern (COMP) is transmitted by default.
|
|
*
|
|
* Values:
|
|
* - 0000b - Simultaneous switching outputs pattern (SSOP)
|
|
* - 0001b - High transition density pattern (HTDP)
|
|
* - 0010b - Low transition density pattern (LTDP)
|
|
* - 0011b - Low frequency spectral component pattern (LFSCP)
|
|
* - 0100b - Composite pattern (COMP)
|
|
* - 0101b - Lone bit pattern (LBP)
|
|
* - 0110b - Mid frequency test pattern (MFTP)
|
|
* - 0111b - High frequency test pattern (HFTP)
|
|
* - All other values - Reserved and should not be used.
|
|
* - 1000b - Low frequency test pattern (LFTP)
|
|
*/
|
|
//@{
|
|
#define BP_SATA_BISTCR_PATTERN (0) //!< Bit position for SATA_BISTCR_PATTERN.
|
|
#define BM_SATA_BISTCR_PATTERN (0x0000000f) //!< Bit mask for SATA_BISTCR_PATTERN.
|
|
|
|
//! @brief Get value of SATA_BISTCR_PATTERN from a register value.
|
|
#define BG_SATA_BISTCR_PATTERN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_BISTCR_PATTERN) >> BP_SATA_BISTCR_PATTERN)
|
|
|
|
//! @brief Format value for bitfield SATA_BISTCR_PATTERN.
|
|
#define BF_SATA_BISTCR_PATTERN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_BISTCR_PATTERN) & BM_SATA_BISTCR_PATTERN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the PATTERN field to a new value.
|
|
#define BW_SATA_BISTCR_PATTERN(v) (HW_SATA_BISTCR_WR((HW_SATA_BISTCR_RD() & ~BM_SATA_BISTCR_PATTERN) | BF_SATA_BISTCR_PATTERN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_BISTCR, field PV[4] (RW)
|
|
*
|
|
* Pattern Version This bit is used to select either short or long version of the SSOP, HTDP, LTDP,
|
|
* LFSCP, COMP patterns. The options for this field are:
|
|
*
|
|
* Values:
|
|
* - 0 - Short pattern version
|
|
* - 1 - Long pattern version
|
|
*/
|
|
//@{
|
|
#define BP_SATA_BISTCR_PV (4) //!< Bit position for SATA_BISTCR_PV.
|
|
#define BM_SATA_BISTCR_PV (0x00000010) //!< Bit mask for SATA_BISTCR_PV.
|
|
|
|
//! @brief Get value of SATA_BISTCR_PV from a register value.
|
|
#define BG_SATA_BISTCR_PV(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_BISTCR_PV) >> BP_SATA_BISTCR_PV)
|
|
|
|
//! @brief Format value for bitfield SATA_BISTCR_PV.
|
|
#define BF_SATA_BISTCR_PV(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_BISTCR_PV) & BM_SATA_BISTCR_PV)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the PV field to a new value.
|
|
#define BW_SATA_BISTCR_PV(v) (HW_SATA_BISTCR_WR((HW_SATA_BISTCR_RD() & ~BM_SATA_BISTCR_PV) | BF_SATA_BISTCR_PV(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_BISTCR, field FLIP[5] (RW)
|
|
*
|
|
* Flip Disparity This bit is used to change disparity of the current test pattern to the opposite
|
|
* every time its state is changed by the software.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_BISTCR_FLIP (5) //!< Bit position for SATA_BISTCR_FLIP.
|
|
#define BM_SATA_BISTCR_FLIP (0x00000020) //!< Bit mask for SATA_BISTCR_FLIP.
|
|
|
|
//! @brief Get value of SATA_BISTCR_FLIP from a register value.
|
|
#define BG_SATA_BISTCR_FLIP(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_BISTCR_FLIP) >> BP_SATA_BISTCR_FLIP)
|
|
|
|
//! @brief Format value for bitfield SATA_BISTCR_FLIP.
|
|
#define BF_SATA_BISTCR_FLIP(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_BISTCR_FLIP) & BM_SATA_BISTCR_FLIP)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the FLIP field to a new value.
|
|
#define BW_SATA_BISTCR_FLIP(v) (HW_SATA_BISTCR_WR((HW_SATA_BISTCR_RD() & ~BM_SATA_BISTCR_FLIP) | BF_SATA_BISTCR_FLIP(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_BISTCR, field ERREN[6] (RW)
|
|
*
|
|
* Error Enable. This bit is used to allow or filter (disable) [ internal errors outside the FIS
|
|
* boundary to set corresponding SATA_P 0 SERR bits. The options for this field are:
|
|
*
|
|
* Values:
|
|
* - 0 - Filter errors outside the FIS, allow errors inside the FIS;
|
|
* - 1 - Allow errors outside or inside the FIS.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_BISTCR_ERREN (6) //!< Bit position for SATA_BISTCR_ERREN.
|
|
#define BM_SATA_BISTCR_ERREN (0x00000040) //!< Bit mask for SATA_BISTCR_ERREN.
|
|
|
|
//! @brief Get value of SATA_BISTCR_ERREN from a register value.
|
|
#define BG_SATA_BISTCR_ERREN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_BISTCR_ERREN) >> BP_SATA_BISTCR_ERREN)
|
|
|
|
//! @brief Format value for bitfield SATA_BISTCR_ERREN.
|
|
#define BF_SATA_BISTCR_ERREN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_BISTCR_ERREN) & BM_SATA_BISTCR_ERREN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the ERREN field to a new value.
|
|
#define BW_SATA_BISTCR_ERREN(v) (HW_SATA_BISTCR_WR((HW_SATA_BISTCR_RD() & ~BM_SATA_BISTCR_ERREN) | BF_SATA_BISTCR_ERREN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_BISTCR, field LLC[10:8] (RW)
|
|
*
|
|
* Link Layer Control This field controls the Port Link Layer functions: scrambler, descrambler, and
|
|
* repeat primitive drop. Note the different meanings for normal and BIST modes of operation: •
|
|
* Bit8-SCRAM The options for this field are: 0 Scrambler disabled in normal mode, enabled in BIST
|
|
* mode 1 Scrambler enabled in normal mode, disabled in BIST mode • Bit9-DESCRAM The options for
|
|
* this field are: 0 Descrambler disabled in normal mode, enabled in BIST mode 1 Descrambler enabled
|
|
* in normal mode, disabled in BIST mode • Bit10-RPD The options for this field are: 0 Repeat
|
|
* primitive drop function disabled in normal mode, NA in BIST mode. 1 Repeat primitive drop
|
|
* function enabled in normal mode, NA in BIST mode. The SCRAM bit is cleared (enabled) by the Port
|
|
* when the Port enters a responder far-end transmit BIST mode with scrambling enabled
|
|
* (SATA_BISTAFR[PD]=0x80). In normal mode, the functions scrambler, descrambler, or RPD can be
|
|
* changed only during Port reset (SATA_P 0 SCTL[DET]=0x1)
|
|
*/
|
|
//@{
|
|
#define BP_SATA_BISTCR_LLC (8) //!< Bit position for SATA_BISTCR_LLC.
|
|
#define BM_SATA_BISTCR_LLC (0x00000700) //!< Bit mask for SATA_BISTCR_LLC.
|
|
|
|
//! @brief Get value of SATA_BISTCR_LLC from a register value.
|
|
#define BG_SATA_BISTCR_LLC(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_BISTCR_LLC) >> BP_SATA_BISTCR_LLC)
|
|
|
|
//! @brief Format value for bitfield SATA_BISTCR_LLC.
|
|
#define BF_SATA_BISTCR_LLC(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_BISTCR_LLC) & BM_SATA_BISTCR_LLC)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the LLC field to a new value.
|
|
#define BW_SATA_BISTCR_LLC(v) (HW_SATA_BISTCR_WR((HW_SATA_BISTCR_RD() & ~BM_SATA_BISTCR_LLC) | BF_SATA_BISTCR_LLC(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_BISTCR, field SDFE[12] (RW)
|
|
*
|
|
* Signal Detect Feature Enable Reset: PHY_INTERFACE_TYPE 1: Link layer feature to handle
|
|
* unstable/absent phy_sig_det signal is enabled 0: Link layer feature to handle unstable/absent
|
|
* phy_sig_det signal is disabled. This bit is set on power-up or asynchronous reset if
|
|
* PHY_INTERFACE_TYPE = Synopsys_SATA_II (1) or PHY_INTERFACE_TYPE = Synopsys_SATA_6G (2),
|
|
* otherwise, the bit is cleared until it is set via programming. It is not affected by a Global
|
|
* reset or COMRESET. For special handling in systems where phy_sig_det may not be present or stable
|
|
* after OOB signalling and during normal operation . For these systems, phy_rx_data_vld must not be
|
|
* tied high and must go low when no data is detected on the wires.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_BISTCR_SDFE (12) //!< Bit position for SATA_BISTCR_SDFE.
|
|
#define BM_SATA_BISTCR_SDFE (0x00001000) //!< Bit mask for SATA_BISTCR_SDFE.
|
|
|
|
//! @brief Get value of SATA_BISTCR_SDFE from a register value.
|
|
#define BG_SATA_BISTCR_SDFE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_BISTCR_SDFE) >> BP_SATA_BISTCR_SDFE)
|
|
|
|
//! @brief Format value for bitfield SATA_BISTCR_SDFE.
|
|
#define BF_SATA_BISTCR_SDFE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_BISTCR_SDFE) & BM_SATA_BISTCR_SDFE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SDFE field to a new value.
|
|
#define BW_SATA_BISTCR_SDFE(v) (HW_SATA_BISTCR_WR((HW_SATA_BISTCR_RD() & ~BM_SATA_BISTCR_SDFE) | BF_SATA_BISTCR_SDFE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_BISTCR, field QPHYINIT[14] (RW)
|
|
*
|
|
* When set, this bit enables quick PHY initialization feature. The Link does not require any ALIGNs
|
|
* to transition from OOB to normal operation. This bit is available only when TX_OOB_MODE = Exclude
|
|
* (0) and ALIGN_MODE = Aligned (1), otherwise it is reserved.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_BISTCR_QPHYINIT (14) //!< Bit position for SATA_BISTCR_QPHYINIT.
|
|
#define BM_SATA_BISTCR_QPHYINIT (0x00004000) //!< Bit mask for SATA_BISTCR_QPHYINIT.
|
|
|
|
//! @brief Get value of SATA_BISTCR_QPHYINIT from a register value.
|
|
#define BG_SATA_BISTCR_QPHYINIT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_BISTCR_QPHYINIT) >> BP_SATA_BISTCR_QPHYINIT)
|
|
|
|
//! @brief Format value for bitfield SATA_BISTCR_QPHYINIT.
|
|
#define BF_SATA_BISTCR_QPHYINIT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_BISTCR_QPHYINIT) & BM_SATA_BISTCR_QPHYINIT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the QPHYINIT field to a new value.
|
|
#define BW_SATA_BISTCR_QPHYINIT(v) (HW_SATA_BISTCR_WR((HW_SATA_BISTCR_RD() & ~BM_SATA_BISTCR_QPHYINIT) | BF_SATA_BISTCR_QPHYINIT(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_BISTCR, field NEALB[16] (WO)
|
|
*
|
|
* Near-End Analog Loopback This mode should be initiated either in the PARTIAL or SLUMBER power
|
|
* mode, or with the device disconnected from the Port PHY (Link NOCOMM state). BIST Activate FIS is
|
|
* not sent to the device in this mode. This bit places the Port PHY into near-end analog loopback
|
|
* mode. This field is one-shot type and reads returns 0:
|
|
*
|
|
* Values:
|
|
* - 1 - Near-end analog loopback request. SATA_BISTCR[PATTERN] field contains the appropriate pattern.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_BISTCR_NEALB (16) //!< Bit position for SATA_BISTCR_NEALB.
|
|
#define BM_SATA_BISTCR_NEALB (0x00010000) //!< Bit mask for SATA_BISTCR_NEALB.
|
|
|
|
//! @brief Get value of SATA_BISTCR_NEALB from a register value.
|
|
#define BG_SATA_BISTCR_NEALB(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_BISTCR_NEALB) >> BP_SATA_BISTCR_NEALB)
|
|
|
|
//! @brief Format value for bitfield SATA_BISTCR_NEALB.
|
|
#define BF_SATA_BISTCR_NEALB(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_BISTCR_NEALB) & BM_SATA_BISTCR_NEALB)
|
|
//@}
|
|
|
|
/*! @name Register SATA_BISTCR, field CNTCLR[17] (WO)
|
|
*
|
|
* Counter Clear This bit clears BIST error count registers. This field is one-shot type and reads
|
|
* returns 0.
|
|
*
|
|
* Values:
|
|
* - 1 - Clear SATA_BISTFCTR, and SATA_BISTSR registers.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_BISTCR_CNTCLR (17) //!< Bit position for SATA_BISTCR_CNTCLR.
|
|
#define BM_SATA_BISTCR_CNTCLR (0x00020000) //!< Bit mask for SATA_BISTCR_CNTCLR.
|
|
|
|
//! @brief Get value of SATA_BISTCR_CNTCLR from a register value.
|
|
#define BG_SATA_BISTCR_CNTCLR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_BISTCR_CNTCLR) >> BP_SATA_BISTCR_CNTCLR)
|
|
|
|
//! @brief Format value for bitfield SATA_BISTCR_CNTCLR.
|
|
#define BF_SATA_BISTCR_CNTCLR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_BISTCR_CNTCLR) & BM_SATA_BISTCR_CNTCLR)
|
|
//@}
|
|
|
|
/*! @name Register SATA_BISTCR, field TXO[18] (RW)
|
|
*
|
|
* Transmit Only. This bit is used to initiate transmission of one of the non-compliant patterns
|
|
* defined by the SATA_BISTCR[PATTERN] value when the device is disconnected.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_BISTCR_TXO (18) //!< Bit position for SATA_BISTCR_TXO.
|
|
#define BM_SATA_BISTCR_TXO (0x00040000) //!< Bit mask for SATA_BISTCR_TXO.
|
|
|
|
//! @brief Get value of SATA_BISTCR_TXO from a register value.
|
|
#define BG_SATA_BISTCR_TXO(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_BISTCR_TXO) >> BP_SATA_BISTCR_TXO)
|
|
|
|
//! @brief Format value for bitfield SATA_BISTCR_TXO.
|
|
#define BF_SATA_BISTCR_TXO(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_BISTCR_TXO) & BM_SATA_BISTCR_TXO)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TXO field to a new value.
|
|
#define BW_SATA_BISTCR_TXO(v) (HW_SATA_BISTCR_WR((HW_SATA_BISTCR_RD() & ~BM_SATA_BISTCR_TXO) | BF_SATA_BISTCR_TXO(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_BISTCR, field FERLB[20] (WO)
|
|
*
|
|
* Far-end Retimed Loopback. When set, this bit is used to put the SATA block Link into Far-end
|
|
* Retimed mode, without the BIST Activate FIS, regardless whether the device is connected or
|
|
* disconnected (Link in NOCOMM state). This field is one-shot type and reads returns 0.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_BISTCR_FERLB (20) //!< Bit position for SATA_BISTCR_FERLB.
|
|
#define BM_SATA_BISTCR_FERLB (0x00100000) //!< Bit mask for SATA_BISTCR_FERLB.
|
|
|
|
//! @brief Get value of SATA_BISTCR_FERLB from a register value.
|
|
#define BG_SATA_BISTCR_FERLB(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_BISTCR_FERLB) >> BP_SATA_BISTCR_FERLB)
|
|
|
|
//! @brief Format value for bitfield SATA_BISTCR_FERLB.
|
|
#define BF_SATA_BISTCR_FERLB(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_BISTCR_FERLB) & BM_SATA_BISTCR_FERLB)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_BISTFCTR - BIST FIS Count Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_BISTFCTR - BIST FIS Count Register (RO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register contains the received BIST FIS count in the loopback initiator far-end retimed,
|
|
* far-end analog and near-end analog modes. It is updated each time a new BIST FIS is received. It
|
|
* is reset by Global reset, Port reset (COMRESET) or by setting the SATA_BISTCR[CNTCLR] bit. This
|
|
* register does not roll over and freezes when the FFFF_FFFFh value is reached. It takes
|
|
* approximately 65 hours of continuous BIST operation to reach this value.
|
|
*/
|
|
typedef union _hw_sata_bistfctr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_bistfctr_bitfields
|
|
{
|
|
unsigned RESERVED0 : 32; //!< [31:0] Received BIST FIS Count
|
|
} B;
|
|
} hw_sata_bistfctr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_BISTFCTR register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_BISTFCTR_ADDR (REGS_SATA_BASE + 0xa8)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_BISTFCTR (*(volatile hw_sata_bistfctr_t *) HW_SATA_BISTFCTR_ADDR)
|
|
#define HW_SATA_BISTFCTR_RD() (HW_SATA_BISTFCTR.U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_BISTFCTR bitfields
|
|
*/
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_BISTSR - BIST Status Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_BISTSR - BIST Status Register (RO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register contains errors detected in the received BIST FIS in the loopback initiator far-end
|
|
* retimed, far- end analog and near-end analog modes. It is updated each time a new BIST FIS is
|
|
* received. It is reset by Global reset, Port reset (COMRESET) or by setting the
|
|
* SATA_BISTCR[CNTCLR] bit.
|
|
*/
|
|
typedef union _hw_sata_bistsr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_bistsr_bitfields
|
|
{
|
|
unsigned FRAMERR : 16; //!< [15:0] Frame Error.
|
|
unsigned BRSTERR : 8; //!< [23:16] Burst Error.
|
|
unsigned RESERVED0 : 8; //!< [31:24] Reserved.
|
|
} B;
|
|
} hw_sata_bistsr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_BISTSR register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_BISTSR_ADDR (REGS_SATA_BASE + 0xac)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_BISTSR (*(volatile hw_sata_bistsr_t *) HW_SATA_BISTSR_ADDR)
|
|
#define HW_SATA_BISTSR_RD() (HW_SATA_BISTSR.U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_BISTSR bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_BISTSR, field FRAMERR[15:0] (RO)
|
|
*
|
|
* Frame Error. This field contains the frame error count. It is accumulated (new value is added to
|
|
* the old value) each time a new BIST frame with a CRC error is received. The FRAMERR value does
|
|
* not roll over and freezes at FFFFh.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_BISTSR_FRAMERR (0) //!< Bit position for SATA_BISTSR_FRAMERR.
|
|
#define BM_SATA_BISTSR_FRAMERR (0x0000ffff) //!< Bit mask for SATA_BISTSR_FRAMERR.
|
|
|
|
//! @brief Get value of SATA_BISTSR_FRAMERR from a register value.
|
|
#define BG_SATA_BISTSR_FRAMERR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_BISTSR_FRAMERR) >> BP_SATA_BISTSR_FRAMERR)
|
|
//@}
|
|
|
|
/*! @name Register SATA_BISTSR, field BRSTERR[23:16] (RO)
|
|
*
|
|
* Burst Error. This field contains the burst error count. It is accumulated each time a burst error
|
|
* condition is detected: DWORD error is detected in the received frame and 1.5 seconds (27,000
|
|
* frames) passed since the previous burst error was detected. The BRSTERR value does not roll over
|
|
* and freezes at FFh. This field is updated when parameter BIST_MODE=DWORD.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_BISTSR_BRSTERR (16) //!< Bit position for SATA_BISTSR_BRSTERR.
|
|
#define BM_SATA_BISTSR_BRSTERR (0x00ff0000) //!< Bit mask for SATA_BISTSR_BRSTERR.
|
|
|
|
//! @brief Get value of SATA_BISTSR_BRSTERR from a register value.
|
|
#define BG_SATA_BISTSR_BRSTERR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_BISTSR_BRSTERR) >> BP_SATA_BISTSR_BRSTERR)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_OOBR - OOB Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_OOBR - OOB Register (RW)
|
|
*
|
|
* Reset value: 0xeedecfeeae
|
|
*
|
|
* This register controls the Link layer OOB detection counters. The default values, MIN_COMWAKE,
|
|
* MAX_COMWAKE, MIN_COMINIT and MAX_COMINIT are calculated based on the RXOOB_CLK parameter and
|
|
* loaded on power-up or asynchronous SATA block reset.
|
|
*/
|
|
typedef union _hw_sata_oobr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_oobr_bitfields
|
|
{
|
|
unsigned CIMAX : 8; //!< [7:0] COMINIT Maximum Value
|
|
unsigned CIMIN : 8; //!< [15:8] COMINIT Minimum Value
|
|
unsigned CWMAX : 8; //!< [23:16] COMWAKE Maximum Value
|
|
unsigned CWMIN : 7; //!< [30:24] COMWAKE Minimum Value
|
|
unsigned WE : 1; //!< [31] Write Enable
|
|
} B;
|
|
} hw_sata_oobr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_OOBR register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_OOBR_ADDR (REGS_SATA_BASE + 0xbc)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_OOBR (*(volatile hw_sata_oobr_t *) HW_SATA_OOBR_ADDR)
|
|
#define HW_SATA_OOBR_RD() (HW_SATA_OOBR.U)
|
|
#define HW_SATA_OOBR_WR(v) (HW_SATA_OOBR.U = (v))
|
|
#define HW_SATA_OOBR_SET(v) (HW_SATA_OOBR_WR(HW_SATA_OOBR_RD() | (v)))
|
|
#define HW_SATA_OOBR_CLR(v) (HW_SATA_OOBR_WR(HW_SATA_OOBR_RD() & ~(v)))
|
|
#define HW_SATA_OOBR_TOG(v) (HW_SATA_OOBR_WR(HW_SATA_OOBR_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_OOBR bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_OOBR, field CIMAX[7:0] (RW)
|
|
*
|
|
* COMINIT Maximum Value This field is RW when WE=1 and RO when WE=0.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_OOBR_CIMAX (0) //!< Bit position for SATA_OOBR_CIMAX.
|
|
#define BM_SATA_OOBR_CIMAX (0x000000ff) //!< Bit mask for SATA_OOBR_CIMAX.
|
|
|
|
//! @brief Get value of SATA_OOBR_CIMAX from a register value.
|
|
#define BG_SATA_OOBR_CIMAX(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_OOBR_CIMAX) >> BP_SATA_OOBR_CIMAX)
|
|
|
|
//! @brief Format value for bitfield SATA_OOBR_CIMAX.
|
|
#define BF_SATA_OOBR_CIMAX(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_OOBR_CIMAX) & BM_SATA_OOBR_CIMAX)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CIMAX field to a new value.
|
|
#define BW_SATA_OOBR_CIMAX(v) (HW_SATA_OOBR_WR((HW_SATA_OOBR_RD() & ~BM_SATA_OOBR_CIMAX) | BF_SATA_OOBR_CIMAX(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_OOBR, field CIMIN[15:8] (RW)
|
|
*
|
|
* COMINIT Minimum Value This field is RW when WE=1 and RO when WE=0.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_OOBR_CIMIN (8) //!< Bit position for SATA_OOBR_CIMIN.
|
|
#define BM_SATA_OOBR_CIMIN (0x0000ff00) //!< Bit mask for SATA_OOBR_CIMIN.
|
|
|
|
//! @brief Get value of SATA_OOBR_CIMIN from a register value.
|
|
#define BG_SATA_OOBR_CIMIN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_OOBR_CIMIN) >> BP_SATA_OOBR_CIMIN)
|
|
|
|
//! @brief Format value for bitfield SATA_OOBR_CIMIN.
|
|
#define BF_SATA_OOBR_CIMIN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_OOBR_CIMIN) & BM_SATA_OOBR_CIMIN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CIMIN field to a new value.
|
|
#define BW_SATA_OOBR_CIMIN(v) (HW_SATA_OOBR_WR((HW_SATA_OOBR_RD() & ~BM_SATA_OOBR_CIMIN) | BF_SATA_OOBR_CIMIN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_OOBR, field CWMAX[23:16] (RW)
|
|
*
|
|
* COMWAKE Maximum Value This field is RW when WE=1 and RO when WE=0.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_OOBR_CWMAX (16) //!< Bit position for SATA_OOBR_CWMAX.
|
|
#define BM_SATA_OOBR_CWMAX (0x00ff0000) //!< Bit mask for SATA_OOBR_CWMAX.
|
|
|
|
//! @brief Get value of SATA_OOBR_CWMAX from a register value.
|
|
#define BG_SATA_OOBR_CWMAX(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_OOBR_CWMAX) >> BP_SATA_OOBR_CWMAX)
|
|
|
|
//! @brief Format value for bitfield SATA_OOBR_CWMAX.
|
|
#define BF_SATA_OOBR_CWMAX(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_OOBR_CWMAX) & BM_SATA_OOBR_CWMAX)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CWMAX field to a new value.
|
|
#define BW_SATA_OOBR_CWMAX(v) (HW_SATA_OOBR_WR((HW_SATA_OOBR_RD() & ~BM_SATA_OOBR_CWMAX) | BF_SATA_OOBR_CWMAX(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_OOBR, field CWMIN[30:24] (RW)
|
|
*
|
|
* COMWAKE Minimum Value This field is RW when WE=1 and RO when WE=0.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_OOBR_CWMIN (24) //!< Bit position for SATA_OOBR_CWMIN.
|
|
#define BM_SATA_OOBR_CWMIN (0x7f000000) //!< Bit mask for SATA_OOBR_CWMIN.
|
|
|
|
//! @brief Get value of SATA_OOBR_CWMIN from a register value.
|
|
#define BG_SATA_OOBR_CWMIN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_OOBR_CWMIN) >> BP_SATA_OOBR_CWMIN)
|
|
|
|
//! @brief Format value for bitfield SATA_OOBR_CWMIN.
|
|
#define BF_SATA_OOBR_CWMIN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_OOBR_CWMIN) & BM_SATA_OOBR_CWMIN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CWMIN field to a new value.
|
|
#define BW_SATA_OOBR_CWMIN(v) (HW_SATA_OOBR_WR((HW_SATA_OOBR_RD() & ~BM_SATA_OOBR_CWMIN) | BF_SATA_OOBR_CWMIN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_OOBR, field WE[31] (RW)
|
|
*
|
|
* Write Enable This bit is cleared when COMRESET is detected. The options for this field are:
|
|
*
|
|
* Values:
|
|
* - 0 - SATA_OOBR bits [30:0] are read-only
|
|
* - 1 - SATA_OOBR bits [30:0] can be written
|
|
*/
|
|
//@{
|
|
#define BP_SATA_OOBR_WE (31) //!< Bit position for SATA_OOBR_WE.
|
|
#define BM_SATA_OOBR_WE (0x80000000) //!< Bit mask for SATA_OOBR_WE.
|
|
|
|
//! @brief Get value of SATA_OOBR_WE from a register value.
|
|
#define BG_SATA_OOBR_WE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_OOBR_WE) >> BP_SATA_OOBR_WE)
|
|
|
|
//! @brief Format value for bitfield SATA_OOBR_WE.
|
|
#define BF_SATA_OOBR_WE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_OOBR_WE) & BM_SATA_OOBR_WE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the WE field to a new value.
|
|
#define BW_SATA_OOBR_WE(v) (HW_SATA_OOBR_WR((HW_SATA_OOBR_RD() & ~BM_SATA_OOBR_WE) | BF_SATA_OOBR_WE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_GPCR - General Purpose Control Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_GPCR - General Purpose Control Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This 32-bit register is used for general purpose control. This register only exists when GP_CTRL
|
|
* parameter is set to “Include” otherwise this location is reserved. The bits of this register are
|
|
* connected to the corresponding bits of the gp_ctrl output. Resets on power-up (system reset) only
|
|
* to the GP_CTRL_DEF value.
|
|
*/
|
|
typedef union _hw_sata_gpcr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_gpcr_bitfields
|
|
{
|
|
unsigned GP_CONTROL : 32; //!< [31:0] General Purpose Control.
|
|
} B;
|
|
} hw_sata_gpcr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_GPCR register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_GPCR_ADDR (REGS_SATA_BASE + 0xd0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_GPCR (*(volatile hw_sata_gpcr_t *) HW_SATA_GPCR_ADDR)
|
|
#define HW_SATA_GPCR_RD() (HW_SATA_GPCR.U)
|
|
#define HW_SATA_GPCR_WR(v) (HW_SATA_GPCR.U = (v))
|
|
#define HW_SATA_GPCR_SET(v) (HW_SATA_GPCR_WR(HW_SATA_GPCR_RD() | (v)))
|
|
#define HW_SATA_GPCR_CLR(v) (HW_SATA_GPCR_WR(HW_SATA_GPCR_RD() & ~(v)))
|
|
#define HW_SATA_GPCR_TOG(v) (HW_SATA_GPCR_WR(HW_SATA_GPCR_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_GPCR bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_GPCR, field GP_CONTROL[31:0] (RW)
|
|
*
|
|
* General Purpose Control. Present only when GP_CTRL=Include(1). Reset Value: Configurable
|
|
* parameter GP_CTRL_DEF
|
|
*/
|
|
//@{
|
|
#define BP_SATA_GPCR_GP_CONTROL (0) //!< Bit position for SATA_GPCR_GP_CONTROL.
|
|
#define BM_SATA_GPCR_GP_CONTROL (0xffffffff) //!< Bit mask for SATA_GPCR_GP_CONTROL.
|
|
|
|
//! @brief Get value of SATA_GPCR_GP_CONTROL from a register value.
|
|
#define BG_SATA_GPCR_GP_CONTROL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_GPCR_GP_CONTROL) >> BP_SATA_GPCR_GP_CONTROL)
|
|
|
|
//! @brief Format value for bitfield SATA_GPCR_GP_CONTROL.
|
|
#define BF_SATA_GPCR_GP_CONTROL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_GPCR_GP_CONTROL) & BM_SATA_GPCR_GP_CONTROL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the GP_CONTROL field to a new value.
|
|
#define BW_SATA_GPCR_GP_CONTROL(v) (HW_SATA_GPCR_WR((HW_SATA_GPCR_RD() & ~BM_SATA_GPCR_GP_CONTROL) | BF_SATA_GPCR_GP_CONTROL(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_GPSR - General Purpose Status Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_GPSR - General Purpose Status Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This 32-bit register is used to monitor the general purpose status. This register only exists
|
|
* when GP_STAT parameter is set to “Include”, otherwise, this location is reserved. The bits of
|
|
* this register reflect the state of the corresponding bits of the gp_status input. Signals
|
|
* connected to the gp_status input can be asynchronous to any of the DWC_ahsata clocks, however
|
|
* they must not change faster than five hclk/aclk periods, otherwise the GPSR register may never be
|
|
* updated with the intermediate changing values.
|
|
*/
|
|
typedef union _hw_sata_gpsr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_gpsr_bitfields
|
|
{
|
|
unsigned GP_STATUS : 32; //!< [31:0] General Purpose Status.
|
|
} B;
|
|
} hw_sata_gpsr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_GPSR register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_GPSR_ADDR (REGS_SATA_BASE + 0xd4)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_GPSR (*(volatile hw_sata_gpsr_t *) HW_SATA_GPSR_ADDR)
|
|
#define HW_SATA_GPSR_RD() (HW_SATA_GPSR.U)
|
|
#define HW_SATA_GPSR_WR(v) (HW_SATA_GPSR.U = (v))
|
|
#define HW_SATA_GPSR_SET(v) (HW_SATA_GPSR_WR(HW_SATA_GPSR_RD() | (v)))
|
|
#define HW_SATA_GPSR_CLR(v) (HW_SATA_GPSR_WR(HW_SATA_GPSR_RD() & ~(v)))
|
|
#define HW_SATA_GPSR_TOG(v) (HW_SATA_GPSR_WR(HW_SATA_GPSR_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_GPSR bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_GPSR, field GP_STATUS[31:0] (RW)
|
|
*
|
|
* General Purpose Status. Present only when GP_STAT=Include(1)
|
|
*/
|
|
//@{
|
|
#define BP_SATA_GPSR_GP_STATUS (0) //!< Bit position for SATA_GPSR_GP_STATUS.
|
|
#define BM_SATA_GPSR_GP_STATUS (0xffffffff) //!< Bit mask for SATA_GPSR_GP_STATUS.
|
|
|
|
//! @brief Get value of SATA_GPSR_GP_STATUS from a register value.
|
|
#define BG_SATA_GPSR_GP_STATUS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_GPSR_GP_STATUS) >> BP_SATA_GPSR_GP_STATUS)
|
|
|
|
//! @brief Format value for bitfield SATA_GPSR_GP_STATUS.
|
|
#define BF_SATA_GPSR_GP_STATUS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_GPSR_GP_STATUS) & BM_SATA_GPSR_GP_STATUS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the GP_STATUS field to a new value.
|
|
#define BW_SATA_GPSR_GP_STATUS(v) (HW_SATA_GPSR_WR((HW_SATA_GPSR_RD() & ~BM_SATA_GPSR_GP_STATUS) | BF_SATA_GPSR_GP_STATUS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_TIMER1MS - Timer 1-ms Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_TIMER1MS - Timer 1-ms Register (RW)
|
|
*
|
|
* Reset value: 0x000186a0
|
|
*
|
|
* This register is used to generate a 1-ms tick for the command completion coalescing (CCC) logic,
|
|
* based on the AHB bus clock frequency. The Software must initialize this register with the
|
|
* required value after power up before using the CCC feature. This register is reset to 100,000
|
|
* (TIMV value for 100-MHz hclk) on power up and is not affected by Global reset.
|
|
*/
|
|
typedef union _hw_sata_timer1ms
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_timer1ms_bitfields
|
|
{
|
|
unsigned TIMV : 20; //!< [19:0] 1ms Timer Value
|
|
unsigned RESERVED0 : 12; //!< [31:20] Reserved.
|
|
} B;
|
|
} hw_sata_timer1ms_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_TIMER1MS register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_TIMER1MS_ADDR (REGS_SATA_BASE + 0xe0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_TIMER1MS (*(volatile hw_sata_timer1ms_t *) HW_SATA_TIMER1MS_ADDR)
|
|
#define HW_SATA_TIMER1MS_RD() (HW_SATA_TIMER1MS.U)
|
|
#define HW_SATA_TIMER1MS_WR(v) (HW_SATA_TIMER1MS.U = (v))
|
|
#define HW_SATA_TIMER1MS_SET(v) (HW_SATA_TIMER1MS_WR(HW_SATA_TIMER1MS_RD() | (v)))
|
|
#define HW_SATA_TIMER1MS_CLR(v) (HW_SATA_TIMER1MS_WR(HW_SATA_TIMER1MS_RD() & ~(v)))
|
|
#define HW_SATA_TIMER1MS_TOG(v) (HW_SATA_TIMER1MS_WR(HW_SATA_TIMER1MS_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_TIMER1MS bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_TIMER1MS, field TIMV[19:0] (RW)
|
|
*
|
|
* 1ms Timer Value This field contains the following value for the internal timer to generate 1-ms
|
|
* tick: Fhclk*1000 where Fhclk = AHB clock frequency in MHz The options for this field are: • RW
|
|
* when SATA_CCC_CTL[EN]==0 • RO when SATA_CCC_CTL[EN]==1.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_TIMER1MS_TIMV (0) //!< Bit position for SATA_TIMER1MS_TIMV.
|
|
#define BM_SATA_TIMER1MS_TIMV (0x000fffff) //!< Bit mask for SATA_TIMER1MS_TIMV.
|
|
|
|
//! @brief Get value of SATA_TIMER1MS_TIMV from a register value.
|
|
#define BG_SATA_TIMER1MS_TIMV(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_TIMER1MS_TIMV) >> BP_SATA_TIMER1MS_TIMV)
|
|
|
|
//! @brief Format value for bitfield SATA_TIMER1MS_TIMV.
|
|
#define BF_SATA_TIMER1MS_TIMV(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_TIMER1MS_TIMV) & BM_SATA_TIMER1MS_TIMV)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TIMV field to a new value.
|
|
#define BW_SATA_TIMER1MS_TIMV(v) (HW_SATA_TIMER1MS_WR((HW_SATA_TIMER1MS_RD() & ~BM_SATA_TIMER1MS_TIMV) | BF_SATA_TIMER1MS_TIMV(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_TESTR - Test Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_TESTR - Test Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register is used to put the SATA block slave interface into a test mode and to select a Port
|
|
* for BIST operation.
|
|
*/
|
|
typedef union _hw_sata_testr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_testr_bitfields
|
|
{
|
|
unsigned TEST_IF : 1; //!< [0] TEST_IF: Test Interface
|
|
unsigned RESERVED0 : 15; //!< [15:1] Reserved
|
|
unsigned PSEL : 3; //!< [18:16] Port Select
|
|
unsigned RESERVED1 : 13; //!< [31:19] Reserved
|
|
} B;
|
|
} hw_sata_testr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_TESTR register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_TESTR_ADDR (REGS_SATA_BASE + 0xf4)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_TESTR (*(volatile hw_sata_testr_t *) HW_SATA_TESTR_ADDR)
|
|
#define HW_SATA_TESTR_RD() (HW_SATA_TESTR.U)
|
|
#define HW_SATA_TESTR_WR(v) (HW_SATA_TESTR.U = (v))
|
|
#define HW_SATA_TESTR_SET(v) (HW_SATA_TESTR_WR(HW_SATA_TESTR_RD() | (v)))
|
|
#define HW_SATA_TESTR_CLR(v) (HW_SATA_TESTR_WR(HW_SATA_TESTR_RD() & ~(v)))
|
|
#define HW_SATA_TESTR_TOG(v) (HW_SATA_TESTR_WR(HW_SATA_TESTR_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_TESTR bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_TESTR, field TEST_IF[0] (RW)
|
|
*
|
|
* TEST_IF: Test Interface Normal operation is disabled. The following registers can be accessed in
|
|
* this mode: - SATA_GHC register IE bit - SATA_BISTAFR register NCP and PD bits become read-write -
|
|
* SATA_BISTCR register LLC, ERREN, FLIP, PV, PATTERN - SATA_BISTFCTR, SATA_BISTSR become read-write
|
|
* - SATA_P 0 CLB , SATA_P 0 FB registers - SATA_P 0 IS register RW1C and UFS bits become read-write
|
|
* - SATA_P 0 IE register - SATA_P 0 CMD register ASP, ALPE, DLAE, ATAPI, PMA bits - SATA_P 0 TFD,
|
|
* SATA_P 0 SIG registers become read-write - SATA_P 0 SCTL register - SATA_P 0 SERR register RW1C
|
|
* bits become read-write bits - SATA_P 0 SACT, SATA_P 0 CI, SATA_P 0 SNTF registers become read-
|
|
* write - SATA_P 0 DMACR register - SATA_P 0 PHYCR register - SATA_P 0 PHYSR register becomes read-
|
|
* write Notes: • Interrupt is asserted when any of the SATA_IS register bits is set after setting
|
|
* the corresponding SATA_P 0 IS and SATA_P 0 IE registers and SATA_GHC[IE]=1. • SATA_CAP[SMPS],
|
|
* SATA_CAP[SSS], SATA_PI, SATA_P 0 CMD[ESP], SATA_P 0 CMD[CPD], SATA_P 0 CMD[MPSP], and SATA_P 0
|
|
* CMD[HPCP] register bits are HwInit type and can not be used in Test mode. They are written once
|
|
* after power-on reset and become read-only. • Global SATA block reset must be issued
|
|
* (SATA_GHC[HR]=1) after TEST_WHEN bit is cleared following the Test mode operation. This bit is
|
|
* used to put the SATA block slave interface into the test mode: The options for this field are:
|
|
*
|
|
* Values:
|
|
* - 0 - Normal mode: the read back value of some registers is a function of the SATA block state and does
|
|
* not match the value written.
|
|
* - 1 - Test mode: the read back value of the registers matches the value written.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_TESTR_TEST_IF (0) //!< Bit position for SATA_TESTR_TEST_IF.
|
|
#define BM_SATA_TESTR_TEST_IF (0x00000001) //!< Bit mask for SATA_TESTR_TEST_IF.
|
|
|
|
//! @brief Get value of SATA_TESTR_TEST_IF from a register value.
|
|
#define BG_SATA_TESTR_TEST_IF(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_TESTR_TEST_IF) >> BP_SATA_TESTR_TEST_IF)
|
|
|
|
//! @brief Format value for bitfield SATA_TESTR_TEST_IF.
|
|
#define BF_SATA_TESTR_TEST_IF(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_TESTR_TEST_IF) & BM_SATA_TESTR_TEST_IF)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TEST_IF field to a new value.
|
|
#define BW_SATA_TESTR_TEST_IF(v) (HW_SATA_TESTR_WR((HW_SATA_TESTR_RD() & ~BM_SATA_TESTR_TEST_IF) | BF_SATA_TESTR_TEST_IF(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_TESTR, field PSEL[18:16] (RW)
|
|
*
|
|
* Port Select This field is used to select a Port for BIST operation: The options for this field
|
|
* are:
|
|
*
|
|
* Values:
|
|
* - 0x0 - Port0 is selected
|
|
* - 0x0 - Port1 is selected
|
|
* - 0x0 - Port2 is selected
|
|
* - 0x0 - Port3 is selected
|
|
* - 0x0 - Port4 is selected
|
|
* - 0x0 - Port5 is selected
|
|
* - 0x0 - Port6 is selected
|
|
* - 0x0 - Port7 is selected
|
|
*/
|
|
//@{
|
|
#define BP_SATA_TESTR_PSEL (16) //!< Bit position for SATA_TESTR_PSEL.
|
|
#define BM_SATA_TESTR_PSEL (0x00070000) //!< Bit mask for SATA_TESTR_PSEL.
|
|
|
|
//! @brief Get value of SATA_TESTR_PSEL from a register value.
|
|
#define BG_SATA_TESTR_PSEL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_TESTR_PSEL) >> BP_SATA_TESTR_PSEL)
|
|
|
|
//! @brief Format value for bitfield SATA_TESTR_PSEL.
|
|
#define BF_SATA_TESTR_PSEL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_TESTR_PSEL) & BM_SATA_TESTR_PSEL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the PSEL field to a new value.
|
|
#define BW_SATA_TESTR_PSEL(v) (HW_SATA_TESTR_WR((HW_SATA_TESTR_RD() & ~BM_SATA_TESTR_PSEL) | BF_SATA_TESTR_PSEL(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_VERSIONR - Version Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_VERSIONR - Version Register (RO)
|
|
*
|
|
* Reset value: 0x3330302a
|
|
*
|
|
* This 32-bit read-only register contains a hard-coded ASCII string that represents the version
|
|
* level of the SATA block. This register contains the ASCII string "300*" (hexadecimal 0x3330302A).
|
|
*/
|
|
typedef union _hw_sata_versionr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_versionr_bitfields
|
|
{
|
|
unsigned RESERVED0 : 32; //!< [31:0] SATA block hard-coded hexadecimal version value encoded in ASCII.
|
|
} B;
|
|
} hw_sata_versionr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_VERSIONR register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_VERSIONR_ADDR (REGS_SATA_BASE + 0xf8)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_VERSIONR (*(volatile hw_sata_versionr_t *) HW_SATA_VERSIONR_ADDR)
|
|
#define HW_SATA_VERSIONR_RD() (HW_SATA_VERSIONR.U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_VERSIONR bitfields
|
|
*/
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_P0CLB - Port0 Command List Base Address Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_P0CLB - Port0 Command List Base Address Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*/
|
|
typedef union _hw_sata_p0clb
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_p0clb_bitfields
|
|
{
|
|
unsigned RESERVED0 : 10; //!< [9:0] Reserved.
|
|
unsigned CLB : 22; //!< [31:10] Command List Base Address
|
|
} B;
|
|
} hw_sata_p0clb_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_P0CLB register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_P0CLB_ADDR (REGS_SATA_BASE + 0x100)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_P0CLB (*(volatile hw_sata_p0clb_t *) HW_SATA_P0CLB_ADDR)
|
|
#define HW_SATA_P0CLB_RD() (HW_SATA_P0CLB.U)
|
|
#define HW_SATA_P0CLB_WR(v) (HW_SATA_P0CLB.U = (v))
|
|
#define HW_SATA_P0CLB_SET(v) (HW_SATA_P0CLB_WR(HW_SATA_P0CLB_RD() | (v)))
|
|
#define HW_SATA_P0CLB_CLR(v) (HW_SATA_P0CLB_WR(HW_SATA_P0CLB_RD() & ~(v)))
|
|
#define HW_SATA_P0CLB_TOG(v) (HW_SATA_P0CLB_WR(HW_SATA_P0CLB_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_P0CLB bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_P0CLB, field CLB[31:10] (RW)
|
|
*
|
|
* Command List Base Address Indicates the 32-bit base physical address for the command list for
|
|
* this Port. This base is used when fetching commands to execute. The structure pointed to by this
|
|
* address range is 1 KB in length. This address must be 1-KB-aligned as indicated by bits [9:0]
|
|
* being read only.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CLB_CLB (10) //!< Bit position for SATA_P0CLB_CLB.
|
|
#define BM_SATA_P0CLB_CLB (0xfffffc00) //!< Bit mask for SATA_P0CLB_CLB.
|
|
|
|
//! @brief Get value of SATA_P0CLB_CLB from a register value.
|
|
#define BG_SATA_P0CLB_CLB(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CLB_CLB) >> BP_SATA_P0CLB_CLB)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CLB_CLB.
|
|
#define BF_SATA_P0CLB_CLB(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CLB_CLB) & BM_SATA_P0CLB_CLB)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CLB field to a new value.
|
|
#define BW_SATA_P0CLB_CLB(v) (HW_SATA_P0CLB_WR((HW_SATA_P0CLB_RD() & ~BM_SATA_P0CLB_CLB) | BF_SATA_P0CLB_CLB(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_P0FB - Port0 FIS Base Address Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_P0FB - Port0 FIS Base Address Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*/
|
|
typedef union _hw_sata_p0fb
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_p0fb_bitfields
|
|
{
|
|
unsigned RESERVED0 : 8; //!< [7:0] Reserved.
|
|
unsigned FB : 24; //!< [31:8] FIS Base Address.
|
|
} B;
|
|
} hw_sata_p0fb_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_P0FB register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_P0FB_ADDR (REGS_SATA_BASE + 0x108)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_P0FB (*(volatile hw_sata_p0fb_t *) HW_SATA_P0FB_ADDR)
|
|
#define HW_SATA_P0FB_RD() (HW_SATA_P0FB.U)
|
|
#define HW_SATA_P0FB_WR(v) (HW_SATA_P0FB.U = (v))
|
|
#define HW_SATA_P0FB_SET(v) (HW_SATA_P0FB_WR(HW_SATA_P0FB_RD() | (v)))
|
|
#define HW_SATA_P0FB_CLR(v) (HW_SATA_P0FB_WR(HW_SATA_P0FB_RD() & ~(v)))
|
|
#define HW_SATA_P0FB_TOG(v) (HW_SATA_P0FB_WR(HW_SATA_P0FB_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_P0FB bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_P0FB, field FB[31:8] (RW)
|
|
*
|
|
* FIS Base Address. Indicates the 32-bit base physical address for received FISes. The structure
|
|
* pointed to by this address range is 256 bytes in length. This address must be 256byte-aligned as
|
|
* indicated by bits [7:0] being read only. Reset: 0x000000
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0FB_FB (8) //!< Bit position for SATA_P0FB_FB.
|
|
#define BM_SATA_P0FB_FB (0xffffff00) //!< Bit mask for SATA_P0FB_FB.
|
|
|
|
//! @brief Get value of SATA_P0FB_FB from a register value.
|
|
#define BG_SATA_P0FB_FB(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0FB_FB) >> BP_SATA_P0FB_FB)
|
|
|
|
//! @brief Format value for bitfield SATA_P0FB_FB.
|
|
#define BF_SATA_P0FB_FB(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0FB_FB) & BM_SATA_P0FB_FB)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the FB field to a new value.
|
|
#define BW_SATA_P0FB_FB(v) (HW_SATA_P0FB_WR((HW_SATA_P0FB_RD() & ~BM_SATA_P0FB_FB) | BF_SATA_P0FB_FB(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_P0IS - Port0 Interrupt Status Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_P0IS - Port0 Interrupt Status Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register is used to generate SATA block interrupt when any of the bits are set. Bits in this
|
|
* register are set by some internal conditions, and cleared by the software writing ones in the
|
|
* positions it wants to clear. This register is reset on Global SATA block reset.
|
|
*/
|
|
typedef union _hw_sata_p0is
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_p0is_bitfields
|
|
{
|
|
unsigned DHRS : 1; //!< [0] Device to Host Register FIS Interrupt
|
|
unsigned PSS : 1; //!< [1] PIO Setup FIS Interrupt.
|
|
unsigned DSS : 1; //!< [2] DMA Setup FIS Interrupt
|
|
unsigned SDBS : 1; //!< [3] Set Device Bits Interrupt.
|
|
unsigned UFS : 1; //!< [4] Unknown FIS Interrupt.
|
|
unsigned DPS : 1; //!< [5] Descriptor Processed
|
|
unsigned PCS : 1; //!< [6] Port Connect Change Status
|
|
unsigned RESERVED0 : 15; //!< [21:7] Reserved.
|
|
unsigned PRCS : 1; //!< [22] PHY Ready Change Status
|
|
unsigned IPMS : 1; //!< [23] Incorrect Port Multiplier Status.
|
|
unsigned OFS : 1; //!< [24] Overflow Status
|
|
unsigned RESERVED1 : 1; //!< [25] Reserved
|
|
unsigned INFS : 1; //!< [26] Interface Non-fatal Error Status
|
|
unsigned IFS : 1; //!< [27] Interface Fatal Error Status
|
|
unsigned HBDS : 1; //!< [28] Host Bus Data Error Status.
|
|
unsigned HBFS : 1; //!< [29] Host Bus Fatal Error Status.
|
|
unsigned TFES : 1; //!< [30] Task File Error Status.
|
|
unsigned RESERVED2 : 1; //!< [31] Reserved.
|
|
} B;
|
|
} hw_sata_p0is_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_P0IS register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_P0IS_ADDR (REGS_SATA_BASE + 0x110)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_P0IS (*(volatile hw_sata_p0is_t *) HW_SATA_P0IS_ADDR)
|
|
#define HW_SATA_P0IS_RD() (HW_SATA_P0IS.U)
|
|
#define HW_SATA_P0IS_WR(v) (HW_SATA_P0IS.U = (v))
|
|
#define HW_SATA_P0IS_SET(v) (HW_SATA_P0IS_WR(HW_SATA_P0IS_RD() | (v)))
|
|
#define HW_SATA_P0IS_CLR(v) (HW_SATA_P0IS_WR(HW_SATA_P0IS_RD() & ~(v)))
|
|
#define HW_SATA_P0IS_TOG(v) (HW_SATA_P0IS_WR(HW_SATA_P0IS_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_P0IS bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_P0IS, field DHRS[0] (RO)
|
|
*
|
|
* Device to Host Register FIS Interrupt A D2H Register FIS has been received with the 'I' bit set,
|
|
* and has been copied into system memory.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IS_DHRS (0) //!< Bit position for SATA_P0IS_DHRS.
|
|
#define BM_SATA_P0IS_DHRS (0x00000001) //!< Bit mask for SATA_P0IS_DHRS.
|
|
|
|
//! @brief Get value of SATA_P0IS_DHRS from a register value.
|
|
#define BG_SATA_P0IS_DHRS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IS_DHRS) >> BP_SATA_P0IS_DHRS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IS, field PSS[1] (RO)
|
|
*
|
|
* PIO Setup FIS Interrupt. A PIO Setup FIS has been received with the 'I' bit set, it has been
|
|
* copied into system memory, and the data related to that FIS has been transferred. This bit is set
|
|
* even when the data transfer resulted in an error.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IS_PSS (1) //!< Bit position for SATA_P0IS_PSS.
|
|
#define BM_SATA_P0IS_PSS (0x00000002) //!< Bit mask for SATA_P0IS_PSS.
|
|
|
|
//! @brief Get value of SATA_P0IS_PSS from a register value.
|
|
#define BG_SATA_P0IS_PSS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IS_PSS) >> BP_SATA_P0IS_PSS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IS, field DSS[2] (RO)
|
|
*
|
|
* DMA Setup FIS Interrupt A DMA Setup FIS has been received with the 'I' bit set and has been
|
|
* copied into system memory.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IS_DSS (2) //!< Bit position for SATA_P0IS_DSS.
|
|
#define BM_SATA_P0IS_DSS (0x00000004) //!< Bit mask for SATA_P0IS_DSS.
|
|
|
|
//! @brief Get value of SATA_P0IS_DSS from a register value.
|
|
#define BG_SATA_P0IS_DSS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IS_DSS) >> BP_SATA_P0IS_DSS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IS, field SDBS[3] (RO)
|
|
*
|
|
* Set Device Bits Interrupt. A Set Device Bits FIS has been received with the 'I' bit set and has
|
|
* been copied into system memory.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IS_SDBS (3) //!< Bit position for SATA_P0IS_SDBS.
|
|
#define BM_SATA_P0IS_SDBS (0x00000008) //!< Bit mask for SATA_P0IS_SDBS.
|
|
|
|
//! @brief Get value of SATA_P0IS_SDBS from a register value.
|
|
#define BG_SATA_P0IS_SDBS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IS_SDBS) >> BP_SATA_P0IS_SDBS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IS, field UFS[4] (RO)
|
|
*
|
|
* Unknown FIS Interrupt. When set to 1, indicates that an unknown FIS was received and has been
|
|
* copied into system memory. This bit is cleared to 0 by the software clearing the SATA_P 0
|
|
* SERR[DIAG_F] bit to 0. The UFS bit does not directly reflect the SATA_P 0 SERR[DIAG_F] bit.
|
|
* SATA_P 0 SERR[DIAG_F] bit is set immediately when an unknown FIS is detected, whereas the UFS bit
|
|
* is set when that FIS is posted to memory. The software should wait to act on an unknown FIS until
|
|
* the UFS bit is set to 1 or the two bits may become out of sync.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IS_UFS (4) //!< Bit position for SATA_P0IS_UFS.
|
|
#define BM_SATA_P0IS_UFS (0x00000010) //!< Bit mask for SATA_P0IS_UFS.
|
|
|
|
//! @brief Get value of SATA_P0IS_UFS from a register value.
|
|
#define BG_SATA_P0IS_UFS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IS_UFS) >> BP_SATA_P0IS_UFS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IS, field DPS[5] (RO)
|
|
*
|
|
* Descriptor Processed A PRD with the I bit set has transferred all of its data. This is an
|
|
* opportunistic interrupt and must not be used to definitively indicate the end of a transfer. Two
|
|
* PRD interrupts could happen close in time together such that the second interrupt is missed when
|
|
* the first PRD interrupt is being cleared.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IS_DPS (5) //!< Bit position for SATA_P0IS_DPS.
|
|
#define BM_SATA_P0IS_DPS (0x00000020) //!< Bit mask for SATA_P0IS_DPS.
|
|
|
|
//! @brief Get value of SATA_P0IS_DPS from a register value.
|
|
#define BG_SATA_P0IS_DPS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IS_DPS) >> BP_SATA_P0IS_DPS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IS, field PCS[6] (RO)
|
|
*
|
|
* Port Connect Change Status This bit is cleared only when SATA_P 0 SERR[DIAG_X] is cleared. This
|
|
* bit reflects the state of the SATA_P 0 SERR[DIAG_X] bit:
|
|
*
|
|
* Values:
|
|
* - 0 - No change in Current Connect Status.
|
|
* - 1 - Change in Current Connect Status;
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IS_PCS (6) //!< Bit position for SATA_P0IS_PCS.
|
|
#define BM_SATA_P0IS_PCS (0x00000040) //!< Bit mask for SATA_P0IS_PCS.
|
|
|
|
//! @brief Get value of SATA_P0IS_PCS from a register value.
|
|
#define BG_SATA_P0IS_PCS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IS_PCS) >> BP_SATA_P0IS_PCS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IS, field PRCS[22] (RO)
|
|
*
|
|
* PHY Ready Change Status This bit reflects the state of the SATA_P 0 SERR[DIAG_N] bit. When set to
|
|
* 1, indicates the internal p 0 _phy_ready signal changed state. To clear this bit, the software
|
|
* must clear the SATA_P 0 SERR[DIAG_N] bit to 0.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IS_PRCS (22) //!< Bit position for SATA_P0IS_PRCS.
|
|
#define BM_SATA_P0IS_PRCS (0x00400000) //!< Bit mask for SATA_P0IS_PRCS.
|
|
|
|
//! @brief Get value of SATA_P0IS_PRCS from a register value.
|
|
#define BG_SATA_P0IS_PRCS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IS_PRCS) >> BP_SATA_P0IS_PRCS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IS, field IPMS[23] (RO)
|
|
*
|
|
* Incorrect Port Multiplier Status. Indicates that the HBA received a FIS from a device whose Port
|
|
* Multiplier field did not match what was expected. This bit may be set during enumeration of
|
|
* devices on a Port Multiplier due to the normal Port Multiplier enumeration process. The software
|
|
* must use the IPMS bit only after enumeration is complete on the Port Multiplier.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IS_IPMS (23) //!< Bit position for SATA_P0IS_IPMS.
|
|
#define BM_SATA_P0IS_IPMS (0x00800000) //!< Bit mask for SATA_P0IS_IPMS.
|
|
|
|
//! @brief Get value of SATA_P0IS_IPMS from a register value.
|
|
#define BG_SATA_P0IS_IPMS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IS_IPMS) >> BP_SATA_P0IS_IPMS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IS, field OFS[24] (RO)
|
|
*
|
|
* Overflow Status This bit is set when command list overflow is detected during read or write
|
|
* operation when the software builds command table that has fever total bytes than the transaction
|
|
* given to the device. Port DMA transitions to a fatal state until the software clears SATA_P 0
|
|
* CMD[ST] bit or resets the interface by way of Port or Global reset.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IS_OFS (24) //!< Bit position for SATA_P0IS_OFS.
|
|
#define BM_SATA_P0IS_OFS (0x01000000) //!< Bit mask for SATA_P0IS_OFS.
|
|
|
|
//! @brief Get value of SATA_P0IS_OFS from a register value.
|
|
#define BG_SATA_P0IS_OFS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IS_OFS) >> BP_SATA_P0IS_OFS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IS, field INFS[26] (RO)
|
|
*
|
|
* Interface Non-fatal Error Status This bit is set when any of the following conditions is
|
|
* detected: • One or more of the following errors are detected during non-data FIS transfer - 10B
|
|
* to 8B Decode Error (SATA_P 0 SERR[DIAG_B]) - Protocol (SATA_P 0 SERR[ERR_P]) - CRC (SATA_P 0
|
|
* SERR[DIAG_C]), - Handshake (SATA_P 0 SERR[DIAG_H]) - PHY Not Ready (SATA_P 0 SERR[ERR_C]); •
|
|
* Command list underflow during read operation (i.e. DMA read) when the software builds command
|
|
* table that has more total bytes than the transaction given to the device.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IS_INFS (26) //!< Bit position for SATA_P0IS_INFS.
|
|
#define BM_SATA_P0IS_INFS (0x04000000) //!< Bit mask for SATA_P0IS_INFS.
|
|
|
|
//! @brief Get value of SATA_P0IS_INFS from a register value.
|
|
#define BG_SATA_P0IS_INFS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IS_INFS) >> BP_SATA_P0IS_INFS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IS, field IFS[27] (RO)
|
|
*
|
|
* Interface Fatal Error Status This bit is set when any of the following conditions is detected: •
|
|
* SYNC escape is received from the device during H2D Register or Data FIS transmission; • One or
|
|
* more of the following errors are detected during Data FIS transfer: - 10B to 8B Decode Error
|
|
* (SATA_P 0 SERR[DIAG_B]) - Protocol (SATA_P 0 SERR[ERR_P]) - CRC (SATA_P 0 SERR[DIAG_C]) -
|
|
* Handshake (SATA_P 0 SERR[DIAG_H]) - PHY Not Ready (SATA_P 0 SERR[ERR_C]) • Unknown FIS is
|
|
* received with good CRC, but the length exceeds 64 bytes; • PRD table byte count is zero. Port DMA
|
|
* transitions to a fatal state until the software clears SATA_P 0 CMD[ST] bit or resets the
|
|
* interface by way of Port or Global reset.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IS_IFS (27) //!< Bit position for SATA_P0IS_IFS.
|
|
#define BM_SATA_P0IS_IFS (0x08000000) //!< Bit mask for SATA_P0IS_IFS.
|
|
|
|
//! @brief Get value of SATA_P0IS_IFS from a register value.
|
|
#define BG_SATA_P0IS_IFS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IS_IFS) >> BP_SATA_P0IS_IFS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IS, field HBDS[28] (RO)
|
|
*
|
|
* Host Bus Data Error Status. This bit is always cleared to 0.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IS_HBDS (28) //!< Bit position for SATA_P0IS_HBDS.
|
|
#define BM_SATA_P0IS_HBDS (0x10000000) //!< Bit mask for SATA_P0IS_HBDS.
|
|
|
|
//! @brief Get value of SATA_P0IS_HBDS from a register value.
|
|
#define BG_SATA_P0IS_HBDS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IS_HBDS) >> BP_SATA_P0IS_HBDS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IS, field HBFS[29] (RO)
|
|
*
|
|
* Host Bus Fatal Error Status. This bit is set when SATA block AHB Master detects an ERROR response
|
|
* from the slave.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IS_HBFS (29) //!< Bit position for SATA_P0IS_HBFS.
|
|
#define BM_SATA_P0IS_HBFS (0x20000000) //!< Bit mask for SATA_P0IS_HBFS.
|
|
|
|
//! @brief Get value of SATA_P0IS_HBFS from a register value.
|
|
#define BG_SATA_P0IS_HBFS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IS_HBFS) >> BP_SATA_P0IS_HBFS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IS, field TFES[30] (RO)
|
|
*
|
|
* Task File Error Status. This bit is set whenever the SATA_P 0 TFD[STS] register is updated by the
|
|
* device and the error bit (bit 0) is set.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IS_TFES (30) //!< Bit position for SATA_P0IS_TFES.
|
|
#define BM_SATA_P0IS_TFES (0x40000000) //!< Bit mask for SATA_P0IS_TFES.
|
|
|
|
//! @brief Get value of SATA_P0IS_TFES from a register value.
|
|
#define BG_SATA_P0IS_TFES(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IS_TFES) >> BP_SATA_P0IS_TFES)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_P0IE - Port0 Interrupt Enable Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_P0IE - Port0 Interrupt Enable Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register enables and disables the reporting of the corresponding interrupt to the software.
|
|
* When a bit is set (1), and the corresponding interrupt condition is active, then the SATA block
|
|
* intrq output is asserted. Interrupt sources that are disabled (0) are still reflected in the
|
|
* status registers. This register is symmetrical with the SATA_P 0 IS register. This register is
|
|
* reset on Global SATA block reset.
|
|
*/
|
|
typedef union _hw_sata_p0ie
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_p0ie_bitfields
|
|
{
|
|
unsigned DHRE : 1; //!< [0] Device to Host Register FIS Interrupt
|
|
unsigned PSE : 1; //!< [1] PIO Setup FIS Interrupt Enable
|
|
unsigned DSE : 1; //!< [2] DMA Setup FIS Interrupt Enable
|
|
unsigned SDBE : 1; //!< [3] Set Device Bits FIS Interrupt Enable
|
|
unsigned UFE : 1; //!< [4] Unknown FIS Interrupt Enable
|
|
unsigned DPE : 1; //!< [5] Descriptor Processed Interrupt Enable
|
|
unsigned PCE : 1; //!< [6] Port Change Interrupt Enable
|
|
unsigned RESERVED0 : 15; //!< [21:7] Reserved.
|
|
unsigned PRCE : 1; //!< [22] PHY Ready Change Enable
|
|
unsigned IPME : 1; //!< [23] Incorrect Port Multiplier Enable
|
|
unsigned OFE : 1; //!< [24] Overflow Enable
|
|
unsigned RESERVED1 : 1; //!< [25] Reserved
|
|
unsigned INFE : 1; //!< [26] Interface Non-Fatal Error Enable
|
|
unsigned IFE : 1; //!< [27] Dependencies: when the following conditions are true, the intrq output signal is asserted:
|
|
unsigned HBDE : 1; //!< [28] Host Bus Data Error Enable
|
|
unsigned HBFE : 1; //!< [29] Host Bus Fatal Error Enable
|
|
unsigned TFEE : 1; //!< [30] Task File Error Enable
|
|
unsigned CPDE : 1; //!< [31] Cold Port Detect Enable
|
|
} B;
|
|
} hw_sata_p0ie_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_P0IE register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_P0IE_ADDR (REGS_SATA_BASE + 0x114)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_P0IE (*(volatile hw_sata_p0ie_t *) HW_SATA_P0IE_ADDR)
|
|
#define HW_SATA_P0IE_RD() (HW_SATA_P0IE.U)
|
|
#define HW_SATA_P0IE_WR(v) (HW_SATA_P0IE.U = (v))
|
|
#define HW_SATA_P0IE_SET(v) (HW_SATA_P0IE_WR(HW_SATA_P0IE_RD() | (v)))
|
|
#define HW_SATA_P0IE_CLR(v) (HW_SATA_P0IE_WR(HW_SATA_P0IE_RD() & ~(v)))
|
|
#define HW_SATA_P0IE_TOG(v) (HW_SATA_P0IE_WR(HW_SATA_P0IE_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_P0IE bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_P0IE, field DHRE[0] (RW)
|
|
*
|
|
* Device to Host Register FIS Interrupt Dependencies: when the following conditions are true, the
|
|
* intrq output signal is asserted: • This bit=1 • SATA_GHC[IE]=1 • SATA_P 0 IS[DHRS]=1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IE_DHRE (0) //!< Bit position for SATA_P0IE_DHRE.
|
|
#define BM_SATA_P0IE_DHRE (0x00000001) //!< Bit mask for SATA_P0IE_DHRE.
|
|
|
|
//! @brief Get value of SATA_P0IE_DHRE from a register value.
|
|
#define BG_SATA_P0IE_DHRE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IE_DHRE) >> BP_SATA_P0IE_DHRE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0IE_DHRE.
|
|
#define BF_SATA_P0IE_DHRE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0IE_DHRE) & BM_SATA_P0IE_DHRE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DHRE field to a new value.
|
|
#define BW_SATA_P0IE_DHRE(v) (HW_SATA_P0IE_WR((HW_SATA_P0IE_RD() & ~BM_SATA_P0IE_DHRE) | BF_SATA_P0IE_DHRE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IE, field PSE[1] (RW)
|
|
*
|
|
* PIO Setup FIS Interrupt Enable Dependencies: when the following conditions are true, the intrq
|
|
* output signal is asserted: • This bit=1 • SATA_GHC[IE]=1 • SATA_P 0 IS[PSS]=1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IE_PSE (1) //!< Bit position for SATA_P0IE_PSE.
|
|
#define BM_SATA_P0IE_PSE (0x00000002) //!< Bit mask for SATA_P0IE_PSE.
|
|
|
|
//! @brief Get value of SATA_P0IE_PSE from a register value.
|
|
#define BG_SATA_P0IE_PSE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IE_PSE) >> BP_SATA_P0IE_PSE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0IE_PSE.
|
|
#define BF_SATA_P0IE_PSE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0IE_PSE) & BM_SATA_P0IE_PSE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the PSE field to a new value.
|
|
#define BW_SATA_P0IE_PSE(v) (HW_SATA_P0IE_WR((HW_SATA_P0IE_RD() & ~BM_SATA_P0IE_PSE) | BF_SATA_P0IE_PSE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IE, field DSE[2] (RW)
|
|
*
|
|
* DMA Setup FIS Interrupt Enable Dependencies: when the following conditions are true, the intrq
|
|
* output signal is asserted: • This bit=1 • SATA_GHC[IE]=1 • SATA_P 0 IS[DSS]=1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IE_DSE (2) //!< Bit position for SATA_P0IE_DSE.
|
|
#define BM_SATA_P0IE_DSE (0x00000004) //!< Bit mask for SATA_P0IE_DSE.
|
|
|
|
//! @brief Get value of SATA_P0IE_DSE from a register value.
|
|
#define BG_SATA_P0IE_DSE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IE_DSE) >> BP_SATA_P0IE_DSE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0IE_DSE.
|
|
#define BF_SATA_P0IE_DSE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0IE_DSE) & BM_SATA_P0IE_DSE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DSE field to a new value.
|
|
#define BW_SATA_P0IE_DSE(v) (HW_SATA_P0IE_WR((HW_SATA_P0IE_RD() & ~BM_SATA_P0IE_DSE) | BF_SATA_P0IE_DSE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IE, field SDBE[3] (RW)
|
|
*
|
|
* Set Device Bits FIS Interrupt Enable Dependencies: when the following conditions are true, the
|
|
* intrq output signal is asserted: • This bit=1 • SATA_GHC[IE]=1 • SATA_P 0 IS[SDBS]=1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IE_SDBE (3) //!< Bit position for SATA_P0IE_SDBE.
|
|
#define BM_SATA_P0IE_SDBE (0x00000008) //!< Bit mask for SATA_P0IE_SDBE.
|
|
|
|
//! @brief Get value of SATA_P0IE_SDBE from a register value.
|
|
#define BG_SATA_P0IE_SDBE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IE_SDBE) >> BP_SATA_P0IE_SDBE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0IE_SDBE.
|
|
#define BF_SATA_P0IE_SDBE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0IE_SDBE) & BM_SATA_P0IE_SDBE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SDBE field to a new value.
|
|
#define BW_SATA_P0IE_SDBE(v) (HW_SATA_P0IE_WR((HW_SATA_P0IE_RD() & ~BM_SATA_P0IE_SDBE) | BF_SATA_P0IE_SDBE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IE, field UFE[4] (RW)
|
|
*
|
|
* Unknown FIS Interrupt Enable Dependencies: when the following conditions are true, the intrq
|
|
* output signal is asserted: • This bit=1 • SATA_GHC[IE]=1 • SATA_P 0 IS[UFS]=1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IE_UFE (4) //!< Bit position for SATA_P0IE_UFE.
|
|
#define BM_SATA_P0IE_UFE (0x00000010) //!< Bit mask for SATA_P0IE_UFE.
|
|
|
|
//! @brief Get value of SATA_P0IE_UFE from a register value.
|
|
#define BG_SATA_P0IE_UFE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IE_UFE) >> BP_SATA_P0IE_UFE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0IE_UFE.
|
|
#define BF_SATA_P0IE_UFE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0IE_UFE) & BM_SATA_P0IE_UFE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the UFE field to a new value.
|
|
#define BW_SATA_P0IE_UFE(v) (HW_SATA_P0IE_WR((HW_SATA_P0IE_RD() & ~BM_SATA_P0IE_UFE) | BF_SATA_P0IE_UFE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IE, field DPE[5] (RW)
|
|
*
|
|
* Descriptor Processed Interrupt Enable Dependencies: when the following conditions are true, the
|
|
* intrq output signal is asserted: • This bit=1 • SATA_GHC[IE]=1 • SATA_P 0 IS[DPS]=1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IE_DPE (5) //!< Bit position for SATA_P0IE_DPE.
|
|
#define BM_SATA_P0IE_DPE (0x00000020) //!< Bit mask for SATA_P0IE_DPE.
|
|
|
|
//! @brief Get value of SATA_P0IE_DPE from a register value.
|
|
#define BG_SATA_P0IE_DPE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IE_DPE) >> BP_SATA_P0IE_DPE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0IE_DPE.
|
|
#define BF_SATA_P0IE_DPE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0IE_DPE) & BM_SATA_P0IE_DPE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DPE field to a new value.
|
|
#define BW_SATA_P0IE_DPE(v) (HW_SATA_P0IE_WR((HW_SATA_P0IE_RD() & ~BM_SATA_P0IE_DPE) | BF_SATA_P0IE_DPE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IE, field PCE[6] (RW)
|
|
*
|
|
* Port Change Interrupt Enable Dependencies: when the following conditions are true, the intrq
|
|
* output signal is asserted: • This bit=1 • SATA_GHC[IE]=1 • SATA_P 0 IS[PCS]=1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IE_PCE (6) //!< Bit position for SATA_P0IE_PCE.
|
|
#define BM_SATA_P0IE_PCE (0x00000040) //!< Bit mask for SATA_P0IE_PCE.
|
|
|
|
//! @brief Get value of SATA_P0IE_PCE from a register value.
|
|
#define BG_SATA_P0IE_PCE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IE_PCE) >> BP_SATA_P0IE_PCE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0IE_PCE.
|
|
#define BF_SATA_P0IE_PCE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0IE_PCE) & BM_SATA_P0IE_PCE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the PCE field to a new value.
|
|
#define BW_SATA_P0IE_PCE(v) (HW_SATA_P0IE_WR((HW_SATA_P0IE_RD() & ~BM_SATA_P0IE_PCE) | BF_SATA_P0IE_PCE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IE, field PRCE[22] (RW)
|
|
*
|
|
* PHY Ready Change Enable Dependencies: when the following conditions are true, the intrq output
|
|
* signal is asserted: • This bit=1 • SATA_GHC[IE]=1 • SATA_P 0 IS[PRCS]=1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IE_PRCE (22) //!< Bit position for SATA_P0IE_PRCE.
|
|
#define BM_SATA_P0IE_PRCE (0x00400000) //!< Bit mask for SATA_P0IE_PRCE.
|
|
|
|
//! @brief Get value of SATA_P0IE_PRCE from a register value.
|
|
#define BG_SATA_P0IE_PRCE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IE_PRCE) >> BP_SATA_P0IE_PRCE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0IE_PRCE.
|
|
#define BF_SATA_P0IE_PRCE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0IE_PRCE) & BM_SATA_P0IE_PRCE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the PRCE field to a new value.
|
|
#define BW_SATA_P0IE_PRCE(v) (HW_SATA_P0IE_WR((HW_SATA_P0IE_RD() & ~BM_SATA_P0IE_PRCE) | BF_SATA_P0IE_PRCE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IE, field IPME[23] (RW)
|
|
*
|
|
* Incorrect Port Multiplier Enable Dependencies: when the following conditions are true, the intrq
|
|
* output signal is asserted: • This bit=1 • SATA_GHC[IE]=1 • SATA_P 0 IS[IPMS]=1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IE_IPME (23) //!< Bit position for SATA_P0IE_IPME.
|
|
#define BM_SATA_P0IE_IPME (0x00800000) //!< Bit mask for SATA_P0IE_IPME.
|
|
|
|
//! @brief Get value of SATA_P0IE_IPME from a register value.
|
|
#define BG_SATA_P0IE_IPME(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IE_IPME) >> BP_SATA_P0IE_IPME)
|
|
|
|
//! @brief Format value for bitfield SATA_P0IE_IPME.
|
|
#define BF_SATA_P0IE_IPME(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0IE_IPME) & BM_SATA_P0IE_IPME)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the IPME field to a new value.
|
|
#define BW_SATA_P0IE_IPME(v) (HW_SATA_P0IE_WR((HW_SATA_P0IE_RD() & ~BM_SATA_P0IE_IPME) | BF_SATA_P0IE_IPME(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IE, field OFE[24] (RW)
|
|
*
|
|
* Overflow Enable Dependencies: when the following conditions are true, the intrq output signal is
|
|
* asserted: • This bit=1 • SATA_GHC[IE]=1 • SATA_P 0 IS[OFS]=1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IE_OFE (24) //!< Bit position for SATA_P0IE_OFE.
|
|
#define BM_SATA_P0IE_OFE (0x01000000) //!< Bit mask for SATA_P0IE_OFE.
|
|
|
|
//! @brief Get value of SATA_P0IE_OFE from a register value.
|
|
#define BG_SATA_P0IE_OFE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IE_OFE) >> BP_SATA_P0IE_OFE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0IE_OFE.
|
|
#define BF_SATA_P0IE_OFE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0IE_OFE) & BM_SATA_P0IE_OFE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the OFE field to a new value.
|
|
#define BW_SATA_P0IE_OFE(v) (HW_SATA_P0IE_WR((HW_SATA_P0IE_RD() & ~BM_SATA_P0IE_OFE) | BF_SATA_P0IE_OFE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IE, field INFE[26] (RW)
|
|
*
|
|
* Interface Non-Fatal Error Enable Dependencies: when the following conditions are true, the intrq
|
|
* output signal is asserted: • This bit=1 • SATA_GHC[IE]=1 • SATA_P 0 IS[INFS]=1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IE_INFE (26) //!< Bit position for SATA_P0IE_INFE.
|
|
#define BM_SATA_P0IE_INFE (0x04000000) //!< Bit mask for SATA_P0IE_INFE.
|
|
|
|
//! @brief Get value of SATA_P0IE_INFE from a register value.
|
|
#define BG_SATA_P0IE_INFE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IE_INFE) >> BP_SATA_P0IE_INFE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0IE_INFE.
|
|
#define BF_SATA_P0IE_INFE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0IE_INFE) & BM_SATA_P0IE_INFE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the INFE field to a new value.
|
|
#define BW_SATA_P0IE_INFE(v) (HW_SATA_P0IE_WR((HW_SATA_P0IE_RD() & ~BM_SATA_P0IE_INFE) | BF_SATA_P0IE_INFE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IE, field IFE[27] (RW)
|
|
*
|
|
* Dependencies: when the following conditions are true, the intrq output signal is asserted: • This
|
|
* bit=1 • SATA_GHC[IE]=1 • SATA_P 0 IS[IFS]=1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IE_IFE (27) //!< Bit position for SATA_P0IE_IFE.
|
|
#define BM_SATA_P0IE_IFE (0x08000000) //!< Bit mask for SATA_P0IE_IFE.
|
|
|
|
//! @brief Get value of SATA_P0IE_IFE from a register value.
|
|
#define BG_SATA_P0IE_IFE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IE_IFE) >> BP_SATA_P0IE_IFE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0IE_IFE.
|
|
#define BF_SATA_P0IE_IFE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0IE_IFE) & BM_SATA_P0IE_IFE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the IFE field to a new value.
|
|
#define BW_SATA_P0IE_IFE(v) (HW_SATA_P0IE_WR((HW_SATA_P0IE_RD() & ~BM_SATA_P0IE_IFE) | BF_SATA_P0IE_IFE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IE, field HBDE[28] (RW)
|
|
*
|
|
* Host Bus Data Error Enable Dependencies: when the following conditions are true, the intrq output
|
|
* signal is asserted: • This bit=1 • SATA_GHC[IE]=1 • SATA_P 0 IS[HBDS]=1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IE_HBDE (28) //!< Bit position for SATA_P0IE_HBDE.
|
|
#define BM_SATA_P0IE_HBDE (0x10000000) //!< Bit mask for SATA_P0IE_HBDE.
|
|
|
|
//! @brief Get value of SATA_P0IE_HBDE from a register value.
|
|
#define BG_SATA_P0IE_HBDE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IE_HBDE) >> BP_SATA_P0IE_HBDE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0IE_HBDE.
|
|
#define BF_SATA_P0IE_HBDE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0IE_HBDE) & BM_SATA_P0IE_HBDE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the HBDE field to a new value.
|
|
#define BW_SATA_P0IE_HBDE(v) (HW_SATA_P0IE_WR((HW_SATA_P0IE_RD() & ~BM_SATA_P0IE_HBDE) | BF_SATA_P0IE_HBDE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IE, field HBFE[29] (RW)
|
|
*
|
|
* Host Bus Fatal Error Enable Dependencies: when the following conditions are true, the intrq
|
|
* output signal is asserted: • This bit=1 • SATA_GHC[IE]=1 • SATA_P 0 IS[HBFS]=1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IE_HBFE (29) //!< Bit position for SATA_P0IE_HBFE.
|
|
#define BM_SATA_P0IE_HBFE (0x20000000) //!< Bit mask for SATA_P0IE_HBFE.
|
|
|
|
//! @brief Get value of SATA_P0IE_HBFE from a register value.
|
|
#define BG_SATA_P0IE_HBFE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IE_HBFE) >> BP_SATA_P0IE_HBFE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0IE_HBFE.
|
|
#define BF_SATA_P0IE_HBFE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0IE_HBFE) & BM_SATA_P0IE_HBFE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the HBFE field to a new value.
|
|
#define BW_SATA_P0IE_HBFE(v) (HW_SATA_P0IE_WR((HW_SATA_P0IE_RD() & ~BM_SATA_P0IE_HBFE) | BF_SATA_P0IE_HBFE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IE, field TFEE[30] (RW)
|
|
*
|
|
* Task File Error Enable Dependencies: when the following conditions are true, the intrq output
|
|
* signal is asserted: • This bit=1 • SATA_GHC[IE]=1 • SATA_P 0 IS[TFES]=1
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IE_TFEE (30) //!< Bit position for SATA_P0IE_TFEE.
|
|
#define BM_SATA_P0IE_TFEE (0x40000000) //!< Bit mask for SATA_P0IE_TFEE.
|
|
|
|
//! @brief Get value of SATA_P0IE_TFEE from a register value.
|
|
#define BG_SATA_P0IE_TFEE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IE_TFEE) >> BP_SATA_P0IE_TFEE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0IE_TFEE.
|
|
#define BF_SATA_P0IE_TFEE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0IE_TFEE) & BM_SATA_P0IE_TFEE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TFEE field to a new value.
|
|
#define BW_SATA_P0IE_TFEE(v) (HW_SATA_P0IE_WR((HW_SATA_P0IE_RD() & ~BM_SATA_P0IE_TFEE) | BF_SATA_P0IE_TFEE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0IE, field CPDE[31] (RW)
|
|
*
|
|
* Cold Port Detect Enable Read-only. Returns 0.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0IE_CPDE (31) //!< Bit position for SATA_P0IE_CPDE.
|
|
#define BM_SATA_P0IE_CPDE (0x80000000) //!< Bit mask for SATA_P0IE_CPDE.
|
|
|
|
//! @brief Get value of SATA_P0IE_CPDE from a register value.
|
|
#define BG_SATA_P0IE_CPDE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0IE_CPDE) >> BP_SATA_P0IE_CPDE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0IE_CPDE.
|
|
#define BF_SATA_P0IE_CPDE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0IE_CPDE) & BM_SATA_P0IE_CPDE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CPDE field to a new value.
|
|
#define BW_SATA_P0IE_CPDE(v) (HW_SATA_P0IE_WR((HW_SATA_P0IE_RD() & ~BM_SATA_P0IE_CPDE) | BF_SATA_P0IE_CPDE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_P0CMD - Port0 Command Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_P0CMD - Port0 Command Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register contains bits controlling various Port functions. All RW bits are reset on Global
|
|
* reset.
|
|
*/
|
|
typedef union _hw_sata_p0cmd
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_p0cmd_bitfields
|
|
{
|
|
unsigned ST : 1; //!< [0] Start
|
|
unsigned SUD : 1; //!< [1] Spin-Up Device
|
|
unsigned POD : 1; //!< [2] Power On Device
|
|
unsigned CLO : 1; //!< [3] Command List Override
|
|
unsigned FRE : 1; //!< [4] FIS Receive Enable
|
|
unsigned RESERVED0 : 3; //!< [7:5] Reserved.
|
|
unsigned CCS : 5; //!< [12:8] Current Command Slot
|
|
unsigned MPSS : 1; //!< [13] Mechanical Presence Switch State
|
|
unsigned FR : 1; //!< [14] FIS Receive Running
|
|
unsigned CR : 1; //!< [15] Command List Running
|
|
unsigned CPS : 1; //!< [16] Cold Presence State
|
|
unsigned PMA : 1; //!< [17] Port Multiplier Attached
|
|
unsigned HPCP : 1; //!< [18] Hot Plug Capable Port
|
|
unsigned RESERVED1 : 2; //!< [20:19] Reserved.
|
|
unsigned ESP : 1; //!< [21] External SATA Port
|
|
unsigned RESERVED2 : 1; //!< [22] Reserved
|
|
unsigned APSTE : 1; //!< [23] Device is ATAPI
|
|
unsigned ATAPI : 1; //!< [24] ATAPI Device is ATAPI
|
|
unsigned DLAE : 1; //!< [25] Drive LED on ATAPI Enable
|
|
unsigned ALPE : 1; //!< [26] Aggressive Link Power Management Enable
|
|
unsigned ASP : 1; //!< [27] Aggressive Slumber/ Partial
|
|
unsigned ICC : 4; //!< [31:28] Interface Communication Control
|
|
} B;
|
|
} hw_sata_p0cmd_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_P0CMD register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_P0CMD_ADDR (REGS_SATA_BASE + 0x118)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_P0CMD (*(volatile hw_sata_p0cmd_t *) HW_SATA_P0CMD_ADDR)
|
|
#define HW_SATA_P0CMD_RD() (HW_SATA_P0CMD.U)
|
|
#define HW_SATA_P0CMD_WR(v) (HW_SATA_P0CMD.U = (v))
|
|
#define HW_SATA_P0CMD_SET(v) (HW_SATA_P0CMD_WR(HW_SATA_P0CMD_RD() | (v)))
|
|
#define HW_SATA_P0CMD_CLR(v) (HW_SATA_P0CMD_WR(HW_SATA_P0CMD_RD() & ~(v)))
|
|
#define HW_SATA_P0CMD_TOG(v) (HW_SATA_P0CMD_WR(HW_SATA_P0CMD_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_P0CMD bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_P0CMD, field ST[0] (RW)
|
|
*
|
|
* Start When set to 1, the Port processes the command list. When cleared, the Port does not process
|
|
* the command list. Whenever this bit is changed from a 0 to a 1, the Port starts processing the
|
|
* command list at entry'0. Whenever this bit is changed from a 1 to a 0, the SATA_P 0 CI register
|
|
* is cleared by the Port upon transition into an idle state. Refer to AHCI specification, section
|
|
* 10.3.1, for important restrictions on when this bit can be set to 1. Note: SATA_P 0 SERR register
|
|
* must be cleared prior to setting ST bit to 1.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_ST (0) //!< Bit position for SATA_P0CMD_ST.
|
|
#define BM_SATA_P0CMD_ST (0x00000001) //!< Bit mask for SATA_P0CMD_ST.
|
|
|
|
//! @brief Get value of SATA_P0CMD_ST from a register value.
|
|
#define BG_SATA_P0CMD_ST(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_ST) >> BP_SATA_P0CMD_ST)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_ST.
|
|
#define BF_SATA_P0CMD_ST(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_ST) & BM_SATA_P0CMD_ST)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the ST field to a new value.
|
|
#define BW_SATA_P0CMD_ST(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_ST) | BF_SATA_P0CMD_ST(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field SUD[1] (RW)
|
|
*
|
|
* Spin-Up Device This bit is read/write when staggered spin-up is supported as indicated by the
|
|
* SATA_CAP[SSS]=1. This bit is read-only 1 when staggered spin-up is not supported and
|
|
* SATA_CAP[SSS]=0. On an edge detect from 0 to 1, the Port starts a COMRESET initialization
|
|
* sequence to the device. Clearing this bit causes no action on the interface. Note: The SUD bit is
|
|
* read-only 0 on power-up until SATA_CAP[SSS] bit is written with the required value.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_SUD (1) //!< Bit position for SATA_P0CMD_SUD.
|
|
#define BM_SATA_P0CMD_SUD (0x00000002) //!< Bit mask for SATA_P0CMD_SUD.
|
|
|
|
//! @brief Get value of SATA_P0CMD_SUD from a register value.
|
|
#define BG_SATA_P0CMD_SUD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_SUD) >> BP_SATA_P0CMD_SUD)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_SUD.
|
|
#define BF_SATA_P0CMD_SUD(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_SUD) & BM_SATA_P0CMD_SUD)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SUD field to a new value.
|
|
#define BW_SATA_P0CMD_SUD(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_SUD) | BF_SATA_P0CMD_SUD(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field POD[2] (RW)
|
|
*
|
|
* Power On Device This bit is read/write when cold presence detection is supported on this Port as
|
|
* indicated by SATA_P 0 CMD[CPD]=1. This bit is read-only 1 when cold presence detection is not
|
|
* supported and SATA_P 0 CMD[CPD]=0. When set, the Port asserts the p 0 _cp_pod output pin so that
|
|
* it may be used to provide power to a cold-presence detectable Port.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_POD (2) //!< Bit position for SATA_P0CMD_POD.
|
|
#define BM_SATA_P0CMD_POD (0x00000004) //!< Bit mask for SATA_P0CMD_POD.
|
|
|
|
//! @brief Get value of SATA_P0CMD_POD from a register value.
|
|
#define BG_SATA_P0CMD_POD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_POD) >> BP_SATA_P0CMD_POD)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_POD.
|
|
#define BF_SATA_P0CMD_POD(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_POD) & BM_SATA_P0CMD_POD)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the POD field to a new value.
|
|
#define BW_SATA_P0CMD_POD(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_POD) | BF_SATA_P0CMD_POD(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field CLO[3] (RW)
|
|
*
|
|
* Command List Override Setting this bit to 1 causes the SATA_P 0 TFD[STS] field BSY bit and the
|
|
* SATA_P 0 TFD[STS] field DRQ bit to be cleared. This allows a software reset to be transmitted to
|
|
* the device regardless of whether the BSY and DRQ bits are still set in the SATA_P 0 TFD[STS]
|
|
* field. This bit is cleared to 0 when SATA_P 0 TFD[STS] BSY bit and SATA_P 0 TFD[STS] DRQ bit have
|
|
* been cleared. A write to this register with a value of '0' has no effect. This bit should only be
|
|
* set to 1 immediately prior to setting SATA_P 0 CMD[ST] bit to 1 from a previous value of 0.
|
|
* Setting this bit to 1 at any other time is not supported and results in indeterminate behavior.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_CLO (3) //!< Bit position for SATA_P0CMD_CLO.
|
|
#define BM_SATA_P0CMD_CLO (0x00000008) //!< Bit mask for SATA_P0CMD_CLO.
|
|
|
|
//! @brief Get value of SATA_P0CMD_CLO from a register value.
|
|
#define BG_SATA_P0CMD_CLO(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_CLO) >> BP_SATA_P0CMD_CLO)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_CLO.
|
|
#define BF_SATA_P0CMD_CLO(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_CLO) & BM_SATA_P0CMD_CLO)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CLO field to a new value.
|
|
#define BW_SATA_P0CMD_CLO(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_CLO) | BF_SATA_P0CMD_CLO(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field FRE[4] (RW)
|
|
*
|
|
* FIS Receive Enable When set to 1, the Port may post received FISes into the FIS receive area
|
|
* pointed to by SATA_P 0 FB . When cleared, received FISes are not accepted by the Port, except for
|
|
* the first D2H register FIS after the initialization sequence, and no FISes are posted to the FIS
|
|
* receive area. The software must not set this bit until SATA_P 0 FB has been programmed with a
|
|
* valid pointer to the FIS receive area When the software wishes to move the base, this bit must
|
|
* first be cleared, and the software must wait for the SATA_P 0 CMD[FR] bit to be cleared.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_FRE (4) //!< Bit position for SATA_P0CMD_FRE.
|
|
#define BM_SATA_P0CMD_FRE (0x00000010) //!< Bit mask for SATA_P0CMD_FRE.
|
|
|
|
//! @brief Get value of SATA_P0CMD_FRE from a register value.
|
|
#define BG_SATA_P0CMD_FRE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_FRE) >> BP_SATA_P0CMD_FRE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_FRE.
|
|
#define BF_SATA_P0CMD_FRE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_FRE) & BM_SATA_P0CMD_FRE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the FRE field to a new value.
|
|
#define BW_SATA_P0CMD_FRE(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_FRE) | BF_SATA_P0CMD_FRE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field CCS[12:8] (RW)
|
|
*
|
|
* Current Command Slot This field is set to the command slot value value of the command that is
|
|
* currently being issued by the Port. • When SATA_P 0 CMD[ST] transitions from 1 to 0, this field
|
|
* is recleared to 0x00. • After SATA_P 0 CMD[ST] transitions from 0 to 1, the highest priority slot
|
|
* to issue from next is command slot 0. After the first command has been issued, the highest
|
|
* priority slot to issue from next is SATA_P 0 CMD[CCS]+1.For example, after the Port has issued
|
|
* its first command, when CCS=0x00 and SATA_P 0 CI is cleared to 0x3, the next command issued is
|
|
* from command slot 1. This field is valid only when SATA_P 0 CMD[ST] is set to 1.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_CCS (8) //!< Bit position for SATA_P0CMD_CCS.
|
|
#define BM_SATA_P0CMD_CCS (0x00001f00) //!< Bit mask for SATA_P0CMD_CCS.
|
|
|
|
//! @brief Get value of SATA_P0CMD_CCS from a register value.
|
|
#define BG_SATA_P0CMD_CCS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_CCS) >> BP_SATA_P0CMD_CCS)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_CCS.
|
|
#define BF_SATA_P0CMD_CCS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_CCS) & BM_SATA_P0CMD_CCS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CCS field to a new value.
|
|
#define BW_SATA_P0CMD_CCS(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_CCS) | BF_SATA_P0CMD_CCS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field MPSS[13] (RW)
|
|
*
|
|
* Mechanical Presence Switch State The software must use this bit only when both SATA_CAP[SMPS] and
|
|
* SATA_P 0 CMD[MPSP] are set. This bit reports the state of a mechanical presence switch attached
|
|
* to this Port as indicated by the p 0 _mp_switch input state (assuming SATA_CAP[SMPS]=1 and SATA_P
|
|
* 0 CMD[MPSP]=1). The options for this field are: When SATA_CAP[SMPS]=0 then this bit is cleared to
|
|
* 0.
|
|
*
|
|
* Values:
|
|
* - 0 - Switch is closed
|
|
* - 1 - Switch is open
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_MPSS (13) //!< Bit position for SATA_P0CMD_MPSS.
|
|
#define BM_SATA_P0CMD_MPSS (0x00002000) //!< Bit mask for SATA_P0CMD_MPSS.
|
|
|
|
//! @brief Get value of SATA_P0CMD_MPSS from a register value.
|
|
#define BG_SATA_P0CMD_MPSS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_MPSS) >> BP_SATA_P0CMD_MPSS)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_MPSS.
|
|
#define BF_SATA_P0CMD_MPSS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_MPSS) & BM_SATA_P0CMD_MPSS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the MPSS field to a new value.
|
|
#define BW_SATA_P0CMD_MPSS(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_MPSS) | BF_SATA_P0CMD_MPSS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field FR[14] (RW)
|
|
*
|
|
* FIS Receive Running When set to '1', the FIS Receive DMA engine for the Port is running. See AHCI
|
|
* specification section 10.3.2 for details on when this bit is set and cleared by the Port.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_FR (14) //!< Bit position for SATA_P0CMD_FR.
|
|
#define BM_SATA_P0CMD_FR (0x00004000) //!< Bit mask for SATA_P0CMD_FR.
|
|
|
|
//! @brief Get value of SATA_P0CMD_FR from a register value.
|
|
#define BG_SATA_P0CMD_FR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_FR) >> BP_SATA_P0CMD_FR)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_FR.
|
|
#define BF_SATA_P0CMD_FR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_FR) & BM_SATA_P0CMD_FR)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the FR field to a new value.
|
|
#define BW_SATA_P0CMD_FR(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_FR) | BF_SATA_P0CMD_FR(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field CR[15] (RW)
|
|
*
|
|
* Command List Running When this bit is set to '1', the command list DMA engine for this Port is
|
|
* running. See AHCI state machine in AHCI specification section 5.3.2 for details on when this bit
|
|
* is set and cleared by the Port.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_CR (15) //!< Bit position for SATA_P0CMD_CR.
|
|
#define BM_SATA_P0CMD_CR (0x00008000) //!< Bit mask for SATA_P0CMD_CR.
|
|
|
|
//! @brief Get value of SATA_P0CMD_CR from a register value.
|
|
#define BG_SATA_P0CMD_CR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_CR) >> BP_SATA_P0CMD_CR)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_CR.
|
|
#define BF_SATA_P0CMD_CR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_CR) & BM_SATA_P0CMD_CR)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CR field to a new value.
|
|
#define BW_SATA_P0CMD_CR(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_CR) | BF_SATA_P0CMD_CR(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field CPS[16] (RW)
|
|
*
|
|
* Cold Presence State This bit reports whether a device is currently detected on this Port as
|
|
* indicated by the p 0 _cp_det input state (assuming SATA_P 0 CMD[CPD]=1). The options for this
|
|
* field are:
|
|
*
|
|
* Values:
|
|
* - 0 - no device attached to this Port
|
|
* - 1 - device is attached to this Port
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_CPS (16) //!< Bit position for SATA_P0CMD_CPS.
|
|
#define BM_SATA_P0CMD_CPS (0x00010000) //!< Bit mask for SATA_P0CMD_CPS.
|
|
|
|
//! @brief Get value of SATA_P0CMD_CPS from a register value.
|
|
#define BG_SATA_P0CMD_CPS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_CPS) >> BP_SATA_P0CMD_CPS)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_CPS.
|
|
#define BF_SATA_P0CMD_CPS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_CPS) & BM_SATA_P0CMD_CPS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CPS field to a new value.
|
|
#define BW_SATA_P0CMD_CPS(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_CPS) | BF_SATA_P0CMD_CPS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field PMA[17] (RW)
|
|
*
|
|
* Port Multiplier Attached The software is responsible for detecting whether a Port Multiplier is
|
|
* present; the SATA block Port does not auto-detect the presence of a Port Multiplier. The options
|
|
* for this field are:
|
|
*
|
|
* Values:
|
|
* - 0 - A Port Multiplier is not attached to this Port.
|
|
* - 1 - A Port Multiplier is attached to this Port.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_PMA (17) //!< Bit position for SATA_P0CMD_PMA.
|
|
#define BM_SATA_P0CMD_PMA (0x00020000) //!< Bit mask for SATA_P0CMD_PMA.
|
|
|
|
//! @brief Get value of SATA_P0CMD_PMA from a register value.
|
|
#define BG_SATA_P0CMD_PMA(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_PMA) >> BP_SATA_P0CMD_PMA)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_PMA.
|
|
#define BF_SATA_P0CMD_PMA(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_PMA) & BM_SATA_P0CMD_PMA)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the PMA field to a new value.
|
|
#define BW_SATA_P0CMD_PMA(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_PMA) | BF_SATA_P0CMD_PMA(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field HPCP[18] (RW)
|
|
*
|
|
* Hot Plug Capable Port The HPCP bit is mutually exclusive with SATA_P 0 CMD[ESP]. The options for
|
|
* this field are:
|
|
*
|
|
* Values:
|
|
* - 0 - Indicates that this Port's signal and power connectors are not externally accessible.
|
|
* - 1 - Indicates that this Port's signal and power connectors are externally accessible via a joint signal-
|
|
* power connector for blindmate device hot plug.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_HPCP (18) //!< Bit position for SATA_P0CMD_HPCP.
|
|
#define BM_SATA_P0CMD_HPCP (0x00040000) //!< Bit mask for SATA_P0CMD_HPCP.
|
|
|
|
//! @brief Get value of SATA_P0CMD_HPCP from a register value.
|
|
#define BG_SATA_P0CMD_HPCP(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_HPCP) >> BP_SATA_P0CMD_HPCP)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_HPCP.
|
|
#define BF_SATA_P0CMD_HPCP(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_HPCP) & BM_SATA_P0CMD_HPCP)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the HPCP field to a new value.
|
|
#define BW_SATA_P0CMD_HPCP(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_HPCP) | BF_SATA_P0CMD_HPCP(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field ESP[21] (RW)
|
|
*
|
|
* External SATA Port When set to 1, indicates that this Port's signal only connector is externally
|
|
* accessible. When set to 1, SATA_CAP[SXS] is also set to 1. When cleared to 0, indicates that this
|
|
* Port's signal only connector is not externally accessible. Note: The ESP bit is mutually
|
|
* exclusive with SATA_P 0 CMD[HPCP]
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_ESP (21) //!< Bit position for SATA_P0CMD_ESP.
|
|
#define BM_SATA_P0CMD_ESP (0x00200000) //!< Bit mask for SATA_P0CMD_ESP.
|
|
|
|
//! @brief Get value of SATA_P0CMD_ESP from a register value.
|
|
#define BG_SATA_P0CMD_ESP(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_ESP) >> BP_SATA_P0CMD_ESP)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_ESP.
|
|
#define BF_SATA_P0CMD_ESP(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_ESP) & BM_SATA_P0CMD_ESP)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the ESP field to a new value.
|
|
#define BW_SATA_P0CMD_ESP(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_ESP) | BF_SATA_P0CMD_ESP(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field APSTE[23] (RW)
|
|
*
|
|
* Device is ATAPI This bit is used by the Port to control whether to assert p 0 _act_led output
|
|
* when commands are active. The options for this field are:
|
|
*
|
|
* Values:
|
|
* - 0 - non-ATAPI device
|
|
* - 1 - ATAPI device
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_APSTE (23) //!< Bit position for SATA_P0CMD_APSTE.
|
|
#define BM_SATA_P0CMD_APSTE (0x00800000) //!< Bit mask for SATA_P0CMD_APSTE.
|
|
|
|
//! @brief Get value of SATA_P0CMD_APSTE from a register value.
|
|
#define BG_SATA_P0CMD_APSTE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_APSTE) >> BP_SATA_P0CMD_APSTE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_APSTE.
|
|
#define BF_SATA_P0CMD_APSTE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_APSTE) & BM_SATA_P0CMD_APSTE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the APSTE field to a new value.
|
|
#define BW_SATA_P0CMD_APSTE(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_APSTE) | BF_SATA_P0CMD_APSTE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field ATAPI[24] (RW)
|
|
*
|
|
* ATAPI Device is ATAPI This bit is used by the Port to control whether to assert p 0 _act_led
|
|
* output when commands are active. The options for this field are:
|
|
*
|
|
* Values:
|
|
* - 0 - non-ATAPI device
|
|
* - 1 - ATAPI device
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_ATAPI (24) //!< Bit position for SATA_P0CMD_ATAPI.
|
|
#define BM_SATA_P0CMD_ATAPI (0x01000000) //!< Bit mask for SATA_P0CMD_ATAPI.
|
|
|
|
//! @brief Get value of SATA_P0CMD_ATAPI from a register value.
|
|
#define BG_SATA_P0CMD_ATAPI(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_ATAPI) >> BP_SATA_P0CMD_ATAPI)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_ATAPI.
|
|
#define BF_SATA_P0CMD_ATAPI(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_ATAPI) & BM_SATA_P0CMD_ATAPI)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the ATAPI field to a new value.
|
|
#define BW_SATA_P0CMD_ATAPI(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_ATAPI) | BF_SATA_P0CMD_ATAPI(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field DLAE[25] (RW)
|
|
*
|
|
* Drive LED on ATAPI Enable When set to 1, SATA_P 0 CMD[ATAPI]=1, and commands are active, the Port
|
|
* asserts p 0 _act_led output.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_DLAE (25) //!< Bit position for SATA_P0CMD_DLAE.
|
|
#define BM_SATA_P0CMD_DLAE (0x02000000) //!< Bit mask for SATA_P0CMD_DLAE.
|
|
|
|
//! @brief Get value of SATA_P0CMD_DLAE from a register value.
|
|
#define BG_SATA_P0CMD_DLAE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_DLAE) >> BP_SATA_P0CMD_DLAE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_DLAE.
|
|
#define BF_SATA_P0CMD_DLAE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_DLAE) & BM_SATA_P0CMD_DLAE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DLAE field to a new value.
|
|
#define BW_SATA_P0CMD_DLAE(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_DLAE) | BF_SATA_P0CMD_DLAE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field ALPE[26] (RW)
|
|
*
|
|
* Aggressive Link Power Management Enable When set to 1, the Port aggressively enters a lower link
|
|
* power state (PARTIAL or SLUMBER) based on the setting of the SATA_P 0 CMD[ASP] bit. When cleared
|
|
* to 0, aggressive power management state transition is disabled.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_ALPE (26) //!< Bit position for SATA_P0CMD_ALPE.
|
|
#define BM_SATA_P0CMD_ALPE (0x04000000) //!< Bit mask for SATA_P0CMD_ALPE.
|
|
|
|
//! @brief Get value of SATA_P0CMD_ALPE from a register value.
|
|
#define BG_SATA_P0CMD_ALPE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_ALPE) >> BP_SATA_P0CMD_ALPE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_ALPE.
|
|
#define BF_SATA_P0CMD_ALPE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_ALPE) & BM_SATA_P0CMD_ALPE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the ALPE field to a new value.
|
|
#define BW_SATA_P0CMD_ALPE(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_ALPE) | BF_SATA_P0CMD_ALPE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field ASP[27] (RW)
|
|
*
|
|
* Aggressive Slumber/ Partial The options for this field are: • When set to 1, and SATA_P 0
|
|
* CMD[ALPE]=1, the Port aggressively enters the SLUMBER state when one of the following conditions
|
|
* is true: - The Port clears the SATA_P 0 CI and the SATA_P 0 SACT register is cleared. - The Port
|
|
* clears the SATA_P 0 SACT register and SATA_P 0 CI is cleared. • When cleared to 0, and SATA_P 0
|
|
* CMD[ALPE]=1, the Port aggressively enters the PARTIAL state when one of the following conditions
|
|
* is true: - The Port clears the SATA_P 0 CI register and the SATA_P 0 SACT register is cleared. -
|
|
* The Port clears the SATA_P 0 SACT register and SATA_P 0 CI is cleared.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_ASP (27) //!< Bit position for SATA_P0CMD_ASP.
|
|
#define BM_SATA_P0CMD_ASP (0x08000000) //!< Bit mask for SATA_P0CMD_ASP.
|
|
|
|
//! @brief Get value of SATA_P0CMD_ASP from a register value.
|
|
#define BG_SATA_P0CMD_ASP(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_ASP) >> BP_SATA_P0CMD_ASP)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_ASP.
|
|
#define BF_SATA_P0CMD_ASP(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_ASP) & BM_SATA_P0CMD_ASP)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the ASP field to a new value.
|
|
#define BW_SATA_P0CMD_ASP(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_ASP) | BF_SATA_P0CMD_ASP(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0CMD, field ICC[31:28] (RW)
|
|
*
|
|
* Interface Communication Control This field is used to control power management states of the
|
|
* interface. When the Link layer is currently in the L_IDLE state, writes to this field cause the
|
|
* Port to initiate a transition to the interface power management state requested. When the Link
|
|
* layer is not currently in the L_IDLE state, writes to this field have no effect. • 0xF-0x7:
|
|
* Reserved • 0x6: Slumber. This causes the Port to request a transition of the interface to the
|
|
* Slumber state. The SATA device can reject the request and the interface remains in its current
|
|
* state. • 0x5-0x3: Reserved • 0x2: Partial. This causes the Port to request a transition of the
|
|
* interface to the Partial state. The SATA device can reject the request and the interface remains
|
|
* in its current state. • 0x1: Active. This causes the Port to request a transition of the
|
|
* interface into the active state. • 0x0: No-Op/ Idle. This value indicates to the software that
|
|
* the Port 0 is ready to accept a new interface control command, although the transition to the
|
|
* previously selected state may not yet have occurred. When the software writes a non-reserved
|
|
* value other than No-Op (0x0), the Port performs the action and update this field back to Idle
|
|
* (0x0). When the software writes to this field to change the state to a state the link is already
|
|
* in (i.e., interface is in the active state and a request is made to go to the active state), the
|
|
* Port takes no action and returns this field to Idle. When the interface is in a low power state
|
|
* and the software wants to transition to a different low power state, the software must first
|
|
* bring the link to active and then initiate the transition to the desired low power state.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CMD_ICC (28) //!< Bit position for SATA_P0CMD_ICC.
|
|
#define BM_SATA_P0CMD_ICC (0xf0000000) //!< Bit mask for SATA_P0CMD_ICC.
|
|
|
|
//! @brief Get value of SATA_P0CMD_ICC from a register value.
|
|
#define BG_SATA_P0CMD_ICC(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CMD_ICC) >> BP_SATA_P0CMD_ICC)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CMD_ICC.
|
|
#define BF_SATA_P0CMD_ICC(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CMD_ICC) & BM_SATA_P0CMD_ICC)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the ICC field to a new value.
|
|
#define BW_SATA_P0CMD_ICC(v) (HW_SATA_P0CMD_WR((HW_SATA_P0CMD_RD() & ~BM_SATA_P0CMD_ICC) | BF_SATA_P0CMD_ICC(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_P0TFD - Port0 Task File Data Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_P0TFD - Port0 Task File Data Register (RO)
|
|
*
|
|
* Reset value: 0x0000007f
|
|
*
|
|
* This register contains Error and Status registers updated every time a new Register FIS, PIO
|
|
* Setup FIS, or Set Device Bits FIS is received from the device. Reset on Global or Port reset
|
|
* (COMRESET).
|
|
*/
|
|
typedef union _hw_sata_p0tfd
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_p0tfd_bitfields
|
|
{
|
|
unsigned STS : 8; //!< [7:0] Status
|
|
unsigned ERR : 8; //!< [15:8] Error
|
|
unsigned RESERVED0 : 16; //!< [31:16] Reserved
|
|
} B;
|
|
} hw_sata_p0tfd_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_P0TFD register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_P0TFD_ADDR (REGS_SATA_BASE + 0x120)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_P0TFD (*(volatile hw_sata_p0tfd_t *) HW_SATA_P0TFD_ADDR)
|
|
#define HW_SATA_P0TFD_RD() (HW_SATA_P0TFD.U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_P0TFD bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_P0TFD, field STS[7:0] (RO)
|
|
*
|
|
* Status This field contains the latest copy of the task file status register. The bits that affect
|
|
* SATA block operation are: • Bit [7] BSY - Indicates the interface is busy • Bits [6:4] cs -
|
|
* Command specific • Bit [3] DRQ - Indicates a data transfer is requested • Bits [2:1] cs - Command
|
|
* specific • Bit [0] ERR - Indicates an error during the transfer The Port updates the entire 8-bit
|
|
* field, not just the bits noted above.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0TFD_STS (0) //!< Bit position for SATA_P0TFD_STS.
|
|
#define BM_SATA_P0TFD_STS (0x000000ff) //!< Bit mask for SATA_P0TFD_STS.
|
|
|
|
//! @brief Get value of SATA_P0TFD_STS from a register value.
|
|
#define BG_SATA_P0TFD_STS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0TFD_STS) >> BP_SATA_P0TFD_STS)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0TFD, field ERR[15:8] (RO)
|
|
*
|
|
* Error This field contains the latest copy of the task file error register.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0TFD_ERR (8) //!< Bit position for SATA_P0TFD_ERR.
|
|
#define BM_SATA_P0TFD_ERR (0x0000ff00) //!< Bit mask for SATA_P0TFD_ERR.
|
|
|
|
//! @brief Get value of SATA_P0TFD_ERR from a register value.
|
|
#define BG_SATA_P0TFD_ERR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0TFD_ERR) >> BP_SATA_P0TFD_ERR)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_P0SIG - Port0 Signature Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_P0SIG - Port0 Signature Register (RO)
|
|
*
|
|
* Reset value: 0xffffffff
|
|
*/
|
|
typedef union _hw_sata_p0sig
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_p0sig_bitfields
|
|
{
|
|
unsigned SIG : 32; //!< [31:0] Signature
|
|
} B;
|
|
} hw_sata_p0sig_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_P0SIG register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_P0SIG_ADDR (REGS_SATA_BASE + 0x124)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_P0SIG (*(volatile hw_sata_p0sig_t *) HW_SATA_P0SIG_ADDR)
|
|
#define HW_SATA_P0SIG_RD() (HW_SATA_P0SIG.U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_P0SIG bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_P0SIG, field SIG[31:0] (RO)
|
|
*
|
|
* Signature This field contains the signature received from a device on the first D2H Register FIS.
|
|
* The bit order as follows: • Bits [31:24] - LBA High (Cylinder High) Register • Bits [23:16] - LBA
|
|
* Mid (Cylinder Low) Register • Bits [15:8] - LBA Low (Sector Number) Register • Bits [7:0] -
|
|
* Sector Count Register This field is updated once after a reset sequence. Reset on Global or Port
|
|
* reset.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SIG_SIG (0) //!< Bit position for SATA_P0SIG_SIG.
|
|
#define BM_SATA_P0SIG_SIG (0xffffffff) //!< Bit mask for SATA_P0SIG_SIG.
|
|
|
|
//! @brief Get value of SATA_P0SIG_SIG from a register value.
|
|
#define BG_SATA_P0SIG_SIG(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SIG_SIG) >> BP_SATA_P0SIG_SIG)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_P0SSTS - Port0 Serial ATA Status Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_P0SSTS - Port0 Serial ATA Status Register (RO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This 32-bit register conveys the current state of the interface and host. The Port updates it
|
|
* continuously and asynchronously. When the Port transmits a COMRESET to the device, this register
|
|
* is updated to its reset values (i.e., Global reset, Port reset, or COMINIT from the device
|
|
*/
|
|
typedef union _hw_sata_p0ssts
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_p0ssts_bitfields
|
|
{
|
|
unsigned DET : 4; //!< [3:0] Indicates the interface device detection and PHY state.
|
|
unsigned SPD : 4; //!< [7:4] Current Interface Speed
|
|
unsigned IPM : 4; //!< [11:8] Interface Power Management
|
|
unsigned RESERVED0 : 20; //!< [31:12] Reserved
|
|
} B;
|
|
} hw_sata_p0ssts_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_P0SSTS register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_P0SSTS_ADDR (REGS_SATA_BASE + 0x128)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_P0SSTS (*(volatile hw_sata_p0ssts_t *) HW_SATA_P0SSTS_ADDR)
|
|
#define HW_SATA_P0SSTS_RD() (HW_SATA_P0SSTS.U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_P0SSTS bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_P0SSTS, field DET[3:0] (RU)
|
|
*
|
|
* Indicates the interface device detection and PHY state. The options for this field are: 0x0: No
|
|
* device detected and PHY communication not established 0x1: Device presence detected but PHY
|
|
* communication not established (COMINIT is detected) 0x3: Device presence detected and PHY
|
|
* communication established (“PHY Ready” is detected) 0x4: PHY in offline mode as a result of the
|
|
* interface being disabled or running in a BIST loopback mode. All other values reserved.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SSTS_DET (0) //!< Bit position for SATA_P0SSTS_DET.
|
|
#define BM_SATA_P0SSTS_DET (0x0000000f) //!< Bit mask for SATA_P0SSTS_DET.
|
|
|
|
//! @brief Get value of SATA_P0SSTS_DET from a register value.
|
|
#define BG_SATA_P0SSTS_DET(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SSTS_DET) >> BP_SATA_P0SSTS_DET)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SSTS, field SPD[7:4] (RO)
|
|
*
|
|
* Current Interface Speed Indicates the negotiated interface communication speed. The options for
|
|
* this field are:
|
|
*
|
|
* Values:
|
|
* - 0x0 - Device not present or communication not established
|
|
* - 0x1 - 1.5 Gb/s communication rate negotiated
|
|
* - 0x2 - 3.0 Gb/s communication rate negotiated
|
|
* - All other values - Reserved and should not be used
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SSTS_SPD (4) //!< Bit position for SATA_P0SSTS_SPD.
|
|
#define BM_SATA_P0SSTS_SPD (0x000000f0) //!< Bit mask for SATA_P0SSTS_SPD.
|
|
|
|
//! @brief Get value of SATA_P0SSTS_SPD from a register value.
|
|
#define BG_SATA_P0SSTS_SPD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SSTS_SPD) >> BP_SATA_P0SSTS_SPD)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SSTS, field IPM[11:8] (RO)
|
|
*
|
|
* Interface Power Management Indicates the current interface state. The options for this field are:
|
|
*
|
|
* Values:
|
|
* - 0x0 - Device not present or communication not established
|
|
* - 0x1 - Interface in active state
|
|
* - 0x2 - Interface in Partial power management state
|
|
* - 0x6 - Interface in Slumber power management state
|
|
* - All other values - Reserved
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SSTS_IPM (8) //!< Bit position for SATA_P0SSTS_IPM.
|
|
#define BM_SATA_P0SSTS_IPM (0x00000f00) //!< Bit mask for SATA_P0SSTS_IPM.
|
|
|
|
//! @brief Get value of SATA_P0SSTS_IPM from a register value.
|
|
#define BG_SATA_P0SSTS_IPM(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SSTS_IPM) >> BP_SATA_P0SSTS_IPM)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_P0SCTL - Port0 Serial ATA Control {SControl} Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_P0SCTL - Port0 Serial ATA Control {SControl} Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This 32-bit read-write register is used by the software to control SATA interface capabilities.
|
|
* Writes to this register result in an action being taken by the Port PHY interface. Reads from the
|
|
* register return the last value written to it. Reset on Global reset. These bits are static and
|
|
* should not be changed frequently due to the clock crossing between the Transport and Link Layers.
|
|
* The software must wait for at least seven periods of the slower clock (clk_asic 0 or hclk) before
|
|
* changing this register
|
|
*/
|
|
typedef union _hw_sata_p0sctl
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_p0sctl_bitfields
|
|
{
|
|
unsigned DET : 4; //!< [3:0] Device Detection Initialization
|
|
unsigned SPD : 4; //!< [7:4] Speed Allowed
|
|
unsigned IPM : 4; //!< [11:8] Interface Power Management Transitions Allowed
|
|
unsigned RESERVED0 : 20; //!< [31:12] Reserved
|
|
} B;
|
|
} hw_sata_p0sctl_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_P0SCTL register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_P0SCTL_ADDR (REGS_SATA_BASE + 0x12c)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_P0SCTL (*(volatile hw_sata_p0sctl_t *) HW_SATA_P0SCTL_ADDR)
|
|
#define HW_SATA_P0SCTL_RD() (HW_SATA_P0SCTL.U)
|
|
#define HW_SATA_P0SCTL_WR(v) (HW_SATA_P0SCTL.U = (v))
|
|
#define HW_SATA_P0SCTL_SET(v) (HW_SATA_P0SCTL_WR(HW_SATA_P0SCTL_RD() | (v)))
|
|
#define HW_SATA_P0SCTL_CLR(v) (HW_SATA_P0SCTL_WR(HW_SATA_P0SCTL_RD() & ~(v)))
|
|
#define HW_SATA_P0SCTL_TOG(v) (HW_SATA_P0SCTL_WR(HW_SATA_P0SCTL_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_P0SCTL bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_P0SCTL, field DET[3:0] (RW)
|
|
*
|
|
* Device Detection Initialization Controls the Port's device detection and interface
|
|
* initialization. The options for this field are: This field may only be modified when SATA_P 0
|
|
* CMD[ST] is 0. Changing this field while the SATA_P 0 CMD[ST]=1 results in undefined behavior.
|
|
* When SATA_P 0 CMD[ST] is set to 1, this field should have a value of 0x0.
|
|
*
|
|
* Values:
|
|
* - 0x0 - No device detection or initialization action requested
|
|
* - 0x1 - Perform interface initialization sequence to establish communication. This results in the interface
|
|
* being reset and communication re initialized.
|
|
* - 0x4 - Disable the Serial ATA interface and put the Port PHY in offline mode. All other values reserved.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SCTL_DET (0) //!< Bit position for SATA_P0SCTL_DET.
|
|
#define BM_SATA_P0SCTL_DET (0x0000000f) //!< Bit mask for SATA_P0SCTL_DET.
|
|
|
|
//! @brief Get value of SATA_P0SCTL_DET from a register value.
|
|
#define BG_SATA_P0SCTL_DET(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SCTL_DET) >> BP_SATA_P0SCTL_DET)
|
|
|
|
//! @brief Format value for bitfield SATA_P0SCTL_DET.
|
|
#define BF_SATA_P0SCTL_DET(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0SCTL_DET) & BM_SATA_P0SCTL_DET)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DET field to a new value.
|
|
#define BW_SATA_P0SCTL_DET(v) (HW_SATA_P0SCTL_WR((HW_SATA_P0SCTL_RD() & ~BM_SATA_P0SCTL_DET) | BF_SATA_P0SCTL_DET(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SCTL, field SPD[7:4] (RW)
|
|
*
|
|
* Speed Allowed This field indicates the highest allowable speed of the Port PHY interface. The
|
|
* options for this field are: When the host software must change this field value, the host must
|
|
* also reset the Port (SATA_P 0 SCTL[DET] = 0x1) at the same time to ensure proper speed
|
|
* negotiation.
|
|
*
|
|
* Values:
|
|
* - 0x0 - No speed negotiation restrictions
|
|
* - 0x1 - Limit speed negotiation to SATA 1.5 Gb/s communication rate
|
|
* - 0x2 - Limit speed negotiation to SATA 3.0 Gb/s communication rate
|
|
* - All other values - Reserved and should not be used.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SCTL_SPD (4) //!< Bit position for SATA_P0SCTL_SPD.
|
|
#define BM_SATA_P0SCTL_SPD (0x000000f0) //!< Bit mask for SATA_P0SCTL_SPD.
|
|
|
|
//! @brief Get value of SATA_P0SCTL_SPD from a register value.
|
|
#define BG_SATA_P0SCTL_SPD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SCTL_SPD) >> BP_SATA_P0SCTL_SPD)
|
|
|
|
//! @brief Format value for bitfield SATA_P0SCTL_SPD.
|
|
#define BF_SATA_P0SCTL_SPD(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0SCTL_SPD) & BM_SATA_P0SCTL_SPD)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SPD field to a new value.
|
|
#define BW_SATA_P0SCTL_SPD(v) (HW_SATA_P0SCTL_WR((HW_SATA_P0SCTL_RD() & ~BM_SATA_P0SCTL_SPD) | BF_SATA_P0SCTL_SPD(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SCTL, field IPM[11:8] (RW)
|
|
*
|
|
* Interface Power Management Transitions Allowed This field indicates which power states the Port
|
|
* PHY interface is allowed to transition to. When an interface power management state is disabled,
|
|
* the Port does not initiate that state and any request from the device to enter that state is
|
|
* rejected via PMNAKp The options for this field are:
|
|
*
|
|
* Values:
|
|
* - 0x0 - No interface power management state restrictions
|
|
* - 0x1 - Transitions to the Partial state disabled
|
|
* - 0x2 - Transitions to the Slumber state disabled
|
|
* - 0x3 - Transitions to both Partial and Slumber states disabled
|
|
* - All other values. - Reserved and should not be used
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SCTL_IPM (8) //!< Bit position for SATA_P0SCTL_IPM.
|
|
#define BM_SATA_P0SCTL_IPM (0x00000f00) //!< Bit mask for SATA_P0SCTL_IPM.
|
|
|
|
//! @brief Get value of SATA_P0SCTL_IPM from a register value.
|
|
#define BG_SATA_P0SCTL_IPM(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SCTL_IPM) >> BP_SATA_P0SCTL_IPM)
|
|
|
|
//! @brief Format value for bitfield SATA_P0SCTL_IPM.
|
|
#define BF_SATA_P0SCTL_IPM(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0SCTL_IPM) & BM_SATA_P0SCTL_IPM)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the IPM field to a new value.
|
|
#define BW_SATA_P0SCTL_IPM(v) (HW_SATA_P0SCTL_WR((HW_SATA_P0SCTL_RD() & ~BM_SATA_P0SCTL_IPM) | BF_SATA_P0SCTL_IPM(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_P0SERR - Port0 Serial ATA Error Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_P0SERR - Port0 Serial ATA Error Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This 32-bit register represents all the detected interface errors accumulated since the last time
|
|
* it was cleared. The set bits in the SError register indicate that the corresponding error
|
|
* condition became true one or more times since the last time the bit was cleared. The set bits in
|
|
* this register are explicitly cleared by a write operation to the register, Global reset, or Port
|
|
* reset (COMRESET). The value written to clear the set error bits should have ones encoded in the
|
|
* bit positions corresponding to the bits that are to be cleared. All bits in the following table
|
|
* have a reset value of 0.
|
|
*/
|
|
typedef union _hw_sata_p0serr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_p0serr_bitfields
|
|
{
|
|
unsigned ERR_I : 1; //!< [0] This bit is set when any of the following SATA_P 0 SERR register bits is set during non- Data FIS transfer:
|
|
unsigned ERR_M : 1; //!< [1] Recovered Communication Error
|
|
unsigned RESERVED0 : 6; //!< [7:2] Reserved
|
|
unsigned ERR_T : 1; //!< [8] Non-Recovered Transient Data Integrity Error
|
|
unsigned ERR_C : 1; //!< [9] Non-Recovered Persistent Communication Error
|
|
unsigned ERR_P : 1; //!< [10] Protocol Error
|
|
unsigned ERR_E : 1; //!< [11] Internal Error
|
|
unsigned RESERVED1 : 4; //!< [15:12] Reserved
|
|
unsigned DIAG_N : 1; //!< [16] PHY Ready Change
|
|
unsigned DIAG_I : 1; //!< [17] PHY Internal Error
|
|
unsigned DIAG_W : 1; //!< [18] Comm Wake
|
|
unsigned DIAG_B : 1; //!< [19] 10B to 8B Decode Error
|
|
unsigned DIAG_D : 1; //!< [20] Disparity Error
|
|
unsigned DIAG_C : 1; //!< [21] CRC Error
|
|
unsigned DIAG_H : 1; //!< [22] Handshake Error
|
|
unsigned DIAG_S : 1; //!< [23] Link Sequence Error
|
|
unsigned DIAG_T : 1; //!< [24] Transport State Transition Error
|
|
unsigned DIAG_F : 1; //!< [25] Unknown FIS Type
|
|
unsigned DIAG_X : 1; //!< [26] Exchanged
|
|
unsigned RESERVED2 : 5; //!< [31:27] Reserved
|
|
} B;
|
|
} hw_sata_p0serr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_P0SERR register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_P0SERR_ADDR (REGS_SATA_BASE + 0x130)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_P0SERR (*(volatile hw_sata_p0serr_t *) HW_SATA_P0SERR_ADDR)
|
|
#define HW_SATA_P0SERR_RD() (HW_SATA_P0SERR.U)
|
|
#define HW_SATA_P0SERR_WR(v) (HW_SATA_P0SERR.U = (v))
|
|
#define HW_SATA_P0SERR_SET(v) (HW_SATA_P0SERR_WR(HW_SATA_P0SERR_RD() | (v)))
|
|
#define HW_SATA_P0SERR_CLR(v) (HW_SATA_P0SERR_WR(HW_SATA_P0SERR_RD() & ~(v)))
|
|
#define HW_SATA_P0SERR_TOG(v) (HW_SATA_P0SERR_WR(HW_SATA_P0SERR_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_P0SERR bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_P0SERR, field ERR_I[0] (RO)
|
|
*
|
|
* This bit is set when any of the following SATA_P 0 SERR register bits is set during non- Data FIS
|
|
* transfer: • DIAG_C (CRC) • DIAG_H (Handshake) • ERR_C ("PHY Ready" negation)
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_ERR_I (0) //!< Bit position for SATA_P0SERR_ERR_I.
|
|
#define BM_SATA_P0SERR_ERR_I (0x00000001) //!< Bit mask for SATA_P0SERR_ERR_I.
|
|
|
|
//! @brief Get value of SATA_P0SERR_ERR_I from a register value.
|
|
#define BG_SATA_P0SERR_ERR_I(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_ERR_I) >> BP_SATA_P0SERR_ERR_I)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SERR, field ERR_M[1] (RO)
|
|
*
|
|
* Recovered Communication Error This bit is set to 1 when PHY Ready condition is detected after
|
|
* interface initialization, but not after transition from Partial or Slumber power management state
|
|
* to active state.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_ERR_M (1) //!< Bit position for SATA_P0SERR_ERR_M.
|
|
#define BM_SATA_P0SERR_ERR_M (0x00000002) //!< Bit mask for SATA_P0SERR_ERR_M.
|
|
|
|
//! @brief Get value of SATA_P0SERR_ERR_M from a register value.
|
|
#define BG_SATA_P0SERR_ERR_M(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_ERR_M) >> BP_SATA_P0SERR_ERR_M)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SERR, field ERR_T[8] (RO)
|
|
*
|
|
* Non-Recovered Transient Data Integrity Error This bit is set when any of the following SATA_P 0
|
|
* SERR register bits is set during Data FIS transfer: ERR_P (Protocol) • DIAG_C (CRC) • DIAG_H
|
|
* (Handshake) • ERR_C ("PHY Ready" negation)
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_ERR_T (8) //!< Bit position for SATA_P0SERR_ERR_T.
|
|
#define BM_SATA_P0SERR_ERR_T (0x00000100) //!< Bit mask for SATA_P0SERR_ERR_T.
|
|
|
|
//! @brief Get value of SATA_P0SERR_ERR_T from a register value.
|
|
#define BG_SATA_P0SERR_ERR_T(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_ERR_T) >> BP_SATA_P0SERR_ERR_T)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SERR, field ERR_C[9] (RO)
|
|
*
|
|
* Non-Recovered Persistent Communication Error This bit is set to 1 when PHY Ready signal is
|
|
* negated due to the loss of communication with the device or problems with interface, but not
|
|
* after transition from active to Partial or Slumber power management state.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_ERR_C (9) //!< Bit position for SATA_P0SERR_ERR_C.
|
|
#define BM_SATA_P0SERR_ERR_C (0x00000200) //!< Bit mask for SATA_P0SERR_ERR_C.
|
|
|
|
//! @brief Get value of SATA_P0SERR_ERR_C from a register value.
|
|
#define BG_SATA_P0SERR_ERR_C(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_ERR_C) >> BP_SATA_P0SERR_ERR_C)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SERR, field ERR_P[10] (RO)
|
|
*
|
|
* Protocol Error This bit is set to 1 when any of the following conditions are detected. •
|
|
* Transport state transition error (DIAG_T) • Link sequence error (DIAG_S) • RxFIFO overflow • Link
|
|
* bad end error (WTRM instead of EOF is received).
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_ERR_P (10) //!< Bit position for SATA_P0SERR_ERR_P.
|
|
#define BM_SATA_P0SERR_ERR_P (0x00000400) //!< Bit mask for SATA_P0SERR_ERR_P.
|
|
|
|
//! @brief Get value of SATA_P0SERR_ERR_P from a register value.
|
|
#define BG_SATA_P0SERR_ERR_P(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_ERR_P) >> BP_SATA_P0SERR_ERR_P)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SERR, field ERR_E[11] (RO)
|
|
*
|
|
* Internal Error This bit is set to 1 when one or more AHB bus ERROR responses are detected on the
|
|
* master interface.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_ERR_E (11) //!< Bit position for SATA_P0SERR_ERR_E.
|
|
#define BM_SATA_P0SERR_ERR_E (0x00000800) //!< Bit mask for SATA_P0SERR_ERR_E.
|
|
|
|
//! @brief Get value of SATA_P0SERR_ERR_E from a register value.
|
|
#define BG_SATA_P0SERR_ERR_E(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_ERR_E) >> BP_SATA_P0SERR_ERR_E)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SERR, field DIAG_N[16] (RO)
|
|
*
|
|
* PHY Ready Change This bit indicates that the PHY Ready signal changed state. This bit is
|
|
* reflected in the SATA_P 0 IS[PRCS] bit.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_DIAG_N (16) //!< Bit position for SATA_P0SERR_DIAG_N.
|
|
#define BM_SATA_P0SERR_DIAG_N (0x00010000) //!< Bit mask for SATA_P0SERR_DIAG_N.
|
|
|
|
//! @brief Get value of SATA_P0SERR_DIAG_N from a register value.
|
|
#define BG_SATA_P0SERR_DIAG_N(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_DIAG_N) >> BP_SATA_P0SERR_DIAG_N)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SERR, field DIAG_I[17] (RO)
|
|
*
|
|
* PHY Internal Error This bit is set when the PHY detects some internal error as indicated by the
|
|
* assertion of the p 0 _phy_rx_err input. The setting of this bit is controlled by the
|
|
* SATA_BISTCR[ERREN] bit: when ERREN==0 (default), only errors occurring inside the received FIS
|
|
* cause DIAG_I bit to be set; when ERREN==1, any error inside or outside the FIS causes the DIAG_I
|
|
* bit to be set.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_DIAG_I (17) //!< Bit position for SATA_P0SERR_DIAG_I.
|
|
#define BM_SATA_P0SERR_DIAG_I (0x00020000) //!< Bit mask for SATA_P0SERR_DIAG_I.
|
|
|
|
//! @brief Get value of SATA_P0SERR_DIAG_I from a register value.
|
|
#define BG_SATA_P0SERR_DIAG_I(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_DIAG_I) >> BP_SATA_P0SERR_DIAG_I)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SERR, field DIAG_W[18] (RO)
|
|
*
|
|
* Comm Wake This bit is set when PHY COMWAKE signal is detected.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_DIAG_W (18) //!< Bit position for SATA_P0SERR_DIAG_W.
|
|
#define BM_SATA_P0SERR_DIAG_W (0x00040000) //!< Bit mask for SATA_P0SERR_DIAG_W.
|
|
|
|
//! @brief Get value of SATA_P0SERR_DIAG_W from a register value.
|
|
#define BG_SATA_P0SERR_DIAG_W(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_DIAG_W) >> BP_SATA_P0SERR_DIAG_W)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SERR, field DIAG_B[19] (RO)
|
|
*
|
|
* 10B to 8B Decode Error This bit indicates errors were detected by 10b8b decoder. This bit
|
|
* indicates that one or more CRC errors were detected by the Link layer during FIS reception. This
|
|
* bit is set only when an error is detected on the received FIS data dword. This bit is not set
|
|
* when an error is detected on the primitive, regardless whether it is inside or outside the FIS.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_DIAG_B (19) //!< Bit position for SATA_P0SERR_DIAG_B.
|
|
#define BM_SATA_P0SERR_DIAG_B (0x00080000) //!< Bit mask for SATA_P0SERR_DIAG_B.
|
|
|
|
//! @brief Get value of SATA_P0SERR_DIAG_B from a register value.
|
|
#define BG_SATA_P0SERR_DIAG_B(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_DIAG_B) >> BP_SATA_P0SERR_DIAG_B)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SERR, field DIAG_D[20] (RO)
|
|
*
|
|
* Disparity Error This bit is always cleared to 0 since it is not used by the AHCI specification.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_DIAG_D (20) //!< Bit position for SATA_P0SERR_DIAG_D.
|
|
#define BM_SATA_P0SERR_DIAG_D (0x00100000) //!< Bit mask for SATA_P0SERR_DIAG_D.
|
|
|
|
//! @brief Get value of SATA_P0SERR_DIAG_D from a register value.
|
|
#define BG_SATA_P0SERR_DIAG_D(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_DIAG_D) >> BP_SATA_P0SERR_DIAG_D)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SERR, field DIAG_C[21] (RO)
|
|
*
|
|
* CRC Error
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_DIAG_C (21) //!< Bit position for SATA_P0SERR_DIAG_C.
|
|
#define BM_SATA_P0SERR_DIAG_C (0x00200000) //!< Bit mask for SATA_P0SERR_DIAG_C.
|
|
|
|
//! @brief Get value of SATA_P0SERR_DIAG_C from a register value.
|
|
#define BG_SATA_P0SERR_DIAG_C(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_DIAG_C) >> BP_SATA_P0SERR_DIAG_C)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SERR, field DIAG_H[22] (RO)
|
|
*
|
|
* Handshake Error This bit indicates that one or more R_ERRp was received in response to frame
|
|
* transmission. Such errors may be the result of a CRC error detected by the device, a disparity or
|
|
* 8b/10b decoding error, or other error condition leading to a negative handshake on a transmitted
|
|
* frame.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_DIAG_H (22) //!< Bit position for SATA_P0SERR_DIAG_H.
|
|
#define BM_SATA_P0SERR_DIAG_H (0x00400000) //!< Bit mask for SATA_P0SERR_DIAG_H.
|
|
|
|
//! @brief Get value of SATA_P0SERR_DIAG_H from a register value.
|
|
#define BG_SATA_P0SERR_DIAG_H(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_DIAG_H) >> BP_SATA_P0SERR_DIAG_H)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SERR, field DIAG_S[23] (RO)
|
|
*
|
|
* Link Sequence Error This bit indicates that one or more Link state machine error conditions was
|
|
* encountered. One of the conditions that cause this bit to be set is device doing SYNC escape
|
|
* during FIS transmission.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_DIAG_S (23) //!< Bit position for SATA_P0SERR_DIAG_S.
|
|
#define BM_SATA_P0SERR_DIAG_S (0x00800000) //!< Bit mask for SATA_P0SERR_DIAG_S.
|
|
|
|
//! @brief Get value of SATA_P0SERR_DIAG_S from a register value.
|
|
#define BG_SATA_P0SERR_DIAG_S(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_DIAG_S) >> BP_SATA_P0SERR_DIAG_S)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SERR, field DIAG_T[24] (RO)
|
|
*
|
|
* Transport State Transition Error This bit indicates that a Transport Layer protocol violation was
|
|
* detected since the last time this bit was cleared. See for details.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_DIAG_T (24) //!< Bit position for SATA_P0SERR_DIAG_T.
|
|
#define BM_SATA_P0SERR_DIAG_T (0x01000000) //!< Bit mask for SATA_P0SERR_DIAG_T.
|
|
|
|
//! @brief Get value of SATA_P0SERR_DIAG_T from a register value.
|
|
#define BG_SATA_P0SERR_DIAG_T(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_DIAG_T) >> BP_SATA_P0SERR_DIAG_T)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SERR, field DIAG_F[25] (RO)
|
|
*
|
|
* Unknown FIS Type This bit indicates that one or more FISes were received by the Transport layer
|
|
* with good CRC, but had a type field that was not recognized/known and the length was less than or
|
|
* equal to 64bytes. When the Unknown FIS length exceeds 64 bytes, the DIAG_F bit is not set and the
|
|
* DIAG_T bit is set instead.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_DIAG_F (25) //!< Bit position for SATA_P0SERR_DIAG_F.
|
|
#define BM_SATA_P0SERR_DIAG_F (0x02000000) //!< Bit mask for SATA_P0SERR_DIAG_F.
|
|
|
|
//! @brief Get value of SATA_P0SERR_DIAG_F from a register value.
|
|
#define BG_SATA_P0SERR_DIAG_F(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_DIAG_F) >> BP_SATA_P0SERR_DIAG_F)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0SERR, field DIAG_X[26] (RO)
|
|
*
|
|
* Exchanged This bit is set to 1 when PHY COMINIT signal is detected. This bit is reflected in the
|
|
* SATA_P 0 IS[PCS] bit.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SERR_DIAG_X (26) //!< Bit position for SATA_P0SERR_DIAG_X.
|
|
#define BM_SATA_P0SERR_DIAG_X (0x04000000) //!< Bit mask for SATA_P0SERR_DIAG_X.
|
|
|
|
//! @brief Get value of SATA_P0SERR_DIAG_X from a register value.
|
|
#define BG_SATA_P0SERR_DIAG_X(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SERR_DIAG_X) >> BP_SATA_P0SERR_DIAG_X)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_P0SACT - Port0 Serial ATA Active Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_P0SACT - Port0 Serial ATA Active Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*/
|
|
typedef union _hw_sata_p0sact
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_p0sact_bitfields
|
|
{
|
|
unsigned DS : 32; //!< [31:0] Device Status
|
|
} B;
|
|
} hw_sata_p0sact_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_P0SACT register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_P0SACT_ADDR (REGS_SATA_BASE + 0x134)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_P0SACT (*(volatile hw_sata_p0sact_t *) HW_SATA_P0SACT_ADDR)
|
|
#define HW_SATA_P0SACT_RD() (HW_SATA_P0SACT.U)
|
|
#define HW_SATA_P0SACT_WR(v) (HW_SATA_P0SACT.U = (v))
|
|
#define HW_SATA_P0SACT_SET(v) (HW_SATA_P0SACT_WR(HW_SATA_P0SACT_RD() | (v)))
|
|
#define HW_SATA_P0SACT_CLR(v) (HW_SATA_P0SACT_WR(HW_SATA_P0SACT_RD() & ~(v)))
|
|
#define HW_SATA_P0SACT_TOG(v) (HW_SATA_P0SACT_WR(HW_SATA_P0SACT_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_P0SACT bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_P0SACT, field DS[31:0] (RW)
|
|
*
|
|
* Device Status This field is bit significant. Each bit corresponds to the TAG and command slot of
|
|
* a native queued command, where bit 0 corresponds to TAG 0 and command slot 0. Software sets this
|
|
* field prior to issuing a native queued command for a particular command slot. Prior to writing
|
|
* SATA_P 0 CI[TAG] to 1, the software sets DS[TAG] to 1 to indicate that a command with that TAG is
|
|
* outstanding. This field is cleared to 0 when: • The software writes SATA_P 0 CMD[ST from a 1 to a
|
|
* 0 . • The device sends a Set Device Bits FIS to the Port. The Port clears bits in this field that
|
|
* are set in the SActive field of the Set Device Bits FIS. The Port clears only bits that
|
|
* correspond to native queued commands that have completed successfully. This field is not cleared
|
|
* by the following: • Port reset (COMRESET). • Software reset. Software must write this field only
|
|
* when SATA_P 0 CMD[ST] bit is set to 1.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SACT_DS (0) //!< Bit position for SATA_P0SACT_DS.
|
|
#define BM_SATA_P0SACT_DS (0xffffffff) //!< Bit mask for SATA_P0SACT_DS.
|
|
|
|
//! @brief Get value of SATA_P0SACT_DS from a register value.
|
|
#define BG_SATA_P0SACT_DS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SACT_DS) >> BP_SATA_P0SACT_DS)
|
|
|
|
//! @brief Format value for bitfield SATA_P0SACT_DS.
|
|
#define BF_SATA_P0SACT_DS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0SACT_DS) & BM_SATA_P0SACT_DS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DS field to a new value.
|
|
#define BW_SATA_P0SACT_DS(v) (HW_SATA_P0SACT_WR((HW_SATA_P0SACT_RD() & ~BM_SATA_P0SACT_DS) | BF_SATA_P0SACT_DS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_P0CI - Port0 Command Issue Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_P0CI - Port0 Command Issue Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*/
|
|
typedef union _hw_sata_p0ci
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_p0ci_bitfields
|
|
{
|
|
unsigned CI : 32; //!< [31:0] Command Issued
|
|
} B;
|
|
} hw_sata_p0ci_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_P0CI register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_P0CI_ADDR (REGS_SATA_BASE + 0x138)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_P0CI (*(volatile hw_sata_p0ci_t *) HW_SATA_P0CI_ADDR)
|
|
#define HW_SATA_P0CI_RD() (HW_SATA_P0CI.U)
|
|
#define HW_SATA_P0CI_WR(v) (HW_SATA_P0CI.U = (v))
|
|
#define HW_SATA_P0CI_SET(v) (HW_SATA_P0CI_WR(HW_SATA_P0CI_RD() | (v)))
|
|
#define HW_SATA_P0CI_CLR(v) (HW_SATA_P0CI_WR(HW_SATA_P0CI_RD() & ~(v)))
|
|
#define HW_SATA_P0CI_TOG(v) (HW_SATA_P0CI_WR(HW_SATA_P0CI_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_P0CI bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_P0CI, field CI[31:0] (RW)
|
|
*
|
|
* Command Issued This field is bit significant. Each bit corresponds to a command slot, where bit 0
|
|
* corresponds to command slot 0. This field is set by the software to indicate to the Port that a
|
|
* command has been built in system memory for a command slot and may be sent to the device. When
|
|
* the Port receives a FIS which clears the BSY, DRQ, and ERR bits for the command, it clears the
|
|
* corresponding bit in this register for that command slot. Bits in this field can only be set to 1
|
|
* by the software when SATA_P 0 CMD[ST] is set to 1. This field is reset when SATA_P 0 CMD[ST] is
|
|
* written from a 1 to a 0 by the software.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0CI_CI (0) //!< Bit position for SATA_P0CI_CI.
|
|
#define BM_SATA_P0CI_CI (0xffffffff) //!< Bit mask for SATA_P0CI_CI.
|
|
|
|
//! @brief Get value of SATA_P0CI_CI from a register value.
|
|
#define BG_SATA_P0CI_CI(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0CI_CI) >> BP_SATA_P0CI_CI)
|
|
|
|
//! @brief Format value for bitfield SATA_P0CI_CI.
|
|
#define BF_SATA_P0CI_CI(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0CI_CI) & BM_SATA_P0CI_CI)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CI field to a new value.
|
|
#define BW_SATA_P0CI_CI(v) (HW_SATA_P0CI_WR((HW_SATA_P0CI_RD() & ~BM_SATA_P0CI_CI) | BF_SATA_P0CI_CI(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_P0SNTF - Port0 Serial ATA Notification Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_P0SNTF - Port0 Serial ATA Notification Register (W1C)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register is used to determine when asynchronous notification events have occurred for
|
|
* directly connected devices and devices connected to a Port Multiplier.
|
|
*/
|
|
typedef union _hw_sata_p0sntf
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_p0sntf_bitfields
|
|
{
|
|
unsigned PMN : 16; //!< [15:0] PM Notify
|
|
unsigned RESERVED0 : 16; //!< [31:16] Reserved
|
|
} B;
|
|
} hw_sata_p0sntf_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_P0SNTF register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_P0SNTF_ADDR (REGS_SATA_BASE + 0x13c)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_P0SNTF (*(volatile hw_sata_p0sntf_t *) HW_SATA_P0SNTF_ADDR)
|
|
#define HW_SATA_P0SNTF_RD() (HW_SATA_P0SNTF.U)
|
|
#define HW_SATA_P0SNTF_WR(v) (HW_SATA_P0SNTF.U = (v))
|
|
#define HW_SATA_P0SNTF_SET(v) (HW_SATA_P0SNTF_WR(HW_SATA_P0SNTF_RD() | (v)))
|
|
#define HW_SATA_P0SNTF_CLR(v) (HW_SATA_P0SNTF_WR(HW_SATA_P0SNTF_RD() & ~(v)))
|
|
#define HW_SATA_P0SNTF_TOG(v) (HW_SATA_P0SNTF_WR(HW_SATA_P0SNTF_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_P0SNTF bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_P0SNTF, field PMN[15:0] (W1C)
|
|
*
|
|
* PM Notify This field indicates whether a particular device with the corresponding PM Port number
|
|
* issued a Set Device Bits FIS to the SATA block Port with the Notification bit set: • PM Port 0h
|
|
* sets bit 0, • PM Port 1h sets bit 1, ... • PM Port Fh sets bit 15. Individual bits are cleared by
|
|
* the software writing 1s to the corresponding bit positions. This field is reset on Global reset,
|
|
* but it is not reset by Port reset (COMRESET) or software reset.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0SNTF_PMN (0) //!< Bit position for SATA_P0SNTF_PMN.
|
|
#define BM_SATA_P0SNTF_PMN (0x0000ffff) //!< Bit mask for SATA_P0SNTF_PMN.
|
|
|
|
//! @brief Get value of SATA_P0SNTF_PMN from a register value.
|
|
#define BG_SATA_P0SNTF_PMN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0SNTF_PMN) >> BP_SATA_P0SNTF_PMN)
|
|
|
|
//! @brief Format value for bitfield SATA_P0SNTF_PMN.
|
|
#define BF_SATA_P0SNTF_PMN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0SNTF_PMN) & BM_SATA_P0SNTF_PMN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the PMN field to a new value.
|
|
#define BW_SATA_P0SNTF_PMN(v) (HW_SATA_P0SNTF_WR((HW_SATA_P0SNTF_RD() & ~BM_SATA_P0SNTF_PMN) | BF_SATA_P0SNTF_PMN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_P0DMACR - Port0 DMA Control Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_P0DMACR - Port0 DMA Control Register (RW)
|
|
*
|
|
* Reset value: 0x00000044
|
|
*
|
|
* This register contains bits for controlling the Port DMA engine. The software can change the
|
|
* fields of this register only when SATA_P 0 CMD[ST]=0. Power-up (system reset), Global reset, or
|
|
* Port reset (COMRESET) reset this register to the default value.
|
|
*/
|
|
typedef union _hw_sata_p0dmacr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_p0dmacr_bitfields
|
|
{
|
|
unsigned TXTS : 4; //!< [3:0] Transmit Transaction Size
|
|
unsigned RXTS : 4; //!< [7:4] Receive Transaction Size
|
|
unsigned RESERVED1 : 24; //!< [31:8] Reserved.
|
|
} B;
|
|
} hw_sata_p0dmacr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_P0DMACR register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_P0DMACR_ADDR (REGS_SATA_BASE + 0x170)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_P0DMACR (*(volatile hw_sata_p0dmacr_t *) HW_SATA_P0DMACR_ADDR)
|
|
#define HW_SATA_P0DMACR_RD() (HW_SATA_P0DMACR.U)
|
|
#define HW_SATA_P0DMACR_WR(v) (HW_SATA_P0DMACR.U = (v))
|
|
#define HW_SATA_P0DMACR_SET(v) (HW_SATA_P0DMACR_WR(HW_SATA_P0DMACR_RD() | (v)))
|
|
#define HW_SATA_P0DMACR_CLR(v) (HW_SATA_P0DMACR_WR(HW_SATA_P0DMACR_RD() & ~(v)))
|
|
#define HW_SATA_P0DMACR_TOG(v) (HW_SATA_P0DMACR_WR(HW_SATA_P0DMACR_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_P0DMACR bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_P0DMACR, field TXTS[3:0] (RW)
|
|
*
|
|
* Transmit Transaction Size This field defines the DMA transaction size in DWORDs for transmit
|
|
* (system bus read, device write) operation. The options for this field are: This field is read-
|
|
* write when SATA_P 0 CMD[ST]=0 and read-only when SATA_P 0 CMD[ST]=1. The maximum value of this
|
|
* field is determined by the TxFIFO depth parameter. When the software attempts to write a value
|
|
* exceeding this value, the maximum value would be set instead.
|
|
*
|
|
* Values:
|
|
* - 0x0 - 1 DWORD
|
|
* - 0x1 - 2 DWORD
|
|
* - 0x2 - 4 DWORD
|
|
* - 0x3 - 8 DWORD
|
|
* - 0x4 - 16 DWORDs (maximum value when TXFIFO_DEPTH=32)
|
|
* - 0x5 - 32 DWORDs (maximum value when TXFIFO_DEPTH=64)
|
|
* - 0x6 - 64 DWORDs (maximum value when TXFIFO_DEPTH=128)
|
|
* - 0x7 - 128 DWORDs (maximum value when TXFIFO_DEPTH=256)
|
|
* - 0x8 - 256 DWORDs (maximum value when TXFIFO_DEPTH=512)
|
|
* - 0x9 - 512 DWORDs (maximum value when TXFIFO_DEPTH=1024)
|
|
* - 0xA - 1024 DWORDs (maximum value when TXFIFO_DEPTH=2048) All other values are reserved and should not be
|
|
* used.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0DMACR_TXTS (0) //!< Bit position for SATA_P0DMACR_TXTS.
|
|
#define BM_SATA_P0DMACR_TXTS (0x0000000f) //!< Bit mask for SATA_P0DMACR_TXTS.
|
|
|
|
//! @brief Get value of SATA_P0DMACR_TXTS from a register value.
|
|
#define BG_SATA_P0DMACR_TXTS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0DMACR_TXTS) >> BP_SATA_P0DMACR_TXTS)
|
|
|
|
//! @brief Format value for bitfield SATA_P0DMACR_TXTS.
|
|
#define BF_SATA_P0DMACR_TXTS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0DMACR_TXTS) & BM_SATA_P0DMACR_TXTS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TXTS field to a new value.
|
|
#define BW_SATA_P0DMACR_TXTS(v) (HW_SATA_P0DMACR_WR((HW_SATA_P0DMACR_RD() & ~BM_SATA_P0DMACR_TXTS) | BF_SATA_P0DMACR_TXTS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0DMACR, field RXTS[7:4] (RW)
|
|
*
|
|
* Receive Transaction Size This field defines the Port DMA transaction size in DWORDs for receive
|
|
* (system bus write, device read) operation. This field is read-write when SATA_P 0 CMD[ST]=0 and
|
|
* read-only when SATA_P 0 CMD[ST]=1. The maximum value of this field is determined by the RxFIFO
|
|
* depth parameter. When the software attempts to write a value exceeding this value, the maximum
|
|
* value would be set instead.
|
|
*
|
|
* Values:
|
|
* - 0x0 - 1 DWORD
|
|
* - 0x1 - 2 DWORD
|
|
* - 0x2 - 4 DWORD
|
|
* - 0x3 - 8 DWORD
|
|
* - 0x4 - 16 DWORDs (maximum value when RXFIFO_DEPTH=64)
|
|
* - 0x5 - 32 DWORD
|
|
* - 0x6 - 64 DWORDs (maximum value when RXFIFO_DEPTH=128)
|
|
* - 0x7 - 128 DWORDs (maximum value when RXFIFO_DEPTH=256)
|
|
* - 0x8 - 256 DWORDs (maximum value when RXFIFO_DEPTH=512)
|
|
* - 0x9 - 12 DWORDs (maximum value when RXFIFO_DEPTH=1024)
|
|
* - 0xA - 1024 DWORDs (maximum value when RXFIFO_DEPTH=2048) All other values are reserved and should not be
|
|
* used.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0DMACR_RXTS (4) //!< Bit position for SATA_P0DMACR_RXTS.
|
|
#define BM_SATA_P0DMACR_RXTS (0x000000f0) //!< Bit mask for SATA_P0DMACR_RXTS.
|
|
|
|
//! @brief Get value of SATA_P0DMACR_RXTS from a register value.
|
|
#define BG_SATA_P0DMACR_RXTS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0DMACR_RXTS) >> BP_SATA_P0DMACR_RXTS)
|
|
|
|
//! @brief Format value for bitfield SATA_P0DMACR_RXTS.
|
|
#define BF_SATA_P0DMACR_RXTS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0DMACR_RXTS) & BM_SATA_P0DMACR_RXTS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RXTS field to a new value.
|
|
#define BW_SATA_P0DMACR_RXTS(v) (HW_SATA_P0DMACR_WR((HW_SATA_P0DMACR_RD() & ~BM_SATA_P0DMACR_RXTS) | BF_SATA_P0DMACR_RXTS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_P0PHYCR - Port0 PHY Control Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_P0PHYCR - Port0 PHY Control Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register is used for Port PHY control. Bits of this register are connected to the
|
|
* corresponding bits of the p 0 _phy_ctrl output Port. The SATA_P 0 PHYCR register supports only
|
|
* 32-bit write access
|
|
*/
|
|
typedef union _hw_sata_p0phycr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_p0phycr_bitfields
|
|
{
|
|
unsigned CR_DATA_IN : 16; //!< [15:0] CR Address and Write Data Input Bus.
|
|
unsigned CR_CAP_ADDR : 1; //!< [16] CR Capture Address.
|
|
unsigned CR_CAP_DATA : 1; //!< [17] CR Capture Data.
|
|
unsigned CR_WRITE : 1; //!< [18] CR Write.
|
|
unsigned CR_READ : 1; //!< [19] CR Read.
|
|
unsigned TEST_PDDQ : 1; //!< [20] Test IDDQ
|
|
unsigned RESERVED0 : 11; //!< [31:21] Reserved
|
|
} B;
|
|
} hw_sata_p0phycr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_P0PHYCR register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_P0PHYCR_ADDR (REGS_SATA_BASE + 0x178)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_P0PHYCR (*(volatile hw_sata_p0phycr_t *) HW_SATA_P0PHYCR_ADDR)
|
|
#define HW_SATA_P0PHYCR_RD() (HW_SATA_P0PHYCR.U)
|
|
#define HW_SATA_P0PHYCR_WR(v) (HW_SATA_P0PHYCR.U = (v))
|
|
#define HW_SATA_P0PHYCR_SET(v) (HW_SATA_P0PHYCR_WR(HW_SATA_P0PHYCR_RD() | (v)))
|
|
#define HW_SATA_P0PHYCR_CLR(v) (HW_SATA_P0PHYCR_WR(HW_SATA_P0PHYCR_RD() & ~(v)))
|
|
#define HW_SATA_P0PHYCR_TOG(v) (HW_SATA_P0PHYCR_WR(HW_SATA_P0PHYCR_RD() ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_P0PHYCR bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_P0PHYCR, field CR_DATA_IN[15:0] (RW)
|
|
*
|
|
* CR Address and Write Data Input Bus. Supplies and captures address and write data.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0PHYCR_CR_DATA_IN (0) //!< Bit position for SATA_P0PHYCR_CR_DATA_IN.
|
|
#define BM_SATA_P0PHYCR_CR_DATA_IN (0x0000ffff) //!< Bit mask for SATA_P0PHYCR_CR_DATA_IN.
|
|
|
|
//! @brief Get value of SATA_P0PHYCR_CR_DATA_IN from a register value.
|
|
#define BG_SATA_P0PHYCR_CR_DATA_IN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0PHYCR_CR_DATA_IN) >> BP_SATA_P0PHYCR_CR_DATA_IN)
|
|
|
|
//! @brief Format value for bitfield SATA_P0PHYCR_CR_DATA_IN.
|
|
#define BF_SATA_P0PHYCR_CR_DATA_IN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0PHYCR_CR_DATA_IN) & BM_SATA_P0PHYCR_CR_DATA_IN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CR_DATA_IN field to a new value.
|
|
#define BW_SATA_P0PHYCR_CR_DATA_IN(v) (HW_SATA_P0PHYCR_WR((HW_SATA_P0PHYCR_RD() & ~BM_SATA_P0PHYCR_CR_DATA_IN) | BF_SATA_P0PHYCR_CR_DATA_IN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0PHYCR, field CR_CAP_ADDR[16] (RW)
|
|
*
|
|
* CR Capture Address. Captures phy_cr_data_in[15:0] into the Address register.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0PHYCR_CR_CAP_ADDR (16) //!< Bit position for SATA_P0PHYCR_CR_CAP_ADDR.
|
|
#define BM_SATA_P0PHYCR_CR_CAP_ADDR (0x00010000) //!< Bit mask for SATA_P0PHYCR_CR_CAP_ADDR.
|
|
|
|
//! @brief Get value of SATA_P0PHYCR_CR_CAP_ADDR from a register value.
|
|
#define BG_SATA_P0PHYCR_CR_CAP_ADDR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0PHYCR_CR_CAP_ADDR) >> BP_SATA_P0PHYCR_CR_CAP_ADDR)
|
|
|
|
//! @brief Format value for bitfield SATA_P0PHYCR_CR_CAP_ADDR.
|
|
#define BF_SATA_P0PHYCR_CR_CAP_ADDR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0PHYCR_CR_CAP_ADDR) & BM_SATA_P0PHYCR_CR_CAP_ADDR)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CR_CAP_ADDR field to a new value.
|
|
#define BW_SATA_P0PHYCR_CR_CAP_ADDR(v) (HW_SATA_P0PHYCR_WR((HW_SATA_P0PHYCR_RD() & ~BM_SATA_P0PHYCR_CR_CAP_ADDR) | BF_SATA_P0PHYCR_CR_CAP_ADDR(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0PHYCR, field CR_CAP_DATA[17] (RW)
|
|
*
|
|
* CR Capture Data. Captures phy_cr_data_in[15:0] into the Write Data register.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0PHYCR_CR_CAP_DATA (17) //!< Bit position for SATA_P0PHYCR_CR_CAP_DATA.
|
|
#define BM_SATA_P0PHYCR_CR_CAP_DATA (0x00020000) //!< Bit mask for SATA_P0PHYCR_CR_CAP_DATA.
|
|
|
|
//! @brief Get value of SATA_P0PHYCR_CR_CAP_DATA from a register value.
|
|
#define BG_SATA_P0PHYCR_CR_CAP_DATA(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0PHYCR_CR_CAP_DATA) >> BP_SATA_P0PHYCR_CR_CAP_DATA)
|
|
|
|
//! @brief Format value for bitfield SATA_P0PHYCR_CR_CAP_DATA.
|
|
#define BF_SATA_P0PHYCR_CR_CAP_DATA(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0PHYCR_CR_CAP_DATA) & BM_SATA_P0PHYCR_CR_CAP_DATA)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CR_CAP_DATA field to a new value.
|
|
#define BW_SATA_P0PHYCR_CR_CAP_DATA(v) (HW_SATA_P0PHYCR_WR((HW_SATA_P0PHYCR_RD() & ~BM_SATA_P0PHYCR_CR_CAP_DATA) | BF_SATA_P0PHYCR_CR_CAP_DATA(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0PHYCR, field CR_WRITE[18] (RW)
|
|
*
|
|
* CR Write. Writes the Write Data register to the referenced Address register.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0PHYCR_CR_WRITE (18) //!< Bit position for SATA_P0PHYCR_CR_WRITE.
|
|
#define BM_SATA_P0PHYCR_CR_WRITE (0x00040000) //!< Bit mask for SATA_P0PHYCR_CR_WRITE.
|
|
|
|
//! @brief Get value of SATA_P0PHYCR_CR_WRITE from a register value.
|
|
#define BG_SATA_P0PHYCR_CR_WRITE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0PHYCR_CR_WRITE) >> BP_SATA_P0PHYCR_CR_WRITE)
|
|
|
|
//! @brief Format value for bitfield SATA_P0PHYCR_CR_WRITE.
|
|
#define BF_SATA_P0PHYCR_CR_WRITE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0PHYCR_CR_WRITE) & BM_SATA_P0PHYCR_CR_WRITE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CR_WRITE field to a new value.
|
|
#define BW_SATA_P0PHYCR_CR_WRITE(v) (HW_SATA_P0PHYCR_WR((HW_SATA_P0PHYCR_RD() & ~BM_SATA_P0PHYCR_CR_WRITE) | BF_SATA_P0PHYCR_CR_WRITE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0PHYCR, field CR_READ[19] (RW)
|
|
*
|
|
* CR Read. Reads from the referenced Address register.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0PHYCR_CR_READ (19) //!< Bit position for SATA_P0PHYCR_CR_READ.
|
|
#define BM_SATA_P0PHYCR_CR_READ (0x00080000) //!< Bit mask for SATA_P0PHYCR_CR_READ.
|
|
|
|
//! @brief Get value of SATA_P0PHYCR_CR_READ from a register value.
|
|
#define BG_SATA_P0PHYCR_CR_READ(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0PHYCR_CR_READ) >> BP_SATA_P0PHYCR_CR_READ)
|
|
|
|
//! @brief Format value for bitfield SATA_P0PHYCR_CR_READ.
|
|
#define BF_SATA_P0PHYCR_CR_READ(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0PHYCR_CR_READ) & BM_SATA_P0PHYCR_CR_READ)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CR_READ field to a new value.
|
|
#define BW_SATA_P0PHYCR_CR_READ(v) (HW_SATA_P0PHYCR_WR((HW_SATA_P0PHYCR_RD() & ~BM_SATA_P0PHYCR_CR_READ) | BF_SATA_P0PHYCR_CR_READ(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0PHYCR, field TEST_PDDQ[20] (RW)
|
|
*
|
|
* Test IDDQ
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0PHYCR_TEST_PDDQ (20) //!< Bit position for SATA_P0PHYCR_TEST_PDDQ.
|
|
#define BM_SATA_P0PHYCR_TEST_PDDQ (0x00100000) //!< Bit mask for SATA_P0PHYCR_TEST_PDDQ.
|
|
|
|
//! @brief Get value of SATA_P0PHYCR_TEST_PDDQ from a register value.
|
|
#define BG_SATA_P0PHYCR_TEST_PDDQ(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0PHYCR_TEST_PDDQ) >> BP_SATA_P0PHYCR_TEST_PDDQ)
|
|
|
|
//! @brief Format value for bitfield SATA_P0PHYCR_TEST_PDDQ.
|
|
#define BF_SATA_P0PHYCR_TEST_PDDQ(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_SATA_P0PHYCR_TEST_PDDQ) & BM_SATA_P0PHYCR_TEST_PDDQ)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TEST_PDDQ field to a new value.
|
|
#define BW_SATA_P0PHYCR_TEST_PDDQ(v) (HW_SATA_P0PHYCR_WR((HW_SATA_P0PHYCR_RD() & ~BM_SATA_P0PHYCR_TEST_PDDQ) | BF_SATA_P0PHYCR_TEST_PDDQ(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_SATA_P0PHYSR - Port0 PHY Status Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_SATA_P0PHYSR - Port0 PHY Status Register (RO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register is used to monitor PHY status. The bits of this register reflect the state of the
|
|
* corresponding bits of the p 0 _phy_status input. Signals connected to the p 0 _phy_status input
|
|
* can be asynchronous to any of the SATA block clocks, however they must not change faster than
|
|
* five hclk periods, otherwise the SATA_P 0 PHYSR register may never be updated with the
|
|
* intermediate changing values.
|
|
*/
|
|
typedef union _hw_sata_p0physr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_sata_p0physr_bitfields
|
|
{
|
|
unsigned CR_DATA_OUT : 16; //!< [15:0] CR Data Output Bus.
|
|
unsigned RESERVED0 : 2; //!< [17:16]
|
|
unsigned CR_ACK : 1; //!< [18] CR Acknowledgement.
|
|
unsigned RESERVED1 : 13; //!< [31:19]
|
|
} B;
|
|
} hw_sata_p0physr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire SATA_P0PHYSR register
|
|
*/
|
|
//@{
|
|
#define HW_SATA_P0PHYSR_ADDR (REGS_SATA_BASE + 0x17c)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_SATA_P0PHYSR (*(volatile hw_sata_p0physr_t *) HW_SATA_P0PHYSR_ADDR)
|
|
#define HW_SATA_P0PHYSR_RD() (HW_SATA_P0PHYSR.U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual SATA_P0PHYSR bitfields
|
|
*/
|
|
|
|
/*! @name Register SATA_P0PHYSR, field CR_DATA_OUT[15:0] (RO)
|
|
*
|
|
* CR Data Output Bus. Always presents last read data.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0PHYSR_CR_DATA_OUT (0) //!< Bit position for SATA_P0PHYSR_CR_DATA_OUT.
|
|
#define BM_SATA_P0PHYSR_CR_DATA_OUT (0x0000ffff) //!< Bit mask for SATA_P0PHYSR_CR_DATA_OUT.
|
|
|
|
//! @brief Get value of SATA_P0PHYSR_CR_DATA_OUT from a register value.
|
|
#define BG_SATA_P0PHYSR_CR_DATA_OUT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0PHYSR_CR_DATA_OUT) >> BP_SATA_P0PHYSR_CR_DATA_OUT)
|
|
//@}
|
|
|
|
/*! @name Register SATA_P0PHYSR, field CR_ACK[18] (RO)
|
|
*
|
|
* CR Acknowledgement. Acknowledgement for the phy_cr_cap_addr, phy_cr_cap_data, phy_cr_write, and
|
|
* phy_cr_read control signals.
|
|
*/
|
|
//@{
|
|
#define BP_SATA_P0PHYSR_CR_ACK (18) //!< Bit position for SATA_P0PHYSR_CR_ACK.
|
|
#define BM_SATA_P0PHYSR_CR_ACK (0x00040000) //!< Bit mask for SATA_P0PHYSR_CR_ACK.
|
|
|
|
//! @brief Get value of SATA_P0PHYSR_CR_ACK from a register value.
|
|
#define BG_SATA_P0PHYSR_CR_ACK(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_SATA_P0PHYSR_CR_ACK) >> BP_SATA_P0PHYSR_CR_ACK)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// hw_sata_t - module struct
|
|
//-------------------------------------------------------------------------------------------
|
|
/*!
|
|
* @brief All SATA module registers.
|
|
*/
|
|
#ifndef __LANGUAGE_ASM__
|
|
#pragma pack(1)
|
|
typedef struct _hw_sata
|
|
{
|
|
volatile hw_sata_cap_t CAP; //!< HBA Capabilites Register
|
|
volatile hw_sata_ghc_t GHC; //!< Global HBA Control Register
|
|
volatile hw_sata_is_t IS; //!< Interrupt Status Register
|
|
volatile hw_sata_pi_t PI; //!< Ports Implemented Register
|
|
volatile hw_sata_vs_t VS; //!< AHCl Version Register
|
|
volatile hw_sata_ccc_ctl_t CCC_CTL; //!< Command Completion Coalescing Control
|
|
volatile hw_sata_ccc_ports_t CCC_PORTS; //!< Command Completion Coalescing Ports
|
|
reg32_t _reserved0[2];
|
|
volatile hw_sata_cap2_t CAP2; //!< HBA Capabilities Extended Register
|
|
reg32_t _reserved1[30];
|
|
volatile hw_sata_bistafr_t BISTAFR; //!< BIST Activate FIS Register
|
|
volatile hw_sata_bistcr_t BISTCR; //!< BIST Control Register
|
|
volatile hw_sata_bistfctr_t BISTFCTR; //!< BIST FIS Count Register
|
|
volatile hw_sata_bistsr_t BISTSR; //!< BIST Status Register
|
|
reg32_t _reserved2[3];
|
|
volatile hw_sata_oobr_t OOBR; //!< OOB Register
|
|
reg32_t _reserved3[4];
|
|
volatile hw_sata_gpcr_t GPCR; //!< General Purpose Control Register
|
|
volatile hw_sata_gpsr_t GPSR; //!< General Purpose Status Register
|
|
reg32_t _reserved4[2];
|
|
volatile hw_sata_timer1ms_t TIMER1MS; //!< Timer 1-ms Register
|
|
reg32_t _reserved5[4];
|
|
volatile hw_sata_testr_t TESTR; //!< Test Register
|
|
volatile hw_sata_versionr_t VERSIONR; //!< Version Register
|
|
reg32_t _reserved6;
|
|
volatile hw_sata_p0clb_t P0CLB; //!< Port0 Command List Base Address Register
|
|
reg32_t _reserved7;
|
|
volatile hw_sata_p0fb_t P0FB; //!< Port0 FIS Base Address Register
|
|
reg32_t _reserved8;
|
|
volatile hw_sata_p0is_t P0IS; //!< Port0 Interrupt Status Register
|
|
volatile hw_sata_p0ie_t P0IE; //!< Port0 Interrupt Enable Register
|
|
volatile hw_sata_p0cmd_t P0CMD; //!< Port0 Command Register
|
|
reg32_t _reserved9;
|
|
volatile hw_sata_p0tfd_t P0TFD; //!< Port0 Task File Data Register
|
|
volatile hw_sata_p0sig_t P0SIG; //!< Port0 Signature Register
|
|
volatile hw_sata_p0ssts_t P0SSTS; //!< Port0 Serial ATA Status Register
|
|
volatile hw_sata_p0sctl_t P0SCTL; //!< Port0 Serial ATA Control {SControl} Register
|
|
volatile hw_sata_p0serr_t P0SERR; //!< Port0 Serial ATA Error Register
|
|
volatile hw_sata_p0sact_t P0SACT; //!< Port0 Serial ATA Active Register
|
|
volatile hw_sata_p0ci_t P0CI; //!< Port0 Command Issue Register
|
|
volatile hw_sata_p0sntf_t P0SNTF; //!< Port0 Serial ATA Notification Register
|
|
reg32_t _reserved10[12];
|
|
volatile hw_sata_p0dmacr_t P0DMACR; //!< Port0 DMA Control Register
|
|
reg32_t _reserved11;
|
|
volatile hw_sata_p0phycr_t P0PHYCR; //!< Port0 PHY Control Register
|
|
volatile hw_sata_p0physr_t P0PHYSR; //!< Port0 PHY Status Register
|
|
} hw_sata_t;
|
|
#pragma pack()
|
|
|
|
//! @brief Macro to access all SATA registers.
|
|
//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct,
|
|
//! use the '&' operator, like <code>&HW_SATA</code>.
|
|
#define HW_SATA (*(hw_sata_t *) REGS_SATA_BASE)
|
|
#endif
|
|
|
|
#endif // __HW_SATA_REGISTERS_H__
|
|
// v18/121106/1.2.2
|
|
// EOF
|