Skip to content

Commit a60906d

Browse files
authored
Merge pull request #3392 from hierophect/esp32-displayio-fix
Fix some DisplayIO crashes, add ESP32-S2 debugging capability
2 parents 3d8bac5 + e504438 commit a60906d

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

ports/esp32s2/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ CFLAGS += $(OPTIMIZATION_FLAGS)
125125

126126
CFLAGS += $(INC) -Werror -Wall -mlongcalls -std=gnu11 -Wl,--gc-sections $(BASE_CFLAGS) $(C_DEFS) $(CFLAGS_MOD) $(COPT)
127127

128-
LDFLAGS = $(CFLAGS) -Wl,-nostdlib -Wl,-Map=$@.map -Wl,-cref
128+
LDFLAGS = $(CFLAGS) -Wl,-nostdlib -Wl,-Map=$@.map -Wl,-cref -Wl,--undefined=uxTopUsedPriority
129129
LDFLAGS += -L$(BUILD)/esp-idf/esp-idf/esp32s2 \
130130
-Tesp32s2_out.ld \
131131
-L$(BUILD)/esp-idf/esp-idf/esp32s2/ld \

shared-module/displayio/FourWire.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,9 @@ void common_hal_displayio_fourwire_deinit(displayio_fourwire_obj_t* self) {
7676

7777
common_hal_reset_pin(self->command.pin);
7878
common_hal_reset_pin(self->chip_select.pin);
79-
common_hal_reset_pin(self->reset.pin);
79+
if (self->reset.pin) {
80+
common_hal_reset_pin(self->reset.pin);
81+
}
8082
}
8183

8284
bool common_hal_displayio_fourwire_reset(mp_obj_t obj) {

shared-module/displayio/I2CDisplay.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ void common_hal_displayio_i2cdisplay_construct(displayio_i2cdisplay_obj_t* self,
5353

5454
// Probe the bus to see if a device acknowledges the given address.
5555
if (!common_hal_busio_i2c_probe(i2c, device_address)) {
56+
self->base.type = &mp_type_NoneType;
5657
mp_raise_ValueError_varg(translate("Unable to find I2C Display at %x"), device_address);
5758
}
5859

@@ -71,7 +72,9 @@ void common_hal_displayio_i2cdisplay_deinit(displayio_i2cdisplay_obj_t* self) {
7172
common_hal_busio_i2c_deinit(self->bus);
7273
}
7374

74-
common_hal_reset_pin(self->reset.pin);
75+
if (self->reset.base.type == &digitalio_digitalinout_type) {
76+
common_hal_digitalio_digitalinout_deinit(&self->reset);
77+
}
7578
}
7679

7780
bool common_hal_displayio_i2cdisplay_reset(mp_obj_t obj) {

0 commit comments

Comments
 (0)