1 /* 2 * Copyright (c) 2024 Microchip Technology Inc. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #ifndef _MEC5_GSPI_V1_H 7 #define _MEC5_GSPI_V1_H 8 9 /** @addtogroup Device_Peripheral_peripherals 10 * @{ 11 */ 12 13 /** 14 * @brief General Purpose SPI (MEC_GSPI0) 15 */ 16 17 typedef struct mec_gspi_regs { /*!< (@ 0x40009400) MEC_GSPI0 Structure */ 18 __IOM uint32_t ENABLE; /*!< (@ 0x00000000) GSPI enable */ 19 __IOM uint32_t CTRL; /*!< (@ 0x00000004) GSPI control */ 20 __IM uint32_t STATUS; /*!< (@ 0x00000008) GSPI status */ 21 __IOM uint8_t TXD; /*!< (@ 0x0000000C) GSPI TX data */ 22 __IM uint8_t RESERVED; 23 __IM uint16_t RESERVED1; 24 __IOM uint8_t RXD; /*!< (@ 0x00000010) GSPI TX data */ 25 __IM uint8_t RESERVED2; 26 __IM uint16_t RESERVED3; 27 __IOM uint32_t CLK_CTRL; /*!< (@ 0x00000014) GSPI clock control */ 28 __IOM uint32_t PRELOAD; /*!< (@ 0x00000018) GPSPI clock generator preload */ 29 } MEC_GSPI_Type; /*!< Size = 28 (0x1c) */ 30 31 /** @} */ /* End of group Device_Peripheral_peripherals */ 32 33 /** @addtogroup PosMask_peripherals 34 * @{ 35 */ 36 /* =========================================================================================================================== */ 37 /* ================ MEC_GSPI ================ */ 38 /* =========================================================================================================================== */ 39 40 /* ======================================================== ENABLE ========================================================= */ 41 #define MEC_GSPI_ENABLE_ACTV_Pos (0UL) /*!< ACTV (Bit 0) */ 42 #define MEC_GSPI_ENABLE_ACTV_Msk (0x1UL) /*!< ACTV (Bitfield-Mask: 0x01) */ 43 /* ========================================================= CTRL ========================================================== */ 44 #define MEC_GSPI_CTRL_LSBF_Pos (0UL) /*!< LSBF (Bit 0) */ 45 #define MEC_GSPI_CTRL_LSBF_Msk (0x1UL) /*!< LSBF (Bitfield-Mask: 0x01) */ 46 #define MEC_GSPI_CTRL_BIOEN_Pos (1UL) /*!< BIOEN (Bit 1) */ 47 #define MEC_GSPI_CTRL_BIOEN_Msk (0x2UL) /*!< BIOEN (Bitfield-Mask: 0x01) */ 48 #define MEC_GSPI_CTRL_SPDIN_SEL_Pos (2UL) /*!< SPDIN_SEL (Bit 2) */ 49 #define MEC_GSPI_CTRL_SPDIN_SEL_Msk (0xcUL) /*!< SPDIN_SEL (Bitfield-Mask: 0x03) */ 50 #define MEC_GSPI_CTRL_SRST_Pos (4UL) /*!< SRST (Bit 4) */ 51 #define MEC_GSPI_CTRL_SRST_Msk (0x10UL) /*!< SRST (Bitfield-Mask: 0x01) */ 52 #define MEC_GSPI_CTRL_AUTO_RD_Pos (5UL) /*!< AUTO_RD (Bit 5) */ 53 #define MEC_GSPI_CTRL_AUTO_RD_Msk (0x20UL) /*!< AUTO_RD (Bitfield-Mask: 0x01) */ 54 #define MEC_GSPI_CTRL_CE_Pos (6UL) /*!< CE (Bit 6) */ 55 #define MEC_GSPI_CTRL_CE_Msk (0x40UL) /*!< CE (Bitfield-Mask: 0x01) */ 56 /* ======================================================== STATUS ========================================================= */ 57 #define MEC_GSPI_STATUS_TXBE_Pos (0UL) /*!< TXBE (Bit 0) */ 58 #define MEC_GSPI_STATUS_TXBE_Msk (0x1UL) /*!< TXBE (Bitfield-Mask: 0x01) */ 59 #define MEC_GSPI_STATUS_RXBF_Pos (1UL) /*!< RXBF (Bit 1) */ 60 #define MEC_GSPI_STATUS_RXBF_Msk (0x2UL) /*!< RXBF (Bitfield-Mask: 0x01) */ 61 #define MEC_GSPI_STATUS_CLKS_Pos (2UL) /*!< CLKS (Bit 2) */ 62 #define MEC_GSPI_STATUS_CLKS_Msk (0x4UL) /*!< CLKS (Bitfield-Mask: 0x01) */ 63 /* ========================================================== TXD ========================================================== */ 64 /* ========================================================== RXD ========================================================== */ 65 /* ======================================================= CLK_CTRL ======================================================== */ 66 #define MEC_GSPI_CLK_CTRL_TCLKPH_Pos (0UL) /*!< TCLKPH (Bit 0) */ 67 #define MEC_GSPI_CLK_CTRL_TCLKPH_Msk (0x1UL) /*!< TCLKPH (Bitfield-Mask: 0x01) */ 68 #define MEC_GSPI_CLK_CTRL_RCLKPH_Pos (1UL) /*!< RCLKPH (Bit 1) */ 69 #define MEC_GSPI_CLK_CTRL_RCLKPH_Msk (0x2UL) /*!< RCLKPH (Bitfield-Mask: 0x01) */ 70 #define MEC_GSPI_CLK_CTRL_CLKPOL_Pos (2UL) /*!< CLKPOL (Bit 2) */ 71 #define MEC_GSPI_CLK_CTRL_CLKPOL_Msk (0x4UL) /*!< CLKPOL (Bitfield-Mask: 0x01) */ 72 #define MEC_GSPI_CLK_CTRL_CLKSRC_Pos (4UL) /*!< CLKSRC (Bit 4) */ 73 #define MEC_GSPI_CLK_CTRL_CLKSRC_Msk (0x10UL) /*!< CLKSRC (Bitfield-Mask: 0x01) */ 74 /* ======================================================== PRELOAD ======================================================== */ 75 /** @} */ /* End of group PosMask_peripherals */ 76 77 /** @addtogroup EnumValue_peripherals 78 * @{ 79 */ 80 /* ======================================================== ENABLE ========================================================= */ 81 /* ============================================= MEC_GSPI ENABLE ACTV [0..0] ============================================== */ 82 typedef enum { /*!< MEC_GSPI_ENABLE_ACTV */ 83 MEC_GSPI_ENABLE_ACTV_ON = 1, /*!< ON : Enable */ 84 } MEC_GSPI_ENABLE_ACTV_Enum; 85 86 /* ========================================================= CTRL ========================================================== */ 87 /* ============================================== MEC_GSPI CTRL LSBF [0..0] =============================================== */ 88 typedef enum { /*!< MEC_GSPI_CTRL_LSBF */ 89 MEC_GSPI_CTRL_LSBF_EN = 1, /*!< EN : Enable */ 90 } MEC_GSPI_CTRL_LSBF_Enum; 91 92 /* ============================================== MEC_GSPI CTRL BIOEN [1..1] ============================================== */ 93 typedef enum { /*!< MEC_GSPI_CTRL_BIOEN */ 94 MEC_GSPI_CTRL_BIOEN_EN = 1, /*!< EN : Enable */ 95 } MEC_GSPI_CTRL_BIOEN_Enum; 96 97 /* ============================================ MEC_GSPI CTRL SPDIN_SEL [2..3] ============================================ */ 98 typedef enum { /*!< MEC_GSPI_CTRL_SPDIN_SEL */ 99 MEC_GSPI_CTRL_SPDIN_SEL_FD = 0, /*!< FD : Full Duplex */ 100 MEC_GSPI_CTRL_SPDIN_SEL_HD = 1, /*!< HD : Half Duplex */ 101 MEC_GSPI_CTRL_SPDIN_SEL_DUAL = 2, /*!< DUAL : Dual */ 102 } MEC_GSPI_CTRL_SPDIN_SEL_Enum; 103 104 /* ============================================== MEC_GSPI CTRL SRST [4..4] =============================================== */ 105 typedef enum { /*!< MEC_GSPI_CTRL_SRST */ 106 MEC_GSPI_CTRL_SRST_EN = 1, /*!< EN : Enable */ 107 } MEC_GSPI_CTRL_SRST_Enum; 108 109 /* ============================================= MEC_GSPI CTRL AUTO_RD [5..5] ============================================= */ 110 typedef enum { /*!< MEC_GSPI_CTRL_AUTO_RD */ 111 MEC_GSPI_CTRL_AUTO_RD_EN = 1, /*!< EN : Enable */ 112 } MEC_GSPI_CTRL_AUTO_RD_Enum; 113 114 /* =============================================== MEC_GSPI CTRL CE [6..6] ================================================ */ 115 typedef enum { /*!< MEC_GSPI_CTRL_CE */ 116 MEC_GSPI_CTRL_CE_ASSERT = 1, /*!< ASSERT : Assert chip select */ 117 } MEC_GSPI_CTRL_CE_Enum; 118 119 /* ======================================================== STATUS ========================================================= */ 120 /* ============================================= MEC_GSPI STATUS TXBE [0..0] ============================================== */ 121 typedef enum { /*!< MEC_GSPI_STATUS_TXBE */ 122 MEC_GSPI_STATUS_TXBE_ACTIVE = 1, /*!< ACTIVE : Active */ 123 } MEC_GSPI_STATUS_TXBE_Enum; 124 125 /* ============================================= MEC_GSPI STATUS RXBF [1..1] ============================================== */ 126 typedef enum { /*!< MEC_GSPI_STATUS_RXBF */ 127 MEC_GSPI_STATUS_RXBF_ACTIVE = 1, /*!< ACTIVE : Active */ 128 } MEC_GSPI_STATUS_RXBF_Enum; 129 130 /* ============================================= MEC_GSPI STATUS CLKS [2..2] ============================================== */ 131 typedef enum { /*!< MEC_GSPI_STATUS_CLKS */ 132 MEC_GSPI_STATUS_CLKS_ACTIVE = 1, /*!< ACTIVE : Active */ 133 } MEC_GSPI_STATUS_CLKS_Enum; 134 135 /* ========================================================== TXD ========================================================== */ 136 /* ========================================================== RXD ========================================================== */ 137 /* ======================================================= CLK_CTRL ======================================================== */ 138 /* =========================================== MEC_GSPI CLK_CTRL TCLKPH [0..0] ============================================ */ 139 typedef enum { /*!< MEC_GSPI_CLK_CTRL_TCLKPH */ 140 MEC_GSPI_CLK_CTRL_TCLKPH_TXPRE1_RX1 = 0, /*!< TXPRE1_RX1 : TX data valid on before first clock edge and input 141 data sampled on first edge */ 142 MEC_GSPI_CLK_CTRL_TCLKPH_TX1_RX2 = 1, /*!< TX1_RX2 : TX data valid on after first clock edge and input 143 data sampled on second edge */ 144 } MEC_GSPI_CLK_CTRL_TCLKPH_Enum; 145 146 /* =========================================== MEC_GSPI CLK_CTRL RCLKPH [1..1] ============================================ */ 147 typedef enum { /*!< MEC_GSPI_CLK_CTRL_RCLKPH */ 148 MEC_GSPI_CLK_CTRL_RCLKPH_RXO = 0, /*!< RXO : RX data expected valid on first clock edge and sampled 149 on first and following odd edges */ 150 MEC_GSPI_CLK_CTRL_RCLKPH_RXE = 1, /*!< RXE : RX data expected valid after first clock edge and sampled 151 on following even edges */ 152 } MEC_GSPI_CLK_CTRL_RCLKPH_Enum; 153 154 /* =========================================== MEC_GSPI CLK_CTRL CLKPOL [2..2] ============================================ */ 155 typedef enum { /*!< MEC_GSPI_CLK_CTRL_CLKPOL */ 156 MEC_GSPI_CLK_CTRL_CLKPOL_LO = 0, /*!< LO : SPI clock state is low when idle */ 157 MEC_GSPI_CLK_CTRL_CLKPOL_HI = 1, /*!< HI : SPI clock state is high when idle */ 158 } MEC_GSPI_CLK_CTRL_CLKPOL_Enum; 159 160 /* =========================================== MEC_GSPI CLK_CTRL CLKSRC [4..4] ============================================ */ 161 typedef enum { /*!< MEC_GSPI_CLK_CTRL_CLKSRC */ 162 MEC_GSPI_CLK_CTRL_CLKSRC_48M = 0, /*!< 48M : 48MHz input to SPI clock generator */ 163 MEC_GSPI_CLK_CTRL_CLKSRC_2M = 1, /*!< 2M : 2MHz input to SPI clock generator */ 164 } MEC_GSPI_CLK_CTRL_CLKSRC_Enum; 165 166 /** @} */ /* End of group EnumValue_peripherals */ 167 168 #endif /* _MEC5_GSPI_V1_H */ 169