1 /*
2  * Copyright (c) 2024 Microchip Technology Inc.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 #ifndef _MEC5_EMI_V2_H
7 #define _MEC5_EMI_V2_H
8 
9 /** @addtogroup Device_Peripheral_peripherals
10   * @{
11   */
12 
13 /**
14   * @brief EMI Embedded Microcontroller interface (MEC_EMI0)
15   */
16 
17 typedef struct mec_emi_regs {                   /*!< (@ 0x400F4000) MEC_EMI0 Structure                                         */
18   __IOM uint8_t   RT_H2EMB;                     /*!< (@ 0x00000000) EMI Runtime: Host to EC mailbox                            */
19   __IOM uint8_t   RT_E2HMB;                     /*!< (@ 0x00000001) EMI Runtime: EC to Host mailbox                            */
20   __IOM uint16_t  RT_RGO;                       /*!< (@ 0x00000002) EMI Runtime: region and offset                             */
21   __IOM uint32_t  RT_DATA;                      /*!< (@ 0x00000004) EMI Runtime: Data. Access size should be size
22                                                                     specified in ACC_TYPE field of RT_RGO register             */
23   __IOM uint16_t  RT_ISRC;                      /*!< (@ 0x00000008) EMI Runtime: interrupt source bitmap                       */
24   __IOM uint16_t  RT_IMASK;                     /*!< (@ 0x0000000A) EMI Runtime: interrupt source mask bitmap                  */
25   __IOM uint8_t   RT_AID;                       /*!< (@ 0x0000000C) EMI Runtime: application ID                                */
26   __IM  uint8_t   RESERVED;
27   __IM  uint16_t  RESERVED1;
28   __IOM uint8_t   RT_ASAID;                     /*!< (@ 0x00000010) EMI Runtime: application ID assignment                     */
29   __IM  uint8_t   RESERVED2;
30   __IM  uint16_t  RESERVED3;
31   __IM  uint32_t  RESERVED4[59];
32   __IOM uint8_t   H2EMB;                        /*!< (@ 0x00000100) EMI EC-only: Host to EC mailbox                            */
33   __IOM uint8_t   E2HMB;                        /*!< (@ 0x00000101) EMI EC-only: EC to Host mailbox                            */
34   __IM  uint16_t  RESERVED5;
35   __IOM uint32_t  MR0B;                         /*!< (@ 0x00000104) EMI EC-only: EC SRAM memory region 0 base address
36                                                                     b[31:2]. Bits[1:0] forced to 0                             */
37   __IOM uint32_t  MR0L;                         /*!< (@ 0x00000108) EMI EC-only: EC SRAM memory region 0 read/write
38                                                                     limits                                                     */
39   __IOM uint32_t  MR1B;                         /*!< (@ 0x0000010C) EMI EC-only: EC SRAM memory region 1 base address          */
40   __IOM uint32_t  MR1L;                         /*!< (@ 0x00000110) EMI EC-only: EC SRAM memory region 1 read/write
41                                                                     limits                                                     */
42   __IOM uint16_t  ISEN;                         /*!< (@ 0x00000114) EMI EC-only: EC to Host interrupt source set               */
43   __IOM uint16_t  IHCEN;                        /*!< (@ 0x00000116) EMI EC-only: EC to Host interrupt host clear
44                                                                     enable                                                     */
45   __IM  uint32_t  RESERVED6[2];
46   __IOM uint32_t  AIDS[8];                      /*!< (@ 0x00000120) EMI EC-only: Application ID status bitmaps                 */
47 } MEC_EMI_Type;                                 /*!< Size = 320 (0x140)                                                        */
48 
49 /** @} */ /* End of group Device_Peripheral_peripherals */
50 
51 /** @addtogroup PosMask_peripherals
52   * @{
53   */
54 /* ========================================================  RT_RGO  ========================================================= */
55 #define MEC_EMI_RT_RGO_ACC_TYPE_Pos       (0UL)                     /*!< ACC_TYPE (Bit 0)                                      */
56 #define MEC_EMI_RT_RGO_ACC_TYPE_Msk       (0x3UL)                   /*!< ACC_TYPE (Bitfield-Mask: 0x03)                        */
57 #define MEC_EMI_RT_RGO_EC_ADDR_Pos        (2UL)                     /*!< EC_ADDR (Bit 2)                                       */
58 #define MEC_EMI_RT_RGO_EC_ADDR_Msk        (0x7ffcUL)                /*!< EC_ADDR (Bitfield-Mask: 0x1fff)                       */
59 #define MEC_EMI_RT_RGO_SEL_MEM1_Pos       (15UL)                    /*!< SEL_MEM1 (Bit 15)                                     */
60 #define MEC_EMI_RT_RGO_SEL_MEM1_Msk       (0x8000UL)                /*!< SEL_MEM1 (Bitfield-Mask: 0x01)                        */
61 /* ========================================================  RT_DATA  ======================================================== */
62 /* ========================================================  RT_ISRC  ======================================================== */
63 #define MEC_EMI_RT_ISRC_EC_WR_Pos         (0UL)                     /*!< EC_WR (Bit 0)                                         */
64 #define MEC_EMI_RT_ISRC_EC_WR_Msk         (0x1UL)                   /*!< EC_WR (Bitfield-Mask: 0x01)                           */
65 #define MEC_EMI_RT_ISRC_EC_SWI_Pos        (1UL)                     /*!< EC_SWI (Bit 1)                                        */
66 #define MEC_EMI_RT_ISRC_EC_SWI_Msk        (0xfffeUL)                /*!< EC_SWI (Bitfield-Mask: 0x7fff)                        */
67 /* =======================================================  RT_IMASK  ======================================================== */
68 #define MEC_EMI_RT_IMASK_EC_SWI_EN_Pos    (1UL)                     /*!< EC_SWI_EN (Bit 1)                                     */
69 #define MEC_EMI_RT_IMASK_EC_SWI_EN_Msk    (0xfffeUL)                /*!< EC_SWI_EN (Bitfield-Mask: 0x7fff)                     */
70 /* ========================================================  RT_AID  ========================================================= */
71 /* =======================================================  RT_ASAID  ======================================================== */
72 /* =========================================================  H2EMB  ========================================================= */
73 /* =========================================================  E2HMB  ========================================================= */
74 /* =========================================================  MR0B  ========================================================== */
75 /* =========================================================  MR0L  ========================================================== */
76 #define MEC_EMI_MR0L_RD_LIM_Pos           (2UL)                     /*!< RD_LIM (Bit 2)                                        */
77 #define MEC_EMI_MR0L_RD_LIM_Msk           (0x7ffcUL)                /*!< RD_LIM (Bitfield-Mask: 0x1fff)                        */
78 #define MEC_EMI_MR0L_WR_LIM_Pos           (18UL)                    /*!< WR_LIM (Bit 18)                                       */
79 #define MEC_EMI_MR0L_WR_LIM_Msk           (0x7ffc0000UL)            /*!< WR_LIM (Bitfield-Mask: 0x1fff)                        */
80 /* =========================================================  MR1B  ========================================================== */
81 /* =========================================================  MR1L  ========================================================== */
82 #define MEC_EMI_MR1L_RD_LIM_Pos           (2UL)                     /*!< RD_LIM (Bit 2)                                        */
83 #define MEC_EMI_MR1L_RD_LIM_Msk           (0x7ffcUL)                /*!< RD_LIM (Bitfield-Mask: 0x1fff)                        */
84 #define MEC_EMI_MR1L_WR_LIM_Pos           (18UL)                    /*!< WR_LIM (Bit 18)                                       */
85 #define MEC_EMI_MR1L_WR_LIM_Msk           (0x7ffc0000UL)            /*!< WR_LIM (Bitfield-Mask: 0x1fff)                        */
86 /* =========================================================  ISEN  ========================================================== */
87 #define MEC_EMI_ISEN_EC_SWI_SET_Pos       (1UL)                     /*!< EC_SWI_SET (Bit 1)                                    */
88 #define MEC_EMI_ISEN_EC_SWI_SET_Msk       (0xfffeUL)                /*!< EC_SWI_SET (Bitfield-Mask: 0x7fff)                    */
89 /* =========================================================  IHCEN  ========================================================= */
90 #define MEC_EMI_IHCEN_HCLR_EN_Pos         (1UL)                     /*!< HCLR_EN (Bit 1)                                       */
91 #define MEC_EMI_IHCEN_HCLR_EN_Msk         (0xfffeUL)                /*!< HCLR_EN (Bitfield-Mask: 0x7fff)                       */
92 /* =========================================================  AIDS  ========================================================== */
93 
94 /** @} */ /* End of group PosMask_peripherals */
95 
96 /** @addtogroup EnumValue_peripherals
97   * @{
98   */
99 /* ============================================  MEC_EMI0 RT_RGO ACC_TYPE [0..1]  ============================================ */
100 typedef enum {                                  /*!< MEC_EMI0_RT_RGO_ACC_TYPE                                                  */
101   MEC_EMI0_RT_RGO_ACC_TYPE_8BIT        = 0,     /*!< 8BIT : EC Data register accesses memory as 8-bit                          */
102   MEC_EMI0_RT_RGO_ACC_TYPE_16BIT       = 1,     /*!< 16BIT : EC Data register accesses memory as 16-bit                        */
103   MEC_EMI0_RT_RGO_ACC_TYPE_32BIT       = 2,     /*!< 32BIT : EC Data register accesses memory as 32-bit                        */
104   MEC_EMI0_RT_RGO_ACC_TYPE_32BIT_AUTO_INC = 3,  /*!< 32BIT_AUTO_INC : EC Data register accesses memory as 32-bit
105                                                      and increments EC address by 4                                            */
106 } MEC_EMI0_RT_RGO_ACC_TYPE_Enum;
107 
108 /** @} */ /* End of group EnumValue_peripherals */
109 
110 #endif /* _MEC5_EMI_V2_H */
111