1 /*
2  * Copyright (c) 2024 Microchip Technology Inc.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 #ifndef _MEC5_KBC_V1_H
7 #define _MEC5_KBC_V1_H
8 
9 /** @addtogroup Device_Peripheral_peripherals
10   * @{
11   */
12 
13 /**
14   * @brief Host/EC Mailbox communication (MEC_KBC0)
15   */
16 
17 typedef struct mec_kbc_regs {                   /*!< (@ 0x400F0400) MEC_KBC0 Structure                                         */
18   __IOM uint8_t   KHDATA;                       /*!< (@ 0x00000000) KBC Host to EC Data(WO), EC to Host (Aux)Data
19                                                                     (RO)                                                       */
20   __IM  uint8_t   RESERVED[3];
21   __IOM uint8_t   KHCMDSTS;                     /*!< (@ 0x00000004) KBC Host command(WO), Host status(RO)                      */
22   __IM  uint8_t   RESERVED1[251];
23   __IOM uint8_t   KHECD;                        /*!< (@ 0x00000100) KBC Host to/from EC data                                   */
24   __IM  uint8_t   RESERVED2[3];
25   __IOM uint8_t   KESTATUS;                     /*!< (@ 0x00000104) KBC EC Status                                              */
26   __IM  uint8_t   RESERVED3[3];
27   __IOM uint8_t   KECR;                         /*!< (@ 0x00000108) KBC EC control                                             */
28   __IM  uint8_t   RESERVED4[3];
29   __OM  uint8_t   KEAUXD;                       /*!< (@ 0x0000010C) KBC EC auxiliary data                                      */
30   __IM  uint8_t   RESERVED5[7];
31   __IOM uint8_t   KPCOBF;                       /*!< (@ 0x00000114) KBC PC OBF                                                 */
32   __IM  uint8_t   RESERVED6[539];
33   __IOM uint8_t   ACTV;                         /*!< (@ 0x00000330) Enable KBC                                                 */
34 } MEC_KBC_Type;                                 /*!< Size = 817 (0x331)                                                        */
35 
36 /** @} */ /* End of group Device_Peripheral_peripherals */
37 
38 /** @addtogroup PosMask_peripherals
39   * @{
40   */
41 /* =======================================================  KESTATUS  ======================================================== */
42 #define MEC_KBC_KESTATUS_OBF_Pos          (0UL)                     /*!< OBF (Bit 0)                                           */
43 #define MEC_KBC_KESTATUS_OBF_Msk          (0x1UL)                   /*!< OBF (Bitfield-Mask: 0x01)                             */
44 #define MEC_KBC_KESTATUS_IBF_Pos          (1UL)                     /*!< IBF (Bit 1)                                           */
45 #define MEC_KBC_KESTATUS_IBF_Msk          (0x2UL)                   /*!< IBF (Bitfield-Mask: 0x01)                             */
46 #define MEC_KBC_KESTATUS_UD0_Pos          (2UL)                     /*!< UD0 (Bit 2)                                           */
47 #define MEC_KBC_KESTATUS_UD0_Msk          (0x4UL)                   /*!< UD0 (Bitfield-Mask: 0x01)                             */
48 #define MEC_KBC_KESTATUS_CD_Pos           (3UL)                     /*!< CD (Bit 3)                                            */
49 #define MEC_KBC_KESTATUS_CD_Msk           (0x8UL)                   /*!< CD (Bitfield-Mask: 0x01)                              */
50 #define MEC_KBC_KESTATUS_UD1_Pos          (4UL)                     /*!< UD1 (Bit 4)                                           */
51 #define MEC_KBC_KESTATUS_UD1_Msk          (0x10UL)                  /*!< UD1 (Bitfield-Mask: 0x01)                             */
52 #define MEC_KBC_KESTATUS_AUXOBF_Pos       (5UL)                     /*!< AUXOBF (Bit 5)                                        */
53 #define MEC_KBC_KESTATUS_AUXOBF_Msk       (0x20UL)                  /*!< AUXOBF (Bitfield-Mask: 0x01)                          */
54 #define MEC_KBC_KESTATUS_UD2_Pos          (6UL)                     /*!< UD2 (Bit 6)                                           */
55 #define MEC_KBC_KESTATUS_UD2_Msk          (0xc0UL)                  /*!< UD2 (Bitfield-Mask: 0x03)                             */
56 /* =========================================================  KECR  ========================================================== */
57 #define MEC_KBC_KECR_UD3_Pos              (0UL)                     /*!< UD3 (Bit 0)                                           */
58 #define MEC_KBC_KECR_UD3_Msk              (0x1UL)                   /*!< UD3 (Bitfield-Mask: 0x01)                             */
59 #define MEC_KBC_KECR_SAEN_Pos             (1UL)                     /*!< SAEN (Bit 1)                                          */
60 #define MEC_KBC_KECR_SAEN_Msk             (0x2UL)                   /*!< SAEN (Bitfield-Mask: 0x01)                            */
61 #define MEC_KBC_KECR_PCOBFEN_Pos          (2UL)                     /*!< PCOBFEN (Bit 2)                                       */
62 #define MEC_KBC_KECR_PCOBFEN_Msk          (0x4UL)                   /*!< PCOBFEN (Bitfield-Mask: 0x01)                         */
63 #define MEC_KBC_KECR_UD4_Pos              (3UL)                     /*!< UD4 (Bit 3)                                           */
64 #define MEC_KBC_KECR_UD4_Msk              (0x18UL)                  /*!< UD4 (Bitfield-Mask: 0x03)                             */
65 #define MEC_KBC_KECR_OBFEN_Pos            (5UL)                     /*!< OBFEN (Bit 5)                                         */
66 #define MEC_KBC_KECR_OBFEN_Msk            (0x20UL)                  /*!< OBFEN (Bitfield-Mask: 0x01)                           */
67 #define MEC_KBC_KECR_UD5_Pos              (6UL)                     /*!< UD5 (Bit 6)                                           */
68 #define MEC_KBC_KECR_UD5_Msk              (0x40UL)                  /*!< UD5 (Bitfield-Mask: 0x01)                             */
69 #define MEC_KBC_KECR_AUXH_Pos             (7UL)                     /*!< AUXH (Bit 7)                                          */
70 #define MEC_KBC_KECR_AUXH_Msk             (0x80UL)                  /*!< AUXH (Bitfield-Mask: 0x01)                            */
71 /* ========================================================  KEAUXD  ========================================================= */
72 /* ========================================================  KPCOBF  ========================================================= */
73 #define MEC_KBC_KPCOBF_PCOBF_Pos          (0UL)                     /*!< PCOBF (Bit 0)                                         */
74 #define MEC_KBC_KPCOBF_PCOBF_Msk          (0x1UL)                   /*!< PCOBF (Bitfield-Mask: 0x01)                           */
75 /* =========================================================  ACTV  ========================================================== */
76 #define MEC_KBC_ACTV_ENABLE_Pos           (0UL)                     /*!< ENABLE (Bit 0)                                        */
77 #define MEC_KBC_ACTV_ENABLE_Msk           (0x1UL)                   /*!< ENABLE (Bitfield-Mask: 0x01)                          */
78 
79 /** @} */ /* End of group PosMask_peripherals */
80 
81 /** @addtogroup EnumValue_peripherals
82   * @{
83   */
84 /* =======================================================  KESTATUS  ======================================================== */
85 /* =============================================  MEC_KBC KESTATUS OBF [0..0]  ============================================== */
86 typedef enum {                                  /*!< MEC_KBC_KESTATUS_OBF                                                     */
87   MEC_KBC_KESTATUS_OBF_ACTIVE         = 1,     /*!< ACTIVE : OBF status is active                                             */
88 } MEC_KBC_KESTATUS_OBF_Enum;
89 
90 /* =============================================  MEC_KBC KESTATUS IBF [1..1]  ============================================== */
91 typedef enum {                                  /*!< MEC_KBC_KESTATUS_IBF                                                     */
92   MEC_KBC_KESTATUS_IBF_ACTIVE         = 1,     /*!< ACTIVE : IBF status is active                                             */
93 } MEC_KBC_KESTATUS_IBF_Enum;
94 
95 /* =============================================  MEC_KBC KESTATUS UD0 [2..2]  ============================================== */
96 typedef enum {                                  /*!< MEC_KBC_KESTATUS_UD0                                                     */
97   MEC_KBC_KESTATUS_UD0_ACTIVE         = 1,     /*!< ACTIVE : UD0 status is active                                             */
98 } MEC_KBC_KESTATUS_UD0_Enum;
99 
100 /* ==============================================  MEC_KBC KESTATUS CD [3..3]  ============================================== */
101 typedef enum {                                  /*!< MEC_KBC_KESTATUS_CD                                                      */
102   MEC_KBC_KESTATUS_CD_CMD             = 1,     /*!< CMD : CD indicates command was written by the Host                        */
103 } MEC_KBC_KESTATUS_CD_Enum;
104 
105 /* =============================================  MEC_KBC KESTATUS UD1 [4..4]  ============================================== */
106 typedef enum {                                  /*!< MEC_KBC_KESTATUS_UD1                                                     */
107   MEC_KBC_KESTATUS_UD1_ACTIVE         = 1,     /*!< ACTIVE : UD1 status is active                                             */
108 } MEC_KBC_KESTATUS_UD1_Enum;
109 
110 /* ============================================  MEC_KBC KESTATUS AUXOBF [5..5]  ============================================ */
111 typedef enum {                                  /*!< MEC_KBC_KESTATUS_AUXOBF                                                  */
112   MEC_KBC_KESTATUS_AUXOBF_ACTIVE      = 1,     /*!< ACTIVE : AUXOBF status is active                                          */
113 } MEC_KBC_KESTATUS_AUXOBF_Enum;
114 
115 /* =============================================  MEC_KBC KESTATUS UD2 [6..7]  ============================================== */
116 typedef enum {                                  /*!< MEC_KBC_KESTATUS_UD2                                                     */
117   MEC_KBC_KESTATUS_UD2_ZERO           = 0,     /*!< ZERO : UD2 is 00b                                                         */
118   MEC_KBC_KESTATUS_UD2_ONE            = 1,     /*!< ONE : UD2 is 01b                                                          */
119   MEC_KBC_KESTATUS_UD2_TWO            = 2,     /*!< TWO : UD2 is 10b                                                          */
120   MEC_KBC_KESTATUS_UD2_THREE          = 3,     /*!< THREE : UD2 is 11b                                                        */
121 } MEC_KBC_KESTATUS_UD2_Enum;
122 
123 /** @} */ /* End of group EnumValue_peripherals */
124 
125 #endif /* _MEC5_KBC_V1_H */
126