/******************************************************************************
*  Filename:       hw_aon_wuc_h
*  Revised:        2016-03-14 09:20:59 +0100 (Mon, 14 Mar 2016)
*  Revision:       45924
*
* Copyright (c) 2015 - 2016, Texas Instruments Incorporated
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1) Redistributions of source code must retain the above copyright notice,
*    this list of conditions and the following disclaimer.
*
* 2) Redistributions in binary form must reproduce the above copyright notice,
*    this list of conditions and the following disclaimer in the documentation
*    and/or other materials provided with the distribution.
*
* 3) Neither the name of the ORGANIZATION nor the names of its contributors may
*    be used to endorse or promote products derived from this software without
*    specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
******************************************************************************/

#ifndef __HW_AON_WUC_H__
#define __HW_AON_WUC_H__

//*****************************************************************************
//
// This section defines the register offsets of
// AON_WUC component
//
//*****************************************************************************
// MCU Clock Management
#define AON_WUC_O_MCUCLK                                            0x00000000

// AUX Clock Management
#define AON_WUC_O_AUXCLK                                            0x00000004

// MCU Configuration
#define AON_WUC_O_MCUCFG                                            0x00000008

// AUX Configuration
#define AON_WUC_O_AUXCFG                                            0x0000000C

// AUX Control
#define AON_WUC_O_AUXCTL                                            0x00000010

// Power Status
#define AON_WUC_O_PWRSTAT                                           0x00000014

// Shutdown Control
#define AON_WUC_O_SHUTDOWN                                          0x00000018

// Control 0
#define AON_WUC_O_CTL0                                              0x00000020

// Control 1
#define AON_WUC_O_CTL1                                              0x00000024

// Recharge Controller Configuration
#define AON_WUC_O_RECHARGECFG                                       0x00000030

// Recharge Controller Status
#define AON_WUC_O_RECHARGESTAT                                      0x00000034

// Oscillator Configuration
#define AON_WUC_O_OSCCFG                                            0x00000038

// JTAG Configuration
#define AON_WUC_O_JTAGCFG                                           0x00000040

// JTAG USERCODE
#define AON_WUC_O_JTAGUSERCODE                                      0x00000044

//*****************************************************************************
//
// Register: AON_WUC_O_MCUCLK
//
//*****************************************************************************
// Field:     [2] RCOSC_HF_CAL_DONE
//
// MCU bootcode will set this bit when RCOSC_HF is calibrated.  The FLASH can
// not be used until this bit is set.
//
// 1: RCOSC_HF is calibrated to 48 MHz, allowing FLASH to power up.
// 0: RCOSC_HF is not yet calibrated, ie FLASH must not assume that the SCLK_HF
// is safe
#define AON_WUC_MCUCLK_RCOSC_HF_CAL_DONE                            0x00000004
#define AON_WUC_MCUCLK_RCOSC_HF_CAL_DONE_BITN                                2
#define AON_WUC_MCUCLK_RCOSC_HF_CAL_DONE_M                          0x00000004
#define AON_WUC_MCUCLK_RCOSC_HF_CAL_DONE_S                                   2

// Field:   [1:0] PWR_DWN_SRC
//
// Controls the clock source for the entire MCU domain while MCU is requesting
// powerdown.
//
// When MCU requests powerdown with SCLK_HF as source, then WUC will switch
// over to this clock source during powerdown, and automatically switch back to
// SCLK_HF when MCU is no longer requesting powerdown and system is back in
// active mode.
// ENUMs:
// SCLK_LF                  Use SCLK_LF in Powerdown
// NONE                     No clock in Powerdown
#define AON_WUC_MCUCLK_PWR_DWN_SRC_W                                         2
#define AON_WUC_MCUCLK_PWR_DWN_SRC_M                                0x00000003
#define AON_WUC_MCUCLK_PWR_DWN_SRC_S                                         0
#define AON_WUC_MCUCLK_PWR_DWN_SRC_SCLK_LF                          0x00000001
#define AON_WUC_MCUCLK_PWR_DWN_SRC_NONE                             0x00000000

