140 #define LL_MSIO_INPUT_POS ((uint32_t)0x0U)
141 #define LL_MSIO_OUTPUT_POS ((uint32_t)0x1U)
142 #define LL_MSIO_STRENGTH_DS0_MASK ((uint32_t)0x10U)
143 #define LL_MSIO_STRENGTH_DS1_MASK ((uint32_t)0x01U)
144 #define LL_MSIO_STRENGTH_DS0_POS ((uint32_t)0x04U)
145 #define LL_MSIO_STRENGTH_DS1_POS ((uint32_t)0x00U)
151 #define LL_MSIO_PIN_0 ((uint32_t)0x01U)
152 #define LL_MSIO_PIN_1 ((uint32_t)0x02U)
153 #define LL_MSIO_PIN_2 ((uint32_t)0x04U)
154 #define LL_MSIO_PIN_3 ((uint32_t)0x08U)
155 #define LL_MSIO_PIN_4 ((uint32_t)0x10U)
156 #define LL_MSIO_PIN_5 ((uint32_t)0x20U)
157 #define LL_MSIO_PIN_6 ((uint32_t)0x40U)
158 #define LL_MSIO_PIN_7 ((uint32_t)0x80U)
159 #define LL_MSIO_PIN_8 ((uint32_t)0x100U)
160 #define LL_MSIO_PIN_9 ((uint32_t)0x200U)
161 #define LL_MSIO_PIN_ALL ((uint32_t)0x3FFU)
168 #define LL_MSIO_DIRECTION_NONE ((uint32_t)0x0U)
169 #define LL_MSIO_DIRECTION_INPUT ((uint32_t)0x1U)
170 #define LL_MSIO_DIRECTION_OUTPUT ((uint32_t)0x2U)
171 #define LL_MSIO_DIRECTION_INOUT ((uint32_t)0x3U)
177 #define LL_MSIO_MODE_ANALOG ((uint32_t)0x1U)
178 #define LL_MSIO_MODE_DIGITAL ((uint32_t)0x0U)
184 #define LL_MSIO_PULL_NO ((uint32_t)0x0U)
185 #define LL_MSIO_PULL_UP ((uint32_t)0x1U)
186 #define LL_MSIO_PULL_DOWN ((uint32_t)0x2U)
192 #define LL_MSIO_SPEED_MEDIUM ((uint32_t)0x1U)
193 #define LL_MSIO_SPEED_HIGH ((uint32_t)0x0U)
199 #define LL_MSIO_STRENGTH_LOW ((uint32_t)0x00U)
200 #define LL_MSIO_STRENGTH_MEDIUM ((uint32_t)0x01U)
201 #define LL_MSIO_STRENGTH_HIGH ((uint32_t)0x10U)
202 #define LL_MSIO_STRENGTH_ULTRA ((uint32_t)0x11U)
208 #define LL_MSIO_INPUT_TYPE_CMOS ((uint32_t)0x00U)
209 #define LL_MSIO_INPUT_TYPE_SCHMITT ((uint32_t)0x01U)
229 #define LL_MSIO_WriteReg(__instance__, __REG__, __VALUE__) WRITE_REG(__instance__->__REG__, (__VALUE__))
237 #define LL_MSIO_ReadReg(__instance__, __REG__) READ_REG(__instance__->__REG__)
258 #define LL_MSIO_DEFAULT_CONFIG \
260 .pin = LL_MSIO_PIN_ALL, \
261 .direction = LL_MSIO_DIRECTION_INPUT, \
262 .mode = LL_MSIO_MODE_DIGITAL, \
263 .pull = LL_MSIO_PULL_DOWN, \
264 .mux = IO_MUX_GPIO, \
265 .speed = LL_MSIO_SPEED_MEDIUM, \
266 .strength = LL_MSIO_STRENGTH_MEDIUM, \
267 .input_type = LL_MSIO_INPUT_TYPE_CMOS, \
314 uint32_t ie_mask = (pin_mask << AON_MSIO_A_PAD_CFG1_IE_POS) & AON_MSIO_A_PAD_CFG1_IE;
315 uint32_t oe_mask = (pin_mask << AON_MSIO_A_PAD_CFG0_OE_POS) & AON_MSIO_A_PAD_CFG0_OE;
318 MODIFY_REG(
AON_MSIO->MSIO_A_PAD_CFG1, ie_mask, ie);
319 MODIFY_REG(
AON_MSIO->MSIO_A_PAD_CFG0, oe_mask, oe);
353 uint32_t ie_mask = (pin << AON_MSIO_A_PAD_CFG1_IE_POS) & AON_MSIO_A_PAD_CFG1_IE;
354 uint32_t oe_mask = (pin << AON_MSIO_A_PAD_CFG0_OE_POS) & AON_MSIO_A_PAD_CFG0_OE;
355 uint32_t ie = READ_BITS(
AON_MSIO->MSIO_A_PAD_CFG1, ie_mask) >> (POSITION_VAL(pin));
356 uint32_t oe = READ_BITS(
AON_MSIO->MSIO_A_PAD_CFG0, oe_mask) >> (POSITION_VAL(pin));
388 uint32_t mask = (pin_mask << AON_MSIO_A_PAD_CFG3_AE_POS) & AON_MSIO_A_PAD_CFG3_AE;
391 SET_BITS(
AON_MSIO->MSIO_A_PAD_CFG3, mask);
395 CLEAR_BITS(
AON_MSIO->MSIO_A_PAD_CFG3, mask);
426 uint32_t mask = (pin << AON_MSIO_A_PAD_CFG3_AE_POS) & AON_MSIO_A_PAD_CFG3_AE;
458 pin_mask = (pin_mask << AON_MSIO_A_PAD_CFG2_IS_POS) & AON_MSIO_A_PAD_CFG2_IS;
489 pin = (pin << AON_MSIO_A_PAD_CFG2_IS_POS) & AON_MSIO_A_PAD_CFG2_IS;
490 return ((uint32_t)(READ_BITS(
AON_MSIO->MSIO_A_PAD_CFG2, pin) == pin) ?
523 uint32_t ps_mask = (pin_mask << AON_MSIO_A_PAD_CFG1_PS_POS) & AON_MSIO_A_PAD_CFG1_PS;
524 uint32_t pe_mask = (pin_mask << AON_MSIO_A_PAD_CFG1_PE_POS) & AON_MSIO_A_PAD_CFG1_PE;
527 MODIFY_REG(
AON_MSIO->MSIO_A_PAD_CFG1, pe_mask | ps_mask, pe | ps);
558 uint32_t ps_mask = (pin << AON_MSIO_A_PAD_CFG1_PS_POS) & AON_MSIO_A_PAD_CFG1_PS;
559 uint32_t pe_mask = (pin << AON_MSIO_A_PAD_CFG1_PE_POS) & AON_MSIO_A_PAD_CFG1_PE;
594 CLEAR_BITS(
AON_MSIO->MSIO_MCU_OVR, pin << AON_MSIO_MCU_OVR_MSIO_OVR_POS);
598 SET_BITS(
AON_MSIO->MSIO_MCU_OVR, pin << AON_MSIO_MCU_OVR_MSIO_OVR_POS);
604 pin = POSITION_VAL(pin);
607 pos = (pin & 3) << 3;
609 MODIFY_REG(MCU_PAD->MSIO_PAD_MUX[
id], IO_MUX_BIT_MASK << pos, mux << pos);
637 if (READ_BITS(
AON_MSIO->MSIO_MCU_OVR, pin << AON_MSIO_MCU_OVR_MSIO_OVR_POS))
642 pin = POSITION_VAL(pin);
645 pos = (pin & 3) << 3;
647 return (READ_BITS(MCU_PAD->MSIO_PAD_MUX[
id], IO_MUX_BIT_MASK << pos) >> pos);
685 MODIFY_REG(
AON_MSIO->MSIO_A_PAD_CFG2, pin_mask << AON_MSIO_A_PAD_CFG2_SR_POS, pin_mask << AON_MSIO_A_PAD_CFG2_SR_POS);
689 MODIFY_REG(
AON_MSIO->MSIO_A_PAD_CFG2, pin_mask << AON_MSIO_A_PAD_CFG2_SR_POS, 0);
719 pos = POSITION_VAL(pin);
720 return (READ_BITS(
AON_MSIO->MSIO_A_PAD_CFG2, pin << AON_MSIO_A_PAD_CFG2_SR_POS) >> AON_MSIO_A_PAD_CFG2_SR_POS >> pos);
759 MODIFY_REG(
AON_MSIO->MSIO_A_PAD_CFG3, pin_mask << AON_MSIO_A_PAD_CFG3_DS0_POS , pin_mask << AON_MSIO_A_PAD_CFG3_DS0_POS);
763 MODIFY_REG(
AON_MSIO->MSIO_A_PAD_CFG3, pin_mask << AON_MSIO_A_PAD_CFG3_DS0_POS , 0);
767 MODIFY_REG(
AON_MSIO->MSIO_A_PAD_CFG3, pin_mask << AON_MSIO_A_PAD_CFG3_DS1_POS , pin_mask << AON_MSIO_A_PAD_CFG3_DS1_POS);
771 MODIFY_REG(
AON_MSIO->MSIO_A_PAD_CFG3, pin_mask << AON_MSIO_A_PAD_CFG3_DS1_POS , 0);
804 pos = POSITION_VAL(pin_mask);
805 uint8_t ds0 = READ_BITS(
AON_MSIO->MSIO_A_PAD_CFG3, pin_mask << AON_MSIO_A_PAD_CFG3_DS0_POS ) >> AON_MSIO_A_PAD_CFG3_DS0_POS >> pos;
806 uint8_t ds1 = READ_BITS(
AON_MSIO->MSIO_A_PAD_CFG3, pin_mask << AON_MSIO_A_PAD_CFG3_DS1_POS ) >> AON_MSIO_A_PAD_CFG3_DS1_POS >> pos;
827 return (uint32_t)(READ_BITS(
AON_MSIO->MSIO_A_PAD_CFG0, AON_MSIO_A_PAD_CFG0_IN_VAL) >> AON_MSIO_A_PAD_CFG0_IN_VAL_POS);
854 pin_mask = (pin_mask << AON_MSIO_A_PAD_CFG0_IN_VAL_POS) & AON_MSIO_A_PAD_CFG0_IN_VAL;
855 return (uint32_t)(READ_BITS(
AON_MSIO->MSIO_A_PAD_CFG0, pin_mask) == pin_mask);
882 pin_mask = (pin_mask << AON_MSIO_A_PAD_CFG0_OUT_VAL_POS) & AON_MSIO_A_PAD_CFG0_OUT_VAL;
883 return (uint32_t)(READ_BITS(
AON_MSIO->MSIO_A_PAD_CFG0, pin_mask) == pin_mask);
899 MODIFY_REG(
AON_MSIO->MSIO_A_PAD_CFG0, AON_MSIO_A_PAD_CFG0_OUT_VAL, (port_value << AON_MSIO_A_PAD_CFG0_OUT_VAL_POS) & AON_MSIO_A_PAD_CFG0_OUT_VAL);
913 return (uint32_t)(READ_BITS(
AON_MSIO->MSIO_A_PAD_CFG0, AON_MSIO_A_PAD_CFG0_OUT_VAL) >> AON_MSIO_A_PAD_CFG0_OUT_VAL_POS);
940 SET_BITS(
AON_MSIO->MSIO_A_PAD_CFG0, (pin_mask << AON_MSIO_A_PAD_CFG0_OUT_VAL_POS) & AON_MSIO_A_PAD_CFG0_OUT_VAL);
967 CLEAR_BITS(
AON_MSIO->MSIO_A_PAD_CFG0, (pin_mask << AON_MSIO_A_PAD_CFG0_OUT_VAL_POS) & AON_MSIO_A_PAD_CFG0_OUT_VAL);
994 WRITE_REG(
AON_MSIO->MSIO_A_PAD_CFG0, (READ_REG(
AON_MSIO->MSIO_A_PAD_CFG0) ^ ((pin_mask << AON_MSIO_A_PAD_CFG0_OUT_VAL_POS) & AON_MSIO_A_PAD_CFG0_OUT_VAL)));