52 #ifndef __GR55XX_LL_MSIO_H__
53 #define __GR55XX_LL_MSIO_H__
129 #define LL_MSIO_PIN_0 ((uint32_t)0x01U)
130 #define LL_MSIO_PIN_1 ((uint32_t)0x02U)
131 #define LL_MSIO_PIN_2 ((uint32_t)0x04U)
132 #define LL_MSIO_PIN_3 ((uint32_t)0x08U)
133 #define LL_MSIO_PIN_4 ((uint32_t)0x10U)
134 #define LL_MSIO_PIN_ALL ((uint32_t)0x1FU)
140 #define LL_MSIO_DIRECTION_NONE ((uint32_t)0x0U)
141 #define LL_MSIO_DIRECTION_INPUT ((uint32_t)0x1U)
142 #define LL_MSIO_DIRECTION_OUTPUT ((uint32_t)0x2U)
143 #define LL_MSIO_DIRECTION_INOUT ((uint32_t)0x3U)
149 #define LL_MSIO_MODE_ANALOG ((uint32_t)0x0U)
150 #define LL_MSIO_MODE_DIGITAL ((uint32_t)0x1U)
156 #define LL_MSIO_PULL_NO ((uint32_t)0x0U)
157 #define LL_MSIO_PULL_UP ((uint32_t)0x1U)
158 #define LL_MSIO_PULL_DOWN ((uint32_t)0x2U)
164 #define LL_MSIO_MUX_0 ((uint32_t)0x0U)
165 #define LL_MSIO_MUX_1 ((uint32_t)0x1U)
166 #define LL_MSIO_MUX_2 ((uint32_t)0x2U)
167 #define LL_MSIO_MUX_3 ((uint32_t)0x3U)
168 #define LL_MSIO_MUX_4 ((uint32_t)0x4U)
169 #define LL_MSIO_MUX_5 ((uint32_t)0x5U)
170 #define LL_MSIO_MUX_6 ((uint32_t)0x6U)
171 #define LL_MSIO_MUX_7 ((uint32_t)0x7U)
192 #define LL_MSIO_WriteReg(__instance__, __REG__, __VALUE__) WRITE_REG(__instance__->__REG__, (__VALUE__))
200 #define LL_MSIO_ReadReg(__instance__, __REG__) READ_REG(__instance__->__REG__)
221 #define LL_MSIO_DEFAULT_CONFIG \
223 .pin = LL_MSIO_PIN_ALL, \
224 .direction = LL_MSIO_DIRECTION_INPUT, \
225 .mode = LL_MSIO_MODE_DIGITAL, \
226 .pull = LL_MSIO_PULL_DOWN, \
227 .mux = LL_MSIO_MUX_7, \
272 uint32_t oe_mask = (pin_mask << AON_MSIO_PAD_CFG_0_OE_N_Pos) & AON_MSIO_PAD_CFG_0_OE_N;
273 uint32_t ie_mask = (pin_mask << AON_MSIO_PAD_CFG_0_IE_N_Pos) & AON_MSIO_PAD_CFG_0_IE_N;
277 MODIFY_REG(AON->MSIO_PAD_CFG_0, (ie_mask | oe_mask), (direction !=
LL_MSIO_DIRECTION_INPUT) ? ie_mask : oe_mask);
279 CLEAR_BITS(AON->MSIO_PAD_CFG_0, (ie_mask | oe_mask));
282 SET_BITS(AON->MSIO_PAD_CFG_0, (ie_mask | oe_mask));
313 uint32_t oe_mask = (pin << AON_MSIO_PAD_CFG_0_OE_N_Pos) & AON_MSIO_PAD_CFG_0_OE_N;
314 uint32_t ie_mask = (pin << AON_MSIO_PAD_CFG_0_IE_N_Pos) & AON_MSIO_PAD_CFG_0_IE_N;
315 uint32_t mask = READ_BITS(AON->MSIO_PAD_CFG_0, (ie_mask | oe_mask));
316 if (mask == (ie_mask | oe_mask))
352 uint32_t ae_mask = (pin_mask << AON_MSIO_PAD_CFG_1_AE_N_Pos) & AON_MSIO_PAD_CFG_1_AE_N;
354 GLOBAL_EXCEPTION_DISABLE();
355 MODIFY_REG(AON->MSIO_PAD_CFG_1, ae_mask, ae_n);
356 GLOBAL_EXCEPTION_ENABLE();
384 uint32_t ae_mask = (pin << AON_MSIO_PAD_CFG_1_AE_N_Pos) & AON_MSIO_PAD_CFG_1_AE_N;
417 uint32_t rtype_mask = (pin_mask << AON_MSIO_PAD_CFG_1_RTYPE_Pos) & AON_MSIO_PAD_CFG_1_RTYPE;
419 CLEAR_BITS(AON->MSIO_PAD_CFG_0, (pin_mask << AON_MSIO_PAD_CFG_0_RE_N_Pos) & AON_MSIO_PAD_CFG_0_RE_N);
420 GLOBAL_EXCEPTION_DISABLE();
421 MODIFY_REG(AON->MSIO_PAD_CFG_1, rtype_mask, rtype);
422 GLOBAL_EXCEPTION_ENABLE();
426 SET_BITS(AON->MSIO_PAD_CFG_0, (pin_mask << AON_MSIO_PAD_CFG_0_RE_N_Pos) & AON_MSIO_PAD_CFG_0_RE_N);
456 if (READ_BITS(AON->MSIO_PAD_CFG_0, (pin << AON_MSIO_PAD_CFG_0_RE_N_Pos) & AON_MSIO_PAD_CFG_0_RE_N))
462 uint32_t rtype_mask = (pin << AON_MSIO_PAD_CFG_1_RTYPE_Pos) & AON_MSIO_PAD_CFG_1_RTYPE;
500 uint32_t pos = POSITION_VAL(pin) << 2;
501 MODIFY_REG(MCU_SUB->MSIO_PAD_MUX_CTL, 0xF << pos, mux << pos);
504 GLOBAL_EXCEPTION_DISABLE();
505 CLEAR_BITS(AON->MSIO_PAD_CFG_1, pin << AON_MSIO_PAD_CFG_1_MCU_OVR_Pos);
506 GLOBAL_EXCEPTION_ENABLE();
510 GLOBAL_EXCEPTION_DISABLE();
511 SET_BITS(AON->MSIO_PAD_CFG_1, pin << AON_MSIO_PAD_CFG_1_MCU_OVR_Pos);
512 GLOBAL_EXCEPTION_ENABLE();
546 if(READ_BITS(AON->MSIO_PAD_CFG_1, pin << AON_MSIO_PAD_CFG_1_MCU_OVR_Pos))
548 uint32_t pos = POSITION_VAL(pin) << 2;
549 return (READ_BITS(MCU_SUB->MSIO_PAD_MUX_CTL, 0xF << pos) >> pos);
578 return (uint32_t)(READ_BITS(MCU_SUB->MSIO_REG0, MCU_SUB_MSIO_REG0_MSIO_C));
603 return (uint32_t)(READ_BITS(MCU_SUB->MSIO_REG0, pin_mask) == pin_mask);
622 MODIFY_REG(AON->MSIO_PAD_CFG_0, AON_MSIO_PAD_CFG_0_IN, (port_value << AON_MSIO_PAD_CFG_0_IN_Pos) & AON_MSIO_PAD_CFG_0_IN);
640 return (uint32_t)(READ_BITS(AON->MSIO_PAD_CFG_0, AON_MSIO_PAD_CFG_0_IN) >> AON_MSIO_PAD_CFG_0_IN_Pos);
665 pin_mask = (pin_mask << AON_MSIO_PAD_CFG_0_IN_Pos) & AON_MSIO_PAD_CFG_0_IN;
666 return (uint32_t)(READ_BITS(AON->MSIO_PAD_CFG_0, pin_mask) == pin_mask);
691 SET_BITS(AON->MSIO_PAD_CFG_0, (pin_mask << AON_MSIO_PAD_CFG_0_IN_Pos) & AON_MSIO_PAD_CFG_0_IN);
716 CLEAR_BITS(AON->MSIO_PAD_CFG_0, (pin_mask << AON_MSIO_PAD_CFG_0_IN_Pos) & AON_MSIO_PAD_CFG_0_IN);
741 WRITE_REG(AON->MSIO_PAD_CFG_0, (READ_REG(AON->MSIO_PAD_CFG_0) ^ ((pin_mask << AON_MSIO_PAD_CFG_0_IN_Pos) & AON_MSIO_PAD_CFG_0_IN)));