//*****************************************************************************
//
// Register: AON_WUC_O_AUXCLK
//
//*****************************************************************************
// Field: [12:11] PWR_DWN_SRC
//
// When AUX requests powerdown with SCLK_HF as source, then WUC will switch
// over to this clock source during powerdown, and automatically switch back to
// SCLK_HF when AUX system is back in active mode
// ENUMs:
// SCLK_LF                  Use SCLK_LF in Powerdown
// NONE                     No clock in Powerdown
#define AON_WUC_AUXCLK_PWR_DWN_SRC_W                                         2
#define AON_WUC_AUXCLK_PWR_DWN_SRC_M                                0x00001800
#define AON_WUC_AUXCLK_PWR_DWN_SRC_S                                        11
#define AON_WUC_AUXCLK_PWR_DWN_SRC_SCLK_LF                          0x00000800
#define AON_WUC_AUXCLK_PWR_DWN_SRC_NONE                             0x00000000

// Field:  [10:8] SCLK_HF_DIV
//
// Select the AUX clock divider for SCLK_HF
//
// NB: It is not supported to change the AUX clock divider while SCLK_HF is
// active source for AUX
// ENUMs:
// DIV256                   Divide by 256
// DIV128                   Divide by 128
// DIV64                    Divide by 64
// DIV32                    Divide by 32
// DIV16                    Divide by 16
// DIV8                     Divide by 8
// DIV4                     Divide by 4
// DIV2                     Divide by 2
#define AON_WUC_AUXCLK_SCLK_HF_DIV_W                                         3
#define AON_WUC_AUXCLK_SCLK_HF_DIV_M                                0x00000700
#define AON_WUC_AUXCLK_SCLK_HF_DIV_S                                         8
#define AON_WUC_AUXCLK_SCLK_HF_DIV_DIV256                           0x00000700
#define AON_WUC_AUXCLK_SCLK_HF_DIV_DIV128                           0x00000600
#define AON_WUC_AUXCLK_SCLK_HF_DIV_DIV64                            0x00000500
#define AON_WUC_AUXCLK_SCLK_HF_DIV_DIV32                            0x00000400
#define AON_WUC_AUXCLK_SCLK_HF_DIV_DIV16                            0x00000300
#define AON_WUC_AUXCLK_SCLK_HF_DIV_DIV8                             0x00000200
#define AON_WUC_AUXCLK_SCLK_HF_DIV_DIV4                             0x00000100
#define AON_WUC_AUXCLK_SCLK_HF_DIV_DIV2                             0x00000000

// Field:   [2:0] SRC
//
// Selects the clock source for AUX:
//
// NB: Switching the clock source is guaranteed to be glitchless
// ENUMs:
// SCLK_LF                  LF Clock (SCLK_LF)
// SCLK_HF                  HF Clock (SCLK_HF)
#define AON_WUC_AUXCLK_SRC_W                                                 3
#define AON_WUC_AUXCLK_SRC_M                                        0x00000007
#define AON_WUC_AUXCLK_SRC_S                                                 0
#define AON_WUC_AUXCLK_SRC_SCLK_LF                                  0x00000004
#define AON_WUC_AUXCLK_SRC_SCLK_HF                                  0x00000001

//*****************************************************************************
//
// Register: AON_WUC_O_MCUCFG
//
//*****************************************************************************
// Field:    [17] VIRT_OFF
//
// Internal. Only to be used through TI provided API.
#define AON_WUC_MCUCFG_VIRT_OFF                                     0x00020000
#define AON_WUC_MCUCFG_VIRT_OFF_BITN                                        17
#define AON_WUC_MCUCFG_VIRT_OFF_M                                   0x00020000
#define AON_WUC_MCUCFG_VIRT_OFF_S                                           17

// Field:    [16] FIXED_WU_EN
//
// Internal. Only to be used through TI provided API.
#define AON_WUC_MCUCFG_FIXED_WU_EN                                  0x00010000
#define AON_WUC_MCUCFG_FIXED_WU_EN_BITN                                     16
#define AON_WUC_MCUCFG_FIXED_WU_EN_M                                0x00010000
#define AON_WUC_MCUCFG_FIXED_WU_EN_S                                        16

