1 /*
2  * Copyright (c) 2024 Microchip Technology Inc.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 #ifndef _MEC5_EEPROM_CTRL_V1_H
7 #define _MEC5_EEPROM_CTRL_V1_H
8 
9 /** @addtogroup Device_Peripheral_peripherals
10   * @{
11   */
12 
13 /**
14   * @brief EEPROM Controller interface to optional internal EEPROM (MEC_EEPROM_CTRL0)
15   */
16 
17 typedef struct mec_eeprom_ctrl_regs {           /*!< (@ 0x40002C00) MEC_EEPROM_CTRL0 Structure                                 */
18   __IOM uint32_t  MODE;                         /*!< (@ 0x00000000) Mode register                                              */
19   __IOM uint32_t  EXE;                          /*!< (@ 0x00000004) Execute register                                           */
20   __IOM uint32_t  STATUS;                       /*!< (@ 0x00000008) Controller status register                                 */
21   __IOM uint32_t  INTR_EN;                      /*!< (@ 0x0000000C) Interrupt enable register                                  */
22   __OM  uint32_t  PSWD;                         /*!< (@ 0x00000010) EEPROM password register is write-once and stores
23                                                                     a 31-bit password to lock the controller                   */
24   __OM  uint32_t  UNLOCK;                       /*!< (@ 0x00000014) EEPROM unlock register. Value written is compared
25                                                                     to stored password and access is unlocked
26                                                                     on match                                                   */
27   __IOM uint32_t  LOCK;                         /*!< (@ 0x00000018) EEPROM lock enable register. Enable lock feature           */
28   __IM  uint32_t  RESERVED;
29   __IOM uint32_t  DATA[8];                      /*!< (@ 0x00000020) EEPROM data buffer register array for the 32-byte
30                                                                     data buffer                                                */
31 } MEC_EEPROM_CTRL_Type;                         /*!< Size = 64 (0x40)                                                          */
32 
33 /** @} */ /* End of group Device_Peripheral_peripherals */
34 
35 /** @addtogroup PosMask_peripherals
36   * @{
37   */
38 /* =========================================================  MODE  ========================================================== */
39 #define MEC_EEPROM_CTRL_MODE_ACTV_Pos     (0UL)                     /*!< ACTV (Bit 0)                                          */
40 #define MEC_EEPROM_CTRL_MODE_ACTV_Msk     (0x1UL)                   /*!< ACTV (Bitfield-Mask: 0x01)                            */
41 #define MEC_EEPROM_CTRL_MODE_SRST_Pos     (1UL)                     /*!< SRST (Bit 1)                                          */
42 #define MEC_EEPROM_CTRL_MODE_SRST_Msk     (0x2UL)                   /*!< SRST (Bitfield-Mask: 0x01)                            */
43 /* ==========================================================  EXE  ========================================================== */
44 #define MEC_EEPROM_CTRL_EXE_TADDR_Pos     (0UL)                     /*!< TADDR (Bit 0)                                         */
45 #define MEC_EEPROM_CTRL_EXE_TADDR_Msk     (0xffffUL)                /*!< TADDR (Bitfield-Mask: 0xffff)                         */
46 #define MEC_EEPROM_CTRL_EXE_CMD_Pos       (16UL)                    /*!< CMD (Bit 16)                                          */
47 #define MEC_EEPROM_CTRL_EXE_CMD_Msk       (0x70000UL)               /*!< CMD (Bitfield-Mask: 0x07)                             */
48 #define MEC_EEPROM_CTRL_EXE_XFRSZ_Pos     (24UL)                    /*!< XFRSZ (Bit 24)                                        */
49 #define MEC_EEPROM_CTRL_EXE_XFRSZ_Msk     (0x1f000000UL)            /*!< XFRSZ (Bitfield-Mask: 0x1f)                           */
50 /* ========================================================  STATUS  ========================================================= */
51 #define MEC_EEPROM_CTRL_STATUS_XFR_DONE_Pos (0UL)                   /*!< XFR_DONE (Bit 0)                                      */
52 #define MEC_EEPROM_CTRL_STATUS_XFR_DONE_Msk (0x1UL)                 /*!< XFR_DONE (Bitfield-Mask: 0x01)                        */
53 #define MEC_EEPROM_CTRL_STATUS_ERROR_Pos  (1UL)                     /*!< ERROR (Bit 1)                                         */
54 #define MEC_EEPROM_CTRL_STATUS_ERROR_Msk  (0x2UL)                   /*!< ERROR (Bitfield-Mask: 0x01)                           */
55 #define MEC_EEPROM_CTRL_STATUS_XFR_ACTIVE_Pos (8UL)                 /*!< XFR_ACTIVE (Bit 8)                                    */
56 #define MEC_EEPROM_CTRL_STATUS_XFR_ACTIVE_Msk (0x100UL)             /*!< XFR_ACTIVE (Bitfield-Mask: 0x01)                      */
57 /* ========================================================  INTR_EN  ======================================================== */
58 #define MEC_EEPROM_CTRL_INTR_EN_XFR_DONE_Pos (0UL)                  /*!< XFR_DONE (Bit 0)                                      */
59 #define MEC_EEPROM_CTRL_INTR_EN_XFR_DONE_Msk (0x1UL)                /*!< XFR_DONE (Bitfield-Mask: 0x01)                        */
60 #define MEC_EEPROM_CTRL_INTR_EN_ERROR_Pos (1UL)                     /*!< ERROR (Bit 1)                                         */
61 #define MEC_EEPROM_CTRL_INTR_EN_ERROR_Msk (0x2UL)                   /*!< ERROR (Bitfield-Mask: 0x01)                           */
62 /* =========================================================  PSWD  ========================================================== */
63 /* ========================================================  UNLOCK  ========================================================= */
64 /* =========================================================  LOCK  ========================================================== */
65 #define MEC_EEPROM_CTRL_LOCK_JTAG_LOCK_Pos (0UL)                    /*!< JTAG_LOCK (Bit 0)                                     */
66 #define MEC_EEPROM_CTRL_LOCK_JTAG_LOCK_Msk (0x1UL)                  /*!< JTAG_LOCK (Bitfield-Mask: 0x01)                       */
67 #define MEC_EEPROM_CTRL_LOCK_LOCK_Pos     (1UL)                     /*!< LOCK (Bit 1)                                          */
68 #define MEC_EEPROM_CTRL_LOCK_LOCK_Msk     (0x2UL)                   /*!< LOCK (Bitfield-Mask: 0x01)                            */
69 /* =========================================================  DATA  ========================================================== */
70 
71 /** @} */ /* End of group PosMask_peripherals */
72 
73 /** @addtogroup EnumValue_peripherals
74   * @{
75   */
76 /* ===========================================  MEC_EEPROM_CTRL0 EXE CMD [16..18]  =========================================== */
77 typedef enum {                                  /*!< MEC_EEPROM_CTRL0_EXE_CMD                                                  */
78   MEC_EEPROM_CTRL0_EXE_CMD_READ        = 0,     /*!< READ : Read data from EEPROM                                              */
79   MEC_EEPROM_CTRL0_EXE_CMD_WRITE       = 1,     /*!< WRITE : Write data to EEPROM                                              */
80   MEC_EEPROM_CTRL0_EXE_CMD_RDSTS       = 2,     /*!< RDSTS : Read status byte from EEPROM                                      */
81   MEC_EEPROM_CTRL0_EXE_CMD_WRSTS       = 3,     /*!< WRSTS : Write status byte in EEPROM                                       */
82 } MEC_EEPROM_CTRL0_EXE_CMD_Enum;
83 
84 /* ==========================================  MEC_EEPROM_CTRL0 EXE XFRSZ [24..28]  ========================================== */
85 typedef enum {                                  /*!< MEC_EEPROM_CTRL0_EXE_XFRSZ                                                */
86   MEC_EEPROM_CTRL0_EXE_XFRSZ_MAX_BYTES32 = 0,   /*!< MAX_BYTES32 : Transfer maximum size of 32 bytes                           */
87   MEC_EEPROM_CTRL0_EXE_XFRSZ_BYTES1    = 1,     /*!< BYTES1 : Transfer one byte                                                */
88   MEC_EEPROM_CTRL0_EXE_XFRSZ_BYTES2    = 2,     /*!< BYTES2 : Transfer two bytes                                               */
89   MEC_EEPROM_CTRL0_EXE_XFRSZ_BYTES3    = 3,     /*!< BYTES3 : Transfer three bytes                                             */
90   MEC_EEPROM_CTRL0_EXE_XFRSZ_BYTES4    = 4,     /*!< BYTES4 : Transfer four bytes                                              */
91   MEC_EEPROM_CTRL0_EXE_XFRSZ_BYTES31   = 31,    /*!< BYTES31 : Transfer 31 bytes                                               */
92 } MEC_EEPROM_CTRL0_EXE_XFRSZ_Enum;
93 
94 /** @} */ /* End of group EnumValue_peripherals */
95 
96 #endif /* _MEC5_EEPROM_CTRL_V1_H */
97