1 /*
2  * Copyright (c) 2024 Microchip Technology Inc.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 #ifndef _MEC5_PECI_V1_H
7 #define _MEC5_PECI_V1_H
8 
9 /** @addtogroup Device_Peripheral_peripherals
10   * @{
11   */
12 
13 /**
14   * @brief Platform Environment Control Interface (MEC_PECI0)
15   */
16 
17 typedef struct mec_peci_regs {                  /*!< (@ 0x40006400) MEC_PECI0 Structure                                        */
18     __IOM uint8_t  WR_DATA;                     /*!< (@ 0x00000000) PECI write data                                            */
19     __IM  uint8_t  RSVD1[3];
20     __IOM uint8_t  RD_DATA;                     /*!< (@ 0x00000004) PECI read data                                             */
21     __IM  uint8_t  RSVD2[3];
22     __IOM uint8_t  CTRL;                        /*!< (@ 0x00000008) PECI control                                               */
23     __IM  uint8_t  RSVD3[3];
24     __IOM uint8_t  STATUS1;                     /*!< (@ 0x0000000C) PECI status 1                                              */
25     __IM  uint8_t  RSVD4[3];
26     __IM  uint8_t  STATUS2;                     /*!< (@ 0x00000010) PECI status 2                                              */
27     __IM  uint8_t  RSVD5[3];
28     __IOM uint8_t  ERROR;                       /*!< (@ 0x00000014) PECI error status register                                 */
29     __IM  uint8_t  RSVD6[3];
30     __IOM uint8_t  IEN1;                        /*!< (@ 0x00000018) PECI interrupt enable 1                                    */
31     __IM  uint8_t  RSVD7[3];
32     __IOM uint8_t  IEN2;                        /*!< (@ 0x0000001C) PECI interrupt enable 2                                    */
33     __IM  uint8_t  RSVD8[3];
34     __IOM uint8_t  OPTBTM_LO;                   /*!< (@ 0x00000020) PECI optimal bit time LSB                                  */
35     __IM  uint8_t  RSVD9[3];
36     __IOM uint8_t  OPTBTM_HI;                   /*!< (@ 0x00000024) PECI optimal bit time MSB                                  */
37     __IM  uint8_t  RSVD10[3];
38     __IOM uint8_t  REQ_TIMER_LSB;               /*!< (@ 0x00000028) PECI Request timer LSB                                     */
39     __IM  uint8_t  RSVD11[3];
40     __IOM uint8_t  REQ_TIMER_MSB;               /*!< (@ 0x0000002C) PECI Request timer MSB                                     */
41     __IM  uint8_t  RSVD12[3];
42     __IOM uint16_t BAUD_CTRL;                   /*!< (@ 0x00000030) PECI BAUD control                                          */
43     __IM  uint16_t RSVD13[7];
44     __IM  uint32_t BLKID;                       /*!< (@ 0x00000040) PECI block ID                                              */
45     __IM  uint32_t REVID;                       /*!< (@ 0x00000044) PECI revision ID                                           */
46     __IOM uint8_t  SSTCTL1;                     /*!< (@ 0x00000048) PECI Host SST Control 1                                    */
47     __IM  uint8_t  RSVD14[3];
48 } MEC_PECI_Type;                                /*!< Size = 76 (0x4c)                                                          */
49 
50 /** @} */ /* End of group Device_Peripheral_peripherals */
51 
52 /** @addtogroup PosMask_peripherals
53   * @{
54   */
55 /* =========================================================  CTRL  ========================================================== */
56 #define MEC_PECI_CTRL_PWRDN_Pos           (0UL)                     /*!< PWRDN (Bit 0)                                         */
57 #define MEC_PECI_CTRL_PWRDN_Msk           (0x1UL)                   /*!< PWRDN (Bitfield-Mask: 0x01)                           */
58 #define MEC_PECI_CTRL_RST_Pos             (3UL)                     /*!< RST (Bit 3)                                           */
59 #define MEC_PECI_CTRL_RST_Msk             (0x8UL)                   /*!< RST (Bitfield-Mask: 0x01)                             */
60 #define MEC_PECI_CTRL_FRST_Pos            (5UL)                     /*!< FRST (Bit 5)                                          */
61 #define MEC_PECI_CTRL_FRST_Msk            (0x20UL)                  /*!< FRST (Bitfield-Mask: 0x01)                            */
62 #define MEC_PECI_CTRL_TXEN_Pos            (6UL)                     /*!< TXEN (Bit 6)                                          */
63 #define MEC_PECI_CTRL_TXEN_Msk            (0x40UL)                  /*!< TXEN (Bitfield-Mask: 0x01)                            */
64 #define MEC_PECI_CTRL_MIEN_Pos            (7UL)                     /*!< MIEN (Bit 7)                                          */
65 #define MEC_PECI_CTRL_MIEN_Msk            (0x80UL)                  /*!< MIEN (Bitfield-Mask: 0x01)                            */
66 /* ========================================================  STATUS1  ======================================================== */
67 #define MEC_PECI_STATUS1_BOF_Pos          (0UL)                     /*!< BOF (Bit 0)                                           */
68 #define MEC_PECI_STATUS1_BOF_Msk          (0x1UL)                   /*!< BOF (Bitfield-Mask: 0x01)                             */
69 #define MEC_PECI_STATUS1_EOF_Pos          (1UL)                     /*!< EOF (Bit 1)                                           */
70 #define MEC_PECI_STATUS1_EOF_Msk          (0x2UL)                   /*!< EOF (Bitfield-Mask: 0x01)                             */
71 #define MEC_PECI_STATUS1_ERR_Pos          (2UL)                     /*!< ERR (Bit 2)                                           */
72 #define MEC_PECI_STATUS1_ERR_Msk          (0x4UL)                   /*!< ERR (Bitfield-Mask: 0x01)                             */
73 #define MEC_PECI_STATUS1_MINT_Pos         (7UL)                     /*!< MINT (Bit 7)                                          */
74 #define MEC_PECI_STATUS1_MINT_Msk         (0x80UL)                  /*!< MINT (Bitfield-Mask: 0x01)                            */
75 /* ========================================================  STATUS2  ======================================================== */
76 #define MEC_PECI_STATUS2_WFF_Pos          (0UL)                     /*!< WFF (Bit 0)                                           */
77 #define MEC_PECI_STATUS2_WFF_Msk          (0x1UL)                   /*!< WFF (Bitfield-Mask: 0x01)                             */
78 #define MEC_PECI_STATUS2_WFE_Pos          (1UL)                     /*!< WFE (Bit 1)                                           */
79 #define MEC_PECI_STATUS2_WFE_Msk          (0x2UL)                   /*!< WFE (Bitfield-Mask: 0x01)                             */
80 #define MEC_PECI_STATUS2_RFF_Pos          (2UL)                     /*!< RFF (Bit 2)                                           */
81 #define MEC_PECI_STATUS2_RFF_Msk          (0x4UL)                   /*!< RFF (Bitfield-Mask: 0x01)                             */
82 #define MEC_PECI_STATUS2_RFE_Pos          (3UL)                     /*!< RFE (Bit 3)                                           */
83 #define MEC_PECI_STATUS2_RFE_Msk          (0x8UL)                   /*!< RFE (Bitfield-Mask: 0x01)                             */
84 #define MEC_PECI_STATUS2_IDLE_Pos         (7UL)                     /*!< IDLE (Bit 7)                                          */
85 #define MEC_PECI_STATUS2_IDLE_Msk         (0x80UL)                  /*!< IDLE (Bitfield-Mask: 0x01)                            */
86 /* =========================================================  ERROR  ========================================================= */
87 #define MEC_PECI_ERROR_FERR_Pos           (0UL)                     /*!< FERR (Bit 0)                                          */
88 #define MEC_PECI_ERROR_FERR_Msk           (0x1UL)                   /*!< FERR (Bitfield-Mask: 0x01)                            */
89 #define MEC_PECI_ERROR_BERR_Pos           (1UL)                     /*!< BERR (Bit 1)                                          */
90 #define MEC_PECI_ERROR_BERR_Msk           (0x2UL)                   /*!< BERR (Bitfield-Mask: 0x01)                            */
91 #define MEC_PECI_ERROR_WROV_Pos           (4UL)                     /*!< WROV (Bit 4)                                          */
92 #define MEC_PECI_ERROR_WROV_Msk           (0x10UL)                  /*!< WROV (Bitfield-Mask: 0x01)                            */
93 #define MEC_PECI_ERROR_WRUN_Pos           (5UL)                     /*!< WRUN (Bit 5)                                          */
94 #define MEC_PECI_ERROR_WRUN_Msk           (0x20UL)                  /*!< WRUN (Bitfield-Mask: 0x01)                            */
95 #define MEC_PECI_ERROR_RDOV_Pos           (6UL)                     /*!< RDOV (Bit 6)                                          */
96 #define MEC_PECI_ERROR_RDOV_Msk           (0x40UL)                  /*!< RDOV (Bitfield-Mask: 0x01)                            */
97 #define MEC_PECI_ERROR_CLKERR_Pos         (7UL)                     /*!< CLKERR (Bit 7)                                        */
98 #define MEC_PECI_ERROR_CLKERR_Msk         (0x80UL)                  /*!< CLKERR (Bitfield-Mask: 0x01)                          */
99 /* =========================================================  IEN1  ========================================================== */
100 #define MEC_PECI_IEN1_BIEN_Pos            (0UL)                     /*!< BIEN (Bit 0)                                          */
101 #define MEC_PECI_IEN1_BIEN_Msk            (0x1UL)                   /*!< BIEN (Bitfield-Mask: 0x01)                            */
102 #define MEC_PECI_IEN1_EIEN_Pos            (1UL)                     /*!< EIEN (Bit 1)                                          */
103 #define MEC_PECI_IEN1_EIEN_Msk            (0x2UL)                   /*!< EIEN (Bitfield-Mask: 0x01)                            */
104 #define MEC_PECI_IEN1_EREN_Pos            (2UL)                     /*!< EREN (Bit 2)                                          */
105 #define MEC_PECI_IEN1_EREN_Msk            (0x4UL)                   /*!< EREN (Bitfield-Mask: 0x01)                            */
106 /* =========================================================  IEN2  ========================================================== */
107 #define MEC_PECI_IEN2_ENWFE_Pos           (1UL)                     /*!< ENWFE (Bit 1)                                         */
108 #define MEC_PECI_IEN2_ENWFE_Msk           (0x2UL)                   /*!< ENWFE (Bitfield-Mask: 0x01)                           */
109 #define MEC_PECI_IEN2_ENRFF_Pos           (2UL)                     /*!< ENRFF (Bit 2)                                         */
110 #define MEC_PECI_IEN2_ENRFF_Msk           (0x4UL)                   /*!< ENRFF (Bitfield-Mask: 0x01)                           */
111 /* ========================================================  SSTCTL1  ======================================================== */
112 #define MEC_PECI_SSTCTL1_DNBTC_Pos        (0UL)                     /*!< DNBTC (Bit 0)                                         */
113 #define MEC_PECI_SSTCTL1_DNBTC_Msk        (0x1UL)                   /*!< DNBTC (Bitfield-Mask: 0x01)                           */
114 
115 /** @} */ /* End of group PosMask_peripherals */
116 
117 /** @addtogroup EnumValue_peripherals
118   * @{
119   */
120 /* =========================================================  CTRL  ========================================================== */
121 /* ==============================================  MEC_PECI CTRL PWRDN [0..0]  ============================================== */
122 typedef enum {                                  /*!< MEC_PECI_CTRL_PWRDN                                                      */
123   MEC_PECI_CTRL_PWRDN_EN              = 1,     /*!< EN : Enable power down                                                    */
124 } MEC_PECI_CTRL_PWRDN_Enum;
125 
126 /* ===============================================  MEC_PECI CTRL RST [3..3]  =============================================== */
127 typedef enum {                                  /*!< MEC_PECI_CTRL_RST                                                        */
128   MEC_PECI_CTRL_RST_EN                = 1,     /*!< EN : Enable soft reset                                                    */
129 } MEC_PECI_CTRL_RST_Enum;
130 
131 /* ==============================================  MEC_PECI CTRL FRST [5..5]  =============================================== */
132 typedef enum {                                  /*!< MEC_PECI_CTRL_FRST                                                       */
133   MEC_PECI_CTRL_FRST_EN               = 1,     /*!< EN : Enable FIFO reset                                                    */
134 } MEC_PECI_CTRL_FRST_Enum;
135 
136 /* ==============================================  MEC_PECI CTRL TXEN [6..6]  =============================================== */
137 typedef enum {                                  /*!< MEC_PECI_CTRL_TXEN                                                       */
138   MEC_PECI_CTRL_TXEN_ON               = 1,     /*!< ON : Enable transmit                                                      */
139 } MEC_PECI_CTRL_TXEN_Enum;
140 
141 /* ==============================================  MEC_PECI CTRL MIEN [7..7]  =============================================== */
142 typedef enum {                                  /*!< MEC_PECI_CTRL_MIEN                                                       */
143   MEC_PECI_CTRL_MIEN_ON               = 1,     /*!< ON : Enable PECI controller interrupts                                    */
144 } MEC_PECI_CTRL_MIEN_Enum;
145 
146 /* ========================================================  STATUS1  ======================================================== */
147 /* =============================================  MEC_PECI STATUS1 BOF [0..0]  ============================================== */
148 typedef enum {                                  /*!< MEC_PECI_STATUS1_BOF                                                     */
149   MEC_PECI_STATUS1_BOF_ACTIVE         = 1,     /*!< ACTIVE : Status active                                                    */
150 } MEC_PECI_STATUS1_BOF_Enum;
151 
152 /* =============================================  MEC_PECI STATUS1 EOF [1..1]  ============================================== */
153 typedef enum {                                  /*!< MEC_PECI_STATUS1_EOF                                                     */
154   MEC_PECI_STATUS1_EOF_ACTIVE         = 1,     /*!< ACTIVE : Status active                                                    */
155 } MEC_PECI_STATUS1_EOF_Enum;
156 
157 /* =============================================  MEC_PECI STATUS1 ERR [2..2]  ============================================== */
158 typedef enum {                                  /*!< MEC_PECI_STATUS1_ERR                                                     */
159   MEC_PECI_STATUS1_ERR_ACTIVE         = 1,     /*!< ACTIVE : Status active                                                    */
160 } MEC_PECI_STATUS1_ERR_Enum;
161 
162 /* =============================================  MEC_PECI STATUS1 MINT [7..7]  ============================================= */
163 typedef enum {                                  /*!< MEC_PECI_STATUS1_MINT                                                    */
164   MEC_PECI_STATUS1_MINT_ACTIVE        = 1,     /*!< ACTIVE : Status active                                                    */
165 } MEC_PECI_STATUS1_MINT_Enum;
166 
167 /* ========================================================  STATUS2  ======================================================== */
168 /* =============================================  MEC_PECI STATUS2 WFF [0..0]  ============================================== */
169 typedef enum {                                  /*!< MEC_PECI_STATUS2_WFF                                                     */
170   MEC_PECI_STATUS2_WFF_ACTIVE         = 1,     /*!< ACTIVE : Status active                                                    */
171 } MEC_PECI_STATUS2_WFF_Enum;
172 
173 /* =============================================  MEC_PECI STATUS2 WFE [1..1]  ============================================== */
174 typedef enum {                                  /*!< MEC_PECI_STATUS2_WFE                                                     */
175   MEC_PECI_STATUS2_WFE_ACTIVE         = 1,     /*!< ACTIVE : Status active                                                    */
176 } MEC_PECI_STATUS2_WFE_Enum;
177 
178 /* =============================================  MEC_PECI STATUS2 RFF [2..2]  ============================================== */
179 typedef enum {                                  /*!< MEC_PECI_STATUS2_RFF                                                     */
180   MEC_PECI_STATUS2_RFF_ACTIVE         = 1,     /*!< ACTIVE : Status active                                                    */
181 } MEC_PECI_STATUS2_RFF_Enum;
182 
183 /* =============================================  MEC_PECI STATUS2 RFE [3..3]  ============================================== */
184 typedef enum {                                  /*!< MEC_PECI_STATUS2_RFE                                                     */
185   MEC_PECI_STATUS2_RFE_ACTIVE         = 1,     /*!< ACTIVE : Status active                                                    */
186 } MEC_PECI_STATUS2_RFE_Enum;
187 
188 /* =============================================  MEC_PECI STATUS2 IDLE [7..7]  ============================================= */
189 typedef enum {                                  /*!< MEC_PECI_STATUS2_IDLE                                                    */
190   MEC_PECI_STATUS2_IDLE_ACTIVE        = 1,     /*!< ACTIVE : Status active                                                    */
191 } MEC_PECI_STATUS2_IDLE_Enum;
192 
193 /* =========================================================  ERROR  ========================================================= */
194 /* ==============================================  MEC_PECI ERROR FERR [0..0]  ============================================== */
195 typedef enum {                                  /*!< MEC_PECI_ERROR_FERR                                                      */
196   MEC_PECI_ERROR_FERR_ACTIVE          = 1,     /*!< ACTIVE : Status active                                                    */
197 } MEC_PECI_ERROR_FERR_Enum;
198 
199 /* ==============================================  MEC_PECI ERROR BERR [1..1]  ============================================== */
200 typedef enum {                                  /*!< MEC_PECI_ERROR_BERR                                                      */
201   MEC_PECI_ERROR_BERR_ACTIVE          = 1,     /*!< ACTIVE : Status active                                                    */
202 } MEC_PECI_ERROR_BERR_Enum;
203 
204 /* ==============================================  MEC_PECI ERROR WROV [4..4]  ============================================== */
205 typedef enum {                                  /*!< MEC_PECI_ERROR_WROV                                                      */
206   MEC_PECI_ERROR_WROV_ACTIVE          = 1,     /*!< ACTIVE : Status active                                                    */
207 } MEC_PECI_ERROR_WROV_Enum;
208 
209 /* ==============================================  MEC_PECI ERROR WRUN [5..5]  ============================================== */
210 typedef enum {                                  /*!< MEC_PECI_ERROR_WRUN                                                      */
211   MEC_PECI_ERROR_WRUN_ACTIVE          = 1,     /*!< ACTIVE : Status active                                                    */
212 } MEC_PECI_ERROR_WRUN_Enum;
213 
214 /* ==============================================  MEC_PECI ERROR RDOV [6..6]  ============================================== */
215 typedef enum {                                  /*!< MEC_PECI_ERROR_RDOV                                                      */
216   MEC_PECI_ERROR_RDOV_ACTIVE          = 1,     /*!< ACTIVE : Status active                                                    */
217 } MEC_PECI_ERROR_RDOV_Enum;
218 
219 /* =============================================  MEC_PECI ERROR CLKERR [7..7]  ============================================= */
220 typedef enum {                                  /*!< MEC_PECI_ERROR_CLKERR                                                    */
221   MEC_PECI_ERROR_CLKERR_ACTIVE        = 1,     /*!< ACTIVE : Status active                                                    */
222 } MEC_PECI_ERROR_CLKERR_Enum;
223 
224 /* =========================================================  IEN1  ========================================================== */
225 /* ==============================================  MEC_PECI IEN1 BIEN [0..0]  =============================================== */
226 typedef enum {                                  /*!< MEC_PECI_IEN1_BIEN                                                       */
227   MEC_PECI_IEN1_BIEN_ON               = 1,     /*!< ON : Enable                                                               */
228 } MEC_PECI_IEN1_BIEN_Enum;
229 
230 /* ==============================================  MEC_PECI IEN1 EIEN [1..1]  =============================================== */
231 typedef enum {                                  /*!< MEC_PECI_IEN1_EIEN                                                       */
232   MEC_PECI_IEN1_EIEN_ON               = 1,     /*!< ON : Enable                                                               */
233 } MEC_PECI_IEN1_EIEN_Enum;
234 
235 /* ==============================================  MEC_PECI IEN1 EREN [2..2]  =============================================== */
236 typedef enum {                                  /*!< MEC_PECI_IEN1_EREN                                                       */
237   MEC_PECI_IEN1_EREN_ON               = 1,     /*!< ON : Enable                                                               */
238 } MEC_PECI_IEN1_EREN_Enum;
239 
240 /* =========================================================  IEN2  ========================================================== */
241 /* ==============================================  MEC_PECI IEN2 ENWFE [1..1]  ============================================== */
242 typedef enum {                                  /*!< MEC_PECI_IEN2_ENWFE                                                      */
243   MEC_PECI_IEN2_ENWFE_ON              = 1,     /*!< ON : Enable                                                               */
244 } MEC_PECI_IEN2_ENWFE_Enum;
245 
246 /* ==============================================  MEC_PECI IEN2 ENRFF [2..2]  ============================================== */
247 typedef enum {                                  /*!< MEC_PECI_IEN2_ENRFF                                                      */
248   MEC_PECI_IEN2_ENRFF_ON              = 1,     /*!< ON : Enable                                                               */
249 } MEC_PECI_IEN2_ENRFF_Enum;
250 
251 /* ========================================================  SSTCTL1  ======================================================== */
252 /* ============================================  MEC_PECI SSTCTL1 DNBTC [0..0]  ============================================= */
253 typedef enum {                                  /*!< MEC_PECI_SSTCTL1_DNBTC                                                   */
254   MEC_PECI_SSTCTL1_DNBTC_ON           = 1,     /*!< ON : Set bit to disable                                                   */
255 } MEC_PECI_SSTCTL1_DNBTC_Enum;
256 
257 /** @} */ /* End of group EnumValue_peripherals */
258 
259 #endif /* _MEC5_PECI_V1_H */
260