// Field:   [3:0] SRAM_RET_EN
//
// MCU SRAM is partitioned into 4 banks . This register controls which of the
// banks that has retention during MCU power off
// ENUMs:
// RET_FULL                 Retention on for all banks (SRAM:BANK0, SRAM:BANK1
//                          ,SRAM:BANK2 and SRAM:BANK3)
// RET_LEVEL3               Retention on for SRAM:BANK0, SRAM:BANK1 and
//                          SRAM:BANK2
// RET_LEVEL2               Retention on for SRAM:BANK0 and SRAM:BANK1
// RET_LEVEL1               Retention on for SRAM:BANK0
// RET_NONE                 Retention is disabled
#define AON_WUC_MCUCFG_SRAM_RET_EN_W                                         4
#define AON_WUC_MCUCFG_SRAM_RET_EN_M                                0x0000000F
#define AON_WUC_MCUCFG_SRAM_RET_EN_S                                         0
#define AON_WUC_MCUCFG_SRAM_RET_EN_RET_FULL                         0x0000000F
#define AON_WUC_MCUCFG_SRAM_RET_EN_RET_LEVEL3                       0x00000007
#define AON_WUC_MCUCFG_SRAM_RET_EN_RET_LEVEL2                       0x00000003
#define AON_WUC_MCUCFG_SRAM_RET_EN_RET_LEVEL1                       0x00000001
#define AON_WUC_MCUCFG_SRAM_RET_EN_RET_NONE                         0x00000000

//*****************************************************************************
//
// Register: AON_WUC_O_AUXCFG
//
//*****************************************************************************
// Field:     [0] RAM_RET_EN
//
// This bit controls retention mode for the AUX_RAM:BANK0:
//
// 0: Retention is disabled
// 1: Retention is enabled
//
// NB: If retention is disabled, the AUX_RAM will be powered off when it would
// otherwise be put in retention mode
#define AON_WUC_AUXCFG_RAM_RET_EN                                   0x00000001
#define AON_WUC_AUXCFG_RAM_RET_EN_BITN                                       0
#define AON_WUC_AUXCFG_RAM_RET_EN_M                                 0x00000001
#define AON_WUC_AUXCFG_RAM_RET_EN_S                                          0

//*****************************************************************************
//
// Register: AON_WUC_O_AUXCTL
//
//*****************************************************************************
// Field:    [31] RESET_REQ
//
// Reset request for AUX. Writing 1 to this register will assert reset to AUX.
// The reset will be held until the bit is cleared again.
//
// 0: AUX reset pin will be deasserted
// 1: AUX reset pin will be asserted
#define AON_WUC_AUXCTL_RESET_REQ                                    0x80000000
#define AON_WUC_AUXCTL_RESET_REQ_BITN                                       31
#define AON_WUC_AUXCTL_RESET_REQ_M                                  0x80000000
#define AON_WUC_AUXCTL_RESET_REQ_S                                          31

// Field:     [2] SCE_RUN_EN
//
// Enables (1) or disables (0) AUX_SCE execution. AUX_SCE execution will begin
// when AUX Domain is powered and either this or AUX_SCE:CTL.CLK_EN is set.
//
// Setting this bit will assure that AUX_SCE execution starts as soon as AUX
// power domain is woken up. (  AUX_SCE:CTL.CLK_EN will be reset to 0 if AUX
// power domain has been off)
//
// 0: AUX_SCE execution will be disabled if AUX_SCE:CTL.CLK_EN is 0
// 1: AUX_SCE execution is enabled.
#define AON_WUC_AUXCTL_SCE_RUN_EN                                   0x00000004
#define AON_WUC_AUXCTL_SCE_RUN_EN_BITN                                       2
#define AON_WUC_AUXCTL_SCE_RUN_EN_M                                 0x00000004
#define AON_WUC_AUXCTL_SCE_RUN_EN_S                                          2

// Field:     [1] SWEV
//
// Writing 1 sets the software event to the AUX domain, which can be read
// through AUX_WUC:WUEVFLAGS.AON_SW.
//
// This event is normally cleared by AUX_SCE through the
// AUX_WUC:WUEVCLR.AON_SW. It can also be cleared by writing 0 to this
// register.
//
// Reading 0 means that there is no outstanding software event for AUX.
//
// Note that it can take up to 1,5 SCLK_LF clock cycles to clear the event from
// AUX.
#define AON_WUC_AUXCTL_SWEV                                         0x00000002
#define AON_WUC_AUXCTL_SWEV_BITN                                             1
#define AON_WUC_AUXCTL_SWEV_M                                       0x00000002
#define AON_WUC_AUXCTL_SWEV_S                                                1

