114 DL_GPIO_disableOutput(port_, pin_mask_);
115 DL_GPIO_disableInterrupt(port_, pin_mask_);
116 DL_GPIO_clearInterruptStatus(port_, pin_mask_);
122 DL_GPIO_RESISTOR res = DL_GPIO_RESISTOR_NONE;
125 res = DL_GPIO_RESISTOR_PULL_UP;
129 res = DL_GPIO_RESISTOR_PULL_DOWN;
131 DL_GPIO_initDigitalInputFeatures(pincm_, DL_GPIO_INVERSION_DISABLE, res,
132 DL_GPIO_HYSTERESIS_DISABLE,
133 DL_GPIO_WAKEUP_DISABLE);
139 DL_GPIO_RESISTOR res = DL_GPIO_RESISTOR_NONE;
142 res = DL_GPIO_RESISTOR_PULL_UP;
146 res = DL_GPIO_RESISTOR_PULL_DOWN;
149 DL_GPIO_initDigitalOutputFeatures(pincm_, DL_GPIO_INVERSION_DISABLE, res,
150 DL_GPIO_DRIVE_STRENGTH_LOW, DL_GPIO_HIZ_DISABLE);
152 volatile uint32_t* pincm_reg = &IOMUX->SECCFG.PINCM[pincm_];
153 *pincm_reg |= IOMUX_PINCM_INENA_ENABLE;
155 DL_GPIO_clearPins(port_, pin_mask_);
157 DL_GPIO_enableOutput(port_, pin_mask_);
165 DL_GPIO_RESISTOR res = DL_GPIO_RESISTOR_NONE;
168 res = DL_GPIO_RESISTOR_PULL_UP;
171 DL_GPIO_initDigitalInputFeatures(pincm_, DL_GPIO_INVERSION_DISABLE, res,
172 DL_GPIO_HYSTERESIS_DISABLE,
173 DL_GPIO_WAKEUP_DISABLE);
175 DL_GPIO_clearPins(port_, pin_mask_);
176 DL_GPIO_disableOutput(port_, pin_mask_);
184 DL_GPIO_RESISTOR res = DL_GPIO_RESISTOR_NONE;
187 res = DL_GPIO_RESISTOR_PULL_UP;
191 res = DL_GPIO_RESISTOR_PULL_DOWN;
194 DL_GPIO_initDigitalInputFeatures(pincm_, DL_GPIO_INVERSION_DISABLE, res,
195 DL_GPIO_HYSTERESIS_DISABLE,
196 DL_GPIO_WAKEUP_DISABLE);
199 MSPM0_GPIO_GetPolarityMask(__builtin_ctz(pin_mask_), config.
direction);
202 uint32_t pin_idx = __builtin_ctz(pin_mask_);
204 constexpr uint32_t BITS_PER_PIN = 2;
205 constexpr uint32_t CLEAR_PATTERN = 0x3U;
207 uint32_t shift = (pin_idx % 16) * BITS_PER_PIN;
208 uint32_t clear_mask = CLEAR_PATTERN << shift;
212 uint32_t current_polarity = DL_GPIO_getLowerPinsPolarity(port_);
213 current_polarity &= ~clear_mask;
214 current_polarity |= pol_mask;
215 DL_GPIO_setLowerPinsPolarity(port_, current_polarity);
219 uint32_t current_polarity = DL_GPIO_getUpperPinsPolarity(port_);
220 current_polarity &= ~clear_mask;
221 current_polarity |= pol_mask;
222 DL_GPIO_setUpperPinsPolarity(port_, current_polarity);
226 DL_GPIO_clearInterruptStatus(port_, pin_mask_);
227 DL_GPIO_enableInterrupt(port_, pin_mask_);
232 return ErrorCode::FAILED;
235 return ErrorCode::OK;