8000 Merge pull request #9546 from adafruit/9.1.x · EternityForest/circuitpython@1c03d6a · GitHub
[go: up one dir, main page]

Skip to content

Commit 1c03d6a

Browse files
authored
Merge pull request adafruit#9546 from adafruit/9.1.x
Merge in 9.1.x with FunHouse fix
2 parents e5e9c5c + f4ca293 commit 1c03d6a

File tree

1 file changed

+5
-1
lines changed
  • ports/espressif/common-hal/busio

1 file changed

+5
-1
lines changed

ports/espressif/common-hal/busio/SPI.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ void common_hal_busio_spi_deinit(busio_spi_obj_t *self) {
129129

130130
// Wait for any other users of this to finish.
131131
while (!common_hal_busio_spi_try_lock(self)) {
132+
RUN_BACKGROUND_TASKS;
132133
}
133134

134135
// Mark us as deinit early in case we are used in an interrupt.
@@ -139,7 +140,10 @@ void common_hal_busio_spi_deinit(busio_spi_obj_t *self) {
139140
spi_bus_remove_device(spi_handle[self->host_id]);
140141
spi_bus_free(self->host_id);
141142

143+
// Release the mutex before we delete it. Otherwise FreeRTOS gets unhappy.
144+
xSemaphoreGive(self->mutex);
142145
vSemaphoreDelete(self->mutex);
146+
self->mutex = NULL;
143147

144148
common_hal_reset_pin(self->MOSI);
145149
common_hal_reset_pin(self->MISO);
@@ -166,7 +170,7 @@ bool common_hal_busio_spi_try_lock(busio_spi_obj_t *self) {
166170
}
167171

168172
bool common_hal_busio_spi_has_lock(busio_spi_obj_t *self) {
169-
return xSemaphoreGetMutexHolder(self->mutex) == xTaskGetCurrentTaskHandle();
173+
return self->mutex != NULL && xSemaphoreGetMutexHolder(self->mutex) == xTaskGetCurrentTaskHandle();
170174
}
171175

172176
void common_hal_busio_spi_unlock(busio_spi_obj_t *self) {

0 commit comments

Comments
 (0)
0