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