// Field:     [0] AUX_FORCE_ON
//
// Forces the AUX domain into active mode, overriding the requests from
// AUX_WUC:PWROFFREQ, AUX_WUC:PWRDWNREQ and AUX_WUC:MCUBUSCTL.
// Note that an ongoing AUX_WUC:PWROFFREQ will complete before this bit will
// set the AUX domain into active mode.
//
// MCU must set this bit in order to access the AUX peripherals.
// The AUX domain status can be read from PWRSTAT.AUX_PD_ON
//
// 0: AUX is allowed to Power Off, Power Down or Disconnect.
// 1: AUX  Power OFF, Power Down or Disconnect requests will be overruled
#define AON_WUC_AUXCTL_AUX_FORCE_ON                                 0x00000001
#define AON_WUC_AUXCTL_AUX_FORCE_ON_BITN                                     0
#define AON_WUC_AUXCTL_AUX_FORCE_ON_M                               0x00000001
#define AON_WUC_AUXCTL_AUX_FORCE_ON_S                                        0

//*****************************************************************************
//
// Register: AON_WUC_O_PWRSTAT
//
//*****************************************************************************
// Field:     [9] AUX_PWR_DWN
//
// Indicates the AUX powerdown state when AUX domain is powered up.
//
// 0: Active mode
// 1: AUX Powerdown request has been granted
#define AON_WUC_PWRSTAT_AUX_PWR_DWN                                 0x00000200
#define AON_WUC_PWRSTAT_AUX_PWR_DWN_BITN                                     9
#define AON_WUC_PWRSTAT_AUX_PWR_DWN_M                               0x00000200
#define AON_WUC_PWRSTAT_AUX_PWR_DWN_S                                        9

// Field:     [6] JTAG_PD_ON
//
// Indicates JTAG power state:
//
// 0: JTAG is powered off
// 1: JTAG is powered on
#define AON_WUC_PWRSTAT_JTAG_PD_ON                                  0x00000040
#define AON_WUC_PWRSTAT_JTAG_PD_ON_BITN                                      6
#define AON_WUC_PWRSTAT_JTAG_PD_ON_M                                0x00000040
#define AON_WUC_PWRSTAT_JTAG_PD_ON_S                                         6

// Field:     [5] AUX_PD_ON
//
// Indicates AUX power state:
//
// 0: AUX is not ready for use ( may be powered off or in power state
// transition )
// 1: AUX is powered on, connected to bus and ready for use,
#define AON_WUC_PWRSTAT_AUX_PD_ON                                   0x00000020
#define AON_WUC_PWRSTAT_AUX_PD_ON_BITN                                       5
#define AON_WUC_PWRSTAT_AUX_PD_ON_M                                 0x00000020
#define AON_WUC_PWRSTAT_AUX_PD_ON_S                                          5

// Field:     [4] MCU_PD_ON
//
// Indicates MCU power state:
//
// 0: MCU Power sequencing is not yet finalized and MCU_AONIF registers may not
// be reliable
// 1: MCU Power sequencing is finalized and all MCU_AONIF registers are
// reliable
#define AON_WUC_PWRSTAT_MCU_PD_ON                                   0x00000010
#define AON_WUC_PWRSTAT_MCU_PD_ON_BITN                                       4
#define AON_WUC_PWRSTAT_MCU_PD_ON_M                                 0x00000010
#define AON_WUC_PWRSTAT_MCU_PD_ON_S                                          4

// Field:     [2] AUX_BUS_CONNECTED
//
// Indicates that AUX Bus is connected:
//
// 0: AUX bus is not connected
// 1: AUX bus is connected ( idle_ack = 0 )
#define AON_WUC_PWRSTAT_AUX_BUS_CONNECTED                           0x00000004
#define AON_WUC_PWRSTAT_AUX_BUS_CONNECTED_BITN                               2
#define AON_WUC_PWRSTAT_AUX_BUS_CONNECTED_M                         0x00000004
#define AON_WUC_PWRSTAT_AUX_BUS_CONNECTED_S                                  2

// Field:     [1] AUX_RESET_DONE
//
// Indicates Reset Done from AUX:
//
// 0: AUX is being reset
// 1: AUX reset is released
#define AON_WUC_PWRSTAT_AUX_RESET_DONE                              0x00000002
#define AON_WUC_PWRSTAT_AUX_RESET_DONE_BITN                                  1
#define AON_WUC_PWRSTAT_AUX_RESET_DONE_M                            0x00000002
#define AON_WUC_PWRSTAT_AUX_RESET_DONE_S                                     1

