pinctrl: Add pinctrl tests

This add pinctrl script tests to validate auto generated files and add
GH workflow which will perform CI tests.

Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
This commit is contained in:
Gerson Fernando Budke 2022-03-11 18:49:31 -03:00
parent 9597144ca1
commit 527de70432
15 changed files with 570 additions and 0 deletions

35
.github/workflows/test.yml vendored Normal file
View File

@ -0,0 +1,35 @@
name: Test
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version:
- "3.7"
- "3.8"
- "3.9"
- "3.10"
steps:
- uses: actions/checkout@v1
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: install dependencies
run: |
pip3 install -r scripts/requirements.txt
pip3 install -r scripts/requirements-test.txt
pip3 install -r scripts/requirements-dev.txt
- name: lint scripts
run: flake8 --config scripts/.flake8 scripts
- name: run script tests
run: |
pytest scripts/tests \
--cov=scripts \
--cov-config scripts/.coveragerc \
--cov-report term \
-vv

8
.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
# editors
.vscode
# python
.venv
venv
__pycache__
.coverage

8
scripts/.coveragerc Normal file
View File

@ -0,0 +1,8 @@
[run]
omit =
*/tests/*
[report]
exclude_lines =
pragma: no cover
if __name__ == .__main__.:

2
scripts/.flake8 Normal file
View File

@ -0,0 +1,2 @@
[flake8]
max-line-length = 88

View File

@ -20,3 +20,18 @@ Such development tools can be installed using:
```
pip install -r scripts/requirements-dev.txt
```
# Tests
Before running tests make sure to have testing dependencies installed. They
can be installed by running:
```
pip install -r scripts/requirements-test.txt
```
Tests can be executed by running:
```
pytest
```

View File

@ -0,0 +1,2 @@
pytest
pytest-cov

View File

@ -0,0 +1,18 @@
# Copyright (c) 2021 Teslabs Engineering S.L.
# Copyright (c) 2022 Gerson Fernando Budke
# SPDX-License-Identifier: Apache-2.0
from pathlib import Path
import sys
import pytest
_SCRIPT_DIR = Path(__file__).absolute().parent
sys.path.insert(0, str(_SCRIPT_DIR.parents[1]))
@pytest.fixture()
def data():
"""Pytest fixture to load test data files"""
return _SCRIPT_DIR / "data"

View File

@ -0,0 +1,65 @@
# Copyright (c) 2022 Gerson Fernando Budke
# SPDX-License-Identifier: Apache-2.0
model: atmel,sam
family: sam
map: ATMEL_SAM_XXX
series: [a, b, c]
variants:
- pincode: d
series: [a]
- pincode: e
series: [a, b]
exception: y
- pincode: f
series: [a, b, c]
pins:
pa00:
pincodes: [d, e, f]
periph:
- [a, per0, sig0, [a]]
- [b, per1, sig0, [b]]
- [c, per2, sig0, [c]]
pb0:
pincodes: [d, e, f]
periph:
- [d, per3, sig1, [a, c]]
- [e, per4, sig1]
- [f, per5, sig1, [e]]
pc0:
pincodes: [d, e]
periph:
- [g, per6, sig2, [d, e]]
- [h, per7, sig2, [d]]
- [i, per8, sig2, [e, b]]
pd31:
pincodes: [d]
periph:
- [a, per9, sig3]
- [b, per10, sig3, [d]]
- [c, per11, sig3]
pe15:
pincodes: [f]
periph:
- [d, per12, sig4]
- [e, per13, sig4, [a, b]]
- [f, per14, sig4]
pa01:
pincodes: [d, e, f]
pa02:
pincodes: [d, f]
extra:
- [x, extra_per, sig_extra]
system:
- [s, jtag, tck]
pa03:
pincodes: [e]
lpm:
- [lpm, lpm_per, sig_lpm]
pa04:
pincodes: [d, e, f]

View File

@ -0,0 +1,71 @@
/*
* Autogenerated file
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <dt-bindings/pinctrl/atmel_sam_pinctrl.h>
/* pa0_gpio */
#define PA0_GPIO \
ATMEL_SAM_XXX(a, 0, gpio, gpio)
/* pa0b_per1_sig0 */
#define PA0B_PER1_SIG0 \
ATMEL_SAM_XXX(a, 0, b, periph)
/* pa0c_per2_sig0 */
#define PA0C_PER2_SIG0 \
ATMEL_SAM_XXX(a, 0, c, periph)
/* pa1_gpio */
#define PA1_GPIO \
ATMEL_SAM_XXX(a, 1, gpio, gpio)
/* pa2_gpio */
#define PA2_GPIO \
ATMEL_SAM_XXX(a, 2, gpio, gpio)
/* pa2x_extra_per_sig_extra */
#define PA2X_EXTRA_PER_SIG_EXTRA \
ATMEL_SAM_XXX(a, 2, x, extra)
/* pa2s_jtag_tck */
#define PA2S_JTAG_TCK \
ATMEL_SAM_XXX(a, 2, s, system)
/* pa4_gpio */
#define PA4_GPIO \
ATMEL_SAM_XXX(a, 4, gpio, gpio)
/* pb0_gpio */
#define PB0_GPIO \
ATMEL_SAM_XXX(b, 0, gpio, gpio)
/* pb0e_per4_sig1 */
#define PB0E_PER4_SIG1 \
ATMEL_SAM_XXX(b, 0, e, periph)
/* pb0f_per5_sig1 */
#define PB0F_PER5_SIG1 \
ATMEL_SAM_XXX(b, 0, f, periph)
/* pc0_gpio */
#define PC0_GPIO \
ATMEL_SAM_XXX(c, 0, gpio, gpio)
/* pc0i_per8_sig2 */
#define PC0I_PER8_SIG2 \
ATMEL_SAM_XXX(c, 0, i, periph)
/* pd31_gpio */
#define PD31_GPIO \
ATMEL_SAM_XXX(d, 31, gpio, gpio)
/* pd31a_per9_sig3 */
#define PD31A_PER9_SIG3 \
ATMEL_SAM_XXX(d, 31, a, periph)
/* pd31c_per11_sig3 */
#define PD31C_PER11_SIG3 \
ATMEL_SAM_XXX(d, 31, c, periph)

