Merge pull request #73 from adafruit/side-set-pindirs-directive
Add support for `.side_set ... pindirs`
This commit is contained in:
commit
0482020265
2 changed files with 21 additions and 0 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue