diff options
Diffstat (limited to 'inc/platform/rtl876x.h')
-rw-r--r-- | inc/platform/rtl876x.h | 3593 |
1 files changed, 3593 insertions, 0 deletions
diff --git a/inc/platform/rtl876x.h b/inc/platform/rtl876x.h new file mode 100644 index 0000000..4e9826d --- /dev/null +++ b/inc/platform/rtl876x.h @@ -0,0 +1,3593 @@ + +/** +***************************************************************************************** +* Copyright(c) 2020, Realtek Semiconductor Corporation. All rights reserved. +***************************************************************************************** + * @file rtl876x.h + * @brief CMSIS Cortex-M0+ Peripheral Access Layer Header File for + * RTL876X from Realtek Semiconductor. + * @date 2020.10.10 + * @version v1.0 + + * @date 3. March 2015 + * + * @note Generated with SVDConv Vx.xxp + * from CMSIS SVD File 'RTL876X.xml' Version x.xC, + * + * @par Copyright (c) 2020 Realtek Semiconductor. All Rights Reserved. + * + * The information contained herein is property of Realtek Semiconductor. + * Terms and conditions of usage are described in detail in Realtek + * SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT. + * + * Licensees are granted free, non-transferable use of the information. NO + * WARRANTY of ANY KIND is provided. This heading must NOT be removed from + * the file. + * + * + + * ************************************************************************************* + * @attention + * <h2><center>© COPYRIGHT 2020 Realtek Semiconductor Corporation</center></h2> + * ************************************************************************************* +*/ + +#ifndef RTL876X_H +#define RTL876X_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/** @defgroup RTL876X Rtl876x + * @brief CMSIS Cortex-M0+ peripheral access layer header file for + * RTL876X from Realtek Semiconductor + * @{ + */ + +/*============================================================================* + * Types +*============================================================================*/ +/** @defgroup RTL876x_Exported_types RTL876X Exported types + * @{ + */ + +/** brief Interrupt Number Definition */ +typedef enum IRQn +{ + /* ------------------- Cortex-M0+ Processor Exceptions Numbers ------------------- */ + NonMaskableInt_IRQn = -14, /**< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /**< 3 HardFault Interrupt */ + SVCall_IRQn = -5, /**< 11 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /**< 12 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /**< 14 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< 15 System Tick Interrupt */ + + System_IRQn = 0, /**< [0] System Interrupt */ + WDG_IRQn, /**< [1] Watch Dog Interrupt */ + BTMAC_IRQn, /**< [2] BTMAC Interrupt ( an Extension of interrupt ) */ + Timer3_IRQn, /**< [3] Timer3 global interrupt */ + Timer2_IRQn, /**< [4] Timer2 global interrupt */ + Platform_IRQn, /**< [5] Platform error interrupt */ + I2S0_RX_IRQn, /**< [6] I2S0 RX interrupt */ + I2S0_TX_IRQn, /**< [7] I2S0 TX interrupt */ + Timer4_5_IRQn, /**< [8] Timer 4 to 5 interrupt ( an Extension of interrupt ) */ + GPIO4_IRQn, /**< [9] GPIO 4 interrupt */ + GPIO5_IRQn, /**< [10] GPIO 5 interrupt */ + UART1_IRQn, /**< [11] UART1 interrupt */ + UART0_IRQn, /**< [12] UART0 interrupt */ + RTC_IRQn, /**< [13] Realtime counter interrupt */ + SPI0_IRQn, /**< [14] SPI0 interrupt */ + SPI1_IRQn, /**< [15] SPI1 interrupt */ + I2C0_IRQn, /**< [16] I2C0 interrupt */ + I2C1_IRQn, /**< [17] I2C1 interrupt */ + ADC_IRQn, /**< [18] ADC global interrupt */ + Peripheral_IRQn, /**< [19] Peripheral Interrupt ( an Extension of interrupt ) */ + GDMA0_Channel0_IRQn, /**< [20] RTK-DMA0 channel 0 global interrupt */ + GDMA0_Channel1_IRQn, /**< [21] RTK-DMA0 channel 1 global interrupt */ + GDMA0_Channel2_IRQn, /**< [22] RTK-DMA0 channel 2 global interrupt */ + GDMA0_Channel3_IRQn, /**< [23] RTK-DMA0 channel 3 global interrupt */ + ENHANCED_TIMER0_IRQn, /**< [24] Enhanced timer0 interrupt */ + ENHANCED_TIMER1_IRQn, /**< [25] Enhanced timer1 interrupt */ + GPIO_Group3_IRQn, /**< [26] GPIO Group3 Interrupt ( an Extension of interrupt ) */ + GPIO_Group2_IRQn, /**< [27] GPIO Group2 Interrupt ( an Extension of interrupt ) */ + IR_IRQn, /**< [28] IR Interrupt */ + GPIO_Group1_IRQn, /**< [29] GPIO Group1 Interrupt ( an Extension of interrupt ) */ + GPIO_Group0_IRQn, /**< [30] GPIO Group0 Interrupt ( an Extension of interrupt ) */ + Reserved_IRQn, /**< [31] Reserved */ + /****** Bee3 Extension Interrupt Numbers ************/ + TIMER4_IRQ = 8, + TIMER5_IRQ = 8, + GPIO3_IRQn = 26, + GPIO7_IRQn = 26, + GPIO11_IRQn = 26, + GPIO15_IRQn = 26, + GPIO19_IRQn = 26, + GPIO23_IRQn = 26, + GPIO27_IRQn = 26, + GPIO31_IRQn = 26, + GPIO2_IRQn = 27, + GPIO6_IRQn = 27, + GPIO10_IRQn = 27, + GPIO14_IRQn = 27, + GPIO18_IRQn = 27, + GPIO22_IRQn = 27, + GPIO26_IRQn = 27, + GPIO30_IRQn = 27, + GPIO1_IRQn = 29, + GPIO9_IRQn = 29, + GPIO13_IRQn = 29, + GPIO17_IRQn = 29, + GPIO21_IRQn = 29, + GPIO25_IRQn = 29, + GPIO29_IRQn = 29, + GPIO0_IRQn = 30, + GPIO8_IRQn = 30, + GPIO12_IRQn = 30, + GPIO16_IRQn = 30, + GPIO20_IRQn = 30, + GPIO24_IRQn = 30, + GPIO28_IRQn = 30, + Peripheral_First_IRQn = 50, + SPIC0_IRQn = 50, + qdecode_IRQn = 51, + KeyScan_IRQn = 52, + SPI2W_IRQn = 53, + LPCOMP_IRQn = 54, + PTA_Mailbox_IRQn = 55, + CAP_TOUCH_IRQn = 56, + TRNG_IRQn = 57, +} IRQn_Type, *PIRQn_Type; +/** @} */ /* End of group RTL876x_Exported_types */ + +/** @defgroup Configuration_of_CMSIS Configuration of CMSIS + * @brief Configuration of the cm4 Processor and Core Peripherals + * @{ + */ +/* ----------------Configuration of the cm0+ Processor and Core Peripherals---------------- */ +#define __FPU_PRESENT 0 /* FPU present */ +#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +/** @} */ /* End of group Configuration_of_CMSIS */ + +/*============================================================================* + * Header Files +*============================================================================*/ +/* Processor and core peripherals */ +#include "core_cm0plus.h" +#include "system_rtl876x.h" +#include "rtl876x_ic_type.h" + +/*============================================================================* + * Types +*============================================================================*/ +/** @addtogroup RTL876x_Exported_types RTL876X Exported types + * @{ + */ + +typedef enum +{ + RESET = 0, + SET = !RESET +} FlagStatus, ITStatus; + +typedef enum +{ + DISABLE = 0, + ENABLE = !DISABLE +} FunctionalState; + +#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) +//typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; + +/** @} */ /* End of group RTL876x_Exported_types */ + + +/*============================================================================* + * RTL876X Pin Number +*============================================================================*/ +/** @defgroup RTL876X_Pin_Number RTL876X Pin Number + * @{ + */ +#if (IC_TYPE == IC_TYPE_BEE3) + +#define P0_0 0 /**<GPIO0 */ +#define P0_1 1 /**<GPIO1 */ +#define P0_2 2 /**<GPIO2 */ +#define P0_3 3 /**<GPIO3 */ +#define P0_4 4 /**<GPIO4 */ +#define P0_5 5 /**<GPIO5 */ +#define P0_6 6 /**<GPIO6 */ +#define P0_7 7 /**<GPIO7 */ +#define P1_0 8 /**<GPIO8 */ +#define P1_1 9 /**<GPIO9 */ +#define P1_3 11 +#define P1_4 12 +#define P1_6 14 /**<GPIO14 */ +#define P1_7 15 /**<GPIO15 */ +#define P2_0 16 /**<GPIO16 */ +#define P2_1 17 /**<GPIO17 */ +#define P2_2 18 /**<GPIO18 */ +#define P2_3 19 /**<GPIO19 */ +#define P2_4 20 /**<GPIO20 */ +#define P2_5 21 /**<GPIO21 */ +#define P2_6 22 /**<GPIO22 */ +#define P2_7 23 /**<GPIO23 */ +#define P3_0 24 /**<GPIO24 */ +#define P3_1 25 /**<GPIO25 */ +#define P3_2 26 /**<GPIO26 */ +#define P3_3 27 /**<GPIO27 */ +#define P3_4 28 /**<GPIO28 */ +#define P3_5 29 /**<GPIO29 */ +#define P3_6 30 /**<GPIO30 */ +#define P4_0 32 /**<GPIO13 */ +#define P4_1 33 /**<GPIO29 */ +#define P4_2 34 /**<GPIO30 */ +#define P4_3 35 /**<GPIO31 */ +#define H_0 36 /**<GPIO10 MICBIAS */ +#define P5_1 37 /**<GPIO11 */ +#define P5_2 38 /**<GPIO12 */ + +#else + +#define P0_0 0 /**<GPIO0 */ +#define P0_1 1 /**<GPIO1 */ +#define P0_2 2 /**<GPIO2 */ +#define P0_3 3 /**<GPIO3 */ +#define P0_4 4 /**<GPIO4 */ +#define P0_5 5 /**<GPIO5 */ +#define P0_6 6 /**<GPIO6 */ +#define P0_7 7 /**<GPIO7 */ +#define P1_0 8 /**<GPIO8 */ +#define P1_1 9 /**<GPIO9 */ +#define P1_2 10 /**<GPIO10 */ +#define P1_3 11 /**<GPIO11 */ +#define P1_4 12 /**<GPIO12 */ +#define P1_5 13 /**<GPIO13 */ +#define P1_6 14 /**<GPIO14 */ +#define P1_7 15 /**<GPIO15 */ +#define P2_0 16 /**<GPIO16 */ +#define P2_1 17 /**<GPIO17 */ +#define P2_2 18 /**<GPIO18 */ +#define P2_3 19 /**<GPIO19 */ +#define P2_4 20 /**<GPIO20 */ +#define P2_5 21 /**<GPIO21 */ +#define P2_6 22 /**<GPIO22 */ +#define P2_7 23 /**<GPIO23 */ +#define P3_0 24 /**<GPIO24 */ +#define P3_1 25 /**<GPIO25 */ +#define P3_2 26 /**<GPIO26 */ +#define P3_3 27 /**<GPIO27 */ +#define P3_4 28 /**<GPIO28 */ +#define P3_5 29 /**<GPIO29 */ +#define P3_6 30 /**<GPIO30 */ +#define P4_0 32 /**<GPIO28 */ +#define P4_1 33 /**<GPIO29 */ +#define P4_2 34 /**<GPIO30 */ +#define P4_3 35 /**<GPIO31 */ +#define H_0 36 /**<GPIO25 MICBIAS */ +#define H_1 37 /**<GPIO26 32K_XI */ +#define H_2 38 /**<GPIO27 32K_XO */ +#endif + +/** @} */ /* End of group RTL876X_Pin_Number */ + + +/* ================================================================================ */ +/* ================ Peripheral Registers Structures Section ================ */ +/* ================================================================================ */ + +/** @defgroup RTL876X_Peripheral_Registers_Structures RTL876X Register Structure + * @{ + */ + +/* ================================================================================ */ +/* ================ ADC ================ */ +/* ================================================================================ */ + +/** + * @brief Analog to digital converter. (ADC) + */ + +typedef struct /*!< ADC Structure */ +{ + __O uint32_t FIFO; //!<0x00 + __IO uint32_t CR; //!<0x04 + __IO uint32_t SCHCR; //!<0x08 + __IO uint32_t INTCR; //!<0x0C + __IO uint32_t SCHTAB0; //!<0x10 + __IO uint32_t SCHTAB1; //!<0x14 + __IO uint32_t SCHTAB2; //!<0x18 + __IO uint32_t SCHTAB3; //!<0x1C + __IO uint32_t SCHTAB4; //!<0x20 + __IO uint32_t SCHTAB5; //!<0x24 + __IO uint32_t SCHTAB6; //!<0x28 + __IO uint32_t SCHTAB7; //!<0x2C + __IO uint32_t SCHD0; //!<0x30 + __IO uint32_t SCHD1; //!<0x34 + __IO uint32_t SCHD2; //!<0x38 + __IO uint32_t SCHD3; //!<0x3C + __IO uint32_t SCHD4; //!<0x40 + __IO uint32_t SCHD5; //!<0x44 + __IO uint32_t SCHD6; //!<0x48 + __IO uint32_t SCHD7; //!<0x4C + __IO uint32_t PWRDLY; //!<0x50 + __IO uint32_t DATCLK; //!<0x54 + __IO uint32_t ANACTL; //!<0x58 + __IO uint32_t SAMTIM; //!<0x5C + +} ADC_TypeDef; + +/* ================================================================================ */ +/* ================ CODEC ================ */ +/* ================================================================================ */ + +typedef struct +{ + __IO uint32_t ANA_CR0; /*!< 0x00 */ + __IO uint32_t ANA_CR1; /*!< 0x04 */ + __IO uint32_t ANA_CR2; /*!< 0x08 */ +} CODEC_AnalogTypeDef; + +typedef struct +{ + __IO uint32_t CR0; /*!< 0x00 */ + __IO uint32_t ANA_CR1; /*!< 0x04 */ + __IO uint32_t CLK_CR1; /*!< 0x08 */ + __IO uint32_t CLK_CR2; /*!< 0x0C */ + __IO uint32_t CLK_CR3; /*!< 0x10 */ + __IO uint32_t RSVD0[2]; + __IO uint32_t I2S_CTRL; /*!< 0x1C */ + __IO uint32_t ADC0_CTRL0; /*!< 0x20 */ + __IO uint32_t ADC0_CTRL1; /*!< 0x24 */ +} CODEC_TypeDef; + +/* ================================================================================ */ +/* ================ CAP TOUCH ================ */ +/* ================================================================================ */ + +typedef struct +{ + __IO uint32_t CR; /*!< 0x00 */ + __IO uint32_t SCAN_PERIOD; /*!< 0x04 */ + __IO uint32_t ETC_CR; /*!< 0x08 */ + __IO uint32_t SNR_INF; /*!< 0x0C */ + __IO uint32_t DEBUG_CR; /*!< 0x10 */ + __IO uint32_t FIFO; /*!< 0x14 */ + __IO uint32_t RAW_FIFO; /*!< 0x18 */ + __IO uint32_t GUARD_CNT; /*!< 0x1C */ + __IO uint32_t INT_EN; /*!< 0x20 */ + __IO uint32_t INT_SR; /*!< 0x24 */ + __IO uint32_t RAW_INT_SR; /*!< 0x28 */ + __IO uint32_t RSVD0; /*!< 0x2C */ + __IO uint32_t INT_CLR; /*!< 0x30 */ + __IO uint32_t INT_SCLR; /*!< 0x34 */ + __IO uint32_t RSVD1[2]; + __IO uint32_t DBG_SEL; /*!< 0x40 */ + __IO uint32_t DBG_PORT; /*!< 0x44 */ + __IO uint32_t ECO_INF0; /*!< 0x48 */ + __IO uint32_t ECO_INF1; /*!< 0x4C */ + __IO uint32_t VERSION; /*!< 0x50 */ +} CTC_TypeDef; + +typedef struct +{ + __IO uint32_t CR; /*!< 0x00 */ + __IO uint32_t TOUCH_TH; /*!< 0x04 */ + __IO uint32_t MBIAS; /*!< 0x08 */ + __IO uint32_t DATA; /*!< 0x0C */ +} CTC_ChannelTypeDef; + +typedef struct +{ + __IO uint32_t SCAN_INI; /*!< 0x00 */ + __IO uint32_t SET_CNT; /*!< 0x04 */ + __O uint32_t TOUCH_CNT01; /*!< 0x08 */ + __O uint32_t TOUCH_CNT23; /*!< 0x0C */ + __O uint32_t TOUCH_SR; /*!< 0x10 */ +} CTC_FSModeTypeDef; + +/* ================================================================================ */ +/* ================ GDMA ================ */ +/* ================================================================================ */ +/** + * @brief GDMA + */ +typedef struct +{ + __I uint32_t RAW_TFR; + uint32_t RSVD0; + __I uint32_t RAW_BLOCK; + uint32_t RSVD1; + __I uint32_t RAW_SRC_TRAN; + uint32_t RSVD2; + __I uint32_t RAW_DST_TRAN; + uint32_t RSVD3; + __I uint32_t RAW_ERR; + uint32_t RSVD4; + + __I uint32_t STATUS_TFR; + uint32_t RSVD5; + __I uint32_t STATUS_BLOCK; + uint32_t RSVD6; + __I uint32_t STATUS_SRC_TRAN; + uint32_t RSVD7; + __I uint32_t STATUS_DST_TRAN; + uint32_t RSVD8; + __I uint32_t STATUS_ERR; + uint32_t RSVD9; + + __IO uint32_t MASK_TFR; + uint32_t RSVD10; + __IO uint32_t MASK_BLOCK; + uint32_t RSVD11; + __IO uint32_t MASK_SRC_TRAN; + uint32_t RSVD12; + __IO uint32_t MASK_DST_TRAN; + uint32_t RSVD13; + __IO uint32_t MASK_ERR; + uint32_t RSVD14; + + __O uint32_t CLEAR_TFR; + uint32_t RSVD15; + __O uint32_t CLEAR_BLOCK; + uint32_t RSVD16; + __O uint32_t CLEAR_SRC_TRAN; + uint32_t RSVD17; + __O uint32_t CLEAR_DST_TRAN; + uint32_t RSVD18; + __O uint32_t CLEAR_ERR; + uint32_t RSVD19; + __O uint32_t StatusInt; + uint32_t RSVD191; + + __IO uint32_t ReqSrcReg; + uint32_t RSVD20; + __IO uint32_t ReqDstReg; + uint32_t RSVD21; + __IO uint32_t SglReqSrcReg; + uint32_t RSVD22; + __IO uint32_t SglReqDstReg; + uint32_t RSVD23; + __IO uint32_t LstSrcReg; + uint32_t RSVD24; + __IO uint32_t LstDstReg; + uint32_t RSVD25; + + __IO uint32_t DmaCfgReg; + uint32_t RSVD26; + __IO uint32_t ChEnReg; + uint32_t RSVD27; + __I uint32_t DmaIdReg; + uint32_t RSVD28; + __IO uint32_t DmaTestReg; + uint32_t RSVD29; +} GDMA_TypeDef; + +typedef struct +{ + __IO uint32_t SAR; + uint32_t RSVD0; + __IO uint32_t DAR; + uint32_t RSVD1; + __IO uint32_t LLP; + uint32_t RSVD2; + __IO uint32_t CTL_LOW; + __IO uint32_t CTL_HIGH; + __IO uint32_t SSTAT; + uint32_t RSVD4; + __IO uint32_t DSTAT; + uint32_t RSVD5; + __IO uint32_t SSTATAR; + uint32_t RSVD6; + __IO uint32_t DSTATAR; + uint32_t RSVD7; + __IO uint32_t CFG_LOW; + __IO uint32_t CFG_HIGH; + __IO uint32_t SGR; + uint32_t RSVD9; + __IO uint32_t DSR; + uint32_t RSVD10; +} GDMA_ChannelTypeDef; + +/* ================================================================================ */ +/* ================ GPIO ================ */ +/* ================================================================================ */ + +/** + * @brief General purpose input and output. (GPIO) + */ + +typedef struct +{ + __IO uint32_t DATAOUT; /*!< Data register: data output */ + __IO uint32_t DATADIR; /*!< Data direction register */ + __IO uint32_t DATASRC; /*!< Data source register */ + uint32_t RSVD[9]; + __IO uint32_t INTEN; /*!< Interrupt enable register */ + __IO uint32_t INTMASK; /*!< Interrupt mask register */ + __IO uint32_t INTTYPE; /*!< Interrupt level register */ + __IO uint32_t INTPOLARITY; /*!< Interrupt polarity register */ + __IO uint32_t INTSTATUS; /*!< Interrupt status of Port A */ + __IO uint32_t RAWINTSTATUS; /*!< Raw interrupt status of Port A (premasking) */ + __IO uint32_t DEBOUNCE; /*!< Debounce enable register */ + __O uint32_t INTCLR; /*!< clear interrupt register */ + __I uint32_t DATAIN; /*!< external port register */ + uint32_t RSVD1[3]; + __IO uint32_t LSSYNC; /*!< Level-sensitive synchronization enable register*/ + __I uint32_t IDCODE; /*!< ID code register */ + __IO uint32_t INTBOTHEDGE; /*!< Both edge to trigger interrupt*/ +} GPIO_TypeDef; + +/* ================================================================================ */ +/* ================ I2C ================= */ +/* ================================================================================ */ + +/** + * @brief I2C + */ +typedef struct +{ + __IO uint32_t IC_CON; + __IO uint32_t IC_TAR; + __IO uint32_t IC_SAR; + __IO uint32_t IC_HS_MADDR; + __IO uint32_t IC_DATA_CMD; + __IO uint32_t IC_SS_SCL_HCNT; + __IO uint32_t IC_SS_SCL_LCNT; + __IO uint32_t IC_FS_SCL_HCNT; + __IO uint32_t IC_FS_SCL_LCNT; + __IO uint32_t IC_HS_SCL_HCNT; + __IO uint32_t IC_HS_SCL_LCNT; + __I uint32_t IC_INTR_STAT; + __IO uint32_t IC_INTR_MASK; + __I uint32_t IC_RAW_INTR_STAT; + __IO uint32_t IC_RX_TL; + __IO uint32_t IC_TX_TL; + __I uint32_t IC_CLR_INTR; + __I uint32_t IC_CLR_RX_UNDER; + __I uint32_t IC_CLR_RX_OVER; + __I uint32_t IC_CLR_TX_OVER; + __I uint32_t IC_CLR_RD_REQ; + __I uint32_t IC_CLR_TX_ABRT; + __I uint32_t IC_CLR_RX_DONE; + __I uint32_t IC_CLR_ACTIVITY; + __I uint32_t IC_CLR_STOP_DET; + __I uint32_t IC_CLR_START_DET; + __I uint32_t IC_CLR_GEN_CALL; + __IO uint32_t IC_ENABLE; + __I uint32_t IC_STATUS; + __I uint32_t IC_TXFLR; + __I uint32_t IC_RXFLR; + __IO uint32_t IC_SDA_HOLD; + __I uint32_t IC_TX_ABRT_SOURCE; + __IO uint32_t IC_SLV_DATA_NACK_ONLY; + __IO uint32_t IC_DMA_CR; + __IO uint32_t IC_DMA_TDLR; + __IO uint32_t IC_DMA_RDLR; + __IO uint32_t IC_SDA_SETUP; + __IO uint32_t IC_ACK_GENERAL_CALL; + __IO uint32_t IC_ENABLE_STATUS; +} I2C_TypeDef; + +/* ================================================================================ */ +/* ================ I2S ================= */ +/* ================================================================================ */ + +/** + * @brief I2S + */ +typedef struct +{ + __O uint32_t TX_DR; /*!< 0x00 */ + __IO uint32_t CTRL0; /*!< 0x04 */ + __IO uint32_t CTRL1; /*!< 0x08 */ + __IO uint32_t DSP_INT_CR; /*!< 0x0C */ + __I uint32_t RX_DR; /*!< 0x10 */ + __I uint32_t FIFO_SR; /*!< 0x14 */ + __IO uint32_t ERROR_CNT_SR; /*!< 0x18 */ + __IO uint32_t BCLK_DIV; /*!< 0x1C */ + __IO uint32_t DMA_TRDLR; /*!< 0x20 */ + __I uint32_t SR; /*!< 0x24 */ +} I2S_TypeDef; + +/* ================================================================================ */ +/* ================ IR ================ */ +/* ================================================================================ */ + +/** + * @brief IR. + */ + +typedef struct +{ + __IO uint32_t CLK_DIV; /*!< 0x00 */ + __IO uint32_t TX_CONFIG; /*!< 0x04 */ + __IO uint32_t TX_SR; /*!< 0x08 */ + __IO uint32_t RSVD0; /*!< 0x0c */ + __IO uint32_t TX_INT_CLR; /*!< 0x10 */ + __IO uint32_t TX_FIFO; /*!< 0x14 */ + __IO uint32_t RX_CONFIG; /*!< 0x18 */ + __IO uint32_t RX_SR; /*!< 0x1c */ + __IO uint32_t RX_INT_CLR; /*!< 0x20 */ + __IO uint32_t RX_CNT_INT_SEL; /*!< 0x24 */ + __IO uint32_t RX_FIFO; /*!< 0x28 */ + __IO uint32_t IR_VERSION; /*!< 0x2c */ + __O uint32_t RX_CUR_CNT; /*!< 0x30 */ + __IO uint32_t RX_EX_INT; /*!< 0x34 */ + __IO uint32_t RSVD1[4]; + __IO uint32_t IR_TX_COMPE; /*!< 0x48 */ + __IO uint32_t RSVD2; /*!< 0x4C */ + __IO uint32_t DMA_CONFIG; /*!< 0x50 */ +} IR_TypeDef; + +/* ================================================================================ */ +/* ================ Key Scan ================ */ +/* ================================================================================ */ + +/** + * @brief Key Scan. (KeyScan) + */ + +typedef struct /*!< KeyScan Structure */ +{ + + __IO uint32_t CLKDIV; /*!< 0x00 */ + __IO uint32_t TIMERCR; /*!< 0x04 */ + __IO uint32_t CR; /*!< 0x08 */ + __IO uint32_t COLCR; /*!< 0x0C */ + __IO uint32_t ROWCR; /*!< 0x10 */ + __I uint32_t FIFODATA; /*!< 0x14 */ + __IO uint32_t INTMASK; /*!< 0x18 */ + __IO uint32_t INTCLR; /*!< 0x1C */ + __I uint32_t STATUS; /*!< 0x20 */ + +} KEYSCAN_TypeDef; + +/* ================================================================================ */ +/* ================ LPC ================= */ +/* ================================================================================ */ + +/** + * @brief Real time for LP (RTC) + */ +typedef struct +{ + __IO uint32_t LPC_CR0; + __IO uint32_t LPC_SR; + __IO uint32_t LPC_CMP; + __IO uint32_t LPC_CNT; +} LPC_TypeDef; + +/* ================================================================================ */ +/* ================ Pinmux ================ */ +/* ================================================================================ */ + +/** + * @brief Pinmux. (Pinmux) + */ + +typedef struct /*!< Pinmux Structure */ +{ + __IO uint32_t + CFG[10]; /*!< */ +} PINMUX_TypeDef; + +/* ================================================================================ */ +/* ================ PWM ================ */ +/* ================================================================================ */ + +/** + * @brief PWM + */ +typedef struct +{ + __IO uint32_t CR; /*!< 0x00*/ +} PWM_TypeDef; + +typedef struct +{ + __IO uint32_t CR; /*!< 0x00*/ +} ENHPWM_TypeDef; + +/* ================================================================================ */ +/* ================ QDEC ================ */ +/* ================================================================================ */ + +/** + * @brief Rotary decoder. (QDEC) + */ + +typedef struct /*!< QDEC Structure */ +{ + __IO uint32_t REG_DIV; /*!< 0x00 */ + __IO uint32_t REG_CR_X; /*!< 0x04 */ + __IO uint32_t REG_SR_X; /*!< 0x08 */ + __IO uint32_t REG_CR_Y; /*!< 0x0C */ + __IO uint32_t REG_SR_Y; /*!< 0x10 */ + __IO uint32_t REG_CR_Z; /*!< 0x14 */ + __IO uint32_t REG_SR_Z; /*!< 0x18 */ + __IO uint32_t INT_MASK; /*!< 0x1C */ + __IO uint32_t INT_SR; /*!< 0x20 */ + __IO uint32_t INT_CLR; /*!< 0x24 */ + __IO uint32_t REG_DBG; /*!< 0x28 */ + __IO uint32_t REG_VERSION; /*!< 0x2C */ +} QDEC_TypeDef; + +/* ================================================================================ */ +/* ================ RTC ================ */ +/* ================================================================================ */ + +/** + * @brief Real time counter 0. (RTC) + */ +typedef struct /*!< RTC Structure */ +{ + __IO uint32_t CR0; /*!< 0x00 */ + __IO uint32_t INT_CLR; /*!< 0x04 */ + __IO uint32_t INT_SR; /*!< 0x08 */ + __IO uint32_t PRESCALER; /*!< 0x0C */ + __IO uint32_t COMP0; /*!< 0x10 */ + __IO uint32_t COMP1; /*!< 0x14 */ + __IO uint32_t COMP2; /*!< 0x18 */ + __IO uint32_t COMP3; /*!< 0x1C */ + __IO uint32_t COMP0GT; /*!< 0x20 */ + __IO uint32_t COMP1GT; /*!< 0x24 */ + __IO uint32_t COMP2GT; /*!< 0x28 */ + __IO uint32_t COMP3GT; /*!< 0x2C */ + __I uint32_t CNT; /*!< 0x30 */ + __IO uint32_t PRE_CNT; /*!< 0x34 */ + __IO uint32_t PRE_COMP; /*!< 0x38 */ + __IO uint32_t BACKUP; /*!< 0x3C */ +} RTC_TypeDef; + +/* ================================================================================ */ +/* ================ 2WIRE_SPI ================ */ +/* ================================================================================ */ + +/** + * @brief 2wire spi, mostly used with mouse sensor. (2WIRE_SPI) + */ + +typedef struct /*!< 3WIRE_SPI Structure */ +{ + __IO uint32_t RSVD0[12]; /*!< 0x00 -- 0x2C for Q-decode */ + __IO uint32_t CFGR; /*!< 0x30 */ + __IO uint32_t CR; + __IO uint32_t INTCR; + __I uint32_t SR; + __IO uint32_t RD0; /*!< 0x40 */ + __IO uint32_t RD1; + __IO uint32_t RD2; + __IO uint32_t RD3; +} SPI3WIRE_TypeDef; + +/* ================================================================================ */ +/* ================ SPI ================ */ +/* ================================================================================ */ + +/** + * @brief SPI master 0. (SPI) + */ +typedef struct /*!< SPI Structure */ +{ + __IO uint32_t CTRLR0; /*!< 0x00 */ + __IO uint32_t CTRLR1; /*!< 0x04 */ + __IO uint32_t SSIENR; /*!< 0x08 */ + __IO uint32_t RSVD_0C; /*!< 0x0C */ + __IO uint32_t SER; /*!< 0x10 */ + __IO uint32_t BAUDR; /*!< 0x14 */ + __IO uint32_t TXFTLR; /*!< 0x18 */ + __IO uint32_t RXFTLR; /*!< 0x1C */ + __I uint32_t TXFLR; /*!< 0x20 */ + __I uint32_t RXFLR; /*!< 0x24 */ + __I uint32_t SR; /*!< 0x28 */ + __IO uint32_t IMR; /*!< 0x2C */ + __I uint32_t ISR; /*!< 0x30 */ + __I uint32_t RISR; /*!< 0x34 */ + __I uint32_t TXOICR; /*!< 0x38 */ + __I uint32_t RXOICR; /*!< 0x3C */ + __I uint32_t RXUICR; /*!< 0x40 */ + __I uint32_t FAEICR;/*RSVD_44;*/ /*!< 0x44 */ + __I uint32_t ICR; /*!< 0x48 */ + __IO uint32_t DMACR; /*!< 0x4C */ + __IO uint32_t DMATDLR; /*!< 0x50 */ + __IO uint32_t DMARDLR; /*!< 0x54 */ + __I uint32_t TXUICR;/*IDR;*/ /*!< 0x58 */ + __I uint32_t SSRICR; /*!< 0x5C */ + __IO uint32_t DR[36]; /*!< 0x60 - 0xEC */ + __IO uint32_t RX_SAMPLE_DLY; /*!< 0xF0 */ +} SPI_TypeDef; + +/* ================================================================================ */ +/* ================ TIM ================ */ +/* ================================================================================ */ + +/** + * @brief TIM + */ +typedef struct +{ + __IO uint32_t LoadCount; /*!< 0x00*/ + __I uint32_t CurrentValue; /*!< 0x04*/ + __IO uint32_t ControlReg; /*!< 0x08*/ + __I uint32_t EOI; /*!< 0x0C*/ + __I uint32_t IntStatus; /*!< 0x10*/ +} TIM_TypeDef; + +/* ================================================================================ */ +/* ================ ENH_TIM ================ */ +/* ================================================================================ */ + +/** + * @brief ENHTIMER + */ +typedef struct +{ + __O uint32_t CUR_CNT; /*!< 0x00*/ + __O uint32_t LATCH_CNT0; /*!< 0x04*/ + __O uint32_t LATCH_CNT1; /*!< 0x08*/ + __O uint32_t LATCH_CNT2; /*!< 0x0C*/ + __IO uint32_t CR; /*!< 0x10*/ + __IO uint32_t MAX_CNT; /*!< 0x14*/ + __IO uint32_t CCR; /*!< 0x18*/ + __IO uint32_t CCR_FIFO; /*!< 0x1C*/ +} ENHTIM_TypeDef; + +/** + * @brief ENHTIMER + */ +typedef struct +{ + __O uint32_t FIFO_SR0; /*!< 0x00*/ + __O uint32_t RSVD0; /*!< 0x04*/ + __O uint32_t FIFO_SR2; /*!< 0x08*/ + __IO uint32_t FIFO_CLR; /*!< 0x0C*/ + __IO uint32_t CMD; /*!< 0x10*/ + __IO uint32_t INT_CMD; /*!< 0x14*/ + __IO uint32_t INT_SR; /*!< 0x18*/ + __O uint32_t MASK_INT_SR; /*!< 0x1C*/ + __IO uint32_t LC_INT_CMD0; /*!< 0x20*/ + __IO uint32_t RSVD1; /*!< 0x24*/ + __IO uint32_t LC_INT_CMD2; /*!< 0x28*/ + __IO uint32_t RSVD2; /*!< 0x2C*/ + __O uint32_t LC_FIFO_LEVEL0; /*!< 0x30*/ + __O uint32_t LC_FIFO_LEVEL1; /*!< 0x34*/ + +} ENHTIM_ShareTypeDef; + +/* ================================================================================ */ +/* ================ UART ================ */ +/* ================================================================================ */ + +/** + * @brief Universal Asynchronous Receiver/Transmitter, version 1.0. (UART) + */ + +typedef struct /*!< UART Structure */ +{ + __IO uint32_t DLL; + __IO uint32_t DLH_INTCR; + __IO uint32_t INTID_FCR; + __IO uint32_t LCR; + __IO uint32_t MCR; /*!<0x10 */ + __I uint32_t LSR; + __I uint32_t MSR; + __IO uint32_t SPR; + __IO uint32_t STSR; /*!<0x20 */ + __IO uint32_t RB_THR; + __IO uint32_t MISCR; /*!<may not be seen for client */ + __IO uint32_t TXPLSR; + __IO uint32_t RSVD0; /*!<0x30 */ + __IO uint32_t RSVD1; /*!<0x34 */ + __IO uint32_t RSVD2; /*!<0x38 */ + __IO uint32_t DBG_UART; /*!<0x3C */ + __IO uint32_t RX_IDLE_TOCR; /*!<0x40 */ + __IO uint32_t RX_IDLE_INTSR; + __IO uint32_t RX_IDLE_INTCR; + __I uint32_t FIFO_LEVEL; + __IO uint32_t INTMASK; /*!<0x50 */ + __I uint32_t TX_DONE_INTSR; + __I uint32_t TX_THR_INTSR; +} UART_TypeDef; + +typedef enum +{ + LOG_CHANNEL_UART0, + LOG_CHANNEL_UART1, + LOG_CHANNEL_UART2 +} LogChannel_TypeDef; + +/* ================================================================================ */ +/* ================ Watch Dog ================ */ +/* ================================================================================ */ + +/** + * @brief Watch Dog. (WDG) + */ + +typedef struct /*!< WDG Structure */ +{ + __IO uint32_t WDG_CTL; /*!< 0x00 */ +} WDG_TypeDef; + +/** + * @brief AON Watchdog + */ +typedef struct +{ + union + { + __IO uint32_t CRT; /*!< 0x00 (R/W) Control Register */ + struct + { + uint32_t EN: 2; /*!< R/W WDT2 Enable, 2'b10: OFF, the other value: ON */ + uint32_t CNT_CTL: 1; /*!< R/W Counter Control, + 1: WDG continue count in DLPS/Power Down/Hibernate, + 0: WDG stop count in DLPS/Power Down/Hibernate */ + uint32_t RST_LVL: 1; /*!< R/W Reset Level, + 1: Level 2 reset (reset whole chip), + 0: Level 1 reset (reset whole chip except partial AON and RTC) */ + uint32_t CNT_RELOAD: 1; /*!< R/W Reload Counter, + 1: Reload counter when exit DLPS/Power Down/Hibernate, + 0: Not reload counter when exit DLPS/Power Down/Hibernate */ + uint32_t RSVD0: 3; + uint32_t COMP: 18; /*!< R/W Set the period of AON WDG : 1/450Hz ~ 1/2.3KHz */ + uint32_t RSVD1: 6; + } CRT_BITS; + } u; + __IO uint32_t CNT_CLR; /*!< 0x04 (R/W) Clear Register, write 1 to reload AON WDG counter */ + __IO uint32_t WP; /*!< 0x08 (R/W) Write Protect Register, write 1 to enable write CRT */ +} AON_WDG_TypeDef; + +/* ================================================================================ */ +/* ================ random generator ================ */ +/* ================================================================================ */ + +/** + * @brief random generator. (RAN_GEN) + */ + +typedef struct /*!< RAN_GEN Structure */ +{ + union + { + __IO uint32_t CTL; /*!< 0x00 */ + struct + { + __IO uint32_t rand_gen_en: 1; + __IO uint32_t seed_upd: 1; + __IO uint32_t random_req: 1; + __IO uint32_t opt_rand_upd: 1; + __IO uint32_t soft_rst: 1; + __IO uint32_t rsvd: 27; + } CTL_BITS; + } u; + __IO uint32_t POLYNOMIAL; /*!< 0x04 */ + __IO uint32_t SEED; /*!< 0x08 */ + __IO uint32_t RAN_NUM; /*!< 0x0C */ +} RAN_GEN_TypeDef; + +/* ================================================================================ */ +/* ================ System Block Control ================ */ +/* ================================================================================ */ + +/** + * @brief System Block Control. (SYS_BLKCTRL) + */ + +typedef struct /*!< SYS_BLKCTRL Structure */ +{ + /* 0x0200 0x4000_0200 + 0 R/W r_cpu_slow_en 0 + 1 R/W r_cpu_slow_opt_wfi 0 + 2 R/W r_cpu_slow_opt_at_tx 1 + 3 R/W r_cpu_slow_opt_at_rx 1 + 4 R/W r_cpu_slow_opt_lcd 0 + 5 R/W r_auto_slow_opt 0 + 6 W1O reg_zone1_wrp_en 0 + 7 W1O reg_zone2_wrp_en 0 + 8 W1O reg_wrp_lock 0 + 12:9 R/W r_cpu_low_rate_valid_num 4'h3 + 13 R/W r_cpu_auto_slow_force_update 0 + 14 R/W r_cpu_slow_opt_spi0 0 + 18:15 R/W r_cpu_low_rate_valid_num1 4'h3 + 24:19 R/W r_bt_ahb_wait_cnt 6'h0C + 27:25 R/W DUMMY 3'h0 + 28 R/W r_aon_rd_opt 1 + 29 R/W r_btaon_acc_no_block 0 + 30 R/W bzdma_autoslow_eco_disable 0 + 31 R/W r_clk_cpu_32k_en 0 + */ + union + { + __IO uint32_t PERION_REG_SYS_CLK_SEL_0; + struct + { + __IO uint32_t r_cpu_slow_en: 1; + __IO uint32_t r_cpu_slow_opt_wfi: 1; + __IO uint32_t r_cpu_slow_opt_at_tx: 1; + __IO uint32_t r_cpu_slow_opt_at_rx: 1; + __IO uint32_t r_cpu_slow_opt_lcd: 1; + __IO uint32_t r_auto_slow_opt: 1; + __IO uint32_t reg_zone1_wrp_en: 1; + __IO uint32_t reg_zone2_wrp_en: 1; + __IO uint32_t reg_wrp_lock: 1; + __IO uint32_t r_cpu_low_rate_valid_num: 4; + __IO uint32_t r_cpu_auto_slow_force_update: 1; + __IO uint32_t r_cpu_slow_opt_spi0: 1; + __IO uint32_t r_cpu_low_rate_valid_num1: 4; + __IO uint32_t r_bt_ahb_wait_cnt: 6; + __IO uint32_t RESERVED_0: 3; + __IO uint32_t r_aon_rd_opt: 1; + __IO uint32_t r_btaon_acc_no_block: 1; + __IO uint32_t bzdma_autoslow_eco_disable: 1; + __IO uint32_t r_clk_cpu_32k_en: 1; + } BITS_200; + } u_200; + + /* 0x0204 0x4000_0204 + 3:0 R RF_RL_ID 4'd0 + 7:4 R RF_RTL_ID 4'd0 + 31:8 R RSVD 24'd0 + */ + union + { + __IO uint32_t PERION_REG_ID; + struct + { + __I uint32_t RF_RL_ID: 4; + __I uint32_t RF_RTL_ID: 4; + __I uint32_t RESERVED_0: 24; + } BITS_204; + } u_204; + + /* 0x0208 0x4000_0208 + 3:0 R/W r_cpu_div_sel 4'h0 + 7:4 R/W r_cpu_div_sel_slow 4'h0 + 8 R/W r_cpu_div_en 1 + 9 R/W r_CPU_CLK_SRC_EN 1 + 10 R/W r_cpu_auto_slow_filter_en 1 + 11 R/W r_cpu_clk_mux_0_cg_en 1 + 12 R/W DUMMY 1 + 13 R/W r_cpu_xtal_clk_cg_en 1 + 14 R/W r_cpu_ocs40_clk_cg_en 1 + 15 R/W r_cpu_div_en_slow 1 + 16 W1O DUMMY 0 + 17 W1O r_cpu_div_sel_opt 0 + 18 W1O r_spi0_div_sel_opt 0 + 19 W1O r_spi1_div_sel_opt 0 + 20 W1O RSVD 0 + 21 W1O RSVD 0 + 22 W1O RSVD 0 + 23 W1O r_spi0_div_sel_opt1 0 + 24 W1O r_spi1_div_sel_opt1 0 + 25 W1O DUMMY 0 + 26 W1O DUMMY 0 + 27 R/W r_CKE_SYSON 0 + 28 R/W r_cpu_auto_slow_filter1_en 0 + 31:29 R/W DUMMY 3'h0 + */ + union + { + __IO uint32_t PERION_REG_SYS_CLK_SEL_1; + struct + { + __IO uint32_t r_cpu_div_sel: 4; + __IO uint32_t r_cpu_div_sel_slow: 4; + __IO uint32_t r_cpu_div_en: 1; + __IO uint32_t r_CPU_CLK_SRC_EN: 1; + __IO uint32_t r_cpu_auto_slow_filter_en: 1; + __IO uint32_t r_cpu_clk_mux_0_cg_en: 1; + __IO uint32_t RESERVED_7: 1; + __IO uint32_t r_cpu_xtal_clk_cg_en: 1; + __IO uint32_t r_cpu_ocs40_clk_cg_en: 1; + __IO uint32_t r_cpu_div_en_slow: 1; + __IO uint32_t RESERVED_6: 1; + __IO uint32_t r_cpu_div_sel_opt: 1; + __IO uint32_t r_spi0_div_sel_opt: 1; + __IO uint32_t r_spi1_div_sel_opt: 1; + __IO uint32_t RESERVED_5: 1; + __IO uint32_t RESERVED_4: 1; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t r_spi0_div_sel_opt1: 1; + __IO uint32_t r_spi1_div_sel_opt1: 1; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t r_CKE_SYSON: 1; + __IO uint32_t r_cpu_auto_slow_filter1_en: 1; + __IO uint32_t RESERVED_0: 3; + } BITS_208; + } u_208; + + /* 0x020C 0x4000_020c + 1:0 R/W r_flash_div_sel 2'h0 + 3:2 R/W DUMMY 2'h0 + 4 R/W r_flash_div_en 0 + 5 R/W r_FLASH_CLK_SRC_EN 1 + 6 R/W r_flash_clk_src_sel_1 0 + 7 R/W r_flash_clk_src_sel_0 0 + 8 R/W r_flash_mux_1_clk_cg_en 1 + 9 R/W r_rng_sfosc_sel 0 + 12:10 R/W r_rng_sfosc_div_sel 3'h0 + 15:13 R/W DUMMY 0 + 18:16 R/W DUMMY 3'h0 + 19 R/W DUMMY 0 + 20 R/W DUMMY 0 + 21 R/W DUMMY 1 + 22 R/W r_CLK_40M_SRC_EN 1 + 23 R/W DUMMY 0 + 24 R/W r_40m_clk_src_sel_0 1 + 25 R/W DUMMY 0 + 26 R/W r_CLK_40M_SRC_DIV_EN 1 + 27 R/W r_CLK_20M_SRC_EN 0 + 28 R/W r_CLK_10M_SRC_EN 1 + 29 R/W r_CLK_5M_SRC_EN 0 + 31:30 R/W DUMMY 2'h0 + */ + union + { + __IO uint32_t PERION_REG_SYS_CLK_SEL_2; + struct + { + __IO uint32_t r_flash_div_sel: 2; + __IO uint32_t RESERVED_8: 2; + __IO uint32_t r_flash_div_en: 1; + __IO uint32_t r_FLASH_CLK_SRC_EN: 1; + __IO uint32_t r_flash_clk_src_sel_1: 1; + __IO uint32_t r_flash_clk_src_sel_0: 1; + __IO uint32_t r_flash_mux_1_clk_cg_en: 1; + __IO uint32_t r_rng_sfosc_sel: 1; + __IO uint32_t r_rng_sfosc_div_sel: 3; + __IO uint32_t RESERVED_7: 3; + __IO uint32_t RESERVED_6: 3; + __IO uint32_t RESERVED_5: 1; + __IO uint32_t RESERVED_4: 1; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t r_CLK_40M_SRC_EN: 1; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t r_40m_clk_src_sel_0: 1; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t r_CLK_40M_SRC_DIV_EN: 1; + __IO uint32_t r_CLK_20M_SRC_EN: 1; + __IO uint32_t r_CLK_10M_SRC_EN: 1; + __IO uint32_t r_CLK_5M_SRC_EN: 1; + __IO uint32_t RESERVED_0: 2; + } BITS_20C; + } u_20C; + + /* 0x210 0x4000_0210 + 0 R/W DUMMY 0 + 1 R/W DUMMY 0 + 2 R/W r_PON_FEN_LXBUS 1 + 3 R/W DUMMY 0 + 4 R/W r_PON_FEN_FLASH 1 + 5 R/W DUMMY 1 + 6 R/W DUMMY 0 + 7 R/W DUMMY 0 + 8 R/W DUMMY 0 + 11:9 R/W DUMMY 3'h0 + 12 R/W r_PON_FEN_UART 0 + 13 R/W r_PON_FEN_GDMA0 0 + 14 R/W DUMMY 0 + 15 R/W DUMMY 0 + 16 R/W r_PON_FEN_TIMER 0 + 19:17 R/W DUMMY 0 + 20 R/W r_PON_FEN_AAC_XTAL 0 + 21 R/W r_PON_FEN_CAP_TOUCH 0 + 22 R/W DUMMY 0 + 23 R/W DUMMY 0 + 31:24 R DUMMY 8'd0 + */ + union + { + __IO uint32_t PERION_REG_SOC_FUNC_EN; + struct + { + __IO uint32_t RESERVED_13: 1; + __IO uint32_t RESERVED_12: 1; + __IO uint32_t r_PON_FEN_LXBUS: 1; + __IO uint32_t RESERVED_11: 1; + __IO uint32_t r_PON_FEN_FLASH: 1; + __IO uint32_t RESERVED_10: 1; + __IO uint32_t RESERVED_9: 1; + __IO uint32_t RESERVED_8: 1; + __IO uint32_t RESERVED_7: 1; + __IO uint32_t RESERVED_6: 3; + __IO uint32_t r_PON_FEN_UART: 1; + __IO uint32_t r_PON_FEN_GDMA0: 1; + __IO uint32_t RESERVED_5: 1; + __IO uint32_t RESERVED_4: 1; + __IO uint32_t r_PON_FEN_TIMER: 1; + __IO uint32_t RESERVED_3: 3; + __IO uint32_t r_PON_FEN_AAC_XTAL: 1; + __IO uint32_t r_PON_FEN_CAP_TOUCH: 1; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t RESERVED_1: 1; + __I uint32_t RESERVED_0: 8; + } BITS_210; + } u_210; + + /* 0x0214 0x4000_0214 + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_214; + + /* 0x0218 0x4000_0218 + 0 R/W r_PON_FEN_URT0_GLB 0 + 1 R/W DUMMY 0 + 2 R/W r_PON_FEN_AES 0 + 3 R/W r_PON_FEN_RNG 0 + 7:4 R/W DUMMY 4'h0 + 8 R/W r_PON_FEN_SPI0 0 + 9 R/W r_PON_FEN_SPI1 0 + 10 R/W r_PON_FEN_IRRC 0 + 15:11 R/W DUMMY 5'd0 + 16 R/W r_PON_FEN_I2C0 0 + 17 R/W r_PON_FEN_I2C1 0 + 18 R/W r_PON_FEN_QDEC 0 + 19 R/W r_PON_FEN_KEYSCAN 0 + 23:20 R/W DUMMY 4'h0 + 24 R/W r_PON_FEN_SPI2W 0 + 25 R/W DUMMY 1 + 26 R/W r_PON_FEN_DSP_IPC 1 + 27 R/W r_PON_FEN_DSP_MEM 1 + 28 R/W r_PON_FEN_ASRC 0 + 29 R/W r_PON_FEN_DSP_WDT 0 + 30 R/W r_PON_FEN_EFUSE 0 + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_REG_SOC_PERI_FUNC0_EN; + struct + { + __IO uint32_t r_PON_FEN_URT0_GLB: 1; + __IO uint32_t RESERVED_5: 1; + __IO uint32_t r_PON_FEN_AES: 1; + __IO uint32_t r_PON_FEN_RNG: 1; + __IO uint32_t RESERVED_4: 4; + __IO uint32_t r_PON_FEN_SPI0: 1; + __IO uint32_t r_PON_FEN_SPI1: 1; + __IO uint32_t r_PON_FEN_IRRC: 1; + __IO uint32_t RESERVED_3: 5; + __IO uint32_t r_PON_FEN_I2C0: 1; + __IO uint32_t r_PON_FEN_I2C1: 1; + __IO uint32_t r_PON_FEN_QDEC: 1; + __IO uint32_t r_PON_FEN_KEYSCAN: 1; + __IO uint32_t RESERVED_2: 4; + __IO uint32_t r_PON_FEN_SPI2W: 1; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t r_PON_FEN_DSP_IPC: 1; + __IO uint32_t r_PON_FEN_DSP_MEM: 1; + __IO uint32_t r_PON_FEN_ASRC: 1; + __IO uint32_t r_PON_FEN_DSP_WDT: 1; + __IO uint32_t r_PON_FEN_EFUSE: 1; + __IO uint32_t RESERVED_0: 1; + } BITS_218; + } u_218; + + /* 0x021C 0x4000_021c + 0 R/W r_PON_FEN_ADC0 0 + 7:1 R/W DUMMY 6'd0 + 8 R/W r_PON_FEN_GPIO0 0 + 31 :9 R/W DUMMY 23'd0 + */ + union + { + __IO uint32_t PERION_REG_SOC_PERI_FUNC1_EN; + struct + { + __IO uint32_t r_PON_FEN_ADC0: 1; + __IO uint32_t RESERVED_1: 7; + __IO uint32_t r_PON_FEN_GPIO0: 1; + __IO uint32_t RESERVED_0: 23; + } BITS_21C; + } u_21C; + + /* 0x0220 0x4000_0220 + 0 R/W r_PON_FEN_AUDIO 0 + 1 R/W r_PON_FEN_SPORT0 0 + 2 R/W DUMMY 0 + 3 R/W DUMMY 0 + 4 R/W r_CLK_EN_AUDIO 0 + 5 R/W r_CLK_EN_SPORT0 0 + 6 R/W DUMMY 0 + 7 R/W DUMMY 0 + 8 R/W r_CLK_EN_SPORT_40M 0 + 9 R/W r_CLK_EN_AUDIO_REG 1 + 31:10 R/W DUMMY 22'd0 + */ + union + { + __IO uint32_t PERION_REG_SOC_AUDIO_IF_EN; + struct + { + __IO uint32_t r_PON_FEN_AUDIO: 1; + __IO uint32_t r_PON_FEN_SPORT0: 1; + __IO uint32_t RESERVED_4: 1; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t r_CLK_EN_AUDIO: 1; + __IO uint32_t r_CLK_EN_SPORT0: 1; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t r_CLK_EN_SPORT_40M: 1; + __IO uint32_t r_CLK_EN_AUDIO_REG: 1; + __IO uint32_t RESERVED_0: 22; + } BITS_220; + } u_220; + + /* 0x0224 0x4000_0224 + 2:0 R/W DUMMY 3'h4 + 3 R/W r_SPORT0_EXT_CODEC 0 + 6:4 R/W DUMMY 3'h1 + 7 R/W r_CODEC_STANDALONE 0 + 31:8 R/W DUMMY 24'd0 + */ + union + { + __IO uint32_t PERION_REG_SOC_AUDIO_CLK_CTRL_A; + struct + { + __IO uint32_t RESERVED_2: 3; + __IO uint32_t r_SPORT0_EXT_CODEC: 1; + __IO uint32_t RESERVED_1: 3; + __IO uint32_t r_CODEC_STANDALONE: 1; + __IO uint32_t RESERVED_0: 24; + } BITS_224; + } u_224; + + /* 0x0228 0x4000_0228 + 3:0 R/W DUMMY 4'h1 + 4 R/W r_SPORT0_MCLK_OUT 0 + 6:5 R/W DUMMY 0 + 7 R/W DUMMY 0 + 31:8 R/W DUMMY 24'd0 + */ + union + { + __IO uint32_t PERION_REG_SOC_AUDIO_CLK_CTRL_B; + struct + { + __IO uint32_t RESERVED_3: 4; + __IO uint32_t r_SPORT0_MCLK_OUT: 1; + __IO uint32_t RESERVED_2: 2; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t RESERVED_0: 24; + } BITS_228; + } u_228; + + /* 0x022C 0x4000_022c + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_22C; + + /* 0x0230 0x4000_0230 + 0 R/W DUMMY 1 + 1 R/W DUMMY 0 + 2 R/W r_PON_CKE_PLFM 1 + 3 R/W DUMMY 1 + 4 R/W r_CKE_BUS_RAM_SLP 0 + 5 R/W r_CKE_BT_VEN 1 + 6 R/W r_PON_ACTCKE_VDREG 0 + 7 R/W r_PON_SLPCKE_VDREG 0 + 8 R/W r_PON_ACTCKE_FLASH 1 + 9 R/W r_PON_SLPCKE_FLASH 0 + 10 R/W DUMMY 0 + 11 R/W DUMMY 0 + 12 R/W r_PON_ACTCKE_LUART 0 + 13 R/W r_PON_SLPCKE_LUART 0 + 14 R/W r_PON_ACTCKE_TIMER 0 + 15 R/W r_PON_SLPCKE_TIMER 0 + 16 R/W r_PON_ACTCKE_GDMA0 0 + 17 R/W r_PON_SLPCKE_GDMA0 0 + 23:18 R/W DUMMY 6'd0 + 24 R/W r_PON_ACTCKE_GPIO 0 + 25 R/W r_PON_SLPCKE_GPIO 0 + 26 R/W DUMMY 0 + 27 R/W DUMMY 0 + 28 R/W DUMMY 0 + 29 R/W DUMMY 0 + 30 R/W DUMMY 0 + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_REG_PESOC_CLK_CTRL; + struct + { + __IO uint32_t RESERVED_11: 1; + __IO uint32_t RESERVED_10: 1; + __IO uint32_t r_PON_CKE_PLFM: 1; + __IO uint32_t RESERVED_9: 1; + __IO uint32_t r_CKE_BUS_RAM_SLP: 1; + __IO uint32_t r_CKE_BT_VEN: 1; + __IO uint32_t r_PON_ACTCKE_VDREG: 1; + __IO uint32_t r_PON_SLPCKE_VDREG: 1; + __IO uint32_t r_PON_ACTCKE_FLASH: 1; + __IO uint32_t r_PON_SLPCKE_FLASH: 1; + __IO uint32_t RESERVED_8: 1; + __IO uint32_t RESERVED_7: 1; + __IO uint32_t r_PON_ACTCKE_LUART: 1; + __IO uint32_t r_PON_SLPCKE_LUART: 1; + __IO uint32_t r_PON_ACTCKE_TIMER: 1; + __IO uint32_t r_PON_SLPCKE_TIMER: 1; + __IO uint32_t r_PON_ACTCKE_GDMA0: 1; + __IO uint32_t r_PON_SLPCKE_GDMA0: 1; + __IO uint32_t RESERVED_6: 6; + __IO uint32_t r_PON_ACTCKE_GPIO: 1; + __IO uint32_t r_PON_SLPCKE_GPIO: 1; + __IO uint32_t RESERVED_5: 1; + __IO uint32_t RESERVED_4: 1; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t RESERVED_0: 1; + } BITS_230; + } u_230; + + /* 0x0234 0x4000_0234 + 0 R/W r_PON_ACTCKE_UART0 0 + 1 R/W r_PON_SLPCKE_UART0 0 + 2 R/W DUMMY 0 + 3 R/W DUMMY 0 + 4 R/W r_CKE_MODEM 1 + 5 R/W r_CKE_CAL32K 0 + 6 R/W r_CKE_RNG 0 + 7 R/W DUMMY 0 + 8 R/W DUMMY 0 + 9 R/W r_CKE_PDCK 0 + 10 R/W r_CKE_AAC_XTAL 0 + 11 R/W r_PON_CKE_BT_FREQ_DET 0 + 12 R/W r_PON_CKE_CAP_TOUCH 0 + 15:13 R/W DUMMY 3'h0 + 16 R/W r_PON_ACTCK_SPI0 0 + 17 R/W r_PON_SLPCK_SPI0 0 + 18 R/W r_PON_ACTCK_SPI1 0 + 19 R/W r_PON_SLPCK_SPI1 0 + 20 R/W r_PON_ACTCK_IRRC 0 + 21 R/W r_PON_SLPCKE_IRRC 0 + 23:22 R/W DUMMY 2'h0 + 24 R/W DUMMY 0 + 25 R/W DUMMY 0 + 26 R/W DUMMY 0 + 27 R/W DUMMY 0 + 31:28 R/W DUMMY 4'h0 + */ + union + { + __IO uint32_t PERION_REG_PESOC_PERI_CLK_CTRL0; + struct + { + __IO uint32_t r_PON_ACTCKE_UART0: 1; + __IO uint32_t r_PON_SLPCKE_UART0: 1; + __IO uint32_t RESERVED_10: 1; + __IO uint32_t RESERVED_9: 1; + __IO uint32_t r_CKE_MODEM: 1; + __IO uint32_t r_CKE_CAL32K: 1; + __IO uint32_t r_CKE_RNG: 1; + __IO uint32_t RESERVED_8: 1; + __IO uint32_t RESERVED_7: 1; + __IO uint32_t r_CKE_PDCK: 1; + __IO uint32_t r_CKE_AAC_XTAL: 1; + __IO uint32_t r_PON_CKE_BT_FREQ_DET: 1; + __IO uint32_t r_PON_CKE_CAP_TOUCH: 1; + __IO uint32_t RESERVED_6: 3; + __IO uint32_t r_PON_ACTCK_SPI0: 1; + __IO uint32_t r_PON_SLPCK_SPI0: 1; + __IO uint32_t r_PON_ACTCK_SPI1: 1; + __IO uint32_t r_PON_SLPCK_SPI1: 1; + __IO uint32_t r_PON_ACTCK_IRRC: 1; + __IO uint32_t r_PON_SLPCKE_IRRC: 1; + __IO uint32_t RESERVED_5: 2; + __IO uint32_t RESERVED_4: 1; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t RESERVED_0: 4; + } BITS_234; + } u_234; + + /* 0x0238 0x4000_0238 + 0 R/W r_PON_ACTCKE_I2C0 0 + 1 R/W r_PON_SLPCKE_I2C0 0 + 2 R/W r_PON_ACTCKE_I2C1 0 + 3 R/W r_PON_SLPCKE_I2C1 0 + 4 R/W r_PON_ACTCKE_QDEC 0 + 5 R/W r_PON_SLPCKE_QDEC 0 + 6 R/W r_PON_ACTCKE_KEYSCAN 0 + 7 R/W r_PON_SLPCKE_KEYSCAN 0 + 8 R/W r_PON_ACTCKE_AES 0 + 9 R/W r_PON_SLPCKE_AES 0 + 15:10 R/W DUMMY 6'h0 + 16 R/W r_PON_ACTCKE_SPI2W 0 + 17 R/W r_PON_SLPCKE_SPI2W 0 + 19:18 R/W DUMMY 2'h0 + 20 R/W DUMMY 0 + 21 R/W DUMMY 0 + 22 R/W DUMMY 0 + 23 R/W DUMMY 0 + 24 R/W r_PON_ACTCKE_ADC 0 + 25 R/W r_PON_SLPCKE_ADC 0 + 26 R/W DUMMY 0 + 27 R/W DUMMY 0 + 28 R/W DUMMY 0 + 29 R/W DUMMY 0 + 30 R/W r_PON_CKE_DSP_WDT 0 + 31 R/W r_PON_CKE_EFUSE 0 + */ + union + { + __IO uint32_t PERION_r_PON_PERI_CLK_CTRL1; + struct + { + __IO uint32_t r_PON_ACTCKE_I2C0: 1; + __IO uint32_t r_PON_SLPCKE_I2C0: 1; + __IO uint32_t r_PON_ACTCKE_I2C1: 1; + __IO uint32_t r_PON_SLPCKE_I2C1: 1; + __IO uint32_t r_PON_ACTCKE_QDEC: 1; + __IO uint32_t r_PON_SLPCKE_QDEC: 1; + __IO uint32_t r_PON_ACTCKE_KEYSCAN: 1; + __IO uint32_t r_PON_SLPCKE_KEYSCAN: 1; + __IO uint32_t r_PON_ACTCKE_AES: 1; + __IO uint32_t r_PON_SLPCKE_AES: 1; + __IO uint32_t RESERVED_9: 6; + __IO uint32_t r_PON_ACTCKE_SPI2W: 1; + __IO uint32_t r_PON_SLPCKE_SPI2W: 1; + __IO uint32_t RESERVED_8: 2; + __IO uint32_t RESERVED_7: 1; + __IO uint32_t RESERVED_6: 1; + __IO uint32_t RESERVED_5: 1; + __IO uint32_t RESERVED_4: 1; + __IO uint32_t r_PON_ACTCKE_ADC: 1; + __IO uint32_t r_PON_SLPCKE_ADC: 1; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t RESERVED_0: 1; + __IO uint32_t r_PON_CKE_DSP_WDT: 1; + __IO uint32_t r_PON_CKE_EFUSE: 1; + } BITS_238; + } u_238; + + /* 0x023C 0x4000_023c + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_23C; + + /* 0x0240 0x4000_0240 + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_240; + + /* 0x0244 0x4000_0244 + 0 R/W r_PON_ACTCKE_BTBUS 1 + 1 R/W r_PON_SLPCKE_BTBUS 1 + 15:2 R/W DUMMY 14'h0 + 21:16 R/W DUMMY 6'h0 + 22 R/W r_LS_mcu_rom 0 + 31:23 R/W DUMMY 9'h0 + */ + union + { + __IO uint32_t PERION_r_OFF_MEM_PWR_CRTL_r_PON_COM_CLK_CTRL; + struct + { + __IO uint32_t r_PON_ACTCKE_BTBUS: 1; + __IO uint32_t r_PON_SLPCKE_BTBUS: 1; + __IO uint32_t RESERVED_2: 14; + __IO uint32_t RESERVED_1: 6; + __IO uint32_t r_LS_mcu_rom: 1; + __IO uint32_t RESERVED_0: 9; + } BITS_244; + } u_244; + + /* 0x0248 0x4000_0248 + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_248; + + /* 0x024C 0x4000_024c + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_24C; + + /* 0x0250 0x4000_0250 + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_250; + + /* 0x0254 0x4000_0254 + 7:0 R/W DUMMY 8'h1 + 13:8 R/W DUMMY 6'h0 + 14 R/W DUMMY 0 + 15 R/W DUMMY 0 + 31:16 R/W DUMMY 16'h0 + */ + union + { + __IO uint32_t PERION_r_DSP_TOP_CTRL; + struct + { + __IO uint32_t RESERVED_4: 8; + __IO uint32_t RESERVED_3: 6; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t RESERVED_0: 16; + } BITS_254; + } u_254; + + /* 0x0258 0x4000_0258 + 1:0 RW CORE_XTAL_LPS_CAP_STEP 2'b01 + 3:2 RW CORE_XTAL_LPS_CAP_CYC 2'b00 + 6:4 RW CORE_XTAL_OV_UNIT 3'b000 + 8:7 RW CORE_XTAL_OV_RATIO 2'b01 + 11:9 RW CORE_XTAL_MODE 3'b100 + 13:12 RW CORE_XTAL_CTRL1_2t1 2'b00 + 31:14 R RSVD 18'h0 + */ + union + { + __IO uint32_t PERION_CORE_SWR_PAR_TAB_0_1; + struct + { + __IO uint32_t CORE_XTAL_LPS_CAP_STEP: 2; + __IO uint32_t CORE_XTAL_LPS_CAP_CYC: 2; + __IO uint32_t CORE_XTAL_OV_UNIT: 3; + __IO uint32_t CORE_XTAL_OV_RATIO: 2; + __IO uint32_t CORE_XTAL_MODE: 3; + __IO uint32_t CORE_XTAL_CTRL1_2t1: 2; + __I uint32_t RESERVED_0: 18; + } BITS_258; + } u_258; + + /* 0x025C 0x4000_025c + 1:0 RW CORE_XTAL_LPS_CAP_STEP 2'b01 + 3:2 RW CORE_XTAL_LPS_CAP_CYC 2'b00 + 6:4 RW CORE_XTAL_OV_UNIT 3'b000 + 8:7 RW CORE_XTAL_OV_RATIO 2'b01 + 11:9 RW CORE_XTAL_MODE 3'b100 + 13:12 RW CORE_XTAL_CTRL1_2t1 2'b00 + 31:14 R RSVD 18'h0 + */ + union + { + __IO uint32_t PERION_CORE_SWR_PAR_TAB_4_1; + struct + { + __IO uint32_t CORE_XTAL_LPS_CAP_STEP: 2; + __IO uint32_t CORE_XTAL_LPS_CAP_CYC: 2; + __IO uint32_t CORE_XTAL_OV_UNIT: 3; + __IO uint32_t CORE_XTAL_OV_RATIO: 2; + __IO uint32_t CORE_XTAL_MODE: 3; + __IO uint32_t CORE_XTAL_CTRL1_2t1: 2; + __I uint32_t RESERVED_0: 18; + } BITS_25C; + } u_25C; + + /* 0x0260 0x4000_0260 + 1:0 RW CORE_XTAL_LPS_CAP_STEP 2'b01 + 3:2 RW CORE_XTAL_LPS_CAP_CYC 2'b00 + 6:4 RW CORE_XTAL_OV_UNIT 3'b000 + 8:7 RW CORE_XTAL_OV_RATIO 2'b01 + 11:9 RW CORE_XTAL_MODE 3'b100 + 13:12 RW CORE_XTAL_CTRL1_2t1 2'b00 + 31:14 R RSVD 18'h0 + */ + union + { + __IO uint32_t PERION_CORE_SWR_PAR_TAB_5_1; + struct + { + __IO uint32_t CORE_XTAL_LPS_CAP_STEP: 2; + __IO uint32_t CORE_XTAL_LPS_CAP_CYC: 2; + __IO uint32_t CORE_XTAL_OV_UNIT: 3; + __IO uint32_t CORE_XTAL_OV_RATIO: 2; + __IO uint32_t CORE_XTAL_MODE: 3; + __IO uint32_t CORE_XTAL_CTRL1_2t1: 2; + __I uint32_t RESERVED_0: 18; + } BITS_260; + } u_260; + + /* 0x0264 0x4000_0264 + 1:0 RW CORE_XTAL_LPS_CAP_STEP 2'b01 + 3:2 RW CORE_XTAL_LPS_CAP_CYC 2'b00 + 6:4 RW CORE_XTAL_OV_UNIT 3'b000 + 8:7 RW CORE_XTAL_OV_RATIO 2'b01 + 11:9 RW CORE_XTAL_MODE 3'b100 + 13:12 RW CORE_XTAL_CTRL1_2t1 2'b00 + 31:14 R RSVD 18'h0 + */ + union + { + __IO uint32_t PERION_CORE_SWR_PAR_TAB_6_1; + struct + { + __IO uint32_t CORE_XTAL_LPS_CAP_STEP: 2; + __IO uint32_t CORE_XTAL_LPS_CAP_CYC: 2; + __IO uint32_t CORE_XTAL_OV_UNIT: 3; + __IO uint32_t CORE_XTAL_OV_RATIO: 2; + __IO uint32_t CORE_XTAL_MODE: 3; + __IO uint32_t CORE_XTAL_CTRL1_2t1: 2; + __I uint32_t RESERVED_0: 18; + } BITS_264; + } u_264; + + /* 0x0268 0x4000_0268 + 1:0 RW CORE_XTAL_LPS_CAP_STEP 2'b01 + 3:2 RW CORE_XTAL_LPS_CAP_CYC 2'b00 + 6:4 RW CORE_XTAL_OV_UNIT 3'b000 + 8:7 RW CORE_XTAL_OV_RATIO 2'b01 + 11:9 RW CORE_XTAL_MODE 3'b100 + 13:12 RW CORE_XTAL_CTRL1_2t1 2'b00 + 31:14 R RSVD 18'h0 + */ + union + { + __IO uint32_t PERION_CORE_SWR_PAR_TAB_7_1; + struct + { + __IO uint32_t CORE_XTAL_LPS_CAP_STEP: 2; + __IO uint32_t CORE_XTAL_LPS_CAP_CYC: 2; + __IO uint32_t CORE_XTAL_OV_UNIT: 3; + __IO uint32_t CORE_XTAL_OV_RATIO: 2; + __IO uint32_t CORE_XTAL_MODE: 3; + __IO uint32_t CORE_XTAL_CTRL1_2t1: 2; + __I uint32_t RESERVED_0: 18; + } BITS_268; + } u_268; + + /* 0x026C 0x4000_026c + 0 RW CORE_BUCK_PFM_AOT_EN 1'b0 + 1 RW CORE_BUCK_PFM_COT_EN 1'b1 + 2 RW CORE_BUCK_ENOFFSAWPFM_H 1'b1 + 3 RW CORE_BUCK_POW_EA_Iqx2_H 1'b1 + 4 RW CORE_BUCK_POW_EA_Iqx3_H 1'b1 + 5 RW CORE_BUCK_POW_EA_IqEhance_H 1'b1 + 8:6 RW CORE_BUCK_PFM_STEP_INI 3'b0 + 16:9 RW CORE_AUTO_SET 8'haa + 22:17 RW CORE_D300k_REG_MANU_CCOT 6'b010000 + 31:23 R RSVD 9'b0 + */ + union + { + __IO uint32_t PERION_CORE_SWR_PAR_TAB_0_2; + struct + { + __IO uint32_t CORE_BUCK_PFM_AOT_EN: 1; + __IO uint32_t CORE_BUCK_PFM_COT_EN: 1; + __IO uint32_t CORE_BUCK_ENOFFSAWPFM_H: 1; + __IO uint32_t CORE_BUCK_POW_EA_Iqx2_H: 1; + __IO uint32_t CORE_BUCK_POW_EA_Iqx3_H: 1; + __IO uint32_t CORE_BUCK_POW_EA_IqEhance_H: 1; + __IO uint32_t CORE_BUCK_PFM_STEP_INI: 3; + __IO uint32_t CORE_AUTO_SET: 8; + __IO uint32_t CORE_D300k_REG_MANU_CCOT: 6; + __I uint32_t RESERVED_0: 9; + } BITS_26C; + } u_26C; + + /* 0x0270 0x4000_0270 + 0 RW CORE_BUCK_PFM_AOT_EN 1'b0 + 1 RW CORE_BUCK_PFM_COT_EN 1'b1 + 2 RW CORE_BUCK_ENOFFSAWPFM_H 1'b1 + 3 RW CORE_BUCK_POW_EA_Iqx2_H 1'b1 + 4 RW CORE_BUCK_POW_EA_Iqx3_H 1'b1 + 5 RW CORE_BUCK_POW_EA_IqEhance_H 1'b1 + 8:6 RW CORE_BUCK_PFM_STEP_INI 3'b0 + 16:9 RW CORE_AUTO_SET 8'haa + 22:17 RW CORE_D300k_REG_MANU_CCOT 6'b010000 + 31:23 R RSVD 9'b0 + */ + union + { + __IO uint32_t PERION_CORE_SWR_PAR_TAB_4_2; + struct + { + __IO uint32_t CORE_BUCK_PFM_AOT_EN: 1; + __IO uint32_t CORE_BUCK_PFM_COT_EN: 1; + __IO uint32_t CORE_BUCK_ENOFFSAWPFM_H: 1; + __IO uint32_t CORE_BUCK_POW_EA_Iqx2_H: 1; + __IO uint32_t CORE_BUCK_POW_EA_Iqx3_H: 1; + __IO uint32_t CORE_BUCK_POW_EA_IqEhance_H: 1; + __IO uint32_t CORE_BUCK_PFM_STEP_INI: 3; + __IO uint32_t CORE_AUTO_SET: 8; + __IO uint32_t CORE_D300k_REG_MANU_CCOT: 6; + __I uint32_t RESERVED_0: 9; + } BITS_270; + } u_270; + + /* 0x0274 0x4000_0274 + 0 RW CORE_BUCK_PFM_AOT_EN 1'b0 + 1 RW CORE_BUCK_PFM_COT_EN 1'b1 + 2 RW CORE_BUCK_ENOFFSAWPFM_H 1'b1 + 3 RW CORE_BUCK_POW_EA_Iqx2_H 1'b1 + 4 RW CORE_BUCK_POW_EA_Iqx3_H 1'b1 + 5 RW CORE_BUCK_POW_EA_IqEhance_H 1'b1 + 8:6 RW CORE_BUCK_PFM_STEP_INI 3'b0 + 16:9 RW CORE_AUTO_SET 8'haa + 22:17 RW CORE_D300k_REG_MANU_CCOT 6'b010000 + 31:23 R RSVD 9'b0 + */ + union + { + __IO uint32_t PERION_CORE_SWR_PAR_TAB_5_2; + struct + { + __IO uint32_t CORE_BUCK_PFM_AOT_EN: 1; + __IO uint32_t CORE_BUCK_PFM_COT_EN: 1; + __IO uint32_t CORE_BUCK_ENOFFSAWPFM_H: 1; + __IO uint32_t CORE_BUCK_POW_EA_Iqx2_H: 1; + __IO uint32_t CORE_BUCK_POW_EA_Iqx3_H: 1; + __IO uint32_t CORE_BUCK_POW_EA_IqEhance_H: 1; + __IO uint32_t CORE_BUCK_PFM_STEP_INI: 3; + __IO uint32_t CORE_AUTO_SET: 8; + __IO uint32_t CORE_D300k_REG_MANU_CCOT: 6; + __I uint32_t RESERVED_0: 9; + } BITS_274; + } u_274; + + /* 0x0278 0x4000_0278 + 0 RW CORE_BUCK_PFM_AOT_EN 1'b0 + 1 RW CORE_BUCK_PFM_COT_EN 1'b1 + 2 RW CORE_BUCK_ENOFFSAWPFM_H 1'b1 + 3 RW CORE_BUCK_POW_EA_Iqx2_H 1'b1 + 4 RW CORE_BUCK_POW_EA_Iqx3_H 1'b1 + 5 RW CORE_BUCK_POW_EA_IqEhance_H 1'b1 + 8:6 RW CORE_BUCK_PFM_STEP_INI 3'b0 + 16:9 RW CORE_AUTO_SET 8'haa + 22:17 RW CORE_D300k_REG_MANU_CCOT 6'b010000 + 31:23 R RSVD 9'b0 + */ + union + { + __IO uint32_t PERION_CORE_SWR_PAR_TAB_6_2; + struct + { + __IO uint32_t CORE_BUCK_PFM_AOT_EN: 1; + __IO uint32_t CORE_BUCK_PFM_COT_EN: 1; + __IO uint32_t CORE_BUCK_ENOFFSAWPFM_H: 1; + __IO uint32_t CORE_BUCK_POW_EA_Iqx2_H: 1; + __IO uint32_t CORE_BUCK_POW_EA_Iqx3_H: 1; + __IO uint32_t CORE_BUCK_POW_EA_IqEhance_H: 1; + __IO uint32_t CORE_BUCK_PFM_STEP_INI: 3; + __IO uint32_t CORE_AUTO_SET: 8; + __IO uint32_t CORE_D300k_REG_MANU_CCOT: 6; + __I uint32_t RESERVED_0: 9; + } BITS_278; + } u_278; + + /* 0x027C 0x4000_027c + 0 RW CORE_BUCK_PFM_AOT_EN 1'b0 + 1 RW CORE_BUCK_PFM_COT_EN 1'b1 + 2 RW CORE_BUCK_ENOFFSAWPFM_H 1'b1 + 3 RW CORE_BUCK_POW_EA_Iqx2_H 1'b1 + 4 RW CORE_BUCK_POW_EA_Iqx3_H 1'b1 + 5 RW CORE_BUCK_POW_EA_IqEhance_H 1'b1 + 8:6 RW CORE_BUCK_PFM_STEP_INI 3'b0 + 16:9 RW CORE_AUTO_SET 8'haa + 22:17 RW CORE_D300k_REG_MANU_CCOT 6'b010000 + 31:23 R RSVD 9'b0 + */ + union + { + __IO uint32_t PERION_CORE_SWR_PAR_TAB_7_2; + struct + { + __IO uint32_t CORE_BUCK_PFM_AOT_EN: 1; + __IO uint32_t CORE_BUCK_PFM_COT_EN: 1; + __IO uint32_t CORE_BUCK_ENOFFSAWPFM_H: 1; + __IO uint32_t CORE_BUCK_POW_EA_Iqx2_H: 1; + __IO uint32_t CORE_BUCK_POW_EA_Iqx3_H: 1; + __IO uint32_t CORE_BUCK_POW_EA_IqEhance_H: 1; + __IO uint32_t CORE_BUCK_PFM_STEP_INI: 3; + __IO uint32_t CORE_AUTO_SET: 8; + __IO uint32_t CORE_D300k_REG_MANU_CCOT: 6; + __I uint32_t RESERVED_0: 9; + } BITS_27C; + } u_27C; + + /* 0x0280 0x4000_0280 + 6:0 R/W r_PMUX_GPIO_P0_0 7'h0 + 7 R/W DUMMY 0 + 14:8 R/W r_PMUX_GPIO_P0_1 7'h0 + 15 R/W DUMMY 0 + 22:16 R/W r_PMUX_GPIO_P0_2 7'h0 + 23 R/W DUMMY 0 + 30:24 R/W r_PMUX_GPIO_P0_3 7'h1D + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_r_PMUX_GPIO_P0_0_3; + struct + { + __IO uint32_t r_PMUX_GPIO_P0_0: 7; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t r_PMUX_GPIO_P0_1: 7; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t r_PMUX_GPIO_P0_2: 7; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t r_PMUX_GPIO_P0_3: 7; + __IO uint32_t RESERVED_0: 1; + } BITS_280; + } u_280; + + /* 0x0284 0x4000_0284 + 6:0 R/W r_PMUX_GPIO_P0_4 7'h0 + 7 R/W DUMMY 0 + 14:8 R/W r_PMUX_GPIO_P0_5 7'h0 + 15 R/W DUMMY 0 + 22:16 R/W r_PMUX_GPIO_P0_6 7'h0 + 23 R/W DUMMY 0 + 30:24 R/W r_PMUX_GPIO_P0_7 7'h0 + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_r_PMUX_GPIO_P0_4_7; + struct + { + __IO uint32_t r_PMUX_GPIO_P0_4: 7; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t r_PMUX_GPIO_P0_5: 7; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t r_PMUX_GPIO_P0_6: 7; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t r_PMUX_GPIO_P0_7: 7; + __IO uint32_t RESERVED_0: 1; + } BITS_284; + } u_284; + + /* 0x0288 0x4000_0288 + 6:0 R/W r_PMUX_GPIO_P1_0 7'h39 + 7 R/W DUMMY 0 + 14:8 R/W r_PMUX_GPIO_P1_1 7'h38 + 15 R/W DUMMY 0 + 22:16 R/W r_PMUX_GPIO_P1_2 7'h0 + 23 R/W DUMMY 0 + 30:24 R/W r_PMUX_GPIO_P1_3 7'h0 + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_r_PMUX_GPIO_P1_0_3; + struct + { + __IO uint32_t r_PMUX_GPIO_P1_0: 7; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t r_PMUX_GPIO_P1_1: 7; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t r_PMUX_GPIO_P1_2: 7; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t r_PMUX_GPIO_P1_3: 7; + __IO uint32_t RESERVED_0: 1; + } BITS_288; + } u_288; + + /* 0x028C 0x4000_028c + 6:0 R/W r_PMUX_GPIO_P1_4 7'h0 + 7 R/W DUMMY 0 + 14:8 R/W r_PMUX_GPIO_P1_5 7'h0 + 15 R/W DUMMY 0 + 22:16 R/W r_PMUX_GPIO_P1_6 7'h0 + 23 R/W DUMMY 0 + 30:24 R/W r_PMUX_GPIO_P1_7 7'h0 + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_r_PMUX_GPIO_P1_4_7; + struct + { + __IO uint32_t r_PMUX_GPIO_P1_4: 7; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t r_PMUX_GPIO_P1_5: 7; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t r_PMUX_GPIO_P1_6: 7; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t r_PMUX_GPIO_P1_7: 7; + __IO uint32_t RESERVED_0: 1; + } BITS_28C; + } u_28C; + + /* 0x0290 0x4000_0290 + 6:0 R/W r_PMUX_GPIO_P2_0 7'h0 + 7 R/W DUMMY 0 + 14:8 R/W r_PMUX_GPIO_P2_1 7'h0 + 15 R/W DUMMY 0 + 22:16 R/W r_PMUX_GPIO_P2_2 7'h0 + 23 R/W DUMMY 0 + 30:24 R/W r_PMUX_GPIO_P2_3 7'h0 + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_r_PMUX_GPIO_P2_0_3; + struct + { + __IO uint32_t r_PMUX_GPIO_P2_0: 7; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t r_PMUX_GPIO_P2_1: 7; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t r_PMUX_GPIO_P2_2: 7; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t r_PMUX_GPIO_P2_3: 7; + __IO uint32_t RESERVED_0: 1; + } BITS_290; + } u_290; + + /* 0x0294 0x4000_0294 + 6:0 R/W r_PMUX_GPIO_P2_4 7'h0 + 7 R/W DUMMY 0 + 14:8 R/W r_PMUX_GPIO_P2_5 7'h0 + 15 R/W DUMMY 0 + 22:16 R/W r_PMUX_GPIO_P2_6 7'h0 + 23 R/W DUMMY 0 + 30:24 R/W r_PMUX_GPIO_P2_7 7'h0 + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_r_PMUX_GPIO_P2_4_7; + struct + { + __IO uint32_t r_PMUX_GPIO_P2_4: 7; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t r_PMUX_GPIO_P2_5: 7; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t r_PMUX_GPIO_P2_6: 7; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t r_PMUX_GPIO_P2_7: 7; + __IO uint32_t RESERVED_0: 1; + } BITS_294; + } u_294; + + /* 0x0298 0x4000_0298 + 6:0 R/W r_PMUX_GPIO_P3_0 7'h23 + 7 R/W DUMMY 0 + 14:8 R/W r_PMUX_GPIO_P3_1 7'h24 + 15 R/W DUMMY 0 + 22:16 R/W r_PMUX_GPIO_P3_2 7'h0 + 23 R/W DUMMY 0 + 30:24 R/W r_PMUX_GPIO_P3_3 7'h0 + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_r_PMUX_GPIO_P3_0_3; + struct + { + __IO uint32_t r_PMUX_GPIO_P3_0: 7; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t r_PMUX_GPIO_P3_1: 7; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t r_PMUX_GPIO_P3_2: 7; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t r_PMUX_GPIO_P3_3: 7; + __IO uint32_t RESERVED_0: 1; + } BITS_298; + } u_298; + + /* 0x029C 0x4000_029c + 6:0 R/W r_PMUX_GPIO_P3_4 7'h0 + 7 R/W DUMMY 0 + 14:8 R/W r_PMUX_GPIO_P3_5 7'h0 + 15 R/W DUMMY 0 + 22:16 R/W r_PMUX_GPIO_P3_6 7'h0 + 23 R/W DUMMY 0 + 30:24 R/W r_PMUX_GPIO_P3_7 7'h0 + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_r_PMUX_GPIO_P3_4_7; + struct + { + __IO uint32_t r_PMUX_GPIO_P3_4: 7; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t r_PMUX_GPIO_P3_5: 7; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t r_PMUX_GPIO_P3_6: 7; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t r_PMUX_GPIO_P3_7: 7; + __IO uint32_t RESERVED_0: 1; + } BITS_29C; + } u_29C; + + /* 0x02A0 0x4000_02a0 + 6:0 R/W r_PMUX_GPIO_P4_0 7'h2e + 7 R/W DUMMY 0 + 14:8 R/W r_PMUX_GPIO_P4_1 7'h2f + 15 R/W DUMMY 0 + 22:16 R/W r_PMUX_GPIO_P4_2 7'h30 + 23 R/W DUMMY 0 + 30:24 R/W r_PMUX_GPIO_P4_3 7'h2d + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_r_PMUX_GPIO_P4_0_3; + struct + { + __IO uint32_t r_PMUX_GPIO_P4_0: 7; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t r_PMUX_GPIO_P4_1: 7; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t r_PMUX_GPIO_P4_2: 7; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t r_PMUX_GPIO_P4_3: 7; + __IO uint32_t RESERVED_0: 1; + } BITS_2A0; + } u_2A0; + + /* 0x02A4 0x4000_02a4 + 6:0 R/W r_PMUX_GPIO_H_0 7'h0 + 7 R/W DUMMY 0 + 14:8 R/W r_PMUX_GPIO_H_1 7'h0 + 15 R/W DUMMY 0 + 22:16 R/W r_PMUX_GPIO_H_2 7'h0 + 31:23 R/W DUMMY 9'h0 + */ + union + { + __IO uint32_t PERION_r_PMUX_GPIO_H_0_2; + struct + { + __IO uint32_t r_PMUX_GPIO_H_0: 7; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t r_PMUX_GPIO_H_1: 7; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t r_PMUX_GPIO_H_2: 7; + __IO uint32_t RESERVED_0: 9; + } BITS_2A4; + } u_2A4; + + /* 0x02A8 0x4000_02a8 + 3:0 R/W r_PMUX_TEST_MODE 4'h1 + 6:4 R/W DUMMY 0 + 7 R/W r_PMUX_TEST_MODE_EN 0 + 8 R/W DUMMY 0 + 9 R/W DUMMY 0 + 11:10 R/W r_PMUX_1_WIRE_UART_EN 2'h0 + 15:12 R/W DUMMY 6'h0 + 19:16 R/W r_PMUX_DBG_MODE_SEL 4'h2 + 20 R/W DUMMY 0 + 21 R/W DUMMY 0 + 22 R/W DUMMY 0 + 23 R/W r_PMUX_DIG_SMUX_EN 0 + 24 R/W r_PON_PMUX_SPIM0_EN 0 + 25 R/W r_PMUX_SPIM_EN_OPT 0 + 26 R/W r_PMUX_FLASH_EXTC_EN 0 + 27 R/W r_PMUX_FLASH_EN 0 + 28 R/W DUMMY 0 + 29 R/W DUMMY 0 + 30 R/W DUMMY 0 + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_r_PMUX_TEST_MODE; + struct + { + __IO uint32_t r_PMUX_TEST_MODE: 4; + __IO uint32_t RESERVED_10: 3; + __IO uint32_t r_PMUX_TEST_MODE_EN: 1; + __IO uint32_t RESERVED_9: 1; + __IO uint32_t RESERVED_8: 1; + __IO uint32_t r_PMUX_1_WIRE_UART_EN: 2; + __IO uint32_t RESERVED_7: 4; + __IO uint32_t r_PMUX_DBG_MODE_SEL: 4; + __IO uint32_t RESERVED_6: 1; + __IO uint32_t RESERVED_5: 1; + __IO uint32_t RESERVED_4: 1; + __IO uint32_t r_PMUX_DIG_SMUX_EN: 1; + __IO uint32_t r_PON_PMUX_SPIM0_EN: 1; + __IO uint32_t r_PMUX_SPIM_EN_OPT: 1; + __IO uint32_t r_PMUX_FLASH_EXTC_EN: 1; + __IO uint32_t r_PMUX_FLASH_EN: 1; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t RESERVED_0: 1; + } BITS_2A8; + } u_2A8; + + /* 0x02AC 0x4000_02ac + 31:0 R/W DUMMY 32'h0 + */ + __IO uint32_t PERION_REG_DUMMY_2AC; + + /* 0x02B0 0x4000_02b0 + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_2B0; + + /* 0x02B4 0x4000_02b4 + 31:0 R/W DUMMY 32'h0 + */ + __IO uint32_t PERION_REG_DUMMY_2B4; + + /* 0x02B8 0x4000_02b8 + 31:0 R/W DUMMY 32'h0 + */ + __IO uint32_t PERION_REG_DUMMY_2B8; + + /* 0x02BC 0x4000_02bc + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_2BC; + + /* 0x02C0 0x4000_02c0 + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_2C0; + + /* 0x02C4 0x4000_02c4 + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_2C4; + + /* 0x02C8 0x4000_02c8 + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_2C8; + + /* 0x02CC 0x4000_02cc + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_2CC; + + /* 0x02D0 0x4000_02d0 + 1:0 R/W DUMMY 2'h0 + 3:2 R/W DUMMY 2'h0 + 4 R/W DUMMY 0 + 5 R/W DUMMY 0 + 6 R/W DUMMY 0 + 7 R/W DUMMY 0 + 8 R/W DUMMY 0 + 31:9 R/W DUMMY 23'h0 + */ + union + { + __IO uint32_t PERION_REG_RSVD_2D0; + struct + { + __IO uint32_t RESERVED_7: 2; + __IO uint32_t RESERVED_6: 2; + __IO uint32_t RESERVED_5: 1; + __IO uint32_t RESERVED_4: 1; + __IO uint32_t RESERVED_3: 1; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t RESERVED_0: 23; + } BITS_2D0; + } u_2D0; + + /* 0x02D4 0x4000_02d4 + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_2D4; + + /* 0x02D8 0x4000_02d8 + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_2D8; + + /* 0x02DC 0x4000_02dc + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_2DC; + + /* 0x02E0 0x4000_02e0 + 7:0 R/W DUMMY 8'hC0 + 18:8 R RSVD 11'h0 + 31:19 R/W DUMMY 13'h0 + */ + union + { + __IO uint32_t PERION_REG_RSVD_2E0; + struct + { + __IO uint32_t RESERVED_2: 8; + __I uint32_t RESERVED_1: 11; + __IO uint32_t RESERVED_0: 13; + } BITS_2E0; + } u_2E0; + + /* 0x02E4 0x4000_02e4 + 15:0 R/W DUMMY 16'h0 + 25:16 R RSVD 10'h0 + 31:26 R/W DUMMY 6'h0 + */ + union + { + __IO uint32_t PERION_REG_RSVD_2E4; + struct + { + __IO uint32_t RESERVED_2: 16; + __I uint32_t RESERVED_1: 10; + __IO uint32_t RESERVED_0: 6; + } BITS_2E4; + } u_2E4; + + /* 0x02E8 0x4000_02e8 + 0 R/W CORE_BUCK_POW_EA_Initial 1'b1 + 1 R/W CORE_BUCK_FPWM_H 1'b1 + 2 R/W CORE_BG_ENPC_DIGI 1'b0 + 7:3 R/W CORE_BG_VDIGI_TUNE 5'b10111 + 8 R/W DUMMY 1'b0 + 9 R/W CORE_BUCK_PMOS_DRIH_H 1'b1 + 10 R/W CORE_BUCK_PMOS_DRIL_H 1'b1 + 12:11 R/W CORE_BUCK_OCPRES_H 2'b01 + 17:13 R/W DUMMY 0 + 20:18 R/W CORE_BUCK_VREFOCP_H 3'b001 + 26:21 R/W CORE_BUCK_SWRTUNE_H 6'b011101 + 30:27 R/W CORE_BUCK_VREFPFM_H 4'b1011 + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_CORE_SWR_PAR_TAB_0_0; + struct + { + __IO uint32_t CORE_BUCK_POW_EA_Initial: 1; + __IO uint32_t CORE_BUCK_FPWM_H: 1; + __IO uint32_t CORE_BG_ENPC_DIGI: 1; + __IO uint32_t CORE_BG_VDIGI_TUNE: 5; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t CORE_BUCK_PMOS_DRIH_H: 1; + __IO uint32_t CORE_BUCK_PMOS_DRIL_H: 1; + __IO uint32_t CORE_BUCK_OCPRES_H: 2; + __IO uint32_t RESERVED_1: 5; + __IO uint32_t CORE_BUCK_VREFOCP_H: 3; + __IO uint32_t CORE_BUCK_SWRTUNE_H: 6; + __IO uint32_t CORE_BUCK_VREFPFM_H: 4; + __IO uint32_t RESERVED_0: 1; + } BITS_2E8; + } u_2E8; + + /* 0x02EC 0x4000_02ec + 0 R/W CORE_BUCK_POW_EA_Initial 1'b1 + 1 R/W CORE_BUCK_FPWM_H 1'b1 + 2 R/W CORE_BG_ENPC_DIGI 1'b0 + 7:3 R/W CORE_BG_VDIGI_TUNE 5'b10111 + 8 R/W DUMMY 1'b0 + 9 R/W CORE_BUCK_PMOS_DRIH_H 1'b1 + 10 R/W CORE_BUCK_PMOS_DRIL_H 1'b1 + 12:11 R/W CORE_BUCK_OCPRES_H 2'b01 + 17:13 R/W dummy 0 + 20:18 R/W CORE_BUCK_VREFOCP_H 3'b001 + 26:21 R/W CORE_BUCK_SWRTUNE_H 6'b011101 + 30:27 R/W CORE_BUCK_VREFPFM_H 4'b1011 + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_CORE_SWR_PAR_TAB_4_0; + struct + { + __IO uint32_t CORE_BUCK_POW_EA_Initial: 1; + __IO uint32_t CORE_BUCK_FPWM_H: 1; + __IO uint32_t CORE_BG_ENPC_DIGI: 1; + __IO uint32_t CORE_BG_VDIGI_TUNE: 5; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t CORE_BUCK_PMOS_DRIH_H: 1; + __IO uint32_t CORE_BUCK_PMOS_DRIL_H: 1; + __IO uint32_t CORE_BUCK_OCPRES_H: 2; + __IO uint32_t RESERVED_1: 5; + __IO uint32_t CORE_BUCK_VREFOCP_H: 3; + __IO uint32_t CORE_BUCK_SWRTUNE_H: 6; + __IO uint32_t CORE_BUCK_VREFPFM_H: 4; + __IO uint32_t RESERVED_0: 1; + } BITS_2EC; + } u_2EC; + + /* 0x02F0 0x4000_02f0 + 0 R/W CORE_BUCK_POW_EA_Initial 1'b1 + 1 R/W CORE_BUCK_FPWM_H 1'b1 + 2 R/W CORE_BG_ENPC_DIGI 1'b0 + 7:3 R/W CORE_BG_VDIGI_TUNE 5'b10111 + 8 R/W DUMMY 1'b0 + 9 R/W CORE_BUCK_PMOS_DRIH_H 1'b1 + 10 R/W CORE_BUCK_PMOS_DRIL_H 1'b1 + 12:11 R/W CORE_BUCK_OCPRES_H 2'b01 + 17:13 R/W dummy 0 + 20:18 R/W CORE_BUCK_VREFOCP_H 3'b001 + 26:21 R/W CORE_BUCK_SWRTUNE_H 6'b011101 + 30:27 R/W CORE_BUCK_VREFPFM_H 4'b1011 + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_CORE_SWR_PAR_TAB_5_0; + struct + { + __IO uint32_t CORE_BUCK_POW_EA_Initial: 1; + __IO uint32_t CORE_BUCK_FPWM_H: 1; + __IO uint32_t CORE_BG_ENPC_DIGI: 1; + __IO uint32_t CORE_BG_VDIGI_TUNE: 5; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t CORE_BUCK_PMOS_DRIH_H: 1; + __IO uint32_t CORE_BUCK_PMOS_DRIL_H: 1; + __IO uint32_t CORE_BUCK_OCPRES_H: 2; + __IO uint32_t RESERVED_1: 5; + __IO uint32_t CORE_BUCK_VREFOCP_H: 3; + __IO uint32_t CORE_BUCK_SWRTUNE_H: 6; + __IO uint32_t CORE_BUCK_VREFPFM_H: 4; + __IO uint32_t RESERVED_0: 1; + } BITS_2F0; + } u_2F0; + + /* 0x02F4 0x4000_02f4 + 0 R/W CORE_BUCK_POW_EA_Initial 1'b1 + 1 R/W CORE_BUCK_FPWM_H 1'b1 + 2 R/W CORE_BG_ENPC_DIGI 1'b0 + 7:3 R/W CORE_BG_VDIGI_TUNE 5'b10111 + 8 R/W DUMMY 1'b0 + 9 R/W CORE_BUCK_PMOS_DRIH_H 1'b1 + 10 R/W CORE_BUCK_PMOS_DRIL_H 1'b1 + 12:11 R/W CORE_BUCK_OCPRES_H 2'b01 + 17:13 R/W dummy 0 + 20:18 R/W CORE_BUCK_VREFOCP_H 3'b001 + 26:21 R/W CORE_BUCK_SWRTUNE_H 6'b011101 + 30:27 R/W CORE_BUCK_VREFPFM_H 4'b1011 + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_CORE_SWR_PAR_TAB_6_0; + struct + { + __IO uint32_t CORE_BUCK_POW_EA_Initial: 1; + __IO uint32_t CORE_BUCK_FPWM_H: 1; + __IO uint32_t CORE_BG_ENPC_DIGI: 1; + __IO uint32_t CORE_BG_VDIGI_TUNE: 5; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t CORE_BUCK_PMOS_DRIH_H: 1; + __IO uint32_t CORE_BUCK_PMOS_DRIL_H: 1; + __IO uint32_t CORE_BUCK_OCPRES_H: 2; + __IO uint32_t RESERVED_1: 5; + __IO uint32_t CORE_BUCK_VREFOCP_H: 3; + __IO uint32_t CORE_BUCK_SWRTUNE_H: 6; + __IO uint32_t CORE_BUCK_VREFPFM_H: 4; + __IO uint32_t RESERVED_0: 1; + } BITS_2F4; + } u_2F4; + + /* 0x02F8 0x4000_02f8 + 0 R/W CORE_BUCK_POW_EA_Initial 1'b1 + 1 R/W CORE_BUCK_FPWM_H 1'b1 + 2 R/W CORE_BG_ENPC_DIGI 1'b0 + 7:3 R/W CORE_BG_VDIGI_TUNE 5'b10111 + 8 R/W DUMMY 1'b0 + 9 R/W CORE_BUCK_PMOS_DRIH_H 1'b1 + 10 R/W CORE_BUCK_PMOS_DRIL_H 1'b1 + 12:11 R/W CORE_BUCK_OCPRES_H 2'b01 + 17:13 R/W dummy 5'h0 + 20:18 R/W CORE_BUCK_VREFOCP_H 3'b001 + 26:21 R/W CORE_BUCK_SWRTUNE_H 6'b011101 + 30:27 R/W CORE_BUCK_VREFPFM_H 4'b1011 + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_CORE_SWR_PAR_TAB_7_0; + struct + { + __IO uint32_t CORE_BUCK_POW_EA_Initial: 1; + __IO uint32_t CORE_BUCK_FPWM_H: 1; + __IO uint32_t CORE_BG_ENPC_DIGI: 1; + __IO uint32_t CORE_BG_VDIGI_TUNE: 5; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t CORE_BUCK_PMOS_DRIH_H: 1; + __IO uint32_t CORE_BUCK_PMOS_DRIL_H: 1; + __IO uint32_t CORE_BUCK_OCPRES_H: 2; + __IO uint32_t RESERVED_1: 5; + __IO uint32_t CORE_BUCK_VREFOCP_H: 3; + __IO uint32_t CORE_BUCK_SWRTUNE_H: 6; + __IO uint32_t CORE_BUCK_VREFPFM_H: 4; + __IO uint32_t RESERVED_0: 1; + } BITS_2F8; + } u_2F8; + + /* 0x02FC 0x4000_02fc + 5:0 R/W CORE_SWR_PAR_TAB_0[36:31] 6'b1 + 11:6 R/W CORE_SWR_PAR_TAB_4[36:31] 6'b1 + 17:12 R/W CORE_SWR_PAR_TAB_5[36:31] 6'b1 + 23:18 R/W CORE_SWR_PAR_TAB_6[36:31] 6'b1 + 29:24 R/W CORE_SWR_PAR_TAB_7[36:31] 6'b1 + 31:30 R/W DUMMY 2'h0 + */ + union + { + __IO uint32_t PERION_CORE_SWR_PAR_TAB_ext; + struct + { + __IO uint32_t CORE_SWR_PAR_TAB_0_36_31: 6; + __IO uint32_t CORE_SWR_PAR_TAB_4_36_31: 6; + __IO uint32_t CORE_SWR_PAR_TAB_5_36_31: 6; + __IO uint32_t CORE_SWR_PAR_TAB_6_36_31: 6; + __IO uint32_t CORE_SWR_PAR_TAB_7_36_31: 6; + __IO uint32_t RESERVED_0: 2; + } BITS_2FC; + } u_2FC; + + /* 0x0300 0x4000_0300 + 7:0 R/W PON_PERI_DLYSEL_CTRL 8'h0 + 15:8 R/W DUMMY 8'h0 + 23:16 R/W DUMMY 8'h0 + 24 R/W r_flash0_clk_inv_en 0 + 25 R/W DUMMY 0 + 26 R/W DUMMY 0 + 30:27 R/W DUMMY 3'h0 + 31 R/W r_spic2_dma_tx_req_as_single 0 + */ + union + { + __IO uint32_t PERION_PON_PERI_DLYSEL_CTRL; + struct + { + __IO uint32_t PON_PERI_DLYSEL_CTRL: 8; + __IO uint32_t RESERVED_4: 8; + __IO uint32_t RESERVED_3: 8; + __IO uint32_t r_flash0_clk_inv_en: 1; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t RESERVED_0: 4; + __IO uint32_t r_spic2_dma_tx_req_as_single: 1; + } BITS_300; + } u_300; + + /* 0x0304 0x4000_0304 + 31:0 R/W DUMMY 32'h1FC00001 + */ + __IO uint32_t PERION_REG_DUMMY_304; + + /* 0x0308 0x4000_0308 + 0 R/W PON_SPIO_MST 0 + 3:1 R/W DUMMY 3'h0 + 4 R/W PON_SPI0_BRG_EN 0 + 5 R/W PON_SPI0_H2S_BRG_EN 0 + 6 R/W PON_SPI1_BRG_EN 0 + 7 R/W r_spi0_clk_src_sel 0 + 8 R/W r_spi1_clk_src_sel 0 + 9 R/W r_sclk_irrc_src_sel 0 + 31:10 R/W DUMMY 22'h0 + */ + union + { + __IO uint32_t PERION_REG_RSVD_308; + struct + { + __IO uint32_t PON_SPIO_MST: 1; + __IO uint32_t RESERVED_1: 3; + __IO uint32_t PON_SPI0_BRG_EN: 1; + __IO uint32_t PON_SPI0_H2S_BRG_EN: 1; + __IO uint32_t PON_SPI1_BRG_EN: 1; + __IO uint32_t r_spi0_clk_src_sel: 1; + __IO uint32_t r_spi1_clk_src_sel: 1; + __IO uint32_t r_sclk_irrc_src_sel: 1; + __IO uint32_t RESERVED_0: 22; + } BITS_308; + } u_308; + + __IO uint32_t RSVD_0x30c[3]; + + /* 0x0318 0x4000_0318 + 23:0 R RSVD 24'd0 + 31:24 R/W DUMMY 8'd0 + */ + union + { + __IO uint32_t PERION_REG_DUMMY_318; + struct + { + __I uint32_t RESERVED_1: 24; + __IO uint32_t RESERVED_0: 8; + } BITS_318; + } u_318; + + __IO uint32_t RSVD_0x31c[1]; + + /* 0x0320 0x4000_0320 + 15:0 R/W DUMMY 16'h7E02 + 31:16 R/W DUMMY 16'h0912 + */ + union + { + __IO uint32_t PERION_BT_ANAPAR_PLL; + struct + { + __IO uint32_t RESERVED_1: 16; + __IO uint32_t RESERVED_0: 16; + } BITS_320; + } u_320; + + /* 0x0324 0x4000_0324 + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_324; + + /* 0x0328 0x4000_0328 + 31:0 R RSVD 32'hEAEAEAEA + */ + __IO uint32_t PERION_REG_RSVD_328; + + /* 0x032C 0x4000_032c + 3:0 R OSC40_FSET 4'h0 + 7:4 R RSVD 4'h0 + 31:8 R/W DUMMY 24'h000109 + */ + union + { + __IO uint32_t PERION_REG_DUMMY_32C; + struct + { + __I uint32_t OSC40_FSET: 4; + __I uint32_t RESERVED_1: 4; + __IO uint32_t RESERVED_0: 24; + } BITS_32C; + } u_32C; + + /* 0x0330 0x4000_0330 + 0 R/W rst_n_aac 0 + 1 R/W Offset_plus 0 + 7:2 R/W XAAC_GM_offset 6'b000000 + 8 R/W GM_STEP 0 + 14:9 R/W GM_INIT 6'b111110 + 17:15 R/W XTAL_CLK_SET 3'b101 + 23:18 R/W GM_STUP 6'b111111 + 29:24 R/W GM_MANUAL 6'b111111 + 30 R/W r_EN_XTAL_AAC_DIGI 0 + 31 R/W r_EN_XTAL_AAC_TRIG 0 + */ + union + { + __IO uint32_t PERION_REG_AAC_0; + struct + { + __IO uint32_t rst_n_aac: 1; + __IO uint32_t Offset_plus: 1; + __IO uint32_t XAAC_GM_offset: 6; + __IO uint32_t GM_STEP: 1; + __IO uint32_t GM_INIT: 6; + __IO uint32_t XTAL_CLK_SET: 3; + __IO uint32_t GM_STUP: 6; + __IO uint32_t GM_MANUAL: 6; + __IO uint32_t r_EN_XTAL_AAC_DIGI: 1; + __IO uint32_t r_EN_XTAL_AAC_TRIG: 1; + } BITS_330; + } u_330; + + /* 0x0334 0x4000_0334 + 0 R XAAC_BUSY 0 + 1 R XAAC_READY 0 + 7:2 R XTAL_GM_OUT 6'h3F + 11:8 R xaac_curr_state 4'h0 + 12 R/W EN_XTAL_AAC_GM 0 + 13 R/W EN_XTAL_AAC_PKDET 0 + 14 R XTAL_PKDET_OUT 0 + 15 R/W DUMMY 0 + 31:16 R/W DUMMY 16'h0129 + */ + union + { + __IO uint32_t PERION_REG_AAC_1; + struct + { + __I uint32_t XAAC_BUSY: 1; + __I uint32_t XAAC_READY: 1; + __I uint32_t XTAL_GM_OUT: 6; + __I uint32_t xaac_curr_state: 4; + __IO uint32_t EN_XTAL_AAC_GM: 1; + __IO uint32_t EN_XTAL_AAC_PKDET: 1; + __I uint32_t XTAL_PKDET_OUT: 1; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t RESERVED_0: 16; + } BITS_334; + } u_334; + + /* 0x0338 0x4000_0338 + 0 R/W disable_pll_pre_gating 0 + 15:1 R/W DUMMY 15'h0 + 17:16 R/W DUMMY 2'h3 + 23:18 R RSVD 6'h0 + 24 R BT_PLL_READY 0 + 25 R XTAL_OK 0 + 31:26 R RSVD 6'h0 + */ + union + { + __IO uint32_t PERION_REG_XTAL_PLL; + struct + { + __IO uint32_t disable_pll_pre_gating: 1; + __IO uint32_t RESERVED_3: 15; + __IO uint32_t RESERVED_2: 2; + __I uint32_t RESERVED_1: 6; + __I uint32_t BT_PLL_READY: 1; + __I uint32_t XTAL_OK: 1; + __I uint32_t RESERVED_0: 6; + } BITS_338; + } u_338; + + /* 0x033c 0x4000_033c + 0 R/W resetn 0 + 1 R/W EN_XTAL_PDCK_DIGI 1 + 2 R/W PDCK_SEARCH_MODE 0 + 4:3 R/W PDCK_WAIT_CYC[1:0] 2'b01 + 9:5 R/W VREF_MANUAL[4:0] 5'b10000 + 14:10 R/W VREF_INIT[4:0] 5'b11111 + 16:15 R/W XTAL_PDCK_UNIT[1:0] 2'b10 + 21:17 R/W XPDCK_VREF_SEL[4:0] 5'b00000 + 22 R/W PDCK_LPOW 0 + 27:23 R/W Reserved 5'h0 + 31:28 R pdck_state[3:0] 4'h0 + */ + union + { + __IO uint32_t PERION_REG_XTAL_PDCK; + struct + { + __IO uint32_t resetn: 1; + __IO uint32_t EN_XTAL_PDCK_DIGI: 1; + __IO uint32_t PDCK_SEARCH_MODE: 1; + __IO uint32_t PDCK_WAIT_CYC_1_0: 2; + __IO uint32_t VREF_MANUAL_4_0: 5; + __IO uint32_t VREF_INIT_4_0: 5; + __IO uint32_t XTAL_PDCK_UNIT_1_0: 2; + __IO uint32_t XPDCK_VREF_SEL_4_0: 5; + __IO uint32_t PDCK_LPOW: 1; + __IO uint32_t RESERVED_0: 5; + __I uint32_t pdck_state_3_0: 4; + } BITS_33c; + } u_33c; + + /* 0x0340 0x4000_0340 + 31:0 R/W DUMMY 32'hAAAAAAAA + */ + __IO uint32_t PERION_REG_DUMMY_340; + + /* 0x0344 0x4000_0344 + 7:0 R/W dbnc_cnt_limit 8'h1 + 11:8 R/W dbnc_div_sel 4'h1 + 12 R/W dbnc_div_en 1'b0 + 15:13 R/W DUMMY 3'h0 + 31:16 R/W DUMMY 16'h0 + */ + union + { + __IO uint32_t PERION_REG_DBNC; + struct + { + __IO uint32_t dbnc_cnt_limit: 8; + __IO uint32_t dbnc_div_sel: 4; + __IO uint32_t dbnc_div_en: 1; + __IO uint32_t RESERVED_1: 3; + __IO uint32_t RESERVED_0: 16; + } BITS_344; + } u_344; + + /* 0x0348 0x4000_0348 + 31:0 R RSVD 32'h0 + */ + __IO uint32_t PERION_REG_RSVD_348; + + /* 0x034C 0x4000_034c + 31:0 R RSVD 32'h0 + */ + __IO uint32_t PERION_REG_RSVD_34C; + + __IO uint32_t RSVD_0x350[3]; + + /* 0x035C 0x4000_035c + 0 R/W BIT_PERI_GT3_CLK_SEL 0 + 1 R/W BIT_PERI_GT5_CLK_SEL 0 + 2 R/W BIT_PERI_GT7_CLK_SEL 0 + 7:3 R/W DUMMY 5'h0 + 8 R/W DUMMY 0 + 10:9 R/W BIT_PERI_UART0_CLK_DIV 2'h0 + 12:11 R/W BIT_PERI_UART1_CLK_DIV 2'h0 + 14:13 R/W BIT_PERI_UART2_CLK_DIV 2'h0 + 16:15 R/W BIT_PERI_I2C0_CLK_DIV 2'h0 + 18:17 R/W BIT_PERI_I2C1_CLK_DIV 2'h0 + 20:19 R/W BIT_PERI_SPI0_CLK_DIV 2'h0 + 22:21 R/W BIT_PERI_SPI1_CLK_DIV 2'h0 + 23 R/W DUMMY 0 + 24 R/W TIMER2_CLK_SRC_SEL 0 + 25 R/W TIMER3_CLK_SRC_SEL 0 + 26 R/W TIMER4_CLK_SRC_SEL 0 + 27 R/W TIMER5_CLK_SRC_SEL 0 + 28 R/W TIMER6_CLK_SRC_SEL 0 + 29 R/W TIMER7_CLK_SRC_SEL 0 + 31:30 R/W DUMMY 2'h0 + */ + union + { + __IO uint32_t PERION_REG_PERI_GTIMER_CLK_SRC1; + struct + { + __IO uint32_t BIT_PERI_GT3_CLK_SEL: 1; + __IO uint32_t BIT_PERI_GT5_CLK_SEL: 1; + __IO uint32_t BIT_PERI_GT7_CLK_SEL: 1; + __IO uint32_t RESERVED_3: 5; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t BIT_PERI_UART0_CLK_DIV: 2; + __IO uint32_t BIT_PERI_UART1_CLK_DIV: 2; + __IO uint32_t BIT_PERI_UART2_CLK_DIV: 2; + __IO uint32_t BIT_PERI_I2C0_CLK_DIV: 2; + __IO uint32_t BIT_PERI_I2C1_CLK_DIV: 2; + __IO uint32_t BIT_PERI_SPI0_CLK_DIV: 2; + __IO uint32_t BIT_PERI_SPI1_CLK_DIV: 2; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t TIMER2_CLK_SRC_SEL: 1; + __IO uint32_t TIMER3_CLK_SRC_SEL: 1; + __IO uint32_t TIMER4_CLK_SRC_SEL: 1; + __IO uint32_t TIMER5_CLK_SRC_SEL: 1; + __IO uint32_t TIMER6_CLK_SRC_SEL: 1; + __IO uint32_t TIMER7_CLK_SRC_SEL: 1; + __IO uint32_t RESERVED_0: 2; + } BITS_35C; + } u_35C; + + /* 0x0360 0x4000_0360 + 2:0 R/W BIT_PERI_GT0_CLK_DIV 3'h0 + 5:3 R/W BIT_PERI_GT1_CLK_DIV 3'h0 + 7:6 R/W DUMMY 2'h0 + 8 R/W BIT_TIMER_CLK_32K_EN 1 + 9 R/W BIT_TIMER_CLK_f40M_EN 1 + 10 R/W timer_apb_clk_disable 0 + 11 R/W gpio_intr_trig_en 0 + 12 R/W DUMMY 1'h0 + 15:13 R/W BIT_PERI_GT2_CLK_DIV 3'h0 + 18:16 R/W BIT_PERI_GT3_CLK_DIV 3'h0 + 21:19 R/W BIT_PERI_GT4_CLK_DIV 3'h0 + 24:22 R/W BIT_PERI_GT5_CLK_DIV 3'h0 + 27:25 R/W BIT_PERI_GT6_CLK_DIV 3'h0 + 30:28 R/W BIT_PERI_GT7_CLK_DIV 3'h0 + 31 R/W DUMMY 0 + */ + union + { + __IO uint32_t PERION_REG_PERI_GTIMER_CLK_SRC0; + struct + { + __IO uint32_t BIT_PERI_GT0_CLK_DIV: 3; + __IO uint32_t BIT_PERI_GT1_CLK_DIV: 3; + __IO uint32_t RESERVED_2: 2; + __IO uint32_t BIT_TIMER_CLK_32K_EN: 1; + __IO uint32_t BIT_TIMER_CLK_f40M_EN: 1; + __IO uint32_t timer_apb_clk_disable: 1; + __IO uint32_t gpio_intr_trig_en: 1; + __IO uint32_t RESERVED_1: 1; + __IO uint32_t BIT_PERI_GT2_CLK_DIV: 3; + __IO uint32_t BIT_PERI_GT3_CLK_DIV: 3; + __IO uint32_t BIT_PERI_GT4_CLK_DIV: 3; + __IO uint32_t BIT_PERI_GT5_CLK_DIV: 3; + __IO uint32_t BIT_PERI_GT6_CLK_DIV: 3; + __IO uint32_t BIT_PERI_GT7_CLK_DIV: 3; + __IO uint32_t RESERVED_0: 1; + } BITS_360; + } u_360; + + /* 0x0364 0x4000_0364 + 7:0 R/W dead_zone_size 8'h0 + 8 R/W emg_stop 0 + 9 R/W stop_state[0] 0 + 10 R/W stop_state[1] 0 + 11 R/W DUMMY 0 + 12 R/W dead_zone_en 0 + 13 R/W pwm_pn_invserse_sel 0 + 15:14 R/W DUMMY 2'h0 + 16 R/W r_clk_timer_pwm_wrap0_sel 0 + 17 R/W r_FEN_TIMER_PWM_WRAP0 0 + 18 R/W r_CKE_TIMER_PWM_WRAP0 0 + 19 R/W r_clk_timer_pwm_wrap0_sel1 0 + 31:20 R/W DUMMY 12'h0 + */ + union + { + __IO uint32_t PERION_REG_PERI_PWM2_DZONE_CTRL; + struct + { + __IO uint32_t dead_zone_size: 8; + __IO uint32_t emg_stop: 1; + __IO uint32_t stop_state_0: 1; + __IO uint32_t stop_state_1: 1; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t dead_zone_en: 1; + __IO uint32_t pwm_pn_invserse_sel: 1; + __IO uint32_t RESERVED_1: 2; + __IO uint32_t r_clk_timer_pwm_wrap0_sel: 1; + __IO uint32_t r_FEN_TIMER_PWM_WRAP0: 1; + __IO uint32_t r_CKE_TIMER_PWM_WRAP0: 1; + __IO uint32_t r_clk_timer_pwm_wrap0_sel1: 1; + __IO uint32_t RESERVED_0: 12; + } BITS_364; + } u_364; + + /* 0x0368 0x4000_0368 + 7:0 R/W dead_zone_size 8'h0 + 8 R/W emg_stop 0 + 9 R/W stop_state[0] 0 + 10 R/W stop_state[1] 0 + 11 R/W DUMMY 0 + 12 R/W dead_zone_en 0 + 13 R/W pwm_pn_invserse_sel 0 + 15:14 R/W DUMMY 2'h0 + 16 R/W r_clk_timer_pwm_wrap0_sel 0 + 17 R/W r_FEN_TIMER_PWM_WRAP0 0 + 18 R/W r_CKE_TIMER_PWM_WRAP0 0 + 19 R/W r_clk_timer_pwm_wrap0_sel1 0 + 31:20 R/W DUMMY 12'h0 + */ + union + { + __IO uint32_t PERION_REG_PERI_ENHTIMER0_DZONE_CTRL; + struct + { + __IO uint32_t dead_zone_size: 8; + __IO uint32_t emg_stop: 1; + __IO uint32_t stop_state_0: 1; + __IO uint32_t stop_state_1: 1; + __IO uint32_t RESERVED_2: 1; + __IO uint32_t dead_zone_en: 1; + __IO uint32_t pwm_pn_invserse_sel: 1; + __IO uint32_t RESERVED_1: 2; + __IO uint32_t r_clk_timer_pwm_wrap0_sel: 1; + __IO uint32_t r_FEN_TIMER_PWM_WRAP0: 1; + __IO uint32_t r_CKE_TIMER_PWM_WRAP0: 1; + __IO uint32_t r_clk_timer_pwm_wrap0_sel1: 1; + __IO uint32_t RESERVED_0: 12; + } BITS_368; + } u_368; + + __IO uint32_t RSVD_0x36c[34]; + + /* 0x03F4 0x4000_03f4 + 31:0 R RSVD 32'h0 + */ + __IO uint32_t PERION_REG_RSVD_3F4; + + /* 0x03F8 0x4000_03f8 + 0 R r_cap_touch_clk_src_sel 1'h0 + 31:1 R RSVD 31'h0 + */ + union + { + __IO uint32_t PERION_REG_CTC_CLK_SRC_SEL; + struct + { + __I uint32_t r_cap_touch_clk_src_sel: 1; + __I uint32_t RESERVED_0: 31; + } BITS_3F8; + } u_3F8; + +} SYS_BLKCTRL_TypeDef; + +/* ================================================================================ */ +/* ================ Peripheral ================ */ +/* ================================================================================ */ + +/** + * @brief Peripheral. (Peripheral) + */ + +typedef struct /*!< Peripheral Structure */ +{ + uint32_t RSVD0[134]; /*!< Reserved */ + __IO uint32_t PERI_FUNC0_EN; /*!< 0x218 */ + __IO uint32_t PERI_FUNC1_EN; /*!< 0x21C */ + __IO uint32_t PERI_BD_FUNC0_EN; /*!< 0x220 */ + uint32_t RSVD1[3]; /*!< Reserved */ + __IO uint32_t PERI_CLK_CTRL; /*!< 0x230 */ + __IO uint32_t PERI_CLK_CTRL0; /*!< 0x234 */ + __IO uint32_t PERI_CLK_CTRL1; /*!< 0x238 */ +} PHERIPHERIAL_TypeDef; + +/* ================================================================================ */ +/* ================ Peripheral Interrupt ================ */ +/* ================================================================================ */ + +/** + * @brief Peripheral Interrupt. (Peripheral Interrupt) + */ + +typedef struct /*!< Peripheral Interrupt Structure */ +{ + __IO uint32_t RSVD0; /*!< 0x00 */ + __IO uint32_t STATUS; /*!< 0x04 */ + __IO uint32_t MODE; /*!< 0x08, 0: high level active, 1: edge trigger */ + __IO uint32_t EN; /*!< 0x0C */ + __IO uint32_t RSVD1; /*!< 0x10 */ + __IO uint32_t RSVD2; /*!< 0x14 */ + __IO uint32_t EDGE_MODE; /*!< 0x18, 0: rising edge (HW default), 1: both edge */ +} PERI_INT_TypeDef; + +/* ================================================================================ */ +/* ================ Security ================ */ +/* ================================================================================ */ + +/** + * @brief Security. (Security) + */ + +typedef union /*!< Security Structure */ +{ + __IO uint32_t d32; + struct + { + __IO uint32_t reg_pon_debug_port_wp: 1; + __IO uint32_t reg_pon_debug_port: 1; + __IO uint32_t reg_pon_hwspi_en_wp: 1; + __IO uint32_t reg_pon_hwspi_en: 1; + __IO uint32_t is_efuse_invalid: 1; + __IO uint32_t reg_efuse_system_general_ctrl_lock: 1; + __IO uint32_t rsvd0: 2; + __IO uint32_t is_enable_efuse_read_protect: 1; + __IO uint32_t is_enable_efuse_write_protect: 1; + __IO uint32_t is_disable_hci_ram_patch: 1; + __IO uint32_t is_disable_hci_flash_access: 1; + __IO uint32_t is_disable_hci_system_access: 1; + __IO uint32_t is_disable_hci_efuse_access: 1; + __IO uint32_t is_disable_hci_bt_test: 1; + __IO uint32_t is_debug_password_invalid: 1; + __IO uint32_t rsvd1: 4; + __IO uint32_t reg_pon_clk_flash_dis: 1; + __IO uint32_t rsvd2: 11; + }; +} SECURITY_TypeDef; + +/* ================================================================================ */ +/* ================ Peri clock reg ================ */ +/* ================================================================================ */ + +/** + * @brief PWM + */ +typedef struct +{ + __IO uint32_t CLKSELE; /*!< 0x348*/ + uint32_t RSVD[4]; + __IO uint32_t CLK_SRCL; + __IO uint32_t CLK_SRCH; /*!< 0x360*/ + __IO uint32_t PWM0_CTRL_L; + __IO uint32_t PWM0_CTRL_H; + __IO uint32_t PWM1_CTRL_L; + __IO uint32_t PWM1_CTRL_H; /*!< 0x370*/ + __IO uint32_t PWM2_CTRL_L; + __IO uint32_t PWM2_CTRL_H; + __IO uint32_t PWM3_CTRL_L; + __IO uint32_t PWM3_CTRL_H; /*!< 0x380*/ + __IO uint32_t TIM_EVT_CTRL; + +} Peri_ClockGate_TypeDef; + + +/* ================================================================================ */ +/* ================ CACHE ================ */ +/* ================================================================================ */ + +/** + * @brief cache for flash + */ +typedef struct +{ + __IO uint32_t CACHE_ENABLE; /*!< SPIC cache Enable Register, Address Offset: 0x00*/ + __IO uint32_t FLUSH; /*!< Cache Flush register, Address Offset: 0x04*/ + __IO uint32_t INTR; /*!< Cache Interrupt register, Address Offset: 0x08*/ + __O uint32_t RST_CNT; /*!< Cache Reset Counter register, Address Offset: 0x0C*/ + __I uint32_t RD_EVT_CNT; /*!< Cache Read Event Counter register, Address Offset: 0x10*/ + __I uint32_t HIT_EVT_CNT; /*!< Cache HIT Event Counter register, Address Offset: 0x14*/ + __I uint32_t HIT_LSTW_EVT_CNT; /*!< Cache Hit lastway event counter register, Offset: 0x18*/ + __I uint32_t RD_PND_CNT; /*!< Cache Read pending counter register, Offset: 0x1c*/ + __I uint32_t RSVD0[4]; /*!< Reserved, Offset: 0x20 ~ 0x2C */ + __IO uint32_t HITWAYBUF_CTRL; /*!< Cache Hit way buffer control register, Offset: 0x30 */ + __IO uint32_t CACHE_RAM_CTRL; /*!< Cache Two way function control register, Offset: 0x34 */ + __IO uint32_t COUNTER_ENABLE; /*!< Cache counter enable register, Offset: 0x38 */ +} CACHE_TypeDef; + +/* ================================================================================ */ +/* ================ SPIC ================ */ +/* ================================================================================ */ +typedef struct +{ + __IO uint32_t ctrlr0; /*!< SPIC control register0, Address offset: 0x000 */ + __IO uint32_t + rx_ndf; /*!< SPIC receiving data frame number register, Address offset: 0x004 */ + __IO uint32_t ssienr; /*!< SPIC enable register, Address offset: 0x008 */ + __IO uint32_t mwcr; /*!< N/A, Address offset: 0x00C */ + __IO uint32_t ser; /*!< SPIC slave enable register, Address offset: 0x010 */ + __IO uint32_t baudr; /*!< SPIC baudrate select register, Address offset: 0x014 */ + __IO uint32_t txftlr; /*!< SPIC transmit FIFO threshold level, Address offset: 0x018 */ + __IO uint32_t rxftlr; /*!< SPIC receive FIFO threshold level, Address offset: 0x01C */ + __IO uint32_t txflr; /*!< SPIC transmit FIFO level register, Address offset: 0x020 */ + __IO uint32_t rxflr; /*!< SPIC receive FIFO level register, Address offset: 0x024 */ + __IO uint32_t sr; /*!< SPIC status register, Address offset: 0x028 */ + __IO uint32_t imr; /*!< SPIC interrupt mask register, Address offset: 0x02C */ + __IO uint32_t isr; /*!< SPIC interrupt status register, Address offset: 0x030 */ + __IO uint32_t risr; /*!< SPIC raw interrupt status register, Address offset: 0x034 */ + __IO uint32_t + txoicr; /*!< SPIC transmit FIFO overflow interrupt clear register,offset: 0x038 */ + __IO uint32_t + rxoicr; /*!< SPIC receive FIFO overflow interrupt clear register, offset: 0x03C */ + __IO uint32_t + rxuicr; /*!< SPIC receive FIFO underflow interrupt clear register,offset: 0x040 */ + __IO uint32_t + msticr; /*!< SPIC master error interrupt clear register, Address offset: 0x044 */ + __IO uint32_t icr; /*!< SPIC interrupt clear register, Address offset: 0x048 */ + __IO uint32_t dmacr; /*!< N/A, Address offset: 0x04C */ + __IO uint32_t dmatdlr; /*!< N/A, Address offset: 0x050 */ + __IO uint32_t dmardlr; /*!< N/A, Address offset: 0x054 */ + __IO uint32_t idr; /*!< SPIC Identiation register, Address offset: 0x058 */ + __IO uint32_t spi_flash_version; /*!< SPIC version ID register, Address offset: 0x05C */ + union + { + __IO uint8_t byte; + __IO uint16_t half; + __IO uint32_t word; + } dr[32]; /*!< SPIC data register, Address offset: 0x060~0x09C */ + __IO uint32_t rd_fast_single; /*!< Fast read data command of SPI Flash, offset: 0x0E0 */ + __IO uint32_t rd_dual_o; /*!< Dual output read command of SPI Flash, offset: 0x0E4 */ + __IO uint32_t rd_dual_io; /*!< Dual I/O read command of SPI Flash, offset: 0x0E8 */ + __IO uint32_t rd_quad_o; /*!< Quad output read command of SPI Flash, offset: 0x0EC */ + __IO uint32_t rd_quad_io; /*!< Quad I/O read command of SPI Flash, offset: 0x0F0 */ + __IO uint32_t wr_single; /*!< Page program command of SPI Flash, offset: 0x0F4 */ + __IO uint32_t + wr_dual_i; /*!< Dual data input program command of SPI Flash, offset: 0x0F8 */ + __IO uint32_t + wr_dual_ii; /*!< Dual address&data program command of SPI Flash,offset: 0x0FC */ + __IO uint32_t wr_quad_i; /*!< Quad data input program command of SPI Flash,offset: 0x100 */ + __IO uint32_t + wr_quad_ii; /*!< Quad address&data program command of SPI Flash,offset: 0x104 */ + __IO uint32_t wr_enable; /*!< Write enabe command of SPI Flash, Address offset: 0x108 */ + __IO uint32_t rd_status; /*!< Read status command of SPI Flash, offset: 0x10C */ + __IO uint32_t ctrlr2; /*!< SPIC control register2, Address offset: 0x110 */ + __IO uint32_t fbaudr; /*!< SPIC fast baudrate select, Address offset: 0x114 */ + __IO uint32_t user_length; /*!< SPIC address length register, Address offset: 0x118 */ + __IO uint32_t auto_length; /*!< SPIC auto address length register, Address offset: 0x11C */ + __IO uint32_t valid_cmd; /*!< SPIC valid command register, Address offset: 0x120 */ + __IO uint32_t flash_size; /*!< SPIC flash size register, Address offset: 0x124 */ + __IO uint32_t flush_fifo; /*!< SPIC flush FIFO register, Address offset: 0x128 */ + __IO uint32_t dum_byte; /*!< SPIC dummy byte register, Address offset: 0x12c */ + __IO uint32_t + tx_ndf; /*!< SPIC transmitting data frame number register, Address offset: 0x130 */ + __IO uint32_t device_info; /*!< SPIC device info register, Address offset: 0x134 */ + __IO uint32_t tpr0; /*!< SPIC timing parameter register, Address offset: 0x138 */ + __IO uint32_t auto_length2; /*!< SPIC auto length 2 register, Address offset: 0x13c */ +} SPIC_TypeDef; + +/** @} */ /* End of group RTL876X_Peripheral_Registers_Structures */ + +/*============================================================================* + * Macros + *============================================================================*/ + +/** @defgroup RTL876X_Exported_Macros RTL876X Exported Macros + * @brief + * @{ + */ + +/* ================================================================================ */ +/* ================ Peripheral memory map ================ */ +/* ================================================================================ */ +#define SYSTEM_REG_BASE 0x40000000UL +#define PERIPH_REG_BASE 0x40000000UL +#define RTC_REG_BASE 0x40000100UL +#define RTC_LP_REG_BASE 0x40000180UL +#define LPC_REG_BASE 0x40000180UL +#define AON_WDG_REG_BASE 0x40000190UL +#define SYSBLKCTRL_REG_BASE 0x40000200UL +#define PINMUX_REG_BASE 0x40000280UL +#define SPIC_DLY_CTRL_BASE 0x40000300UL +#define PWM2_REG_BASE 0x40000364UL +#define ENHPWM0_REG_BASE 0x40000368UL +#define RTC_LED_REG_BASE 0x40000400UL + +#define GPIO_REG_BASE 0x40001000UL +#define TIM0_REG_BASE 0x40002000UL +#define TIM1_REG_BASE 0x40002014UL +#define TIM2_REG_BASE 0x40002028UL +#define TIM3_REG_BASE 0x4000203CUL +#define TIM4_REG_BASE 0x40002050UL +#define TIM5_REG_BASE 0x40002064UL +#if (IC_TYPE == IC_TYPE_SBEE2) +#define TIM6_REG_BASE 0x40002078UL +#define TIM7_REG_BASE 0x4000208CUL +#endif +#define QDEC_REG_BASE 0x40004000UL +#define SPI2WIRE_REG_BASE 0x40004000UL +#define KEYSCAN_REG_BASE 0x40005000UL +#define VENDOR_REG_BASE 0x40006000UL +#define WDG_REG_BASE 0x40006000UL +#define PERI_INT_REG_BASE 0x40006004UL +#define RANDOM_GEN_REG_BASE 0x40006150UL +#define CACHE_REG_BASE 0x40007000UL +#define ENHANCED_TIM_BASE 0x40008000UL +#define ENHTIM0_REG_BASE 0x40008000UL +#define ENHTIM1_REG_BASE 0x40008024UL +#define ENHTIM_SHARE_REG_BASE 0x40008120UL +#define CAP_TOUCH_BASE 0x40009000UL +#define CTC_Channel0_BASE 0x40009100UL +#define CTC_Channel1_BASE 0x40009110UL +#define CTC_Channel2_BASE 0x40009120UL +#define CTC_Channel3_BASE 0x40009130UL +#define CTC_Channel4_BASE 0x40009140UL +#define CTC_FAST_BASE 0x40009150UL +#define ADC_REG_BASE 0x40010000UL +#define UART1_REG_BASE 0x40011000UL //log +#define UART0_REG_BASE 0x40012000UL //data +#define SPI0_REG_BASE 0x40013000UL +#define SPI1_REG_BASE 0x40013400UL +#define HW_AES_REG_BASE 0x40014000UL +#define I2C0_REG_BASE 0x40015000UL +#define I2C1_REG_BASE 0x40015400UL +#if (IC_TYPE == IC_TYPE_BEE3) +#define IR_REG_BASE 0x40015800UL +#else +#define IR_REG_BASE 0x40016000UL +#endif +#if (IC_TYPE != IC_TYPE_BEE3) +#define SPORT0_REG_BASE 0x40020000UL +#define I2S0_REG_BASE 0x40020000UL +#define SPORT1_REG_BASE 0x40021000UL +#define I2S1_REG_BASE 0x40021000UL +#endif +#define SPDIF_REG_BASE 0x40021800UL +#define CODEC_ANA_REG_BASE 0x40022000UL +#define CODEC_REG_BASE 0x40022100UL +#define H2D_D2H_REG_BASE 0x40023000UL +#if (IC_TYPE == IC_TYPE_SBEE2) +#define UART2_REG_BASE 0x40024000UL +#define IF8080_REG_BASE 0x40024800UL +#define IF8080_LLI_REG1_BASE 0x40024850UL +#define IF8080_LLI_REG1_GDMA_BASE 0x400248A0UL +#define IF8080_LLI_REG2_BASE 0x40024880UL +#define IF8080_LLI_REG2_GDMA_BASE 0x400248C0UL +#define IF8080_LLI_REG1_OFT_BASE 0x40024870UL +#define IF8080_LLI_REG2_OFT_BASE 0x40024878UL +#define IF8080_LLI_CR_REG_BASE 0x40024894UL +#endif +#define GDMA_CHANNEL_REG_BASE 0x40027000UL // for platform_1_1_1_20160323 later +#define GDMA_Channel0_BASE (GDMA_CHANNEL_REG_BASE + 0x0000) +#define GDMA_Channel1_BASE (GDMA_CHANNEL_REG_BASE + 0x0058) +#define GDMA_Channel2_BASE (GDMA_CHANNEL_REG_BASE + 0x00b0) +#define GDMA_Channel3_BASE (GDMA_CHANNEL_REG_BASE + 0x0108) +#if (IC_TYPE == IC_TYPE_SBEE2) +#define GDMA_Channel4_BASE (GDMA_CHANNEL_REG_BASE + 0x0160) +#define GDMA_Channel5_BASE (GDMA_CHANNEL_REG_BASE + 0x01b8) +#endif +#define GDMA_REG_BASE (GDMA_CHANNEL_REG_BASE + 0x02c0) +#define I2S0_REG_BASE 0x40029000UL +#define RTL_SPI0_BASE 0x40042000UL +#define RTL_SPI1_BASE 0x40042400UL +#define BT_BB_REG_BASE 0x40050000UL +#define HCI_DMA_REG_BASE 0x40064000UL +#define HCI_UART_REG_BASE 0x40068000UL +#define BT_VENDOR_REG_BASE 0x40058000UL +#define SECURITY_REG_BASE 0x40058f28UL +#define GDMA0_REG_BASE 0x40060000UL +#define SPIC0_REG_BASE 0x40080000UL +#define SPIC1_REG_BASE 0x40090000UL +#define SPIC2_REG_BASE 0x400A0000UL + +#define SPI0_MASTER_MODE_REG *((volatile uint32_t *)0x40000308UL) +#define SPI0_MASTER_MODE_BIT BIT(8) + +/** @brief clock divider for peripheral */ +#define SYSTEM_CLK_CTRL *((volatile uint32_t *)0x4000020CUL) +#define CLK_SOURCE_REG_1 *((volatile uint32_t *)0x4000035CUL) +#define CLK_SOURCE_REG_2 *((volatile uint32_t *)0x40000360UL) + +#define REG_PEON_SYS_CLK_SEL 0x0200 +#define REG_PEON_SYS_CLK_SEL_2 0x0208 +#define REG_PEON_SYS_CLK_SEL_3 0x020C +#define REG_SOC_FUNC_EN 0x0210 +#define REG_SOC_HCI_COM_FUNC_EN 0x0214 +#define REG_SOC_PERI_FUNC0_EN 0x0218 +#define REG_SOC_PERI_FUNC1_EN 0x021C +#define REG_PESOC_CLK_CTRL 0x0230 +#define REG_PESOC_PERI_CLK_CTRL0 0x0234 +#define REG_PESOC_PERI_CLK_CTRL1 0x0238 +#define REG_PESOC_DSP_SHARE_RAM 0x0250 +#define REG_TEST_MODE 0x02a8 +#define REG_ANAPAR_PLL1_0 0x0320 +#define REG_ANAPAR_PLL3_2 0x0324 +#define REG_ANAPAR_PLL5_4 0x0328 +#define REG_XTAL_PLL_READY 0x0338 + +#define GPIO_OUTPUT_OFFSET 0x00 +#define GPIO_DIRECTION_OFFSET 0x04 + +/** @brief AON PAD AREA */ +#define REG_PAD_WKEN_ADDRESS 0x20 +#define REG_PAD_WK_CTRL_ADDRESS 0x12d +#define REG_PAD_WKPOL_ADDRESS 0x25 +#define REG_PAD_O_ADDRESS 0x2A +#define REG_AON_PAD_E_ADDRESS 0x2F +#define REG_AON_PAD_S_ADDRESS 0x34 +#define REG_AON_PAD_PU_ADDRESS 0x39 +#define REG_AON_PAD_PD_ADDRESS 0x3E +#define REG_AON_PAD_PWRON_ADDRESS 0x4C + +#define BIT_WK_INTEN (1U << 7) /**< BIT7 */ +#define BIT_WK_FLAG_GPIO (1U << 6) /**< BIT6 */ + +#define BIT_SOC_ACTCK_GPIO_EN (1U << 24) /**< BIT24 */ +#define BIT_PERI_GPIO_EN (1U << 8) /**< BIT8 */ + +#define BIT_PERI_KEYSCAN_EN (1U << 19) /**< BIT19 */ +#define BIT_SOC_ACTCK_KEYSCAN_EN (1U << 6) /**< BIT6 */ + + +/* ================================================================================ */ +/* ================ Peripheral declaration ================ */ +/* ================================================================================ */ +/** @brief System */ +#define PERIPH ((PHERIPHERIAL_TypeDef *) PERIPH_REG_BASE) +#define SYSBLKCTRL ((SYS_BLKCTRL_TypeDef *) SYSBLKCTRL_REG_BASE) +#define PERIPHINT ((PERI_INT_TypeDef *) VENDOR_REG_BASE) +#define SECURITY ((SECURITY_TypeDef *) SECURITY_REG_BASE) + +/** @brief IO */ +#define PINMUX ((PINMUX_TypeDef *) PINMUX_REG_BASE) +#define KEYSCAN ((KEYSCAN_TypeDef *) KEYSCAN_REG_BASE) +#define GPIO ((GPIO_TypeDef *) GPIO_REG_BASE) +#define QDEC ((QDEC_TypeDef *) QDEC_REG_BASE) +#define ADC ((ADC_TypeDef *) ADC_REG_BASE) +#define CODEC_ANA ((CODEC_AnalogTypeDef *) CODEC_ANA_REG_BASE) +#define CODEC ((CODEC_TypeDef *) CODEC_REG_BASE) +#define CTC ((CTC_TypeDef *) CAP_TOUCH_BASE) +#define CTC_Channel0 ((CTC_ChannelTypeDef *) CTC_Channel0_BASE) +#define CTC_Channel1 ((CTC_ChannelTypeDef *) CTC_Channel1_BASE) +#define CTC_Channel2 ((CTC_ChannelTypeDef *) CTC_Channel2_BASE) +#define CTC_Channel3 ((CTC_ChannelTypeDef *) CTC_Channel3_BASE) +#define CTC_Channel4 ((CTC_ChannelTypeDef *) CTC_Channel4_BASE) +#define CTC_FAST ((CTC_FSModeTypeDef *) CTC_FAST_BASE) +#define ENH_TIM0 ((ENHTIM_TypeDef *) ENHTIM0_REG_BASE) +#define ENH_TIM1 ((ENHTIM_TypeDef *) ENHTIM1_REG_BASE) +#define ENH_TIM_SHARE ((ENHTIM_ShareTypeDef *) ENHTIM_SHARE_REG_BASE) +#define GDMA_BASE ((GDMA_TypeDef *) GDMA_REG_BASE) +#define GDMA_Channel0 ((GDMA_ChannelTypeDef *) GDMA_Channel0_BASE) +#define GDMA_Channel1 ((GDMA_ChannelTypeDef *) GDMA_Channel1_BASE) +#define GDMA_Channel2 ((GDMA_ChannelTypeDef *) GDMA_Channel2_BASE) +#define GDMA_Channel3 ((GDMA_ChannelTypeDef *) GDMA_Channel3_BASE) +#define I2C0 ((I2C_TypeDef *) I2C0_REG_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_REG_BASE) +#define I2S0 ((I2S_TypeDef *) I2S0_REG_BASE) +#define IR ((IR_TypeDef *) IR_REG_BASE) +#define LPC ((LPC_TypeDef *) LPC_REG_BASE) +#define HWAES ((HW_AES_TypeDef *) HW_AES_REG_BASE) +#define WDG ((WDG_TypeDef *) WDG_REG_BASE) +#define AON_WDG ((AON_WDG_TypeDef *) AON_WDG_REG_BASE) +#define RAN_GEN ((RAN_GEN_TypeDef *) RANDOM_GEN_REG_BASE) +#define ICG ((ICG_TypeDef *) ICG_REG_BASE) +#define CACHE ((CACHE_TypeDef *) CACHE_REG_BASE) +#define RTC ((RTC_TypeDef *) RTC_REG_BASE) +#define RTC_LED ((RTC_LED_TypeDef *) RTC_LED_REG_BASE) +#define RTC_LP ((RTC_LP_TypeDef *) RTC_LP_REG_BASE) +#define SPI0 ((SPI_TypeDef *) SPI0_REG_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_REG_BASE) +#define SPI3WIRE ((SPI3WIRE_TypeDef *) SPI2WIRE_REG_BASE) +#define SPIC ((SPIC_TypeDef *) SPIC0_REG_BASE) +#define SPIC0 ((SPIC_TypeDef *) SPIC0_REG_BASE) +#define SPIC1 ((SPIC_TypeDef *) SPIC1_REG_BASE) +#define SPIC2 ((SPIC_TypeDef *) SPIC2_REG_BASE) +#define TIM0 ((TIM_TypeDef *) TIM0_REG_BASE) +#define TIM1 ((TIM_TypeDef *) TIM1_REG_BASE) +#define TIM2 ((TIM_TypeDef *) TIM2_REG_BASE) +#define TIM3 ((TIM_TypeDef *) TIM3_REG_BASE) +#define TIM4 ((TIM_TypeDef *) TIM4_REG_BASE) +#define TIM5 ((TIM_TypeDef *) TIM5_REG_BASE) +#define UART0 ((UART_TypeDef *) UART0_REG_BASE) +#define UART1 ((UART_TypeDef *) UART1_REG_BASE) + +#define CLK_GATE ((Peri_ClockGate_TypeDef*) PERI_CLOCKGATE_REG_BASE) + +//Add by Vendor +#define LITTLE_ENDIAN 0 +#define BIG_ENDIAN 1 +#define SYSTEM_ENDIAN LITTLE_ENDIAN + +#define SWAP32(x) ((uint32_t)(\ + (((uint32_t)(x) & (uint32_t)0x000000ff) << 24) |\ + (((uint32_t)(x) & (uint32_t)0x0000ff00) << 8) |\ + (((uint32_t)(x) & (uint32_t)0x00ff0000) >> 8) |\ + (((uint32_t)(x) & (uint32_t)0xff000000) >> 24))) + +#define WAP16(x) ((uint16_t)(\ + (((uint16_t)(x) & (uint16_t)0x00ff) << 8) |\ + (((uint16_t)(x) & (uint16_t)0xff00) >> 8))) + +#if SYSTEM_ENDIAN == LITTLE_ENDIAN +#ifndef rtk_le16_to_cpu +#define rtk_cpu_to_le32(x) ((uint32_t)(x)) +#define rtk_le32_to_cpu(x) ((uint32_t)(x)) +#define rtk_cpu_to_le16(x) ((uint16_t)(x)) +#define rtk_le16_to_cpu(x) ((uint16_t)(x)) +#define rtk_cpu_to_be32(x) SWAP32((x)) +#define rtk_be32_to_cpu(x) SWAP32((x)) +#define rtk_cpu_to_be16(x) WAP16((x)) +#define rtk_be16_to_cpu(x) WAP16((x)) +#endif + +#elif SYSTEM_ENDIAN == BIG_ENDIAN +#ifndef rtk_le16_to_cpu +#define rtk_cpu_to_le32(x) SWAP32((x)) +#define rtk_le32_to_cpu(x) SWAP32((x)) +#define rtk_cpu_to_le16(x) WAP16((x)) +#define rtk_le16_to_cpu(x) WAP16((x)) +#define rtk_cpu_to_be32(x) ((uint32_t)(x)) +#define rtk_be32_to_cpu(x) ((uint32_t)(x)) +#define rtk_cpu_to_be16(x) ((uint16_t)(x)) +#define rtk_be16_to_cpu(x) ((uint16_t)(x)) +#endif +#endif + +#define HAL_READ32(base, addr) \ + rtk_le32_to_cpu(*((volatile uint32_t *)(base + addr))) + +#define HAL_WRITE32(base, addr, value32) \ + ((*((volatile uint32_t *)(base + addr))) = rtk_cpu_to_le32(value32)) + +#define HAL_UPDATE32(addr, mask, value32) \ + HAL_WRITE32(0, addr, (HAL_READ32(0, addr) & ~mask) | (value32 & mask)) + +#define HAL_READ16(base, addr) \ + rtk_le16_to_cpu(*((volatile uint16_t *)(base + addr))) + +#define HAL_WRITE16(base, addr, value) \ + ((*((volatile uint16_t *)(base + addr))) = rtk_cpu_to_le16(value)) + +#define HAL_UPDATE16(addr, mask, value16) \ + HAL_WRITE16(0, addr, (HAL_READ16(0, addr) & ~mask) | (value16 & mask)) + +#define HAL_READ8(base, addr) \ + (*((volatile uint8_t *)(base + addr))) + +#define HAL_WRITE8(base, addr, value) \ + ((*((volatile uint8_t *)(base + addr))) = value) + +#define HAL_UPDATE8(addr, mask, value8) \ + HAL_WRITE8(0, addr, (HAL_READ8(0, addr) & ~mask) | (value8 & mask)) + +#define BIT0 0x00000001 +#define BIT1 0x00000002 +#define BIT2 0x00000004 +#define BIT3 0x00000008 +#define BIT4 0x00000010 +#define BIT5 0x00000020 +#define BIT6 0x00000040 +#define BIT7 0x00000080 +#define BIT8 0x00000100 +#define BIT9 0x00000200 +#define BIT10 0x00000400 +#define BIT11 0x00000800 +#define BIT12 0x00001000 +#define BIT13 0x00002000 +#define BIT14 0x00004000 +#define BIT15 0x00008000 +#define BIT16 0x00010000 +#define BIT17 0x00020000 +#define BIT18 0x00040000 +#define BIT19 0x00080000 +#define BIT20 0x00100000 +#define BIT21 0x00200000 +#define BIT22 0x00400000 +#define BIT23 0x00800000 +#define BIT24 0x01000000 +#define BIT25 0x02000000 +#define BIT26 0x04000000 +#define BIT27 0x08000000 +#define BIT28 0x10000000 +#define BIT29 0x20000000 +#define BIT30 0x40000000 +#define BIT31 0x80000000 + +#ifdef BIT +#undef BIT +#endif +#define BIT(_n) (uint32_t)(1U << (_n)) + +#ifdef BIT64 +#undef BIT64 +#endif +#define BIT64(n) (1ULL << (n)) + +#define BIT_BAND(reg, bit_pos) (*((volatile uint32_t*)(0x42000000 + ((uint32_t)® - 0x40000000) * 32 + bit_pos * 4))) + + +/* Uncomment the line below to expanse the "assert_param" macro in the + Standard Peripheral Library drivers code */ + +//#define USE_FULL_ASSERT + +/** @} */ /* End of group RTL876X_Exported_Macros */ + + +/*============================================================================* + * Functions + *============================================================================*/ +/** @defgroup RTL876X_Exported_Functions RTL876X Sets Exported Functions + * @brief + * @{ + */ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function which reports + * the name of the source file and the source line number of the call + * that failed. If expr is true, it return no value. + * @retval None + */ +#define assert_param(expr) ((expr) ? (void)0 : io_assert_failed((uint8_t *)__FILE__, __LINE__)) +void io_assert_failed(uint8_t *file, uint32_t line); +#else +#define assert_param(expr) ((void)0) +#endif /* USE_FULL_ASSERT */ + +/** + * @brief Read data from aon register + * @param offset: register address + * @return data read from register + */ +extern uint16_t btaon_fast_read(uint16_t offset); +extern uint8_t btaon_fast_read_8b(uint16_t offset); + +/** + * @brief Read data from aon register safely + * @param offset: register address + * @return data read from register + */ +extern uint16_t btaon_fast_read_safe(uint16_t offset); +extern uint8_t btaon_fast_read_safe_8b(uint16_t offset); + +/** + * @brief Write data to aon register + * @param offset: register address + * @param data: data to be written to register + * @return + */ +extern void btaon_fast_write(uint16_t offset, uint16_t data); +extern void btaon_fast_write_8b(uint16_t offset, uint8_t data); + +/** + * @brief Write data to aon egister safely + * @param offset: register address + * @param data: data to be written to register + * @return + */ +extern void btaon_fast_write_safe(uint16_t offset, uint16_t data); +extern void btaon_fast_write_safe_8b(uint16_t offset, uint8_t data); + +/** + * @brief Write data to aon egister + * @param offset: register address + * @param mask: indicate which bit in data will be updated + * @param data: data to be written to register + * @return + */ +extern void btaon_fast_update(uint16_t offset, uint16_t mask, uint16_t data); +extern void btaon_fast_update_8b(uint16_t offset, uint8_t mask, uint8_t data); + +/** + * @brief Write data to aon egister safely + * @param offset: register address + * @param mask: indicate which bit in data will be updated + * @param data: data to be written to register + * @return + */ +extern void btaon_fast_update_safe(uint16_t offset, uint16_t mask, uint16_t data); +extern void btaon_fast_update_safe_8b(uint16_t offset, uint8_t mask, uint8_t data); + +/** @} */ /* End of RTL876X_Exported_Functions */ + +/** @} */ /* End of group RTL876X */ + +#ifdef __cplusplus +} +#endif +#endif /* RTL876X_H */ + |