summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/ports/rp2/rp2_dma.py22
-rw-r--r--tests/ports/rp2/rp2_dma.py.exp19
2 files changed, 36 insertions, 5 deletions
diff --git a/tests/ports/rp2/rp2_dma.py b/tests/ports/rp2/rp2_dma.py
index 2459213f4..62ec1dcf2 100644
--- a/tests/ports/rp2/rp2_dma.py
+++ b/tests/ports/rp2/rp2_dma.py
@@ -1,21 +1,36 @@
# Test rp2.DMA functionality.
+import sys
import time
import machine
import rp2
+is_rp2350 = "RP2350" in sys.implementation._machine
+
src = bytes(i & 0xFF for i in range(16 * 1024))
print("# test basic usage")
dma = rp2.DMA()
+
+# Test printing.
print(dma)
-print(rp2.DMA.unpack_ctrl(dma.pack_ctrl()))
+
+# Test pack_ctrl/unpack_ctrl.
+ctrl_dict = rp2.DMA.unpack_ctrl(dma.pack_ctrl())
+if is_rp2350:
+ for entry in ("inc_read_rev", "inc_write_rev"):
+ assert entry in ctrl_dict
+ del ctrl_dict[entry]
+for key, value in sorted(ctrl_dict.items()):
+ print(key, value)
+
+# Test register access.
dma.read = 0
dma.write = 0
dma.count = 0
dma.ctrl = dma.pack_ctrl()
-print(dma.read, dma.write, dma.count, dma.ctrl & 0x01FFFFFF, dma.channel, dma.registers)
+print(dma.read, dma.write, dma.count, dma.ctrl & 0x01F, dma.channel, dma.registers)
dma.close()
# Test closing when already closed.
@@ -62,7 +77,8 @@ dma.write = dest
dma.count = len(dest) // 4
dma.ctrl = dma.pack_ctrl()
dt = run_and_time_dma(dma)
-print(70 <= dt <= 110)
+expected_dt_range = range(40, 70) if is_rp2350 else range(70, 125)
+print(dt in expected_dt_range)
print(dest[:8], dest[-8:])
dma.close()
diff --git a/tests/ports/rp2/rp2_dma.py.exp b/tests/ports/rp2/rp2_dma.py.exp
index 79f17626a..6fad5429b 100644
--- a/tests/ports/rp2/rp2_dma.py.exp
+++ b/tests/ports/rp2/rp2_dma.py.exp
@@ -1,7 +1,22 @@
# test basic usage
DMA(0)
-{'inc_read': 1, 'high_pri': 0, 'write_err': 0, 'ring_sel': 0, 'enable': 1, 'treq_sel': 63, 'sniff_en': 0, 'irq_quiet': 1, 'read_err': 0, 'chain_to': 0, 'busy': 0, 'inc_write': 1, 'ring_size': 0, 'bswap': 0, 'size': 2, 'ahb_err': 0}
-0 0 0 4161593 0 <memoryview>
+ahb_err 0
+bswap 0
+busy 0
+chain_to 0
+enable 1
+high_pri 0
+inc_read 1
+inc_write 1
+irq_quiet 1
+read_err 0
+ring_sel 0
+ring_size 0
+size 2
+sniff_en 0
+treq_sel 63
+write_err 0
+0 0 0 25 0 <memoryview>
ValueError
# test memory copy
True