Skip to content

Commit 4e3cd7d

Browse files
authored
Merge pull request adafruit#9849 from jepler/statemachine-sideset-pindirs
rp2pio: Add `sideset_pindirs` parameter to StateMachine constructor
2 parents cfd4117 + 92eb0ed commit 4e3cd7d

File tree

12 files changed

+23
-16
lines changed

12 files changed

+23
-16
lines changed

ports/raspberrypi/bindings/rp2pio/StateMachine.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
//| initial_set_pin_direction: int = 0x1F,
6565
//| first_sideset_pin: Optional[microcontroller.Pin] = None,
6666
//| sideset_pin_count: int = 1,
67+
//| sideset_pindirs: bool = False,
6768
//| initial_sideset_pin_state: int = 0,
6869
//| initial_sideset_pin_direction: int = 0x1F,
6970
//| sideset_enable: bool = False,
@@ -133,6 +134,7 @@
133134
//| :param int in_pin_count: the count of consecutive pins to use with IN starting at first_in_pin
134135
//| :param int set_pin_count: the count of consecutive pins to use with SET starting at first_set_pin
135136
//| :param int sideset_pin_count: the count of consecutive pins to use with a side set starting at first_sideset_pin. Does not include sideset enable
137+
//| :param bool sideset_pindirs: `True` to indicate that the side set values should be applied to the PINDIRs and not the PINs
136138
//| :param int pio_version: The version of the PIO peripheral required by the program. The constructor will raise an error if the actual hardware is not compatible with this program version.
137139
//| :param bool auto_push: When True, automatically save data from input shift register
138140
//| (ISR) into the rx FIFO when an IN instruction shifts more than push_threshold bits
@@ -173,7 +175,8 @@ static mp_obj_t rp2pio_statemachine_make_new(const mp_obj_type_t *type, size_t n
173175
ARG_first_in_pin, ARG_in_pin_count,
174176
ARG_pull_in_pin_up, ARG_pull_in_pin_down,
175177
ARG_first_set_pin, ARG_set_pin_count, ARG_initial_set_pin_state, ARG_initial_set_pin_direction,
176-
ARG_first_sideset_pin, ARG_sideset_pin_count, ARG_initial_sideset_pin_state, ARG_initial_sideset_pin_direction,
178+
ARG_first_sideset_pin, ARG_sideset_pin_count, ARG_sideset_pindirs,
179+
ARG_initial_sideset_pin_state, ARG_initial_sideset_pin_direction,
177180
ARG_sideset_enable,
178181
ARG_jmp_pin, ARG_jmp_pin_pull,
179182
ARG_exclusive_pin_use,
@@ -211,6 +214,7 @@ static mp_obj_t rp2pio_statemachine_make_new(const mp_obj_type_t *type, size_t n
211214

212215
{ MP_QSTR_first_sideset_pin, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
213216
{ MP_QSTR_sideset_pin_count, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 1} },
217+
{ MP_QSTR_sideset_pindirs, MP_ARG_KW_ONLY | MP_ARG_BOOL, {.u_bool = false} },
214218
{ MP_QSTR_initial_sideset_pin_state, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} },
215219
{ MP_QSTR_initial_sideset_pin_direction, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0x1f} },
216220