View File

@ -0,0 +1,58 @@
/*
* Autogenerated file
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <dt-bindings/pinctrl/atmel_sam_pinctrl.h>
/*
* WARNING: this variant has package exception.
*
* Read datasheet topics related to I/O Multiplexing and Considerations or
* Peripheral Signal Multiplexing on I/O Lines for more information.
*/
/* pa0_gpio */
#define PA0_GPIO \
ATMEL_SAM_XXX(a, 0, gpio, gpio)
/* pa0b_per1_sig0 */
#define PA0B_PER1_SIG0 \
ATMEL_SAM_XXX(a, 0, b, periph)
/* pa0c_per2_sig0 */
#define PA0C_PER2_SIG0 \
ATMEL_SAM_XXX(a, 0, c, periph)
/* pa1_gpio */
#define PA1_GPIO \
ATMEL_SAM_XXX(a, 1, gpio, gpio)
/* pa3_gpio */
#define PA3_GPIO \
ATMEL_SAM_XXX(a, 3, gpio, gpio)
/* pa3_lpm */
#define PA3_LPM \
ATMEL_SAM_XXX(a, 3, lpm, lpm)
/* pa4_gpio */
#define PA4_GPIO \
ATMEL_SAM_XXX(a, 4, gpio, gpio)
/* pb0_gpio */
#define PB0_GPIO \
ATMEL_SAM_XXX(b, 0, gpio, gpio)
/* pb0e_per4_sig1 */
#define PB0E_PER4_SIG1 \
ATMEL_SAM_XXX(b, 0, e, periph)
/* pc0_gpio */
#define PC0_GPIO \
ATMEL_SAM_XXX(c, 0, gpio, gpio)
/* pc0h_per7_sig2 */
#define PC0H_PER7_SIG2 \
ATMEL_SAM_XXX(c, 0, h, periph)

View File

