1 /*
2  * Copyright (c) 2024 Microchip Technology Inc.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 #ifndef _MEC5_VBATR_V1_4_H
7 #define _MEC5_VBATR_V1_4_H
8 
9 /** @addtogroup Device_Peripheral_peripherals
10   * @{
11   */
12 
13 /**
14   * @brief VBAT 0 register bank (MEC_VBATR)
15   */
16 
17 typedef struct mec_vbatr_regs {                 /*!< (@ 0x4000A400) MEC_VBATR Structure                                        */
18   __IOM uint32_t  PFRS;                         /*!< (@ 0x00000000) VBAT Power fail reset status                               */
19   __IM  uint32_t  RESERVED;
20   __IOM uint32_t  CLK32K_SRC;                   /*!< (@ 0x00000008) VBAT 32KHz source select                                   */
21   __IM  uint32_t  RESERVED1[2];
22   __IOM uint32_t  ST32KV;                       /*!< (@ 0x00000014) VBAT 32KHz silicon OSC trim value                          */
23   __IM  uint32_t  RESERVED2;
24   __IOM uint32_t  ST32KC;                       /*!< (@ 0x0000001C) VBAT 32KHz silicon OSC trim control                        */
25   __IM  uint32_t  MCNTL;                        /*!< (@ 0x00000020) VBAT Monotonic counter bits[31:0]                          */
26   __IOM uint32_t  MCNTH;                        /*!< (@ 0x00000024) VBAT Monotonic counter bits[63:32]                         */
27   __IOM uint32_t  ROM_FEAT;                     /*!< (@ 0x00000028) VBAT ROM Feature                                           */
28   __IM  uint32_t  RESERVED3[2];
29   __IOM uint32_t  ERDE;                         /*!< (@ 0x00000034) VBAT embedded reset debounce enable                        */
30 } MEC_VBATR_Type;                               /*!< Size = 56 (0x38)                                                          */
31 
32 /** @} */ /* End of group Device_Peripheral_peripherals */
33 
34 /** @addtogroup PosMask_peripherals
35   * @{
36   */
37 /* =========================================================  PFRS  ========================================================== */
38 #define MEC_VBATR_PFRS_SOFT_SYS_Pos       (2UL)                     /*!< SOFT_SYS (Bit 2)                                      */
39 #define MEC_VBATR_PFRS_SOFT_SYS_Msk       (0x4UL)                   /*!< SOFT_SYS (Bitfield-Mask: 0x01)                        */
40 #define MEC_VBATR_PFRS_RESETI_Pos         (4UL)                     /*!< RESETI (Bit 4)                                        */
41 #define MEC_VBATR_PFRS_RESETI_Msk         (0x10UL)                  /*!< RESETI (Bitfield-Mask: 0x01)                          */
42 #define MEC_VBATR_PFRS_WDT_Pos            (5UL)                     /*!< WDT (Bit 5)                                           */
43 #define MEC_VBATR_PFRS_WDT_Msk            (0x20UL)                  /*!< WDT (Bitfield-Mask: 0x01)                             */
44 #define MEC_VBATR_PFRS_SYSRSTREQ_Pos      (6UL)                     /*!< SYSRSTREQ (Bit 6)                                     */
45 #define MEC_VBATR_PFRS_SYSRSTREQ_Msk      (0x40UL)                  /*!< SYSRSTREQ (Bitfield-Mask: 0x01)                       */
46 #define MEC_VBATR_PFRS_VBAT_RST_Pos       (7UL)                     /*!< VBAT_RST (Bit 7)                                      */
47 #define MEC_VBATR_PFRS_VBAT_RST_Msk       (0x80UL)                  /*!< VBAT_RST (Bitfield-Mask: 0x01)                        */
48 /* ======================================================  CLK32K_SRC  ======================================================= */
49 #define MEC_VBATR_CLK32K_SRC_SILOSC_Pos   (0UL)                     /*!< SILOSC (Bit 0)                                        */
50 #define MEC_VBATR_CLK32K_SRC_SILOSC_Msk   (0x1UL)                   /*!< SILOSC (Bitfield-Mask: 0x01)                          */
51 #define MEC_VBATR_CLK32K_SRC_XTAL_Pos     (8UL)                     /*!< XTAL (Bit 8)                                          */
52 #define MEC_VBATR_CLK32K_SRC_XTAL_Msk     (0x100UL)                 /*!< XTAL (Bitfield-Mask: 0x01)                            */
53 #define MEC_VBATR_CLK32K_SRC_XTAL_XOSEL_Pos (9UL)                   /*!< XTAL_XOSEL (Bit 9)                                    */
54 #define MEC_VBATR_CLK32K_SRC_XTAL_XOSEL_Msk (0x200UL)               /*!< XTAL_XOSEL (Bitfield-Mask: 0x01)                      */
55 #define MEC_VBATR_CLK32K_SRC_XTAL_HSC_Pos (10UL)                    /*!< XTAL_HSC (Bit 10)                                     */
56 #define MEC_VBATR_CLK32K_SRC_XTAL_HSC_Msk (0x400UL)                 /*!< XTAL_HSC (Bitfield-Mask: 0x01)                        */
57 #define MEC_VBATR_CLK32K_SRC_XTAL_CNTR_Pos (11UL)                   /*!< XTAL_CNTR (Bit 11)                                    */
58 #define MEC_VBATR_CLK32K_SRC_XTAL_CNTR_Msk (0x1800UL)               /*!< XTAL_CNTR (Bitfield-Mask: 0x03)                       */
59 #define MEC_VBATR_CLK32K_SRC_PSSEL_Pos    (16UL)                    /*!< PSSEL (Bit 16)                                        */
60 #define MEC_VBATR_CLK32K_SRC_PSSEL_Msk    (0x30000UL)               /*!< PSSEL (Bitfield-Mask: 0x03)                           */
61 #define MEC_VBATR_CLK32K_SRC_NOVTR_SILOSC_Pos (18UL)                /*!< NOVTR_SILOSC (Bit 18)                                 */
62 #define MEC_VBATR_CLK32K_SRC_NOVTR_SILOSC_Msk (0x40000UL)           /*!< NOVTR_SILOSC (Bitfield-Mask: 0x01)                    */
63 /* =========================================================  ERDE  ========================================================== */
64 #define MEC_VBATR_ERDE_EN_Pos             (0UL)                     /*!< EN (Bit 0)                                            */
65 #define MEC_VBATR_ERDE_EN_Msk             (0x1UL)                   /*!< EN (Bitfield-Mask: 0x01)                              */
66 
67 /** @} */ /* End of group PosMask_peripherals */
68 
69 /** @addtogroup EnumValue_peripherals
70   * @{
71   */
72 /* =========================================================  PFRS  ========================================================== */
73 /* ============================================  MEC_VBATR PFRS SOFT_SYS [2..2]  ============================================= */
74 typedef enum {                                  /*!< MEC_VBATR_PFRS_SOFT_SYS                                                   */
75   MEC_VBATR_PFRS_SOFT_SYS_STS          = 1,     /*!< STS : Active                                                              */
76 } MEC_VBATR_PFRS_SOFT_SYS_Enum;
77 
78 /* =============================================  MEC_VBATR PFRS RESETI [4..4]  ============================================== */
79 typedef enum {                                  /*!< MEC_VBATR_PFRS_RESETI                                                     */
80   MEC_VBATR_PFRS_RESETI_STS            = 1,     /*!< STS : Active                                                              */
81 } MEC_VBATR_PFRS_RESETI_Enum;
82 
83 /* ===============================================  MEC_VBATR PFRS WDT [5..5]  =============================================== */
84 typedef enum {                                  /*!< MEC_VBATR_PFRS_WDT                                                        */
85   MEC_VBATR_PFRS_WDT_STS               = 1,     /*!< STS : Active                                                              */
86 } MEC_VBATR_PFRS_WDT_Enum;
87 
88 /* ============================================  MEC_VBATR PFRS SYSRSTREQ [6..6]  ============================================ */
89 typedef enum {                                  /*!< MEC_VBATR_PFRS_SYSRSTREQ                                                  */
90   MEC_VBATR_PFRS_SYSRSTREQ_STS         = 1,     /*!< STS : Active                                                              */
91 } MEC_VBATR_PFRS_SYSRSTREQ_Enum;
92 
93 /* ============================================  MEC_VBATR PFRS VBAT_RST [7..7]  ============================================= */
94 typedef enum {                                  /*!< MEC_VBATR_PFRS_VBAT_RST                                                   */
95   MEC_VBATR_PFRS_VBAT_RST_STS          = 1,     /*!< STS : Active                                                              */
96 } MEC_VBATR_PFRS_VBAT_RST_Enum;
97 
98 /* ======================================================  CLK32K_SRC  ======================================================= */
99 /* ==========================================  MEC_VBATR CLK32K_SRC SILOSC [0..0]  =========================================== */
100 typedef enum {                                  /*!< MEC_VBATR_CLK32K_SRC_SILOSC                                               */
101   MEC_VBATR_CLK32K_SRC_SILOSC_EN       = 1,     /*!< EN : Enable                                                               */
102 } MEC_VBATR_CLK32K_SRC_SILOSC_Enum;
103 
104 /* ===========================================  MEC_VBATR CLK32K_SRC XTAL [8..8]  ============================================ */
105 typedef enum {                                  /*!< MEC_VBATR_CLK32K_SRC_XTAL                                                 */
106   MEC_VBATR_CLK32K_SRC_XTAL_EN         = 1,     /*!< EN : Enable                                                               */
107 } MEC_VBATR_CLK32K_SRC_XTAL_Enum;
108 
109 /* ========================================  MEC_VBATR CLK32K_SRC XTAL_XOSEL [9..9]  ========================================= */
110 typedef enum {                                  /*!< MEC_VBATR_CLK32K_SRC_XTAL_XOSEL                                           */
111   MEC_VBATR_CLK32K_SRC_XTAL_XOSEL_PAR  = 0,     /*!< PAR : Parallel connection between XTAL1 and XTAL2 pins                    */
112   MEC_VBATR_CLK32K_SRC_XTAL_XOSEL_SE   = 1,     /*!< SE : Single-ended connection to XTAL2 pin only                            */
113 } MEC_VBATR_CLK32K_SRC_XTAL_XOSEL_Enum;
114 
115 /* ========================================  MEC_VBATR CLK32K_SRC XTAL_HSC [10..10]  ========================================= */
116 typedef enum {                                  /*!< MEC_VBATR_CLK32K_SRC_XTAL_HSC                                             */
117   MEC_VBATR_CLK32K_SRC_XTAL_HSC_EN     = 0,     /*!< EN : Enable                                                               */
118   MEC_VBATR_CLK32K_SRC_XTAL_HSC_DIS    = 1,     /*!< DIS : Enable                                                              */
119 } MEC_VBATR_CLK32K_SRC_XTAL_HSC_Enum;
120 
121 /* ========================================  MEC_VBATR CLK32K_SRC XTAL_CNTR [11..12]  ======================================== */
122 typedef enum {                                  /*!< MEC_VBATR_CLK32K_SRC_XTAL_CNTR                                            */
123   MEC_VBATR_CLK32K_SRC_XTAL_CNTR_MODE0 = 0,     /*!< MODE0 : Crystal startup mode 0                                            */
124   MEC_VBATR_CLK32K_SRC_XTAL_CNTR_MODE1 = 1,     /*!< MODE1 : Crystal startup mode 1                                            */
125   MEC_VBATR_CLK32K_SRC_XTAL_CNTR_MODE2 = 2,     /*!< MODE2 : Crystal startup mode 2                                            */
126   MEC_VBATR_CLK32K_SRC_XTAL_CNTR_MODE3 = 3,     /*!< MODE3 : Crystal startup mode 3                                            */
127 } MEC_VBATR_CLK32K_SRC_XTAL_CNTR_Enum;
128 
129 /* ==========================================  MEC_VBATR CLK32K_SRC PSSEL [16..17]  ========================================== */
130 typedef enum {                                  /*!< MEC_VBATR_CLK32K_SRC_PSSEL                                                */
131   MEC_VBATR_CLK32K_SRC_PSSEL_SILOSC    = 0,     /*!< SILOSC : Use silicon OSC for VTR and VBAT-only                            */
132   MEC_VBATR_CLK32K_SRC_PSSEL_XTAL      = 1,     /*!< XTAL : Use crystal for VTR and VBAT-only                                  */
133   MEC_VBATR_CLK32K_SRC_PSSEL_PIN_SIL   = 2,     /*!< PIN_SIL : Use 32KHZ_IN for VTR and Sil-OSC for VBAT-only                  */
134   MEC_VBATR_CLK32K_SRC_PSSEL_PIN_XTAL  = 3,     /*!< PIN_XTAL : Use 32KHZ_IN pin for VTR and XTAL for VBAT-only                */
135 } MEC_VBATR_CLK32K_SRC_PSSEL_Enum;
136 
137 /* ======================================  MEC_VBATR CLK32K_SRC NOVTR_SILOSC [18..18]  ======================================= */
138 typedef enum {                                  /*!< MEC_VBATR_CLK32K_SRC_NOVTR_SILOSC                                         */
139   MEC_VBATR_CLK32K_SRC_NOVTR_SILOSC_EN = 0,     /*!< EN : Keep silicon oscillator enabled when VTR is off                      */
140   MEC_VBATR_CLK32K_SRC_NOVTR_SILOSC_DIS = 1,    /*!< DIS : Disable silicon oscillator when VTR is off                          */
141 } MEC_VBATR_CLK32K_SRC_NOVTR_SILOSC_Enum;
142 
143 /* =========================================================  ERDE  ========================================================== */
144 /* ===============================================  MEC_VBATR ERDE EN [0..0]  ================================================ */
145 typedef enum {                                  /*!< MEC_VBATR_ERDE_EN                                                         */
146   MEC_VBATR_ERDE_EN_ON                 = 1,     /*!< ON : Enable                                                               */
147 } MEC_VBATR_ERDE_EN_Enum;
148 
149 /** @} */ /* End of group EnumValue_peripherals */
150 
151 #endif /* _MEC5_VBATR_V1_4_H */
152