1 /*
2  * Copyright (c) 2024 Microchip Technology Inc.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 #ifndef _MEC5_BBLED_V1_H
7 #define _MEC5_BBLED_V1_H
8 
9 /** @addtogroup Device_Peripheral_peripherals
10   * @{
11   */
12 
13 /**
14   * @brief Breathing-blinking LED controller (MEC_BBLED)
15   */
16 
17 typedef struct mec_bbled_regs {                 /*!< (@ 0x4000B800) MEC_LED0 Structure                                         */
18   __IOM uint32_t  CONFIG;                       /*!< (@ 0x00000000) LED config                                                 */
19   __IOM uint32_t  LIMITS;                       /*!< (@ 0x00000004) LED limits                                                 */
20   __IOM uint32_t  DELAY;                        /*!< (@ 0x00000008) LED delay                                                  */
21   __IOM uint32_t  UPDSS;                        /*!< (@ 0x0000000C) LED update step size                                       */
22   __IOM uint32_t  UPINVL;                       /*!< (@ 0x00000010) LED update interval                                        */
23   __IOM uint32_t  OUTDLY;                       /*!< (@ 0x00000014) LED output delay                                           */
24 } MEC_BBLED_Type;                               /*!< Size = 24 (0x18)                                                          */
25 /** @} */ /* End of group Device_Peripheral_peripherals */
26 
27 /** @addtogroup PosMask_peripherals
28   * @{
29   */
30 /* ========================================================  CONFIG  ========================================================= */
31 #define MEC_BBLED_CONFIG_CTRL_Pos         (0UL)                     /*!< CTRL (Bit 0)                                          */
32 #define MEC_BBLED_CONFIG_CTRL_Msk         (0x3UL)                   /*!< CTRL (Bitfield-Mask: 0x03)                            */
33 #define MEC_BBLED_CONFIG_CLKSRC_Pos       (2UL)                     /*!< CLKSRC (Bit 2)                                        */
34 #define MEC_BBLED_CONFIG_CLKSRC_Msk       (0x4UL)                   /*!< CLKSRC (Bitfield-Mask: 0x01)                          */
35 #define MEC_BBLED_CONFIG_SYNC_Pos         (3UL)                     /*!< SYNC (Bit 3)                                          */
36 #define MEC_BBLED_CONFIG_SYNC_Msk         (0x8UL)                   /*!< SYNC (Bitfield-Mask: 0x01)                            */
37 #define MEC_BBLED_CONFIG_PWM_SZ_Pos       (4UL)                     /*!< PWM_SZ (Bit 4)                                        */
38 #define MEC_BBLED_CONFIG_PWM_SZ_Msk       (0x30UL)                  /*!< PWM_SZ (Bitfield-Mask: 0x03)                          */
39 #define MEC_BBLED_CONFIG_UPDATE_Pos       (6UL)                     /*!< UPDATE (Bit 6)                                        */
40 #define MEC_BBLED_CONFIG_UPDATE_Msk       (0x40UL)                  /*!< UPDATE (Bitfield-Mask: 0x01)                          */
41 #define MEC_BBLED_CONFIG_SRST_Pos         (7UL)                     /*!< SRST (Bit 7)                                          */
42 #define MEC_BBLED_CONFIG_SRST_Msk         (0x80UL)                  /*!< SRST (Bitfield-Mask: 0x01)                            */
43 #define MEC_BBLED_CONFIG_WDTRLD_Pos       (8UL)                     /*!< WDTRLD (Bit 8)                                        */
44 #define MEC_BBLED_CONFIG_WDTRLD_Msk       (0xff00UL)                /*!< WDTRLD (Bitfield-Mask: 0xff)                          */
45 #define MEC_BBLED_CONFIG_ASYM_Pos         (16UL)                    /*!< ASYM (Bit 16)                                         */
46 #define MEC_BBLED_CONFIG_ASYM_Msk         (0x10000UL)               /*!< ASYM (Bitfield-Mask: 0x01)                            */
47 /* ========================================================  LIMITS  ========================================================= */
48 #define MEC_BBLED_LIMITS_MIN_Pos          (0UL)                     /*!< MIN (Bit 0)                                           */
49 #define MEC_BBLED_LIMITS_MIN_Msk          (0xffUL)                  /*!< MIN (Bitfield-Mask: 0xff)                             */
50 #define MEC_BBLED_LIMITS_MAX_Pos          (8UL)                     /*!< MAX (Bit 8)                                           */
51 #define MEC_BBLED_LIMITS_MAX_Msk          (0xff00UL)                /*!< MAX (Bitfield-Mask: 0xff)                             */
52 /* =========================================================  DELAY  ========================================================= */
53 #define MEC_BBLED_DELAY_LO_Pos            (0UL)                     /*!< LO (Bit 0)                                            */
54 #define MEC_BBLED_DELAY_LO_Msk            (0xfffUL)                 /*!< LO (Bitfield-Mask: 0xfff)                             */
55 #define MEC_BBLED_DELAY_HI_Pos            (12UL)                    /*!< HI (Bit 12)                                           */
56 #define MEC_BBLED_DELAY_HI_Msk            (0xfff000UL)              /*!< HI (Bitfield-Mask: 0xfff)                             */
57 /* =========================================================  UPDSS  ========================================================= */
58 #define MEC_BBLED_UPDSS_STEP0_Pos         (0UL)                     /*!< STEP0 (Bit 0)                                         */
59 #define MEC_BBLED_UPDSS_STEP0_Msk         (0xfUL)                   /*!< STEP0 (Bitfield-Mask: 0x0f)                           */
60 #define MEC_BBLED_UPDSS_STEP1_Pos         (4UL)                     /*!< STEP1 (Bit 4)                                         */
61 #define MEC_BBLED_UPDSS_STEP1_Msk         (0xf0UL)                  /*!< STEP1 (Bitfield-Mask: 0x0f)                           */
62 #define MEC_BBLED_UPDSS_STEP2_Pos         (8UL)                     /*!< STEP2 (Bit 8)                                         */
63 #define MEC_BBLED_UPDSS_STEP2_Msk         (0xf00UL)                 /*!< STEP2 (Bitfield-Mask: 0x0f)                           */
64 #define MEC_BBLED_UPDSS_STEP3_Pos         (12UL)                    /*!< STEP3 (Bit 12)                                        */
65 #define MEC_BBLED_UPDSS_STEP3_Msk         (0xf000UL)                /*!< STEP3 (Bitfield-Mask: 0x0f)                           */
66 #define MEC_BBLED_UPDSS_STEP4_Pos         (16UL)                    /*!< STEP4 (Bit 16)                                        */
67 #define MEC_BBLED_UPDSS_STEP4_Msk         (0xf0000UL)               /*!< STEP4 (Bitfield-Mask: 0x0f)                           */
68 #define MEC_BBLED_UPDSS_STEP5_Pos         (20UL)                    /*!< STEP5 (Bit 20)                                        */
69 #define MEC_BBLED_UPDSS_STEP5_Msk         (0xf00000UL)              /*!< STEP5 (Bitfield-Mask: 0x0f)                           */
70 #define MEC_BBLED_UPDSS_STEP6_Pos         (24UL)                    /*!< STEP6 (Bit 24)                                        */
71 #define MEC_BBLED_UPDSS_STEP6_Msk         (0xf000000UL)             /*!< STEP6 (Bitfield-Mask: 0x0f)                           */
72 #define MEC_BBLED_UPDSS_STEP7_Pos         (28UL)                    /*!< STEP7 (Bit 28)                                        */
73 #define MEC_BBLED_UPDSS_STEP7_Msk         (0xf0000000UL)            /*!< STEP7 (Bitfield-Mask: 0x0f)                           */
74 /* ========================================================  UPINVL  ========================================================= */
75 #define MEC_BBLED_UPINVL_INTRV0_Pos       (0UL)                     /*!< INTRV0 (Bit 0)                                        */
76 #define MEC_BBLED_UPINVL_INTRV0_Msk       (0xfUL)                   /*!< INTRV0 (Bitfield-Mask: 0x0f)                          */
77 #define MEC_BBLED_UPINVL_INTRV1_Pos       (4UL)                     /*!< INTRV1 (Bit 4)                                        */
78 #define MEC_BBLED_UPINVL_INTRV1_Msk       (0xf0UL)                  /*!< INTRV1 (Bitfield-Mask: 0x0f)                          */
79 #define MEC_BBLED_UPINVL_INTRV2_Pos       (8UL)                     /*!< INTRV2 (Bit 8)                                        */
80 #define MEC_BBLED_UPINVL_INTRV2_Msk       (0xf00UL)                 /*!< INTRV2 (Bitfield-Mask: 0x0f)                          */
81 #define MEC_BBLED_UPINVL_INTRV3_Pos       (12UL)                    /*!< INTRV3 (Bit 12)                                       */
82 #define MEC_BBLED_UPINVL_INTRV3_Msk       (0xf000UL)                /*!< INTRV3 (Bitfield-Mask: 0x0f)                          */
83 #define MEC_BBLED_UPINVL_INTRV4_Pos       (16UL)                    /*!< INTRV4 (Bit 16)                                       */
84 #define MEC_BBLED_UPINVL_INTRV4_Msk       (0xf0000UL)               /*!< INTRV4 (Bitfield-Mask: 0x0f)                          */
85 #define MEC_BBLED_UPINVL_INTRV5_Pos       (20UL)                    /*!< INTRV5 (Bit 20)                                       */
86 #define MEC_BBLED_UPINVL_INTRV5_Msk       (0xf00000UL)              /*!< INTRV5 (Bitfield-Mask: 0x0f)                          */
87 #define MEC_BBLED_UPINVL_INTRV6_Pos       (24UL)                    /*!< INTRV6 (Bit 24)                                       */
88 #define MEC_BBLED_UPINVL_INTRV6_Msk       (0xf000000UL)             /*!< INTRV6 (Bitfield-Mask: 0x0f)                          */
89 #define MEC_BBLED_UPINVL_INTRV7_Pos       (28UL)                    /*!< INTRV7 (Bit 28)                                       */
90 #define MEC_BBLED_UPINVL_INTRV7_Msk       (0xf0000000UL)            /*!< INTRV7 (Bitfield-Mask: 0x0f)                          */
91 /* ========================================================  OUTDLY  ========================================================= */
92 #define MEC_BBLED_OUTDLY_CNT_Pos          (0UL)                     /*!< CNT (Bit 0)                                           */
93 #define MEC_BBLED_OUTDLY_CNT_Msk          (0xffUL)                    /*!< CNT (Bitfield-Mask: 0xff)                           */
94 
95 /** @} */ /* End of group PosMask_peripherals */
96 
97 /** @addtogroup EnumValue_peripherals
98   * @{
99   */
100 /* ========================================================  CONFIG  ========================================================= */
101 /* ==============================================  MEC_BBLED CONFIG CTRL [0..1]  ============================================== */
102 typedef enum {                                  /*!< MEC_BBLED_CONFIG_CTRL                                                      */
103   MEC_BBLED_CONFIG_CTRL_OFF             = 0,    /*!< OFF : Always off                                                          */
104   MEC_BBLED_CONFIG_CTRL_BREATH          = 1,    /*!< BREATH : LED breathing mode                                               */
105   MEC_BBLED_CONFIG_CTRL_BLINK           = 2,    /*!< BLINK : LED blink mode                                                    */
106   MEC_BBLED_CONFIG_CTRL_ON              = 3,    /*!< ON : PWM always ON                                                        */
107 } MEC_BBLED_CONFIG_CTRL_Enum;
108 
109 /* =============================================  MEC_BBLED CONFIG CLKSRC [2..2]  ============================================= */
110 typedef enum {                                  /*!< MEC_BBLED_CONFIG_CLKSRC                                                    */
111   MEC_BBLED_CONFIG_CLKSRC_32K           = 0,    /*!< 32K : 32KHz                                                               */
112   MEC_BBLED_CONFIG_CLKSRC_48M           = 1,    /*!< 48M : 48MHz                                                               */
113 } MEC_BBLED_CONFIG_CLKSRC_Enum;
114 
115 /* ==============================================  MEC_BBLED CONFIG SYNC [3..3]  ============================================== */
116 typedef enum {                                  /*!< MEC_BBLED_CONFIG_SYNC                                                      */
117   MEC_BBLED_CONFIG_SYNC_EN              = 1,    /*!< EN : Enable                                                               */
118 } MEC_BBLED_CONFIG_SYNC_Enum;
119 
120 /* =============================================  MEC_BBLED CONFIG PWM_SZ [4..5]  ============================================= */
121 typedef enum {                                  /*!< MEC_BBLED_CONFIG_PWM_SZ                                                    */
122   MEC_BBLED_CONFIG_PWM_SZ_8BIT          = 0,    /*!< 8BIT : PWM counter is 8-bit                                               */
123   MEC_BBLED_CONFIG_PWM_SZ_7BIT          = 1,    /*!< 7BIT : PWM counter is 7-bit                                               */
124   MEC_BBLED_CONFIG_PWM_SZ_6BIT          = 2,    /*!< 6BIT : PWM counter is 6-bit                                               */
125   MEC_BBLED_CONFIG_PWM_SZ_RSVD          = 3,    /*!< RSVD : PWM size reserved value                                            */
126 } MEC_BBLED_CONFIG_PWM_SZ_Enum;
127 
128 /* =============================================  MEC_BBLED CONFIG UPDATE [6..6]  ============================================= */
129 typedef enum {                                  /*!< MEC_BBLED_CONFIG_UPDATE                                                    */
130   MEC_BBLED_CONFIG_UPDATE_EN            = 1,    /*!< EN : Enable                                                               */
131 } MEC_BBLED_CONFIG_UPDATE_Enum;
132 
133 /* ==============================================  MEC_BBLED CONFIG SRST [7..7]  ============================================== */
134 typedef enum {                                  /*!< MEC_BBLED_CONFIG_SRST                                                      */
135   MEC_BBLED_CONFIG_SRST_EN              = 1,    /*!< EN : Enable                                                               */
136 } MEC_BBLED_CONFIG_SRST_Enum;
137 
138 /* =============================================  MEC_BBLED CONFIG ASYM [16..16]  ============================================= */
139 typedef enum {                                  /*!< MEC_BBLED_CONFIG_ASYM                                                      */
140   MEC_BBLED_CONFIG_ASYM_EN              = 1,    /*!< EN : Enable                                                               */
141 } MEC_BBLED_CONFIG_ASYM_Enum;
142 
143 /* ========================================================  LIMITS  ========================================================= */
144 /* =========================================================  DELAY  ========================================================= */
145 /* =========================================================  UPDSS  ========================================================= */
146 /* ==============================================  MEC_BBLED UPDSS STEP0 [0..3]  ============================================== */
147 typedef enum {                                  /*!< MEC_BBLED_UPDSS_STEP0                                                      */
148   MEC_BBLED_UPDSS_STEP0_VAL1            = 0,    /*!< VAL1 : Step by 1                                                          */
149 } MEC_BBLED_UPDSS_STEP0_Enum;
150 
151 /* ==============================================  MEC_BBLED UPDSS STEP1 [4..7]  ============================================== */
152 typedef enum {                                  /*!< MEC_BBLED_UPDSS_STEP1                                                      */
153   MEC_BBLED_UPDSS_STEP1_VAL1            = 0,    /*!< VAL1 : Step by 1                                                          */
154 } MEC_BBLED_UPDSS_STEP1_Enum;
155 
156 /* =============================================  MEC_BBLED UPDSS STEP2 [8..11]  ============================================== */
157 typedef enum {                                  /*!< MEC_BBLED_UPDSS_STEP2                                                      */
158   MEC_BBLED_UPDSS_STEP2_VAL1            = 0,    /*!< VAL1 : Step by 1                                                          */
159 } MEC_BBLED_UPDSS_STEP2_Enum;
160 
161 /* =============================================  MEC_BBLED UPDSS STEP3 [12..15]  ============================================= */
162 typedef enum {                                  /*!< MEC_BBLED_UPDSS_STEP3                                                      */
163   MEC_BBLED_UPDSS_STEP3_VAL1            = 0,    /*!< VAL1 : Step by 1                                                          */
164 } MEC_BBLED_UPDSS_STEP3_Enum;
165 
166 /* =============================================  MEC_BBLED UPDSS STEP4 [16..19]  ============================================= */
167 typedef enum {                                  /*!< MEC_BBLED_UPDSS_STEP4                                                      */
168   MEC_BBLED_UPDSS_STEP4_VAL1            = 0,    /*!< VAL1 : Step by 1                                                          */
169 } MEC_BBLED_UPDSS_STEP4_Enum;
170 
171 /* =============================================  MEC_BBLED UPDSS STEP5 [20..23]  ============================================= */
172 typedef enum {                                  /*!< MEC_BBLED_UPDSS_STEP5                                                      */
173   MEC_BBLED_UPDSS_STEP5_VAL1            = 0,    /*!< VAL1 : Step by 1                                                          */
174 } MEC_BBLED_UPDSS_STEP5_Enum;
175 
176 /* =============================================  MEC_BBLED UPDSS STEP6 [24..27]  ============================================= */
177 typedef enum {                                  /*!< MEC_BBLED_UPDSS_STEP6                                                      */
178   MEC_BBLED_UPDSS_STEP6_VAL1            = 0,    /*!< VAL1 : Step by 1                                                          */
179 } MEC_BBLED_UPDSS_STEP6_Enum;
180 
181 /* =============================================  MEC_BBLED UPDSS STEP7 [28..31]  ============================================= */
182 typedef enum {                                  /*!< MEC_BBLED_UPDSS_STEP7                                                      */
183   MEC_BBLED_UPDSS_STEP7_VAL1            = 0,    /*!< VAL1 : Step by 1                                                          */
184 } MEC_BBLED_UPDSS_STEP7_Enum;
185 
186 /* ========================================================  UPINVL  ========================================================= */
187 /* =============================================  MEC_BBLED UPINVL INTRV0 [0..3]  ============================================= */
188 typedef enum {                                  /*!< MEC_BBLED_UPINVL_INTRV0                                                    */
189   MEC_BBLED_UPINVL_INTRV0_PER1          = 0,    /*!< PER1 : 1 PWM period                                                       */
190 } MEC_BBLED_UPINVL_INTRV0_Enum;
191 
192 /* =============================================  MEC_BBLED UPINVL INTRV1 [4..7]  ============================================= */
193 typedef enum {                                  /*!< MEC_BBLED_UPINVL_INTRV1                                                    */
194   MEC_BBLED_UPINVL_INTRV1_PER1          = 0,    /*!< PER1 : 1 PWM period                                                       */
195 } MEC_BBLED_UPINVL_INTRV1_Enum;
196 
197 /* ============================================  MEC_BBLED UPINVL INTRV2 [8..11]  ============================================= */
198 typedef enum {                                  /*!< MEC_BBLED_UPINVL_INTRV2                                                    */
199   MEC_BBLED_UPINVL_INTRV2_PER1          = 0,    /*!< PER1 : 1 PWM period                                                       */
200 } MEC_BBLED_UPINVL_INTRV2_Enum;
201 
202 /* ============================================  MEC_BBLED UPINVL INTRV3 [12..15]  ============================================ */
203 typedef enum {                                  /*!< MEC_BBLED_UPINVL_INTRV3                                                    */
204   MEC_BBLED_UPINVL_INTRV3_PER1          = 0,    /*!< PER1 : 1 PWM period                                                       */
205 } MEC_BBLED_UPINVL_INTRV3_Enum;
206 
207 /* ============================================  MEC_BBLED UPINVL INTRV4 [16..19]  ============================================ */
208 typedef enum {                                  /*!< MEC_BBLED_UPINVL_INTRV4                                                    */
209   MEC_BBLED_UPINVL_INTRV4_PER1          = 0,    /*!< PER1 : 1 PWM period                                                       */
210 } MEC_BBLED_UPINVL_INTRV4_Enum;
211 
212 /* ============================================  MEC_BBLED UPINVL INTRV5 [20..23]  ============================================ */
213 typedef enum {                                  /*!< MEC_BBLED_UPINVL_INTRV5                                                    */
214   MEC_BBLED_UPINVL_INTRV5_PER1          = 0,    /*!< PER1 : 1 PWM period                                                       */
215 } MEC_BBLED_UPINVL_INTRV5_Enum;
216 
217 /* ============================================  MEC_BBLED UPINVL INTRV6 [24..27]  ============================================ */
218 typedef enum {                                  /*!< MEC_BBLED_UPINVL_INTRV6                                                    */
219   MEC_BBLED_UPINVL_INTRV6_PER1          = 0,    /*!< PER1 : 1 PWM period                                                       */
220 } MEC_BBLED_UPINVL_INTRV6_Enum;
221 
222 /* ============================================  MEC_BBLED UPINVL INTRV7 [28..31]  ============================================ */
223 typedef enum {                                  /*!< MEC_BBLED_UPINVL_INTRV7                                                    */
224   MEC_BBLED_UPINVL_INTRV7_PER1          = 0,    /*!< PER1 : 1 PWM period                                                       */
225 } MEC_BBLED_UPINVL_INTRV7_Enum;
226 /** @} */ /* End of group EnumValue_peripherals */
227 
228 #endif /* _MEC5_BBLED_V1_H */
229