52 #ifndef __GR55XX_LL_MSIO_H__
53 #define __GR55XX_LL_MSIO_H__
62 #if defined(AON_MSIO) || defined(MCU_RET)
130 #define LL_MSIO_PIN_0 ((uint32_t)0x01U)
131 #define LL_MSIO_PIN_1 ((uint32_t)0x02U)
132 #define LL_MSIO_PIN_2 ((uint32_t)0x04U)
133 #define LL_MSIO_PIN_3 ((uint32_t)0x08U)
134 #define LL_MSIO_PIN_4 ((uint32_t)0x10U)
135 #define LL_MSIO_PIN_5 ((uint32_t)0x20U)
136 #define LL_MSIO_PIN_6 ((uint32_t)0x40U)
137 #define LL_MSIO_PIN_7 ((uint32_t)0x80U)
138 #define LL_MSIO_PIN_ALL ((uint32_t)0xFFU)
145 #define LL_MSIO_DIRECTION_NONE ((uint32_t)0x0U)
146 #define LL_MSIO_DIRECTION_INPUT ((uint32_t)0x1U)
147 #define LL_MSIO_DIRECTION_OUTPUT ((uint32_t)0x2U)
148 #define LL_MSIO_DIRECTION_INOUT ((uint32_t)0x3U)
154 #define LL_MSIO_MODE_ANALOG ((uint32_t)0x0U)
155 #define LL_MSIO_MODE_DIGITAL ((uint32_t)0x1U)
161 #define LL_MSIO_PULL_NO ((uint32_t)0x0U)
162 #define LL_MSIO_PULL_UP ((uint32_t)0x1U)
163 #define LL_MSIO_PULL_DOWN ((uint32_t)0x2U)
169 #define LL_MSIO_MUX_0 ((uint32_t)0x0U)
170 #define LL_MSIO_MUX_1 ((uint32_t)0x1U)
171 #define LL_MSIO_MUX_2 ((uint32_t)0x2U)
172 #define LL_MSIO_MUX_3 ((uint32_t)0x3U)
173 #define LL_MSIO_MUX_4 ((uint32_t)0x4U)
174 #define LL_MSIO_MUX_5 ((uint32_t)0x5U)
175 #define LL_MSIO_MUX_6 ((uint32_t)0x6U)
176 #define LL_MSIO_MUX_7 ((uint32_t)0x7U)
197 #define LL_MSIO_WriteReg(__instance__, __REG__, __VALUE__) WRITE_REG(__instance__->__REG__, (__VALUE__))
205 #define LL_MSIO_ReadReg(__instance__, __REG__) READ_REG(__instance__->__REG__)
226 #define LL_MSIO_DEFAULT_CONFIG \
228 .pin = LL_MSIO_PIN_ALL, \
229 .direction = LL_MSIO_DIRECTION_INPUT, \
230 .mode = LL_MSIO_MODE_DIGITAL, \
231 .pull = LL_MSIO_PULL_DOWN, \
232 .mux = LL_MSIO_MUX_7, \
277 uint32_t oe_mask = (pin_mask << AON_MSIO_MSIO_A_PAD_CFG0_OUT_EN_POS) & AON_MSIO_MSIO_A_PAD_CFG0_OUT_EN;
278 uint32_t ie_mask = (pin_mask << AON_MSIO_MSIO_A_PAD_CFG1_IN_EN_POS) & AON_MSIO_MSIO_A_PAD_CFG1_IN_EN;
289 CLEAR_BITS(AON_MSIO->MSIO_A_PAD_CFG0, oe_mask);
290 CLEAR_BITS(AON_MSIO->MSIO_A_PAD_CFG1, ie_mask);
295 SET_BITS(AON_MSIO->MSIO_A_PAD_CFG0, oe_mask);
296 SET_BITS(AON_MSIO->MSIO_A_PAD_CFG1, ie_mask);
328 uint32_t oe_mask = (pin << AON_MSIO_MSIO_A_PAD_CFG0_OUT_EN_POS) & AON_MSIO_MSIO_A_PAD_CFG0_OUT_EN;
329 uint32_t ie_mask = (pin << AON_MSIO_MSIO_A_PAD_CFG1_IN_EN_POS) & AON_MSIO_MSIO_A_PAD_CFG1_IN_EN;
330 uint32_t mask = READ_BITS(AON_MSIO->MSIO_A_PAD_CFG0, oe_mask);
331 mask |= READ_BITS(AON_MSIO->MSIO_A_PAD_CFG1, ie_mask);
332 if (mask == (ie_mask | oe_mask))
368 uint32_t ae_mask = (pin_mask << AON_MSIO_MSIO_A_PAD_CFG1_A_EN_POS) & AON_MSIO_MSIO_A_PAD_CFG1_A_EN;
370 MODIFY_REG(AON_MSIO->MSIO_A_PAD_CFG1, ae_mask, ae_n);
398 uint32_t ae_mask = (pin << AON_MSIO_MSIO_A_PAD_CFG1_A_EN_POS) & AON_MSIO_MSIO_A_PAD_CFG1_A_EN;
431 uint32_t rtype_mask = (pin_mask << AON_MSIO_MSIO_A_PAD_CFG1_R_TYPE_POS) & AON_MSIO_MSIO_A_PAD_CFG1_R_TYPE;
433 MODIFY_REG(AON_MSIO->MSIO_A_PAD_CFG1, rtype_mask, rtype);
434 CLEAR_BITS(AON_MSIO->MSIO_A_PAD_CFG1,
435 (pin_mask << AON_MSIO_MSIO_A_PAD_CFG1_R_EN_POS) & AON_MSIO_MSIO_A_PAD_CFG1_R_EN);
439 SET_BITS(AON_MSIO->MSIO_A_PAD_CFG1,
440 (pin_mask << AON_MSIO_MSIO_A_PAD_CFG1_R_EN_POS) & AON_MSIO_MSIO_A_PAD_CFG1_R_EN);
470 if (READ_BITS(AON_MSIO->MSIO_A_PAD_CFG1,
471 (pin << AON_MSIO_MSIO_A_PAD_CFG1_R_EN_POS) & AON_MSIO_MSIO_A_PAD_CFG1_R_EN))
477 uint32_t rtype_mask = (pin << AON_MSIO_MSIO_A_PAD_CFG1_R_TYPE_POS) & AON_MSIO_MSIO_A_PAD_CFG1_R_TYPE;
515 uint32_t pos = POSITION_VAL(pin) << 2;
518 CLEAR_BITS(AON_MSIO->MSIO_MCU_OVR, pin << AON_MSIO_MSIO_MCU_OVR_MSIO_OVR_POS);
522 MODIFY_REG(MCU_RET->MSIO_A_PAD_MUX_CTL, 0xF << pos, mux << pos);
523 SET_BITS(AON_MSIO->MSIO_MCU_OVR, pin << AON_MSIO_MSIO_MCU_OVR_MSIO_OVR_POS);
557 if (READ_BITS(AON_MSIO->MSIO_MCU_OVR, pin << AON_MSIO_MSIO_MCU_OVR_MSIO_OVR_POS))
559 uint32_t pos = POSITION_VAL(pin) << 2;
560 return (READ_BITS(MCU_RET->MSIO_A_PAD_MUX_CTL, 0xF << pos) >> pos);
586 return (uint32_t)(READ_BITS(AON_MSIO->MSIO_A_PAD_CFG0, AON_MSIO_MSIO_A_PAD_CFG0_IN) >> AON_MSIO_MSIO_A_PAD_CFG0_IN_POS);
611 pin_mask = (pin_mask << AON_MSIO_MSIO_A_PAD_CFG0_IN_POS) & AON_MSIO_MSIO_A_PAD_CFG0_IN;
612 return (uint32_t)(READ_BITS(AON_MSIO->MSIO_A_PAD_CFG0, pin_mask) == pin_mask);
637 pin_mask = (pin_mask << AON_MSIO_MSIO_A_PAD_CFG0_OUT_POS) & AON_MSIO_MSIO_A_PAD_CFG0_OUT;
638 return (uint32_t)(READ_BITS(AON_MSIO->MSIO_A_PAD_CFG0, pin_mask) == pin_mask);
654 MODIFY_REG(AON_MSIO->MSIO_A_PAD_CFG0, AON_MSIO_MSIO_A_PAD_CFG0_OUT, (port_value << AON_MSIO_MSIO_A_PAD_CFG0_OUT_POS) & AON_MSIO_MSIO_A_PAD_CFG0_OUT);
668 return (uint32_t)(READ_BITS(AON_MSIO->MSIO_A_PAD_CFG0, AON_MSIO_MSIO_A_PAD_CFG0_OUT) >> AON_MSIO_MSIO_A_PAD_CFG0_OUT_POS);
693 SET_BITS(AON_MSIO->MSIO_A_PAD_CFG0, (pin_mask << AON_MSIO_MSIO_A_PAD_CFG0_OUT_POS) & AON_MSIO_MSIO_A_PAD_CFG0_OUT);
718 CLEAR_BITS(AON_MSIO->MSIO_A_PAD_CFG0, (pin_mask << AON_MSIO_MSIO_A_PAD_CFG0_OUT_POS) & AON_MSIO_MSIO_A_PAD_CFG0_OUT);
743 WRITE_REG(AON_MSIO->MSIO_A_PAD_CFG0, (READ_REG(AON_MSIO->MSIO_A_PAD_CFG0) ^ ((pin_mask << AON_MSIO_MSIO_A_PAD_CFG0_OUT_POS) & AON_MSIO_MSIO_A_PAD_CFG0_OUT)));