1 /* 2 * Copyright (c) 2024 Microchip Technology Inc. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #ifndef _MEC5_PS2_V1_H 7 #define _MEC5_PS2_V1_H 8 9 /** @addtogroup Device_Peripheral_peripherals 10 * @{ 11 */ 12 13 /** 14 * @brief PS/2 controller 0 (MEC_PS2CTL) 15 */ 16 17 typedef struct mec_ps2_regs { /*!< (@ 0x40009000) MEC_PS2CTL Structure */ 18 __IOM uint8_t RTXB; /*!< (@ 0x00000000) PS2 receive buffer(RO), transmit buffer(WO) */ 19 __IM uint8_t RESERVED[3]; 20 __IOM uint8_t CTRL; /*!< (@ 0x00000004) PS2 control */ 21 __IM uint8_t RESERVED1[3]; 22 __IOM uint8_t STATUS; /*!< (@ 0x00000008) PS2 status */ 23 } MEC_PS2_Type; /*!< Size = 9 (0x9) */ 24 25 /** @} */ /* End of group Device_Peripheral_peripherals */ 26 27 /** @addtogroup PosMask_peripherals 28 * @{ 29 */ 30 /* ========================================================= CTRL ========================================================== */ 31 #define MEC_PS2_CTRL_TREN_Pos (0UL) /*!< TREN (Bit 0) */ 32 #define MEC_PS2_CTRL_TREN_Msk (0x1UL) /*!< TREN (Bitfield-Mask: 0x01) */ 33 #define MEC_PS2_CTRL_ENABLE_Pos (1UL) /*!< ENABLE (Bit 1) */ 34 #define MEC_PS2_CTRL_ENABLE_Msk (0x2UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ 35 #define MEC_PS2_CTRL_PARITY_Pos (2UL) /*!< PARITY (Bit 2) */ 36 #define MEC_PS2_CTRL_PARITY_Msk (0xcUL) /*!< PARITY (Bitfield-Mask: 0x03) */ 37 #define MEC_PS2_CTRL_STOP_Pos (4UL) /*!< STOP (Bit 4) */ 38 #define MEC_PS2_CTRL_STOP_Msk (0x30UL) /*!< STOP (Bitfield-Mask: 0x03) */ 39 /* ======================================================== STATUS ========================================================= */ 40 #define MEC_PS2_STATUS_RDRDY_Pos (0UL) /*!< RDRDY (Bit 0) */ 41 #define MEC_PS2_STATUS_RDRDY_Msk (0x1UL) /*!< RDRDY (Bitfield-Mask: 0x01) */ 42 #define MEC_PS2_STATUS_RXTMO_Pos (1UL) /*!< RXTMO (Bit 1) */ 43 #define MEC_PS2_STATUS_RXTMO_Msk (0x2UL) /*!< RXTMO (Bitfield-Mask: 0x01) */ 44 #define MEC_PS2_STATUS_PE_Pos (2UL) /*!< PE (Bit 2) */ 45 #define MEC_PS2_STATUS_PE_Msk (0x4UL) /*!< PE (Bitfield-Mask: 0x01) */ 46 #define MEC_PS2_STATUS_FE_Pos (3UL) /*!< FE (Bit 3) */ 47 #define MEC_PS2_STATUS_FE_Msk (0x8UL) /*!< FE (Bitfield-Mask: 0x01) */ 48 #define MEC_PS2_STATUS_TXIDLE_Pos (4UL) /*!< TXIDLE (Bit 4) */ 49 #define MEC_PS2_STATUS_TXIDLE_Msk (0x10UL) /*!< TXIDLE (Bitfield-Mask: 0x01) */ 50 #define MEC_PS2_STATUS_TXTMO_Pos (5UL) /*!< TXTMO (Bit 5) */ 51 #define MEC_PS2_STATUS_TXTMO_Msk (0x20UL) /*!< TXTMO (Bitfield-Mask: 0x01) */ 52 #define MEC_PS2_STATUS_RXBUSY_Pos (6UL) /*!< RXBUSY (Bit 6) */ 53 #define MEC_PS2_STATUS_RXBUSY_Msk (0x40UL) /*!< RXBUSY (Bitfield-Mask: 0x01) */ 54 #define MEC_PS2_STATUS_TXSTTMO_Pos (7UL) /*!< TXSTTMO (Bit 7) */ 55 #define MEC_PS2_STATUS_TXSTTMO_Msk (0x80UL) /*!< TXSTTMO (Bitfield-Mask: 0x01) */ 56 57 /** @} */ /* End of group PosMask_peripherals */ 58 59 /** @addtogroup EnumValue_peripherals 60 * @{ 61 */ 62 /* ========================================================= CTRL ========================================================== */ 63 /* ============================================= MEC_PS2CTL CTRL TREN [0..0] ============================================== */ 64 typedef enum { /*!< MEC_PS2CTL_CTRL_TREN */ 65 MEC_PS2CTL_CTRL_TREN_ON = 1, /*!< ON : Enable */ 66 } MEC_PS2CTL_CTRL_TREN_Enum; 67 68 /* ============================================ MEC_PS2CTL CTRL ENABLE [1..1] ============================================= */ 69 typedef enum { /*!< MEC_PS2CTL_CTRL_ENABLE */ 70 MEC_PS2CTL_CTRL_ENABLE_ON = 1, /*!< ON : Enable */ 71 } MEC_PS2CTL_CTRL_ENABLE_Enum; 72 73 /* ============================================ MEC_PS2CTL CTRL PARITY [2..3] ============================================= */ 74 typedef enum { /*!< MEC_PS2CTL_CTRL_PARITY */ 75 MEC_PS2CTL_CTRL_PARITY_ODD = 0, /*!< ODD : Odd parity */ 76 MEC_PS2CTL_CTRL_PARITY_EVEN = 1, /*!< EVEN : Even parity */ 77 MEC_PS2CTL_CTRL_PARITY_IGNORE = 2, /*!< IGNORE : 10th bit is not intepreted as parity */ 78 } MEC_PS2CTL_CTRL_PARITY_Enum; 79 80 /* ============================================= MEC_PS2CTL CTRL STOP [4..5] ============================================== */ 81 typedef enum { /*!< MEC_PS2CTL_CTRL_STOP */ 82 MEC_PS2CTL_CTRL_STOP_HI = 0, /*!< HI : Receiver expects active High STOP bit */ 83 MEC_PS2CTL_CTRL_STOP_LO = 1, /*!< LO : Receiver expects active Low STOP bit */ 84 MEC_PS2CTL_CTRL_STOP_IGNORE = 2, /*!< IGNORE : Receiver ignores STOP(11th bit not interpreted as STOP) */ 85 } MEC_PS2CTL_CTRL_STOP_Enum; 86 87 /* ======================================================== STATUS ========================================================= */ 88 /* ============================================ MEC_PS2CTL STATUS RDRDY [0..0] ============================================ */ 89 typedef enum { /*!< MEC_PS2CTL_STATUS_RDRDY */ 90 MEC_PS2CTL_STATUS_RDRDY_ACTIVE = 1, /*!< ACTIVE : Active */ 91 } MEC_PS2CTL_STATUS_RDRDY_Enum; 92 93 /* ============================================ MEC_PS2CTL STATUS RXTMO [1..1] ============================================ */ 94 typedef enum { /*!< MEC_PS2CTL_STATUS_RXTMO */ 95 MEC_PS2CTL_STATUS_RXTMO_ACTIVE = 1, /*!< ACTIVE : Active */ 96 } MEC_PS2CTL_STATUS_RXTMO_Enum; 97 98 /* ============================================= MEC_PS2CTL STATUS PE [2..2] ============================================== */ 99 typedef enum { /*!< MEC_PS2CTL_STATUS_PE */ 100 MEC_PS2CTL_STATUS_PE_ACTIVE = 1, /*!< ACTIVE : Active */ 101 } MEC_PS2CTL_STATUS_PE_Enum; 102 103 /* ============================================= MEC_PS2CTL STATUS FE [3..3] ============================================== */ 104 typedef enum { /*!< MEC_PS2CTL_STATUS_FE */ 105 MEC_PS2CTL_STATUS_FE_ACTIVE = 1, /*!< ACTIVE : Active */ 106 } MEC_PS2CTL_STATUS_FE_Enum; 107 108 /* =========================================== MEC_PS2CTL STATUS TXIDLE [4..4] ============================================ */ 109 typedef enum { /*!< MEC_PS2CTL_STATUS_TXIDLE */ 110 MEC_PS2CTL_STATUS_TXIDLE_ACTIVE = 1, /*!< ACTIVE : Active */ 111 } MEC_PS2CTL_STATUS_TXIDLE_Enum; 112 113 /* ============================================ MEC_PS2CTL STATUS TXTMO [5..5] ============================================ */ 114 typedef enum { /*!< MEC_PS2CTL_STATUS_TXTMO */ 115 MEC_PS2CTL_STATUS_TXTMO_ACTIVE = 1, /*!< ACTIVE : Active */ 116 } MEC_PS2CTL_STATUS_TXTMO_Enum; 117 118 /* =========================================== MEC_PS2CTL STATUS RXBUSY [6..6] ============================================ */ 119 typedef enum { /*!< MEC_PS2CTL_STATUS_RXBUSY */ 120 MEC_PS2CTL_STATUS_RXBUSY_ACTIVE = 1, /*!< ACTIVE : Active */ 121 } MEC_PS2CTL_STATUS_RXBUSY_Enum; 122 123 /* =========================================== MEC_PS2CTL STATUS TXSTTMO [7..7] =========================================== */ 124 typedef enum { /*!< MEC_PS2CTL_STATUS_TXSTTMO */ 125 MEC_PS2CTL_STATUS_TXSTTMO_ACTIVE = 1, /*!< ACTIVE : Active */ 126 } MEC_PS2CTL_STATUS_TXSTTMO_Enum; 127 128 /** @} */ /* End of group EnumValue_peripherals */ 129 130 #endif /* _MEC5_PS2_V1_H */ 131