@ -0,0 +1,63 @@
/*
* Autogenerated file
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <dt-bindings/pinctrl/atmel_sam_pinctrl.h>
/* pa0_gpio */
#define PA0_GPIO \
ATMEL_SAM_XXX(a, 0, gpio, gpio)
/* pa0b_per1_sig0 */
#define PA0B_PER1_SIG0 \
ATMEL_SAM_XXX(a, 0, b, periph)
/* pa0c_per2_sig0 */
#define PA0C_PER2_SIG0 \
ATMEL_SAM_XXX(a, 0, c, periph)
/* pa1_gpio */
#define PA1_GPIO \
ATMEL_SAM_XXX(a, 1, gpio, gpio)
/* pa2_gpio */
#define PA2_GPIO \
ATMEL_SAM_XXX(a, 2, gpio, gpio)
/* pa2x_extra_per_sig_extra */
#define PA2X_EXTRA_PER_SIG_EXTRA \
ATMEL_SAM_XXX(a, 2, x, extra)
/* pa2s_jtag_tck */
#define PA2S_JTAG_TCK \
ATMEL_SAM_XXX(a, 2, s, system)
/* pa4_gpio */
#define PA4_GPIO \
ATMEL_SAM_XXX(a, 4, gpio, gpio)
/* pb0_gpio */
#define PB0_GPIO \
ATMEL_SAM_XXX(b, 0, gpio, gpio)
/* pb0e_per4_sig1 */
#define PB0E_PER4_SIG1 \
ATMEL_SAM_XXX(b, 0, e, periph)
/* pb0f_per5_sig1 */
#define PB0F_PER5_SIG1 \
ATMEL_SAM_XXX(b, 0, f, periph)
/* pe15_gpio */
#define PE15_GPIO \
ATMEL_SAM_XXX(e, 15, gpio, gpio)
/* pe15d_per12_sig4 */
#define PE15D_PER12_SIG4 \
ATMEL_SAM_XXX(e, 15, d, periph)
/* pe15f_per14_sig4 */
#define PE15F_PER14_SIG4 \
ATMEL_SAM_XXX(e, 15, f, periph)

View File

@ -0,0 +1,62 @@
/*
* Autogenerated file
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <dt-bindings/pinctrl/atmel_sam_pinctrl.h>
/*
* WARNING: this variant has package exception.
*
* Read datasheet topics related to I/O Multiplexing and Considerations or
* Peripheral Signal Multiplexing on I/O Lines for more information.
*/
/* pa0_gpio */
#define PA0_GPIO \
ATMEL_SAM_XXX(a, 0, gpio, gpio)
/* pa0a_per0_sig0 */
#define PA0A_PER0_SIG0 \
ATMEL_SAM_XXX(a, 0, a, periph)
/* pa0c_per2_sig0 */
#define PA0C_PER2_SIG0 \
ATMEL_SAM_XXX(a, 0, c, periph)
/* pa1_gpio */
#define PA1_GPIO \
ATMEL_SAM_XXX(a, 1, gpio, gpio)
/* pa3_gpio */
#define PA3_GPIO \
ATMEL_SAM_XXX(a, 3, gpio, gpio)
/* pa3_lpm */
#define PA3_LPM \
ATMEL_SAM_XXX(a, 3, lpm, lpm)
/* pa4_gpio */
#define PA4_GPIO \
ATMEL_SAM_XXX(a, 4, gpio, gpio)
/* pb0_gpio */
#define PB0_GPIO \
ATMEL_SAM_XXX(b, 0, gpio, gpio)
/* pb0d_per3_sig1 */
#define PB0D_PER3_SIG1 \
ATMEL_SAM_XXX(b, 0, d, periph)
/* pb0e_per4_sig1 */
#define PB0E_PER4_SIG1 \
ATMEL_SAM_XXX(b, 0, e, periph)
/* pc0_gpio */
#define PC0_GPIO \
ATMEL_SAM_XXX(c, 0, gpio, gpio)
/* pc0h_per7_sig2 */
#define PC0H_PER7_SIG2 \
ATMEL_SAM_XXX(c, 0, h, periph)

View File

