Merge pull request #4063 from dhalbert/rp2040-gp15

This commit is contained in:
Dan Halbert 2021-01-26 13:38:41 -05:00 committed by GitHub
commit a9227e15d0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 15 deletions

View File

@ -16,6 +16,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_GP12), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_GP13), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_GP14), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_GP15), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_GP16), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_GP17), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_GP18), MP_ROM_PTR(&pin_GPIO18) },

View File

@ -26,6 +26,7 @@
#include "py/runtime.h"
#include "common-hal/microcontroller/__init__.h"
#include "shared-bindings/microcontroller/Pin.h"
#include "supervisor/shared/rgb_led_status.h"
@ -46,7 +47,7 @@ bool speaker_enable_in_use;
STATIC uint32_t never_reset_pins;
void reset_all_pins(void) {
for (size_t i = 0; i < 30; i++) {
for (size_t i = 0; i < TOTAL_GPIO_COUNT; i++) {
if ((never_reset_pins & (1 << i)) != 0) {
continue;
}
@ -55,7 +56,7 @@ void reset_all_pins(void) {
}
void never_reset_pin_number(uint8_t pin_number) {
if (pin_number >= 32) {
if (pin_number >= TOTAL_GPIO_COUNT) {
return;
}
@ -63,12 +64,7 @@ void never_reset_pin_number(uint8_t pin_number) {
}
void reset_pin_number(uint8_t pin_number) {
if (pin_number >= 32
#if TUD_OPT_RP2040_USB_DEVICE_ENUMERATION_FIX
// Pin 15 is used for Errata so we don't mess with it.
|| pin_number == 15
#endif
) {
if (pin_number >= TOTAL_GPIO_COUNT) {
return;
}
@ -139,15 +135,10 @@ void claim_pin(const mcu_pin_obj_t* pin) {
}
bool pin_number_is_free(uint8_t pin_number) {
if (pin_number >= 30) {
if (pin_number >= TOTAL_GPIO_COUNT) {
return false;
}
#if TUD_OPT_RP2040_USB_DEVICE_ENUMERATION_FIX
// Pin 15 is used for Errata so we don't mess with it.
if (pin_number == 15) {
return true;
}
#endif
uint32_t pad_state = padsbank0_hw->io[pin_number];
return (pad_state & PADS_BANK0_GPIO0_IE_BITS) == 0 &&
(pad_state & PADS_BANK0_GPIO0_OD_BITS) != 0;