@@ -329,7 +333,8 @@ static mp_obj_t rp2pio_statemachine_make_new(const mp_obj_type_t *type, size_t n
329333
first_out_pin, out_pin_count, args[ARG_initial_out_pin_state].u_int, args[ARG_initial_out_pin_direction].u_int,
330334
first_in_pin, in_pin_count, args[ARG_pull_in_pin_up].u_int, args[ARG_pull_in_pin_down].u_int,
331335
first_set_pin, set_pin_count, args[ARG_initial_set_pin_state].u_int, args[ARG_initial_set_pin_direction].u_int,
332-
first_sideset_pin, sideset_pin_count, args[ARG_initial_sideset_pin_state].u_int, args[ARG_initial_sideset_pin_direction].u_int,
336+
first_sideset_pin, sideset_pin_count, args[ARG_sideset_pindirs].u_bool,
337+
args[ARG_initial_sideset_pin_state].u_int, args[ARG_initial_sideset_pin_direction].u_int,
333338
args[ARG_sideset_enable].u_bool,
334339
jmp_pin, jmp_pin_pull,
335340
0,

ports/raspberrypi/bindings/rp2pio/StateMachine.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ void common_hal_rp2pio_statemachine_construct(rp2pio_statemachine_obj_t *self,
2424
const mcu_pin_obj_t *first_out_pin, uint8_t out_pin_count, uint32_t initial_out_pin_state, uint32_t initial_out_pin_direction,
2525
const mcu_pin_obj_t *first_in_pin, uint8_t in_pin_count, uint32_t pull_pin_up, uint32_t pull_pin_down,
2626
const mcu_pin_obj_t *first_set_pin, uint8_t set_pin_count, uint32_t initial_set_pin_state, uint32_t initial_set_pin_direction,
27-
const mcu_pin_obj_t *first_sideset_pin, uint8_t sideset_pin_count, uint32_t initial_sideset_pin_state, uint32_t initial_sideset_pin_direction,
27+
const mcu_pin_obj_t *first_sideset_pin, uint8_t sideset_pin_count, bool sideset_pindirs,
28+
uint32_t initial_sideset_pin_state, uint32_t initial_sideset_pin_direction,
2829
bool sideset_enable,
2930
const mcu_pin_obj_t *jmp_pin, digitalio_pull_t jmp_pin_pull,
3031
uint32_t wait_gpio_mask,

ports/raspberrypi/common-hal/audiobusio/I2SOut.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ void common_hal_audiobusio_i2sout_construct(audiobusio_i2sout_obj_t *self,
188188
NULL, 0, // in pins
189189
0, 0, // in pulls
190190
NULL, 0, 0, 0x1f, // set pins
191-
sideset_pin, 2, 0, 0x1f, // sideset pins
191+
sideset_pin, 2, false, 0, 0x1f, // sideset pins
192192
false, // No sideset enable
193193
NULL, PULL_NONE, // jump pin
194194
0, // wait gpio pins

ports/raspberrypi/common-hal/audiobusio/PDMIn.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ void common_hal_audiobusio_pdmin_construct(audiobusio_pdmin_obj_t *self,
5050
data_pin, 1, // in pins
5151
0, 0, // in pulls
5252
NULL, 0, 0, 0x1f, // set pins
53-
clock_pin, 1, 0, 0x1f, // sideset pins
53+
clock_pin, 1, false, 0, 0x1f, // sideset pins
5454
false, // No sideset enable
5555
NULL, PULL_NONE, // jump pin
5656
0, // wait gpio pins

ports/raspberrypi/common-hal/floppyio/__init__.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ int common_hal_floppyio_flux_readinto(void *buf, size_t len, digitalio_digitalin
8888
index->pin, 1, // in
8989
1, 0, // in pull up/down
9090
NULL, 0, // set
91-
NULL, 0, // sideset
91+
NULL, 0, false, // sideset
9292
0, 0, // initial pin state
9393
data->pin, // jump pin
9494
pins_we_use, false, true,

ports/raspberrypi/common-hal/imagecapture/ParallelImageCapture.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ void common_hal_imagecapture_parallelimagecapture_construct(imagecapture_paralle
9090
#if DEBUG_STATE_MACHINE
9191
&pin_GPIO26, 3, 7, 7, // sideset pins
9292
#else
93-
NULL, 0, 0, 0, // sideset pins
93+
NULL, 0, false, 0, 0, // sideset pins
9494
#endif
9595
false, // No sideset enable
9696
NULL, PULL_NONE, // jump pin

ports/raspberrypi/common-hal/neopixel_write/__init__.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ void common_hal_neopixel_write(const digitalio_digitalinout_obj_t *digitalinout,
4949
NULL, 1, // in
5050
0, 0, // in pulls
5151
NULL, 1, // set
52-
digitalinout->pin, 1, // sideset
52+
digitalinout->pin, 1, false, // sideset
5353
0, pins_we_use, // initial pin state
5454
NULL, // jump pin
5555
pins_we_use, true, false,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ void common_hal_paralleldisplaybus_parallelbus_construct(paralleldisplaybus_para
8282
data0, 8, 0, 255, // first out pin, # out pins
8383
NULL, 0, 0, 0, // first in pin, # in pins
8484
NULL, 0, 0, 0, // first set pin
85-
write, 1, 0, 1, // first sideset pin
85+
write, 1, false, 0, 1, // first sideset pin
8686
false, // No sideset enable
8787
NULL, PULL_NONE, // jump pin
8888
0, // wait gpio pins

ports/raspberrypi/common-hal/pulseio/PulseIn.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ void common_hal_pulseio_pulsein_construct(pulseio_pulsein_obj_t *self,
4444
NULL, 0, 0, 0, // first out pin, # out pins, initial_out_pin_state
4545
pin, 1, 0, 0, // first in pin, # in pins
4646
NULL, 0, 0, 0, // first set pin
47-
NULL, 0, 0, 0, // first sideset pin
47+
NULL, 0, false, 0, 0, // first sideset pin
4848
false, // No sideset enable
4949
NULL, PULL_NONE, // jump pin, jmp_pull
5050
0, // wait gpio pins

ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencode
6666
pins[0], 2, // in pins
6767
3, 0, // in pulls
6868
NULL, 0, 0, 0x1f, // set pins
69-
NULL, 0, 0, 0x1f, // sideset pins
69+
NULL, 0, false, 0, 0x1f, // sideset pins
7070
false, // No sideset enable
7171
NULL, PULL_NONE, // jump pin
7272
0, // wait gpio pins

ports/raspberrypi/common-hal/rp2pio/StateMachine.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ bool rp2pio_statemachine_construct(rp2pio_statemachine_obj_t *self,
252252
const mcu_pin_obj_t *first_in_pin, uint8_t in_pin_count,
253253
uint32_t pull_pin_up, uint32_t pull_pin_down,
254254
const mcu_pin_obj_t *first_set_pin, uint8_t set_pin_count,
255-
const mcu_pin_obj_t *first_sideset_pin, uint8_t sideset_pin_count,
255+
const mcu_pin_obj_t *first_sideset_pin, uint8_t sideset_pin_count, bool sideset_pindirs,
256256
uint32_t initial_pin_state, uint32_t initial_pin_direction,
257257
const mcu_pin_obj_t *jmp_pin,
258258
uint32_t pins_we_use, bool tx_fifo, bool rx_fifo,
@@ -390,7 +390,7 @@ bool rp2pio_statemachine_construct(rp2pio_statemachine_obj_t *self,
390390
if (sideset_enable) {
391391
total_sideset_bits += 1;
392392
}
393-
sm_config_set_sideset(&c, total_sideset_bits, sideset_enable, false /* pin direction */);
393+
sm_config_set_sideset(&c, total_sideset_bits, sideset_enable, sideset_pindirs);
394394
sm_config_set_sideset_pins(&c, first_sideset_pin->number);
395395
}
396396
if (jmp_pin != NULL) {
@@ -593,7 +593,8 @@ void common_hal_rp2pio_statemachine_construct(rp2pio_statemachine_obj_t *self,
593593
const mcu_pin_obj_t *first_in_pin, uint8_t in_pin_count,
594594
uint32_t pull_pin_up, uint32_t pull_pin_down,
595595
const mcu_pin_obj_t *first_set_pin, uint8_t set_pin_count, uint32_t initial_set_pin_state, uint32_t initial_set_pin_direction,
596-
const mcu_pin_obj_t *first_sideset_pin, uint8_t sideset_pin_count, uint32_t initial_sideset_pin_state, uint32_t initial_sideset_pin_direction,
596+
const mcu_pin_obj_t *first_sideset_pin, uint8_t sideset_pin_count, bool sideset_pindirs,
597+
uint32_t initial_sideset_pin_state, uint32_t initial_sideset_pin_direction,
597598
bool sideset_enable,
598599
const mcu_pin_obj_t *jmp_pin, digitalio_pull_t jmp_pull,
599600
uint32_t wait_gpio_mask,
@@ -687,7 +688,7 @@ void common_hal_rp2pio_statemachine_construct(rp2pio_statemachine_obj_t *self,
687688
first_in_pin, in_pin_count,
688689
pull_up, pull_down,
689690
first_set_pin, set_pin_count,
690-
first_sideset_pin, sideset_pin_count,
691+
first_sideset_pin, sideset_pin_count, sideset_pindirs,
691692
initial_pin_state, initial_pin_direction,
692693
jmp_pin,
693694
pins_we_use, state.outputs.tx_fifo, state.outputs.rx_fifo,

ports/raspberrypi/common-hal/rp2pio/StateMachine.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ bool rp2pio_statemachine_construct(rp2pio_statemachine_obj_t *self,
8181
const mcu_pin_obj_t *first_in_pin, uint8_t in_pin_count,
8282
uint32_t pull_pin_up, uint32_t pull_pin_down,
8383
const mcu_pin_obj_t *first_set_pin, uint8_t set_pin_count,
84-
const mcu_pin_obj_t *first_sideset_pin, uint8_t sideset_pin_count,
84+
const mcu_pin_obj_t *first_sideset_pin, uint8_t sideset_pin_count, bool sideset_pindirs,
8585
uint32_t initial_pin_state, uint32_t initial_pin_direction,
8686
const mcu_pin_obj_t *jmp_pin,
8787
uint32_t pins_we_use, bool tx_fifo, bool rx_fifo,

0 commit comments

Comments
 (0)