//*****************************************************************************
//
// Register: AON_WUC_O_SHUTDOWN
//
//*****************************************************************************
// Field:     [0] EN
//
// Writing a 1 to this bit forces a shutdown request to be registered and all
// I/O values to be latched - in the PAD ring, possibly enabling I/O wakeup.
// Writing 0 will cancel a registered shutdown request and open th I/O latches
// residing in the PAD ring.
//
// A registered shutdown request takes effect the next time power down
// conditions exists. At this time, the will not enter Powerdown mode, but
// instead it will turn off all internal powersupplies, effectively putting the
// device into Shutdown mode.
#define AON_WUC_SHUTDOWN_EN                                         0x00000001
#define AON_WUC_SHUTDOWN_EN_BITN                                             0
#define AON_WUC_SHUTDOWN_EN_M                                       0x00000001
#define AON_WUC_SHUTDOWN_EN_S                                                0

//*****************************************************************************
//
// Register: AON_WUC_O_CTL0
//
//*****************************************************************************
// Field:     [8] PWR_DWN_DIS
//
// Controls whether MCU and AUX requesting to be powered off will enable a
// transition to powerdown:
//
// 0: Enabled
// 1: Disabled
#define AON_WUC_CTL0_PWR_DWN_DIS                                    0x00000100
#define AON_WUC_CTL0_PWR_DWN_DIS_BITN                                        8
#define AON_WUC_CTL0_PWR_DWN_DIS_M                                  0x00000100
#define AON_WUC_CTL0_PWR_DWN_DIS_S                                           8

// Field:     [3] AUX_SRAM_ERASE
//
// Internal. Only to be used through TI provided API.
#define AON_WUC_CTL0_AUX_SRAM_ERASE                                 0x00000008
#define AON_WUC_CTL0_AUX_SRAM_ERASE_BITN                                     3
#define AON_WUC_CTL0_AUX_SRAM_ERASE_M                               0x00000008
#define AON_WUC_CTL0_AUX_SRAM_ERASE_S                                        3

// Field:     [2] MCU_SRAM_ERASE
//
// Internal. Only to be used through TI provided API.
#define AON_WUC_CTL0_MCU_SRAM_ERASE                                 0x00000004
#define AON_WUC_CTL0_MCU_SRAM_ERASE_BITN                                     2
#define AON_WUC_CTL0_MCU_SRAM_ERASE_M                               0x00000004
#define AON_WUC_CTL0_MCU_SRAM_ERASE_S                                        2

//*****************************************************************************
//
// Register: AON_WUC_O_CTL1
//
//*****************************************************************************
// Field:     [1] MCU_RESET_SRC
//
// Indicates source of last MCU Voltage Domain warm reset request:
//
// 0: MCU SW reset
// 1: JTAG reset
//
// This bit can only be cleared by writing a 1 to it
#define AON_WUC_CTL1_MCU_RESET_SRC                                  0x00000002
#define AON_WUC_CTL1_MCU_RESET_SRC_BITN                                      1
#define AON_WUC_CTL1_MCU_RESET_SRC_M                                0x00000002
#define AON_WUC_CTL1_MCU_RESET_SRC_S                                         1

// Field:     [0] MCU_WARM_RESET
//
// Indicates type of last MCU Voltage Domain reset:
//
// 0: Last MCU reset was not a warm reset
// 1: Last MCU reset was a warm reset (requested from MCU or JTAG as indicated
// in MCU_RESET_SRC)
//
// This bit can only be cleared by writing a 1 to it
#define AON_WUC_CTL1_MCU_WARM_RESET                                 0x00000001
#define AON_WUC_CTL1_MCU_WARM_RESET_BITN                                     0
#define AON_WUC_CTL1_MCU_WARM_RESET_M                               0x00000001
#define AON_WUC_CTL1_MCU_WARM_RESET_S                                        0

//*****************************************************************************
//
// Register: AON_WUC_O_RECHARGECFG
//
//*****************************************************************************
// Field:    [31] ADAPTIVE_EN
//
// Enable adaptive recharge
//
// Note: Recharge can be turned completely of by setting MAX_PER_E=7 and
// MAX_PER_M=31 and this bitfield to 0
#define AON_WUC_RECHARGECFG_ADAPTIVE_EN                             0x80000000
#define AON_WUC_RECHARGECFG_ADAPTIVE_EN_BITN                                31
#define AON_WUC_RECHARGECFG_ADAPTIVE_EN_M                           0x80000000
#define AON_WUC_RECHARGECFG_ADAPTIVE_EN_S                                   31

