Skip to content

Commit b69a06b

Browse files
committed
Also fix the read pin in the atmel and rp2040 ports
1 parent b5ad787 commit b69a06b

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

ports/atmel-samd/common-hal/paralleldisplay/ParallelBus.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,13 @@ void common_hal_paralleldisplay_parallelbus_construct(paralleldisplay_parallelbu
6969
common_hal_digitalio_digitalinout_construct(&self->write, write);
7070
common_hal_digitalio_digitalinout_switch_to_output(&self->write, true, DRIVE_MODE_PUSH_PULL);
7171

72-
self->read.base.type = &digitalio_digitalinout_type;
73-
common_hal_digitalio_digitalinout_construct(&self->read, read);
74-
common_hal_digitalio_digitalinout_switch_to_output(&self->read, true, DRIVE_MODE_PUSH_PULL);
72+
self->read.base.type = &mp_type_NoneType;
73+
if (read != NULL) {
74+
self->read.base.type = &digitalio_digitalinout_type;
75+
common_hal_digitalio_digitalinout_construct(&self->read, read);
76+
common_hal_digitalio_digitalinout_switch_to_output(&self->read, true, DRIVE_MODE_PUSH_PULL);
77+
never_reset_pin_number(read->number);
78+
}
7579

7680
self->data0_pin = data_pin;
7781
self->write_group = &PORT->Group[write->number / 32];
@@ -89,7 +93,6 @@ void common_hal_paralleldisplay_parallelbus_construct(paralleldisplay_parallelbu
8993
never_reset_pin_number(command->number);
9094
never_reset_pin_number(chip_select->number);
9195
never_reset_pin_number(write->number);
92-
never_reset_pin_number(read->number);
9396
for (uint8_t i = 0; i < 8; i++) {
9497
never_reset_pin_number(data_pin + i);
9598
}

ports/raspberrypi/common-hal/paralleldisplay/ParallelBus.c

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,13 @@ void common_hal_paralleldisplay_parallelbus_construct(paralleldisplay_parallelbu
6767
common_hal_digitalio_digitalinout_construct(&self->chip_select, chip_select);
6868
common_hal_digitalio_digitalinout_switch_to_output(&self->chip_select, true, DRIVE_MODE_PUSH_PULL);
6969

70-
self->read.base.type = &digitalio_digitalinout_type;
71-
common_hal_digitalio_digitalinout_construct(&self->read, read);
72-
common_hal_digitalio_digitalinout_switch_to_output(&self->read, true, DRIVE_MODE_PUSH_PULL);
70+
self->read.base.type = &mp_type_NoneType;
71+
if (read != NULL) {
72+
self->read.base.type = &digitalio_digitalinout_type;
73+
common_hal_digitalio_digitalinout_construct(&self->read, read);
74+
common_hal_digitalio_digitalinout_switch_to_output(&self->read, true, DRIVE_MODE_PUSH_PULL);
75+
never_reset_pin_number(read->number);
76+
}
7377

7478
self->data0_pin = data_pin;
7579
self->write = write_pin;
@@ -86,7 +90,6 @@ void common_hal_paralleldisplay_parallelbus_construct(paralleldisplay_parallelbu
8690
never_reset_pin_number(command->number);
8791
never_reset_pin_number(chip_select->number);
8892
never_reset_pin_number(write_pin);
89-
never_reset_pin_number(read->number);
9093
for (uint8_t i = 0; i < 8; i++) {
9194
never_reset_pin_number(data_pin + i);
9295
}
@@ -121,8 +124,12 @@ void common_hal_paralleldisplay_parallelbus_deinit(paralleldisplay_parallelbus_o
121124
reset_pin_number(self->command.pin->number);
122125
reset_pin_number(self->chip_select.pin->number);
123126
reset_pin_number(self->write);
124-
reset_pin_number(self->read.pin->number);
125-
reset_pin_number(self->reset.pin->number);
127+
if (self->read.base.type != &mp_type_NoneType) {
128+
reset_pin_number(self->read.pin->number);
129+
}
130+
if (self->reset.base.type != &mp_type_NoneType) {
131+
reset_pin_number(self->reset.pin->number);
132+
}
126133
}
127134

128135
bool common_hal_paralleldisplay_parallelbus_reset(mp_obj_t obj) {

0 commit comments

Comments
 (0)