52 #ifndef __GR55XX_LL_GPIO_H__
53 #define __GR55XX_LL_GPIO_H__
62 #if defined (GPIO0) || defined (GPIO1)
119 #define LL_GPIO_PIN_0 ((uint32_t)0x0001U)
120 #define LL_GPIO_PIN_1 ((uint32_t)0x0002U)
121 #define LL_GPIO_PIN_2 ((uint32_t)0x0004U)
122 #define LL_GPIO_PIN_3 ((uint32_t)0x0008U)
123 #define LL_GPIO_PIN_4 ((uint32_t)0x0010U)
124 #define LL_GPIO_PIN_5 ((uint32_t)0x0020U)
125 #define LL_GPIO_PIN_6 ((uint32_t)0x0040U)
126 #define LL_GPIO_PIN_7 ((uint32_t)0x0080U)
127 #define LL_GPIO_PIN_8 ((uint32_t)0x0100U)
128 #define LL_GPIO_PIN_9 ((uint32_t)0x0200U)
129 #define LL_GPIO_PIN_10 ((uint32_t)0x0400U)
130 #define LL_GPIO_PIN_11 ((uint32_t)0x0800U)
131 #define LL_GPIO_PIN_12 ((uint32_t)0x1000U)
132 #define LL_GPIO_PIN_13 ((uint32_t)0x2000U)
133 #define LL_GPIO_PIN_14 ((uint32_t)0x4000U)
134 #define LL_GPIO_PIN_15 ((uint32_t)0x8000U)
135 #define LL_GPIO_PIN_ALL ((uint32_t)0xFFFFU)
141 #define LL_GPIO_MODE_INPUT ((uint32_t)0x0U)
142 #define LL_GPIO_MODE_OUTPUT ((uint32_t)0x1U)
143 #define LL_GPIO_MODE_MUX ((uint32_t)0x2U)
149 #define LL_GPIO_PULL_NO LL_GPIO_RE_N
150 #define LL_GPIO_PULL_UP LL_GPIO_RTYP
151 #define LL_GPIO_PULL_DOWN ((uint32_t)0x0U)
157 #define LL_GPIO_MUX_0 ((uint32_t)0x0U)
158 #define LL_GPIO_MUX_1 ((uint32_t)0x1U)
159 #define LL_GPIO_MUX_2 ((uint32_t)0x2U)
160 #define LL_GPIO_MUX_3 ((uint32_t)0x3U)
161 #define LL_GPIO_MUX_4 ((uint32_t)0x4U)
162 #define LL_GPIO_MUX_5 ((uint32_t)0x5U)
163 #define LL_GPIO_MUX_6 ((uint32_t)0x6U)
164 #define LL_GPIO_MUX_7 ((uint32_t)0x7U)
165 #define LL_GPIO_MUX_8 ((uint32_t)0x8U)
171 #define LL_GPIO_TRIGGER_NONE ((uint32_t)0x00U)
172 #define LL_GPIO_TRIGGER_RISING ((uint32_t)0x01U)
173 #define LL_GPIO_TRIGGER_FALLING ((uint32_t)0x02U)
174 #define LL_GPIO_TRIGGER_HIGH ((uint32_t)0x03U)
175 #define LL_GPIO_TRIGGER_LOW ((uint32_t)0x04U)
185 #define LL_GPIO_DEFAULT_CONFIG \
187 .pin = LL_GPIO_PIN_ALL, \
188 .mode = LL_GPIO_MODE_INPUT, \
189 .pull = LL_GPIO_PULL_DOWN, \
190 .mux = LL_GPIO_MUX_7, \
191 .trigger = LL_GPIO_TRIGGER_NONE, \
213 #define LL_GPIO_WriteReg(__instance__, __REG__, __VALUE__) WRITE_REG(__instance__->__REG__, (__VALUE__))
221 #define LL_GPIO_ReadReg(__instance__, __REG__) READ_REG(__instance__->__REG__)
241 #define LL_GPIO_GET_RESISTOR_POS(__GPIOx__) (((__GPIOx__) == GPIO0) ? 0 : 16)
249 #define LL_GPIO_GET_REG_MUX_CTRL_0_7( __GPIOx__) \
250 (((__GPIOx__) == GPIO0) ? &(MCU_SUB->DPAD_MUX_CTL0_7) : &(MCU_SUB->DPAD_MUX_CTL16_23))
258 #define LL_GPIO_GET_REG_MUX_CTRL_8_15( __GPIOx__) \
259 (((__GPIOx__) == GPIO0) ? &(MCU_SUB->DPAD_MUX_CTL8_15) : &(MCU_SUB->DPAD_MUX_CTL24_31))
264 #define LL_GPIO_RE_N_Pos 0
265 #define LL_GPIO_RE_N_Msk (0x1U << LL_GPIO_RE_N_Pos)
266 #define LL_GPIO_RE_N LL_GPIO_RE_N_Msk
272 #define LL_GPIO_RTYP_Pos 1
273 #define LL_GPIO_RTYP_Msk (0x1U << LL_GPIO_RTYP_Pos)
274 #define LL_GPIO_RTYP LL_GPIO_RTYP_Msk
330 WRITE_REG(GPIOx->OUTENSET, pin_mask);
334 WRITE_REG(GPIOx->OUTENCLR, pin_mask);
375 return (uint32_t)(READ_BITS(GPIOx->OUTENSET, pin) != RESET);
418 MODIFY_REG(MCU_SUB->DPAD_RTYP_BUS, pin_mask, (pull ==
LL_GPIO_PULL_UP) ? pin_mask : 0x0000U);
419 MODIFY_REG(MCU_SUB->DPAD_RE_N_BUS, pin_mask, (pull ==
LL_GPIO_PULL_NO) ? pin_mask : 0x0000U);
462 return ((READ_BITS(MCU_SUB->DPAD_RE_N_BUS, pin) != RESET) ?
LL_GPIO_PULL_NO :
505 uint32_t pos = POSITION_VAL(pin) << 2;
506 MODIFY_REG(*pReg, 0xF << pos, mux << pos);
545 uint32_t pos = POSITION_VAL(pin) << 2;
546 return (READ_BITS(*pReg, 0xF << pos) >> pos);
588 uint32_t pos = POSITION_VAL(pin >> 8) << 2;
589 MODIFY_REG(*pReg, 0xF << pos, mux << pos);
629 uint32_t pos = POSITION_VAL(pin >> 8) << 2;
630 return (READ_BITS(*pReg, 0xF << pos) >> pos);
655 return (uint32_t)(READ_REG(GPIOx->DATA));
692 return (READ_BITS(GPIOx->DATA, pin_mask) == (pin_mask));
712 WRITE_REG(GPIOx->DATAOUT, port_value);
731 return (uint32_t)(READ_REG(GPIOx->DATAOUT));
768 return (READ_BITS(GPIOx->DATAOUT, pin_mask) == (pin_mask));
805 #ifdef USE_GPIO_MASK_REGISTER
806 WRITE_REG(GPIOx->MASKLOWBYTE[(uint8_t)pin_mask], pin_mask & GPIO_MASKLOWBYTE_DATA);
807 WRITE_REG(GPIOx->MASKHIGHBYTE[(uint8_t)(pin_mask >> GPIO_MASKHIGHBYTE_DATA_Pos)],
808 pin_mask & GPIO_MASKHIGHBYTE_DATA);
810 SET_BITS(GPIOx->DATAOUT, pin_mask);
848 #ifdef USE_GPIO_MASK_REGISTER
849 WRITE_REG(GPIOx->MASKLOWBYTE[(uint8_t)pin_mask], 0x0000U);
850 WRITE_REG(GPIOx->MASKHIGHBYTE[(uint8_t)(pin_mask >> 8)], 0x0000U);
852 CLEAR_BITS(GPIOx->DATAOUT, pin_mask);
890 WRITE_REG(GPIOx->DATAOUT, READ_REG(GPIOx->DATAOUT) ^ pin_mask);
935 WRITE_REG(GPIOx->INTPOLCLR, pin_mask);
936 WRITE_REG(GPIOx->INTTYPESET, pin_mask);
975 return ((READ_BITS(GPIOx->INTPOLCLR, pin_mask) == (pin_mask)) &&
976 (READ_BITS(GPIOx->INTTYPESET, pin_mask) == (pin_mask)));
1015 WRITE_REG(GPIOx->INTPOLSET, pin_mask);
1016 WRITE_REG(GPIOx->INTTYPESET, pin_mask);
1056 return ((READ_BITS(GPIOx->INTPOLSET, pin_mask) == (pin_mask)) &&
1057 (READ_BITS(GPIOx->INTTYPESET, pin_mask) == (pin_mask)));
1096 WRITE_REG(GPIOx->INTPOLSET, pin_mask);
1097 WRITE_REG(GPIOx->INTTYPECLR, pin_mask);
1136 return ((READ_BITS(GPIOx->INTPOLSET, pin_mask) == (pin_mask)) &&
1137 (READ_BITS(GPIOx->INTTYPECLR, pin_mask) == (pin_mask)));
1176 WRITE_REG(GPIOx->INTPOLCLR, pin_mask);
1177 WRITE_REG(GPIOx->INTTYPECLR, pin_mask);
1216 return ((READ_BITS(GPIOx->INTPOLCLR, pin_mask) == (pin_mask)) &&
1217 (READ_BITS(GPIOx->INTTYPECLR, pin_mask) == (pin_mask)));
1255 WRITE_REG(GPIOx->INTENSET, pin_mask);
1293 WRITE_REG(GPIOx->INTENCLR, pin_mask);
1330 return (READ_BITS(GPIOx->INTENSET, pin_mask) == (pin_mask));
1375 return (uint32_t)(READ_BITS(GPIOx->INTSTAT, pin_mask));
1414 return (READ_BITS(GPIOx->INTSTAT, pin_mask) == pin_mask);
1453 WRITE_REG(GPIOx->INTSTAT, pin_mask);