summaryrefslogtreecommitdiff
path: root/shared-module/displayio
diff options
context:
space:
mode:
authorScott Shawcroft <scott@tannewt.org>2019-04-08 16:58:50 -0700
committerScott Shawcroft <scott@tannewt.org>2019-04-08 16:58:50 -0700
commit0f003ac5b8312fafb120e86e05eefd2431014d8c (patch)
treeed3e9cd062573c0f0f7fcea51f7c4e9971319648 /shared-module/displayio
parent7686f93ef456aa46f538da3159d0e12cae9fa737 (diff)
Reorganize board busses into shared-bindings and shared-module.
Diffstat (limited to 'shared-module/displayio')
-rw-r--r--shared-module/displayio/FourWire.c2
-rw-r--r--shared-module/displayio/__init__.c4
2 files changed, 6 insertions, 0 deletions
diff --git a/shared-module/displayio/FourWire.c b/shared-module/displayio/FourWire.c
index 043f68e26..2ca685f17 100644
--- a/shared-module/displayio/FourWire.c
+++ b/shared-module/displayio/FourWire.c
@@ -28,6 +28,7 @@
#include <stdint.h>
+#include "py/gc.h"
#include "shared-bindings/busio/SPI.h"
#include "shared-bindings/digitalio/DigitalInOut.h"
#include "shared-bindings/time/__init__.h"
@@ -40,6 +41,7 @@ void common_hal_displayio_fourwire_construct(displayio_fourwire_obj_t* self,
self->bus = spi;
common_hal_busio_spi_never_reset(self->bus);
+ gc_never_free(self->bus);
common_hal_digitalio_digitalinout_construct(&self->command, command);
common_hal_digitalio_digitalinout_switch_to_output(&self->command, true, DRIVE_MODE_PUSH_PULL);
diff --git a/shared-module/displayio/__init__.c b/shared-module/displayio/__init__.c
index 49c85f277..c1f5a6810 100644
--- a/shared-module/displayio/__init__.c
+++ b/shared-module/displayio/__init__.c
@@ -5,6 +5,7 @@
#include "lib/utils/interrupt_char.h"
#include "py/reload.h"
#include "py/runtime.h"
+#include "shared-bindings/board/__init__.h"
#include "shared-bindings/displayio/Bitmap.h"
#include "shared-bindings/displayio/Display.h"
#include "shared-bindings/displayio/Group.h"
@@ -190,6 +191,9 @@ void reset_displays(void) {
if (((uint32_t) fourwire->bus) < ((uint32_t) &displays) ||
((uint32_t) fourwire->bus) > ((uint32_t) &displays + CIRCUITPY_DISPLAY_LIMIT)) {
busio_spi_obj_t* original_spi = fourwire->bus;
+ // We don't need to move original_spi if it is the board.SPI object because it is
+ // statically allocated already. (Doing so would also make it impossible to reference in
+ // a subsequent VM run.)
if (original_spi == common_hal_board_get_spi()) {
continue;
}