summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Shawcroft <scott@adafruit.com>2020-09-10 12:36:17 -0700
committerGitHub <noreply@github.com>2020-09-10 12:36:17 -0700
commit9e722c8c99d1c31d8ac1c009aef8e2da31f401b9 (patch)
tree3255d1a8eb0fbe0625321b578ada631f1bfba535
parente5dd2a32f4adaa78690173fba934def93a149d7e (diff)
parent2690faec4313bf36d83374ccbfab02f6abbef6dc (diff)
Merge pull request #3375 from DavePutz/issue3296
Correction for Issue #3296 - ble hanging on nrf52840
-rw-r--r--ports/atmel-samd/common-hal/microcontroller/Pin.c4
-rw-r--r--ports/esp32s2/common-hal/microcontroller/Pin.c6
-rw-r--r--ports/nrf/common-hal/busio/SPI.c2
-rw-r--r--ports/nrf/common-hal/microcontroller/Pin.c3
-rw-r--r--ports/stm/common-hal/microcontroller/Pin.c7
5 files changed, 21 insertions, 1 deletions
diff --git a/ports/atmel-samd/common-hal/microcontroller/Pin.c b/ports/atmel-samd/common-hal/microcontroller/Pin.c
index 5ce077eb8..ef1d8fffa 100644
--- a/ports/atmel-samd/common-hal/microcontroller/Pin.c
+++ b/ports/atmel-samd/common-hal/microcontroller/Pin.c
@@ -106,6 +106,10 @@ void reset_all_pins(void) {
}
void never_reset_pin_number(uint8_t pin_number) {
+ if (pin_number >= PORT_BITS) {
+ return;
+ }
+
never_reset_pins[GPIO_PORT(pin_number)] |= 1 << GPIO_PIN(pin_number);
}
diff --git a/ports/esp32s2/common-hal/microcontroller/Pin.c b/ports/esp32s2/common-hal/microcontroller/Pin.c
index 03a83cfe6..546dca848 100644
--- a/ports/esp32s2/common-hal/microcontroller/Pin.c
+++ b/ports/esp32s2/common-hal/microcontroller/Pin.c
@@ -45,6 +45,9 @@ bool apa102_mosi_in_use;
bool apa102_sck_in_use;
void never_reset_pin_number(gpio_num_t pin_number) {
+ if (pin_number == -1 ) {
+ return;
+ }
never_reset_pins[pin_number / 32] |= 1 << pin_number % 32;
}
@@ -54,6 +57,9 @@ void common_hal_never_reset_pin(const mcu_pin_obj_t* pin) {
// Mark pin as free and return it to a quiescent state.
void reset_pin_number(gpio_num_t pin_number) {
+ if (pin_number == -1 ) {
+ return;
+ }
never_reset_pins[pin_number / 32] &= ~(1 << pin_number % 32);
in_use[pin_number / 32] &= ~(1 << pin_number % 32);
diff --git a/ports/nrf/common-hal/busio/SPI.c b/ports/nrf/common-hal/busio/SPI.c
index 380ec27de..1cf074955 100644
--- a/ports/nrf/common-hal/busio/SPI.c
+++ b/ports/nrf/common-hal/busio/SPI.c
@@ -180,7 +180,7 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self, const mcu_pin_obj_t *
if (miso != NULL) {
config.miso_pin = miso->number;
- self->MISO_pin_number = mosi->number;
+ self->MISO_pin_number = miso->number;
claim_pin(miso);
} else {
self->MISO_pin_number = NO_PIN;
diff --git a/ports/nrf/common-hal/microcontroller/Pin.c b/ports/nrf/common-hal/microcontroller/Pin.c
index d294c1dd5..bc7ff831a 100644
--- a/ports/nrf/common-hal/microcontroller/Pin.c
+++ b/ports/nrf/common-hal/microcontroller/Pin.c
@@ -123,6 +123,9 @@ void reset_pin_number(uint8_t pin_number) {
void never_reset_pin_number(uint8_t pin_number) {
+ if (pin_number == NO_PIN) {
+ return;
+ }
never_reset_pins[nrf_pin_port(pin_number)] |= 1 << nrf_relative_pin_number(pin_number);
}
diff --git a/ports/stm/common-hal/microcontroller/Pin.c b/ports/stm/common-hal/microcontroller/Pin.c
index 9fbdedead..996513270 100644
--- a/ports/stm/common-hal/microcontroller/Pin.c
+++ b/ports/stm/common-hal/microcontroller/Pin.c
@@ -70,6 +70,10 @@ void reset_all_pins(void) {
// Mark pin as free and return it to a quiescent state.
void reset_pin_number(uint8_t pin_port, uint8_t pin_number) {
+ if ( pin_number == NO_PIN ) {
+ return;
+ }
+
if (pin_port == 0x0F) {
return;
}
@@ -88,6 +92,9 @@ void reset_pin_number(uint8_t pin_port, uint8_t pin_number) {
}
void never_reset_pin_number(uint8_t pin_port, uint8_t pin_number) {
+ if ( pin_number == NO_PIN ) {
+ return;
+ }
never_reset_pins[pin_port] |= 1<<pin_number;
// Make sure never reset pins are also always claimed
claimed_pins[pin_port] |= 1<<pin_number;