// Field: [23:20] C2
//
// Gain factor for adaptive recharge algorithm
//
// period_new=period * ( 1+/-(2^-C1+2^-C2) )
// Valid values for C2 is 2 to 10
//
// Note: Rounding may cause adaptive recharge not to start for very small
// values of both Gain and Initial period. Criteria for algorithm to start is
// MAX(PERIOD*2^-C1,PERIOD*2^-C2) >= 1
#define AON_WUC_RECHARGECFG_C2_W                                             4
#define AON_WUC_RECHARGECFG_C2_M                                    0x00F00000
#define AON_WUC_RECHARGECFG_C2_S                                            20

// Field: [19:16] C1
//
// Gain factor for adaptive recharge algorithm
//
// period_new=period * ( 1+/-(2^-C1+2^-C2) )
// Valid values for C1 is 1 to 10
//
// Note: Rounding may cause adaptive recharge not to start for very small
// values of both Gain and Initial period. Criteria for algorithm to start is
// MAX(PERIOD*2^-C1,PERIOD*2^-C2) >= 1
#define AON_WUC_RECHARGECFG_C1_W                                             4
#define AON_WUC_RECHARGECFG_C1_M                                    0x000F0000
#define AON_WUC_RECHARGECFG_C1_S                                            16

// Field: [15:11] MAX_PER_M
//
// This register defines the maximum period that the recharge algorithm can
// take, i.e. it defines  the maximum number of cycles between 2 recharges.
// The maximum number of cycles is specified with a 5 bit mantissa and 3 bit
// exponent:
// MAXCYCLES=(MAX_PER_M*16+15)*2^MAX_PER_E
// This field sets the mantissa of MAXCYCLES
#define AON_WUC_RECHARGECFG_MAX_PER_M_W                                      5
#define AON_WUC_RECHARGECFG_MAX_PER_M_M                             0x0000F800
#define AON_WUC_RECHARGECFG_MAX_PER_M_S                                     11

// Field:  [10:8] MAX_PER_E
//
// This register defines the maximum period that the recharge algorithm can
// take, i.e. it defines  the maximum number of cycles between 2 recharges.
// The maximum number of cycles is specified with a 5 bit mantissa and 3 bit
// exponent:
// MAXCYCLES=(MAX_PER_M*16+15)*2^MAX_PER_E
// This field sets the exponent MAXCYCLES
#define AON_WUC_RECHARGECFG_MAX_PER_E_W                                      3
#define AON_WUC_RECHARGECFG_MAX_PER_E_M                             0x00000700
#define AON_WUC_RECHARGECFG_MAX_PER_E_S                                      8

// Field:   [7:3] PER_M
//
// Number of 32 KHz clocks between activation of recharge controller
// For recharge algorithm, PERIOD is the initial period when entering powerdown
// mode. The adaptive recharge algorithm will not change this register
// PERIOD will effectively be a 16 bit value coded in a 5 bit mantissa and 3
// bit exponent:
// This field sets the Mantissa of the Period.
// PERIOD=(PER_M*16+15)*2^PER_E
#define AON_WUC_RECHARGECFG_PER_M_W                                          5
#define AON_WUC_RECHARGECFG_PER_M_M                                 0x000000F8
#define AON_WUC_RECHARGECFG_PER_M_S                                          3

// Field:   [2:0] PER_E
//
// Number of 32 KHz clocks between activation of recharge controller
// For recharge algorithm, PERIOD is the initial period when entering powerdown
// mode. The adaptive recharge algorithm will not change this register
// PERIOD will effectively be a 16 bit value coded in a 5 bit mantissa and 3
// bit exponent:
// This field sets the Exponent of the Period.
// PERIOD=(PER_M*16+15)*2^PER_E
#define AON_WUC_RECHARGECFG_PER_E_W                                          3
#define AON_WUC_RECHARGECFG_PER_E_M                                 0x00000007
#define AON_WUC_RECHARGECFG_PER_E_S                                          0

//*****************************************************************************
//
// Register: AON_WUC_O_RECHARGESTAT
//
//*****************************************************************************
// Field: [19:16] VDDR_SMPLS
//
// The last 4 VDDR samples, bit 0 being the newest.
//
// The register is being updated in every recharge period with a shift left,
// and bit 0 is updated with the last VDDR sample, ie a 1 is shiftet in in case
// VDDR > VDDR_threshold just before recharge starts. Otherwise a 0 will be
// shifted in.
#define AON_WUC_RECHARGESTAT_VDDR_SMPLS_W                                    4
#define AON_WUC_RECHARGESTAT_VDDR_SMPLS_M                           0x000F0000
#define AON_WUC_RECHARGESTAT_VDDR_SMPLS_S                                   16

