Merge pull request #73 from adafruit/side-set-pindirs-directive

Add support for `.side_set ... pindirs`
This commit is contained in:
Scott Shawcroft 2024-12-03 10:16:09 -08:00 committed by GitHub
commit 0482020265
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 21 additions and 0 deletions

View file

@ -73,6 +73,7 @@ class Program: # pylint: disable=too-few-public-methods
instructions: List[str] = [] instructions: List[str] = []
sideset_count = 0 sideset_count = 0
sideset_enable = 0 sideset_enable = 0
sideset_pindirs = False
wrap = None wrap = None
wrap_target = None wrap_target = None
offset = -1 offset = -1
@ -144,6 +145,7 @@ class Program: # pylint: disable=too-few-public-methods
elif line.startswith(".side_set"): elif line.startswith(".side_set"):
sideset_count = int(line.split()[1], 0) sideset_count = int(line.split()[1], 0)
sideset_enable = "opt" in line sideset_enable = "opt" in line
sideset_pindirs = "pindirs" in line
elif line.startswith(".fifo"): elif line.startswith(".fifo"):
require_before_instruction() require_before_instruction()
fifo_type = line.split()[1] fifo_type = line.split()[1]
@ -470,6 +472,8 @@ class Program: # pylint: disable=too-few-public-methods
if sideset_count != 0: if sideset_count != 0:
self.pio_kwargs["sideset_pin_count"] = sideset_count self.pio_kwargs["sideset_pin_count"] = sideset_count
if sideset_pindirs:
self.pio_kwargs["sideset_pindirs"] = sideset_pindirs
if wrap is not None: if wrap is not None:
self.pio_kwargs["wrap"] = wrap self.pio_kwargs["wrap"] = wrap

View file

@ -12,3 +12,20 @@ from pytest_helpers import assert_pio_kwargs, assert_assembly_fails
def test_offset() -> None: def test_offset() -> None:
assert_pio_kwargs(".origin 7", offset=7, sideset_enable=False) assert_pio_kwargs(".origin 7", offset=7, sideset_enable=False)
assert_assembly_fails("nop\n.origin 7") assert_assembly_fails("nop\n.origin 7")
def test_sideset_pindirs() -> None:
assert_pio_kwargs(
".side_set 2 opt pindirs",
sideset_pin_count=2,
sideset_enable=True,
sideset_pindirs=True,
)
assert_pio_kwargs(
".side_set 2 pindirs",
sideset_pin_count=2,
sideset_enable=False,
sideset_pindirs=True,
)
# Setting not emitted (as =False) for backwards compat
assert_pio_kwargs(".side_set 2", sideset_pin_count=2, sideset_enable=False)