rp2/rp2_pio: Add fifo_join support for PIO.

The PIO state machines on the RP2040 have 4 word deep TX and RX FIFOs.  If
you only need one direction, you can "merge" them into either a single 8
word deep TX or RX FIFO.

We simply add constants to the PIO object, and set the appropriate bits in
`shiftctrl`.

Resolves #6854.

Signed-off-by: Tim Radvan <tim@tjvr.org>
This commit is contained in:
Tim Radvan
2021-04-02 19:35:18 +01:00
committed by Damien George
parent e5d2ddde25
commit f842a40df4
3 changed files with 9 additions and 2 deletions

View File

@@ -31,7 +31,8 @@ class PIOASMEmit:
autopush=False,
autopull=False,
push_thresh=32,
pull_thresh=32
pull_thresh=32,
fifo_join=0
):
# uarray is a built-in module so importing it here won't require
# scanning the filesystem.
@@ -40,7 +41,8 @@ class PIOASMEmit:
self.labels = {}
execctrl = 0
shiftctrl = (
(pull_thresh & 0x1F) << 25
fifo_join << 30
| (pull_thresh & 0x1F) << 25
| (push_thresh & 0x1F) << 20
| out_shiftdir << 19
| in_shiftdir << 18