From b542c1486fd16636c697f5e295413e4895302165 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 18 Aug 2020 09:31:03 -0500 Subject: reset_board_buses: need to check if sharpdisplay uses SPI bus --- shared-module/board/__init__.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'shared-module') diff --git a/shared-module/board/__init__.c b/shared-module/board/__init__.c index 2c9139d8a..d981aada4 100644 --- a/shared-module/board/__init__.c +++ b/shared-module/board/__init__.c @@ -39,6 +39,11 @@ #include "shared-module/displayio/__init__.h" #endif +#if CIRCUITPY_SHARPDISPLAY +#include "shared-bindings/sharpdisplay/SharpMemoryFramebuffer.h" +#include "shared-module/sharpdisplay/SharpMemoryFramebuffer.h" +#endif + #if BOARD_I2C // Statically allocate the I2C object so it can live past the end of the heap and into the next VM. // That way it can be used by built-in I2CDisplay displays and be accessible through board.I2C(). @@ -148,12 +153,19 @@ void reset_board_busses(void) { bool display_using_spi = false; #if CIRCUITPY_DISPLAYIO for (uint8_t i = 0; i < CIRCUITPY_DISPLAY_LIMIT; i++) { - if (displays[i].fourwire_bus.bus == spi_singleton) { + mp_const_obj_t bus_type = displays[i].bus_base.type; + if (bus_type == &displayio_fourwire_type && displays[i].fourwire_bus.bus == spi_singleton) { display_using_spi = true; break; } - } + #if CIRCUITPY_SHARPDISPLAY + if (displays[i].bus_base.type == &sharpdisplay_framebuffer_type && displays[i].sharpdisplay.bus == spi_singleton) { + display_using_spi = true; + break; + } + #endif #endif + } if (!display_using_spi) { spi_singleton = NULL; } -- cgit v1.2.3 From 0bec39118f24ca2d6c1dd8df889da5a77e28c52a Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 18 Aug 2020 09:31:49 -0500 Subject: displayio: Don't need to specialcase reset of sharpdisplay framebuffer .. for the case where the bus was not in use --- shared-module/displayio/__init__.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'shared-module') diff --git a/shared-module/displayio/__init__.c b/shared-module/displayio/__init__.c index 5afcba35e..13c7c231d 100644 --- a/shared-module/displayio/__init__.c +++ b/shared-module/displayio/__init__.c @@ -186,11 +186,7 @@ void reset_displays(void) { #if CIRCUITPY_SHARPDISPLAY } else if (displays[i].bus_base.type == &sharpdisplay_framebuffer_type) { sharpdisplay_framebuffer_obj_t * sharp = &displays[i].sharpdisplay; - if(any_display_uses_this_framebuffer(&sharp->base)) { - common_hal_sharpdisplay_framebuffer_reset(sharp); - } else { - common_hal_sharpdisplay_framebuffer_deinit(sharp); - } + common_hal_sharpdisplay_framebuffer_reset(sharp); #endif } else { // Not an active display bus. -- cgit v1.2.3 From 9e66f71a31644c4c9d4af4e339e4077f4469f9be Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 18 Aug 2020 10:03:45 -0500 Subject: Fix build error for \!DISPLAY --- shared-module/board/__init__.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'shared-module') diff --git a/shared-module/board/__init__.c b/shared-module/board/__init__.c index d981aada4..265c6517f 100644 --- a/shared-module/board/__init__.c +++ b/shared-module/board/__init__.c @@ -164,8 +164,8 @@ void reset_board_busses(void) { break; } #endif - #endif } + #endif if (!display_using_spi) { spi_singleton = NULL; } -- cgit v1.2.3 From f2f18da1893275a19cda2ad19cb6754527817bf8 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 18 Aug 2020 10:59:55 -0500 Subject: Fix build error for !SHARPDISPLAY --- shared-module/displayio/__init__.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'shared-module') diff --git a/shared-module/displayio/__init__.c b/shared-module/displayio/__init__.c index 13c7c231d..4a6428ea0 100644 --- a/shared-module/displayio/__init__.c +++ b/shared-module/displayio/__init__.c @@ -26,7 +26,7 @@ primary_display_t displays[CIRCUITPY_DISPLAY_LIMIT]; -#if CIRCUITPY_RGBMATRIX || CIRCUITPY_SHARPDISPLAY +#if CIRCUITPY_RGBMATRIX STATIC bool any_display_uses_this_framebuffer(mp_obj_base_t *obj) { for (uint8_t i = 0; i < CIRCUITPY_DISPLAY_LIMIT; i++) { if (displays[i].display_base.type == &framebufferio_framebufferdisplay_type) { -- cgit v1.2.3