1 /* 2 * Copyright (c) 2024 Microchip Technology Inc. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #ifndef _MEC5_KSCAN_V1_H 7 #define _MEC5_KSCAN_V1_H 8 9 /** @addtogroup Device_Peripheral_peripherals 10 * @{ 11 */ 12 13 /** 14 * @brief Keyboard scan matrix (MEC_KSCAN0) 15 */ 16 17 typedef struct mec_kscan_regs { /*!< (@ 0x40009C00) MEC_KSCAN0 Structure */ 18 __IM uint8_t RESERVED[4]; 19 __IOM uint8_t KSO_SEL; /*!< (@ 0x00000004) Key scan output select */ 20 __IM uint8_t RESERVED1[3]; 21 __IM uint8_t KSI_IN; /*!< (@ 0x00000008) Key scan input pin state */ 22 __IM uint8_t RESERVED2[3]; 23 __IOM uint8_t KSI_STS; /*!< (@ 0x0000000C) Key scan inputs status */ 24 __IM uint8_t RESERVED3[3]; 25 __IOM uint8_t KSI_INT_EN; /*!< (@ 0x00000010) Key scan inputs interrupt enables */ 26 __IM uint8_t RESERVED4[3]; 27 __OM uint8_t EXT_CTRL; /*!< (@ 0x00000014) Key scan extended control register */ 28 } MEC_KSCAN_Type; /*!< Size = 21 (0x15) */ 29 30 /** @} */ /* End of group Device_Peripheral_peripherals */ 31 32 /** @addtogroup PosMask_peripherals 33 * @{ 34 */ 35 /* ======================================================== KSO_SEL ======================================================== */ 36 #define MEC_KSCAN_KSO_SEL_OSEL_Pos (0UL) /*!< OSEL (Bit 0) */ 37 #define MEC_KSCAN_KSO_SEL_OSEL_Msk (0x1fUL) /*!< OSEL (Bitfield-Mask: 0x1f) */ 38 #define MEC_KSCAN_KSO_SEL_KSO_ALL_Pos (5UL) /*!< KSO_ALL (Bit 5) */ 39 #define MEC_KSCAN_KSO_SEL_KSO_ALL_Msk (0x20UL) /*!< KSO_ALL (Bitfield-Mask: 0x01) */ 40 #define MEC_KSCAN_KSO_SEL_KSCAN_DIS_Pos (6UL) /*!< KSCAN_DIS (Bit 6) */ 41 #define MEC_KSCAN_KSO_SEL_KSCAN_DIS_Msk (0x40UL) /*!< KSCAN_DIS (Bitfield-Mask: 0x01) */ 42 #define MEC_KSCAN_KSO_SEL_KSO_INVERT_Pos (7UL) /*!< KSO_INVERT (Bit 7) */ 43 #define MEC_KSCAN_KSO_SEL_KSO_INVERT_Msk (0x80UL) /*!< KSO_INVERT (Bitfield-Mask: 0x01) */ 44 /* ======================================================== KSI_IN ========================================================= */ 45 /* ======================================================== KSI_STS ======================================================== */ 46 #define MEC_KSCAN_KSI_STS_KSI_IN0_Pos (0UL) /*!< KSI_IN0 (Bit 0) */ 47 #define MEC_KSCAN_KSI_STS_KSI_IN0_Msk (0x1UL) /*!< KSI_IN0 (Bitfield-Mask: 0x01) */ 48 #define MEC_KSCAN_KSI_STS_KSI_IN1_Pos (1UL) /*!< KSI_IN1 (Bit 1) */ 49 #define MEC_KSCAN_KSI_STS_KSI_IN1_Msk (0x2UL) /*!< KSI_IN1 (Bitfield-Mask: 0x01) */ 50 #define MEC_KSCAN_KSI_STS_KSI_IN2_Pos (2UL) /*!< KSI_IN2 (Bit 2) */ 51 #define MEC_KSCAN_KSI_STS_KSI_IN2_Msk (0x4UL) /*!< KSI_IN2 (Bitfield-Mask: 0x01) */ 52 #define MEC_KSCAN_KSI_STS_KSI_IN3_Pos (3UL) /*!< KSI_IN3 (Bit 3) */ 53 #define MEC_KSCAN_KSI_STS_KSI_IN3_Msk (0x8UL) /*!< KSI_IN3 (Bitfield-Mask: 0x01) */ 54 #define MEC_KSCAN_KSI_STS_KSI_IN4_Pos (4UL) /*!< KSI_IN4 (Bit 4) */ 55 #define MEC_KSCAN_KSI_STS_KSI_IN4_Msk (0x10UL) /*!< KSI_IN4 (Bitfield-Mask: 0x01) */ 56 #define MEC_KSCAN_KSI_STS_KSI_IN5_Pos (5UL) /*!< KSI_IN5 (Bit 5) */ 57 #define MEC_KSCAN_KSI_STS_KSI_IN5_Msk (0x20UL) /*!< KSI_IN5 (Bitfield-Mask: 0x01) */ 58 #define MEC_KSCAN_KSI_STS_KSI_IN6_Pos (6UL) /*!< KSI_IN6 (Bit 6) */ 59 #define MEC_KSCAN_KSI_STS_KSI_IN6_Msk (0x40UL) /*!< KSI_IN6 (Bitfield-Mask: 0x01) */ 60 #define MEC_KSCAN_KSI_STS_KSI_IN7_Pos (7UL) /*!< KSI_IN7 (Bit 7) */ 61 #define MEC_KSCAN_KSI_STS_KSI_IN7_Msk (0x80UL) /*!< KSI_IN7 (Bitfield-Mask: 0x01) */ 62 /* ====================================================== KSI_INT_EN ======================================================= */ 63 #define MEC_KSCAN_KSI_INT_EN_KSI_IN0_Pos (0UL) /*!< KSI_IN0 (Bit 0) */ 64 #define MEC_KSCAN_KSI_INT_EN_KSI_IN0_Msk (0x1UL) /*!< KSI_IN0 (Bitfield-Mask: 0x01) */ 65 #define MEC_KSCAN_KSI_INT_EN_KSI_IN1_Pos (1UL) /*!< KSI_IN1 (Bit 1) */ 66 #define MEC_KSCAN_KSI_INT_EN_KSI_IN1_Msk (0x2UL) /*!< KSI_IN1 (Bitfield-Mask: 0x01) */ 67 #define MEC_KSCAN_KSI_INT_EN_KSI_IN2_Pos (2UL) /*!< KSI_IN2 (Bit 2) */ 68 #define MEC_KSCAN_KSI_INT_EN_KSI_IN2_Msk (0x4UL) /*!< KSI_IN2 (Bitfield-Mask: 0x01) */ 69 #define MEC_KSCAN_KSI_INT_EN_KSI_IN3_Pos (3UL) /*!< KSI_IN3 (Bit 3) */ 70 #define MEC_KSCAN_KSI_INT_EN_KSI_IN3_Msk (0x8UL) /*!< KSI_IN3 (Bitfield-Mask: 0x01) */ 71 #define MEC_KSCAN_KSI_INT_EN_KSI_IN4_Pos (4UL) /*!< KSI_IN4 (Bit 4) */ 72 #define MEC_KSCAN_KSI_INT_EN_KSI_IN4_Msk (0x10UL) /*!< KSI_IN4 (Bitfield-Mask: 0x01) */ 73 #define MEC_KSCAN_KSI_INT_EN_KSI_IN5_Pos (5UL) /*!< KSI_IN5 (Bit 5) */ 74 #define MEC_KSCAN_KSI_INT_EN_KSI_IN5_Msk (0x20UL) /*!< KSI_IN5 (Bitfield-Mask: 0x01) */ 75 #define MEC_KSCAN_KSI_INT_EN_KSI_IN6_Pos (6UL) /*!< KSI_IN6 (Bit 6) */ 76 #define MEC_KSCAN_KSI_INT_EN_KSI_IN6_Msk (0x40UL) /*!< KSI_IN6 (Bitfield-Mask: 0x01) */ 77 #define MEC_KSCAN_KSI_INT_EN_KSI_IN7_Pos (7UL) /*!< KSI_IN7 (Bit 7) */ 78 #define MEC_KSCAN_KSI_INT_EN_KSI_IN7_Msk (0x80UL) /*!< KSI_IN7 (Bitfield-Mask: 0x01) */ 79 /* ======================================================= EXT_CTRL ======================================================== */ 80 #define MEC_KSCAN_EXT_CTRL_PREDRIVE_Pos (0UL) /*!< PREDRIVE (Bit 0) */ 81 #define MEC_KSCAN_EXT_CTRL_PREDRIVE_Msk (0x1UL) /*!< PREDRIVE (Bitfield-Mask: 0x01) */ 82 83 /** @} */ /* End of group PosMask_peripherals */ 84 85 /** @addtogroup EnumValue_peripherals 86 * @{ 87 */ 88 /* ======================================================== KSO_SEL ======================================================== */ 89 /* ============================================ MEC_KSCAN KSO_SEL OSEL [0..4] ============================================= */ 90 typedef enum { /*!< MEC_KSCAN_KSO_SEL_OSEL */ 91 MEC_KSCAN_KSO_SEL_OSEL_KSO00 = 0, /*!< KSO00 : Select KSO 0 */ 92 MEC_KSCAN_KSO_SEL_OSEL_KSO01 = 1, /*!< KSO01 : Select KSO 1 */ 93 MEC_KSCAN_KSO_SEL_OSEL_KSO02 = 2, /*!< KSO02 : Select KSO 2 */ 94 MEC_KSCAN_KSO_SEL_OSEL_KSO03 = 3, /*!< KSO03 : Select KSO 3 */ 95 MEC_KSCAN_KSO_SEL_OSEL_KSO04 = 4, /*!< KSO04 : Select KSO 4 */ 96 MEC_KSCAN_KSO_SEL_OSEL_KSO05 = 5, /*!< KSO05 : Select KSO 5 */ 97 MEC_KSCAN_KSO_SEL_OSEL_KSO06 = 6, /*!< KSO06 : Select KSO 6 */ 98 MEC_KSCAN_KSO_SEL_OSEL_KSO07 = 7, /*!< KSO07 : Select KSO 7 */ 99 MEC_KSCAN_KSO_SEL_OSEL_KSO08 = 8, /*!< KSO08 : Select KSO 8 */ 100 MEC_KSCAN_KSO_SEL_OSEL_KSO09 = 9, /*!< KSO09 : Select KSO 9 */ 101 MEC_KSCAN_KSO_SEL_OSEL_KSO10 = 10, /*!< KSO10 : Select KSO 10 */ 102 MEC_KSCAN_KSO_SEL_OSEL_KSO11 = 11, /*!< KSO11 : Select KSO 11 */ 103 MEC_KSCAN_KSO_SEL_OSEL_KSO12 = 12, /*!< KSO12 : Select KSO 12 */ 104 MEC_KSCAN_KSO_SEL_OSEL_KSO13 = 13, /*!< KSO13 : Select KSO 13 */ 105 MEC_KSCAN_KSO_SEL_OSEL_KSO14 = 14, /*!< KSO14 : Select KSO 14 */ 106 MEC_KSCAN_KSO_SEL_OSEL_KSO15 = 15, /*!< KSO15 : Select KSO 15 */ 107 } MEC_KSCAN_KSO_SEL_OSEL_Enum; 108 109 /* ======================================================== KSI_IN ========================================================= */ 110 /* ======================================================== KSI_STS ======================================================== */ 111 /* =========================================== MEC_KSCAN KSI_STS KSI_IN0 [0..0] =========================================== */ 112 typedef enum { /*!< MEC_KSCAN_KSI_STS_KSI_IN0 */ 113 MEC_KSCAN_KSI_STS_KSI_IN0_ACTIVE = 1, /*!< ACTIVE : KSI_IN0 falling edge detected */ 114 } MEC_KSCAN_KSI_STS_KSI_IN0_Enum; 115 116 /* =========================================== MEC_KSCAN KSI_STS KSI_IN1 [1..1] =========================================== */ 117 typedef enum { /*!< MEC_KSCAN_KSI_STS_KSI_IN1 */ 118 MEC_KSCAN_KSI_STS_KSI_IN1_ACTIVE = 1, /*!< ACTIVE : KSI_IN1 falling edge detected */ 119 } MEC_KSCAN_KSI_STS_KSI_IN1_Enum; 120 121 /* =========================================== MEC_KSCAN KSI_STS KSI_IN2 [2..2] =========================================== */ 122 typedef enum { /*!< MEC_KSCAN_KSI_STS_KSI_IN2 */ 123 MEC_KSCAN_KSI_STS_KSI_IN2_ACTIVE = 1, /*!< ACTIVE : KSI_IN2 falling edge detected */ 124 } MEC_KSCAN_KSI_STS_KSI_IN2_Enum; 125 126 /* =========================================== MEC_KSCAN KSI_STS KSI_IN3 [3..3] =========================================== */ 127 typedef enum { /*!< MEC_KSCAN_KSI_STS_KSI_IN3 */ 128 MEC_KSCAN_KSI_STS_KSI_IN3_ACTIVE = 1, /*!< ACTIVE : KSI_IN3 falling edge detected */ 129 } MEC_KSCAN_KSI_STS_KSI_IN3_Enum; 130 131 /* =========================================== MEC_KSCAN KSI_STS KSI_IN4 [4..4] =========================================== */ 132 typedef enum { /*!< MEC_KSCAN_KSI_STS_KSI_IN4 */ 133 MEC_KSCAN_KSI_STS_KSI_IN4_ACTIVE = 1, /*!< ACTIVE : KSI_IN4 falling edge detected */ 134 } MEC_KSCAN_KSI_STS_KSI_IN4_Enum; 135 136 /* =========================================== MEC_KSCAN KSI_STS KSI_IN5 [5..5] =========================================== */ 137 typedef enum { /*!< MEC_KSCAN_KSI_STS_KSI_IN5 */ 138 MEC_KSCAN_KSI_STS_KSI_IN5_ACTIVE = 1, /*!< ACTIVE : KSI_IN5 falling edge detected */ 139 } MEC_KSCAN_KSI_STS_KSI_IN5_Enum; 140 141 /* =========================================== MEC_KSCAN KSI_STS KSI_IN6 [6..6] =========================================== */ 142 typedef enum { /*!< MEC_KSCAN_KSI_STS_KSI_IN6 */ 143 MEC_KSCAN_KSI_STS_KSI_IN6_ACTIVE = 1, /*!< ACTIVE : KSI_IN6 falling edge detected */ 144 } MEC_KSCAN_KSI_STS_KSI_IN6_Enum; 145 146 /* =========================================== MEC_KSCAN KSI_STS KSI_IN7 [7..7] =========================================== */ 147 typedef enum { /*!< MEC_KSCAN_KSI_STS_KSI_IN7 */ 148 MEC_KSCAN_KSI_STS_KSI_IN7_ACTIVE = 1, /*!< ACTIVE : KSI_IN7 falling edge detected */ 149 } MEC_KSCAN_KSI_STS_KSI_IN7_Enum; 150 151 /* ====================================================== KSI_INT_EN ======================================================= */ 152 /* ========================================= MEC_KSCAN KSI_INT_EN KSI_IN0 [0..0] ========================================== */ 153 typedef enum { /*!< MEC_KSCAN_KSI_INT_EN_KSI_IN0 */ 154 MEC_KSCAN_KSI_INT_EN_KSI_IN0_IEN = 1, /*!< IEN : KSI_IN0 falling edge detected */ 155 } MEC_KSCAN_KSI_INT_EN_KSI_IN0_Enum; 156 157 /* ========================================= MEC_KSCAN KSI_INT_EN KSI_IN1 [1..1] ========================================== */ 158 typedef enum { /*!< MEC_KSCAN_KSI_INT_EN_KSI_IN1 */ 159 MEC_KSCAN_KSI_INT_EN_KSI_IN1_IEN = 1, /*!< IEN : KSI_IN1 falling edge detected */ 160 } MEC_KSCAN_KSI_INT_EN_KSI_IN1_Enum; 161 162 /* ========================================= MEC_KSCAN KSI_INT_EN KSI_IN2 [2..2] ========================================== */ 163 typedef enum { /*!< MEC_KSCAN_KSI_INT_EN_KSI_IN2 */ 164 MEC_KSCAN_KSI_INT_EN_KSI_IN2_IEN = 1, /*!< IEN : KSI_IN2 enable falling edge interrupt */ 165 } MEC_KSCAN_KSI_INT_EN_KSI_IN2_Enum; 166 167 /* ========================================= MEC_KSCAN KSI_INT_EN KSI_IN3 [3..3] ========================================== */ 168 typedef enum { /*!< MEC_KSCAN_KSI_INT_EN_KSI_IN3 */ 169 MEC_KSCAN_KSI_INT_EN_KSI_IN3_IEN = 1, /*!< IEN : KSI_IN3 falling edge detected */ 170 } MEC_KSCAN_KSI_INT_EN_KSI_IN3_Enum; 171 172 /* ========================================= MEC_KSCAN KSI_INT_EN KSI_IN4 [4..4] ========================================== */ 173 typedef enum { /*!< MEC_KSCAN_KSI_INT_EN_KSI_IN4 */ 174 MEC_KSCAN_KSI_INT_EN_KSI_IN4_IEN = 1, /*!< IEN : KSI_IN4 falling edge detected */ 175 } MEC_KSCAN_KSI_INT_EN_KSI_IN4_Enum; 176 177 /* ========================================= MEC_KSCAN KSI_INT_EN KSI_IN5 [5..5] ========================================== */ 178 typedef enum { /*!< MEC_KSCAN_KSI_INT_EN_KSI_IN5 */ 179 MEC_KSCAN_KSI_INT_EN_KSI_IN5_IEN = 1, /*!< IEN : KSI_IN5 falling edge detected */ 180 } MEC_KSCAN_KSI_INT_EN_KSI_IN5_Enum; 181 182 /* ========================================= MEC_KSCAN KSI_INT_EN KSI_IN6 [6..6] ========================================== */ 183 typedef enum { /*!< MEC_KSCAN_KSI_INT_EN_KSI_IN6 */ 184 MEC_KSCAN_KSI_INT_EN_KSI_IN6_IEN = 1, /*!< IEN : KSI_IN6 falling edge detected */ 185 } MEC_KSCAN_KSI_INT_EN_KSI_IN6_Enum; 186 187 /* ========================================= MEC_KSCAN KSI_INT_EN KSI_IN7 [7..7] ========================================== */ 188 typedef enum { /*!< MEC_KSCAN_KSI_INT_EN_KSI_IN7 */ 189 MEC_KSCAN_KSI_INT_EN_KSI_IN7_IEN = 1, /*!< IEN : KSI_IN7 falling edge detected */ 190 } MEC_KSCAN_KSI_INT_EN_KSI_IN7_Enum; 191 192 /* ======================================================= EXT_CTRL ======================================================== */ 193 /* ========================================== MEC_KSCAN EXT_CTRL PREDRIVE [0..0] ========================================== */ 194 typedef enum { /*!< MEC_KSCAN_EXT_CTRL_PREDRIVE */ 195 MEC_KSCAN_EXT_CTRL_PREDRIVE_EN = 1, /*!< EN : Enable KSO pre-drive */ 196 } MEC_KSCAN_EXT_CTRL_PREDRIVE_Enum; 197 198 /** @} */ /* End of group EnumValue_peripherals */ 199 200 #endif /* _MEC5_KSCAN_V1_H */ 201