// Field:  [15:0] MAX_USED_PER
//
// The maximum value of recharge period seen with VDDR>threshold.
//
// The VDDR voltage is compared against the threshold voltage at  just before
// each recharge. If VDDR is above threshold, MAX_USED_PER is updated with max
// ( current recharge peride; MAX_USED_PER )  This way MAX_USED_PER can track
// the recharge period where VDDR is decharged to the threshold value. We can
// therefore use the value as an indication of the leakage current during
// recharge.
//
// This bitfield is cleared to 0 when writing this register.
#define AON_WUC_RECHARGESTAT_MAX_USED_PER_W                                 16
#define AON_WUC_RECHARGESTAT_MAX_USED_PER_M                         0x0000FFFF
#define AON_WUC_RECHARGESTAT_MAX_USED_PER_S                                  0

//*****************************************************************************
//
// Register: AON_WUC_O_OSCCFG
//
//*****************************************************************************
// Field:   [7:3] PER_M
//
// Number of 32 KHz clocks between oscillator amplitude calibrations.
// When this counter expires, an oscillator amplitude compensation is triggered
// immediately in Active mode. When this counter expires in Powerdown mode an
// internal flag is set such that the amplitude compensation is postponed until
// the next recharge occurs.
//
// The Period will effectively be a 16 bit value coded in a 5 bit mantissa and
// 3 bit exponent
// PERIOD=(PER_M*16+15)*2^PER_E
// This field sets the mantissa
// Note: Oscillator amplitude calibration is turned of when both this bitfield
// and PER_E are set to 0
#define AON_WUC_OSCCFG_PER_M_W                                               5
#define AON_WUC_OSCCFG_PER_M_M                                      0x000000F8
#define AON_WUC_OSCCFG_PER_M_S                                               3

// Field:   [2:0] PER_E
//
// Number of 32 KHz clocks between oscillator amplitude calibrations.
// When this counter expires, an oscillator amplitude compensation is triggered
// immediately in Active mode. When this counter expires in Powerdown mode an
// internal flag is set such that the amplitude compensation is postponed until
// the next recharge occurs.
// The Period will effectively be a 16 bit value coded in a 5 bit mantissa and
// 3 bit exponent
// PERIOD=(PER_M*16+15)*2^PER_E
// This field sets the exponent
// Note: Oscillator amplitude calibration is turned of when both  PER_M and
// this bitfield are set to 0
#define AON_WUC_OSCCFG_PER_E_W                                               3
#define AON_WUC_OSCCFG_PER_E_M                                      0x00000007
#define AON_WUC_OSCCFG_PER_E_S                                               0

//*****************************************************************************
//
// Register: AON_WUC_O_JTAGCFG
//
//*****************************************************************************
// Field:     [8] JTAG_PD_FORCE_ON
//
// Controls JTAG PowerDomain power state:
//
// 0: Controlled exclusively by debug subsystem. (JTAG Powerdomain will be
// powered off unless a debugger is attached)
// 1: JTAG Power Domain is forced on, independent of debug subsystem.
//
// NB: The reset value causes JTAG Power Domain to be powered on by default.
// Software must clear this bit to turn off the JTAG Power Domain
#define AON_WUC_JTAGCFG_JTAG_PD_FORCE_ON                            0x00000100
#define AON_WUC_JTAGCFG_JTAG_PD_FORCE_ON_BITN                                8
#define AON_WUC_JTAGCFG_JTAG_PD_FORCE_ON_M                          0x00000100
#define AON_WUC_JTAGCFG_JTAG_PD_FORCE_ON_S                                   8

//*****************************************************************************
//
// Register: AON_WUC_O_JTAGUSERCODE
//
//*****************************************************************************
// Field:  [31:0] USER_CODE
//
// 32-bit JTAG USERCODE register feeding main JTAG TAP
// NB: This field can be locked
#define AON_WUC_JTAGUSERCODE_USER_CODE_W                                    32
#define AON_WUC_JTAGUSERCODE_USER_CODE_M                            0xFFFFFFFF
#define AON_WUC_JTAGUSERCODE_USER_CODE_S                                     0


#endif // __AON_WUC__