@ -0,0 +1,67 @@
/*
* Autogenerated file
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <dt-bindings/pinctrl/atmel_sam_pinctrl.h>
/* pa0_gpio */
#define PA0_GPIO \
ATMEL_SAM_XXX(a, 0, gpio, gpio)
/* pa0a_per0_sig0 */
#define PA0A_PER0_SIG0 \
ATMEL_SAM_XXX(a, 0, a, periph)
/* pa0c_per2_sig0 */
#define PA0C_PER2_SIG0 \
ATMEL_SAM_XXX(a, 0, c, periph)
/* pa1_gpio */
#define PA1_GPIO \
ATMEL_SAM_XXX(a, 1, gpio, gpio)
/* pa2_gpio */
#define PA2_GPIO \
ATMEL_SAM_XXX(a, 2, gpio, gpio)
/* pa2x_extra_per_sig_extra */
#define PA2X_EXTRA_PER_SIG_EXTRA \
ATMEL_SAM_XXX(a, 2, x, extra)
/* pa2s_jtag_tck */
#define PA2S_JTAG_TCK \
ATMEL_SAM_XXX(a, 2, s, system)
/* pa4_gpio */
#define PA4_GPIO \
ATMEL_SAM_XXX(a, 4, gpio, gpio)
/* pb0_gpio */
#define PB0_GPIO \
ATMEL_SAM_XXX(b, 0, gpio, gpio)
/* pb0d_per3_sig1 */
#define PB0D_PER3_SIG1 \
ATMEL_SAM_XXX(b, 0, d, periph)
/* pb0e_per4_sig1 */
#define PB0E_PER4_SIG1 \
ATMEL_SAM_XXX(b, 0, e, periph)
/* pb0f_per5_sig1 */
#define PB0F_PER5_SIG1 \
ATMEL_SAM_XXX(b, 0, f, periph)
/* pe15_gpio */
#define PE15_GPIO \
ATMEL_SAM_XXX(e, 15, gpio, gpio)
/* pe15d_per12_sig4 */
#define PE15D_PER12_SIG4 \
ATMEL_SAM_XXX(e, 15, d, periph)
/* pe15f_per14_sig4 */
#define PE15F_PER14_SIG4 \
ATMEL_SAM_XXX(e, 15, f, periph)

View File

@ -0,0 +1,67 @@
/*
* Autogenerated file
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <dt-bindings/pinctrl/atmel_sam_pinctrl.h>
/* pa0_gpio */
#define PA0_GPIO \
ATMEL_SAM_XXX(a, 0, gpio, gpio)
/* pa0a_per0_sig0 */
#define PA0A_PER0_SIG0 \
ATMEL_SAM_XXX(a, 0, a, periph)
/* pa0b_per1_sig0 */
#define PA0B_PER1_SIG0 \
ATMEL_SAM_XXX(a, 0, b, periph)
/* pa1_gpio */
#define PA1_GPIO \
ATMEL_SAM_XXX(a, 1, gpio, gpio)
/* pa2_gpio */
#define PA2_GPIO \
ATMEL_SAM_XXX(a, 2, gpio, gpio)
/* pa2x_extra_per_sig_extra */
#define PA2X_EXTRA_PER_SIG_EXTRA \
ATMEL_SAM_XXX(a, 2, x, extra)
/* pa2s_jtag_tck */
#define PA2S_JTAG_TCK \
ATMEL_SAM_XXX(a, 2, s, system)
/* pa4_gpio */
#define PA4_GPIO \
ATMEL_SAM_XXX(a, 4, gpio, gpio)
/* pb0_gpio */
#define PB0_GPIO \
ATMEL_SAM_XXX(b, 0, gpio, gpio)
/* pb0e_per4_sig1 */
#define PB0E_PER4_SIG1 \
ATMEL_SAM_XXX(b, 0, e, periph)
/* pb0f_per5_sig1 */
#define PB0F_PER5_SIG1 \
ATMEL_SAM_XXX(b, 0, f, periph)
/* pe15_gpio */
#define PE15_GPIO \
ATMEL_SAM_XXX(e, 15, gpio, gpio)
/* pe15d_per12_sig4 */
#define PE15D_PER12_SIG4 \
ATMEL_SAM_XXX(e, 15, d, periph)
/* pe15e_per13_sig4 */
#define PE15E_PER13_SIG4 \
ATMEL_SAM_XXX(e, 15, e, periph)
/* pe15f_per14_sig4 */
#define PE15F_PER14_SIG4 \
ATMEL_SAM_XXX(e, 15, f, periph)

View File

@ -0,0 +1,29 @@
# Copyright (c) 2021 Teslabs Engineering S.L.
# Copyright (c) 2022 Gerson Fernando Budke
# SPDX-License-Identifier: Apache-2.0
from sampinctrl import main
def test_main(data, tmp_path):
"""Test that pinctrl headers are generated correctly."""
main(data, tmp_path)
FILES = (
"samad-pinctrl.h",
"samae-pinctrl.h",
"samaf-pinctrl.h",
"sambe-pinctrl.h",
"sambf-pinctrl.h",
"samcf-pinctrl.h",
)
for file in FILES:
ref_file = data / file
gen_file = tmp_path / file
assert gen_file.exists()
with open(ref_file) as ref, open(gen_file) as gen:
assert ref.read() == gen.read()