summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrobert-hh <robert@hammelrath.com>2022-05-27 21:19:47 +0200
committerDamien George <damien@micropython.org>2022-10-06 22:29:49 +1100
commit0420799a847d4bb74c9a92666e2cd35c23b1c12c (patch)
tree1ac507e15fba6c392769bc5ae3dc3f72c0a42e2e
parent85afed569d3d435b2611856356ff9c78d244f25c (diff)
samd/boards: Replace pins.c and pins.h by pins.csv.
The files pins.c and pins.h are generated during the build process from pins.csv, using a make-pins.py script.
-rw-r--r--ports/samd/Makefile11
-rw-r--r--ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.c59
-rw-r--r--ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.csv37
-rw-r--r--ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.h42
-rw-r--r--ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.c59
-rw-r--r--ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.csv36
-rw-r--r--ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.h42
-rw-r--r--ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.c44
-rw-r--r--ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.csv16
-rw-r--r--ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.h42
-rw-r--r--ports/samd/boards/MINISAM_M4/pins.c52
-rw-r--r--ports/samd/boards/MINISAM_M4/pins.csv27
-rw-r--r--ports/samd/boards/MINISAM_M4/pins.h42
-rw-r--r--ports/samd/boards/SAMD21_XPLAINED_PRO/pins.c92
-rw-r--r--ports/samd/boards/SAMD21_XPLAINED_PRO/pins.csv63
-rw-r--r--ports/samd/boards/SAMD21_XPLAINED_PRO/pins.h42
-rw-r--r--ports/samd/boards/SEEED_WIO_TERMINAL/pins.c61
-rw-r--r--ports/samd/boards/SEEED_WIO_TERMINAL/pins.csv30
-rw-r--r--ports/samd/boards/SEEED_WIO_TERMINAL/pins.h42
-rw-r--r--ports/samd/boards/SEEED_XIAO/pins.c53
-rw-r--r--ports/samd/boards/SEEED_XIAO/pins.csv22
-rw-r--r--ports/samd/boards/SEEED_XIAO/pins.h42
-rw-r--r--ports/samd/boards/make-pins.py126
23 files changed, 367 insertions, 715 deletions
diff --git a/ports/samd/Makefile b/ports/samd/Makefile
index aed8637ab..1ef35c1a0 100644
--- a/ports/samd/Makefile
+++ b/ports/samd/Makefile
@@ -56,6 +56,11 @@ LDFLAGS += $(LDFLAGS_MOD)
LIBS = $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)
+MAKE_PINS = boards/make-pins.py
+BOARD_PINS = $(BOARD_DIR)/pins.csv
+GEN_PINS_SRC = $(BUILD)/pins.c
+GEN_PINS_HDR = $(BUILD)/pins.h
+
# Tune for Debugging or Optimization
CFLAGS += -g # always include debug info in the ELF
ifeq ($(DEBUG),1)
@@ -79,7 +84,7 @@ SRC_C = \
help.c \
modutime.c \
modmachine.c \
- $(BOARD_DIR)/pins.c \
+ $(BUILD)/pins.c \
machine_pin.c \
machine_led.c \
modsamd.c \
@@ -160,4 +165,8 @@ $(BUILD)/firmware.bin: $(BUILD)/firmware.elf
$(BUILD)/firmware.uf2: $(BUILD)/firmware.bin
$(Q)$(PYTHON) $(UF2CONV) -b $(TEXT0) -c -o $@ $<
+$(GEN_PINS_SRC): $(BOARD_PINS)
+ $(ECHO) "Create $@"
+ $(Q)$(PYTHON) $(MAKE_PINS) --board $(BOARD_PINS) --pins $(GEN_PINS_SRC) --inc $(GEN_PINS_HDR)
+
include $(TOP)/py/mkrules.mk
diff --git a/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.c b/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.c
deleted file mode 100644
index fbb5032a4..000000000
--- a/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2021 Peter van der Burg
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * Used by machine_pin.c. Holds Board/MCU specific Pin allocations.
- */
-
-#include "modmachine.h"
-#include "sam.h"
-#include "pins.h"
-
-// Ensure Declaration in 'pins.h' reflects # of Pins defined here.
-const machine_pin_obj_t machine_pin_obj[] = {
- {{&machine_pin_type}, PIN_PA11}, // D0
- {{&machine_pin_type}, PIN_PA10}, // D1
- {{&machine_pin_type}, PIN_PA14}, // D2
- {{&machine_pin_type}, PIN_PA09}, // D3/
- {{&machine_pin_type}, PIN_PA08}, // D4/
- {{&machine_pin_type}, PIN_PA15}, // D5
- {{&machine_pin_type}, PIN_PA20}, // D6
- {{&machine_pin_type}, PIN_PA21}, // D7
- {{&machine_pin_type}, PIN_PA06}, // D8/
- {{&machine_pin_type}, PIN_PA07}, // D9/
- {{&machine_pin_type}, PIN_PA18}, // D10
- {{&machine_pin_type}, PIN_PA16}, // D11
- {{&machine_pin_type}, PIN_PA19}, // D12
- {{&machine_pin_type}, PIN_PA17}, // D13/
- {{&machine_pin_type}, PIN_PA02}, // A0
- {{&machine_pin_type}, PIN_PB08}, // A1
- {{&machine_pin_type}, PIN_PB09}, // A2
- {{&machine_pin_type}, PIN_PA04}, // A3/
- {{&machine_pin_type}, PIN_PA05}, // A4/
- {{&machine_pin_type}, PIN_PB02}, // A5
-};
-
-const machine_led_obj_t machine_led_obj[] = {
- {{&machine_led_type}, PIN_PA17}, // D13/ user LED
-};
diff --git a/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.csv b/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.csv
new file mode 100644
index 000000000..84e68157a
--- /dev/null
+++ b/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.csv
@@ -0,0 +1,37 @@
+# Pin rows contain Pin number and pin name.
+# Pin rows start with PIN_
+# LED rows start with LED_
+# If the pin name is omitted, the pin number is added as name.
+# Rows for empty entries have to start with '-'
+# Empty lines and lines starting with # are ignored
+
+PIN_PA11,D0
+PIN_PA10,D1
+PIN_PA14,D2
+PIN_PA09,D3
+PIN_PA08,D4
+PIN_PA15,D5
+PIN_PA20,D6
+PIN_PA21,D7
+PIN_PA06,D8
+PIN_PA07,D9
+PIN_PA18,D10
+PIN_PA16,D11
+PIN_PA19,D12
+PIN_PA17,D13
+PIN_PA02,A0
+PIN_PB08,A1
+PIN_PB09,A2
+PIN_PA04,A3
+PIN_PA05,A4
+PIN_PB02,A5
+PIN_PB22,TX
+PIN_PB23,RX
+PIN_PA23,SCL
+PIN_PA22,SDA
+PIN_PA06,NEOPIXEL
+PIN_PA13,FLASH_CS
+
+LED_PA17,LED
+LED_PA27,LED_TX
+LED_PB03,LED_RX
diff --git a/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.h b/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.h
deleted file mode 100644
index 45bee6167..000000000
--- a/ports/samd/boards/ADAFRUIT_FEATHER_M0_EXPRESS/pins.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2021 Peter van der Burg
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * Used by machine_pin.c & board specific pins.c. Holds Board/MCU specific Pin
- * allocations.
- */
-
-typedef struct _machine_pin_obj_t {
- mp_obj_base_t base;
- uint32_t id;
-} machine_pin_obj_t;
-
-typedef struct _machine_led_obj_t {
- mp_obj_base_t base;
- uint32_t id;
-} machine_led_obj_t;
-
-// MUST explicitly hold array # of rows, else machine_pin.c wont compile.
-extern const machine_pin_obj_t machine_pin_obj[20];
-extern const machine_led_obj_t machine_led_obj[1];
diff --git a/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.c b/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.c
deleted file mode 100644
index 0342b0d00..000000000
--- a/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2021 Peter van der Burg
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * Used by machine_pin.c. Holds Board/MCU specific Pin allocations.
- */
-
-#include "modmachine.h"
-#include "sam.h"
-#include "pins.h"
-
-// Ensure Declaration in 'pins.h' reflects # of Pins defined here.
-const machine_pin_obj_t machine_pin_obj[] = {
- {{&machine_pin_type}, PIN_PA16}, // RX_D0
- {{&machine_pin_type}, PIN_PA17}, // TX_D1
- {{&machine_pin_type}, PIN_PA07}, // D2
- {{&machine_pin_type}, PIN_PB22}, // D3
- {{&machine_pin_type}, PIN_PA14}, // D4
- {{&machine_pin_type}, PIN_PA15}, // D5
- {{NULL}, -1}, // D6- not terminated on breakout.
- {{&machine_pin_type}, PIN_PA18}, // D7
- {{NULL}, -1}, // D8- not terminated on breakout.
- {{&machine_pin_type}, PIN_PA19}, // D9
- {{&machine_pin_type}, PIN_PA20}, // D10
- {{&machine_pin_type}, PIN_PA21}, // D11
- {{&machine_pin_type}, PIN_PA23}, // D12
- {{&machine_pin_type}, PIN_PA22}, // D13
- {{&machine_pin_type}, PIN_PA02}, // A0
- {{&machine_pin_type}, PIN_PA05}, // A1
- {{&machine_pin_type}, PIN_PB08}, // A2
- {{&machine_pin_type}, PIN_PB09}, // A3
- {{&machine_pin_type}, PIN_PA04}, // A4
- {{&machine_pin_type}, PIN_PA06}, // A5
-};
-
-const machine_led_obj_t machine_led_obj[] = {
- {{&machine_led_type}, PIN_PA22}, // D13
-};
diff --git a/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.csv b/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.csv
new file mode 100644
index 000000000..90e38761a
--- /dev/null
+++ b/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.csv
@@ -0,0 +1,36 @@
+# Pin rows contain Pin number and pin name.
+# Pin rows start with PIN_
+# LED rows start with LED_
+# If the pin name is omitted, the pin number is added as name.
+# Rows for empty entries have to start with '-'
+# Empty lines and lines starting with # are ignored
+
+PIN_PA16,D0
+PIN_PA17,D1
+PIN_PA07,D2
+PIN_PB22,D3
+PIN_PA14,D4
+PIN_PA15,D5
+-
+PIN_PA18,D7
+-
+PIN_PA19,D9
+PIN_PA20,D10
+PIN_PA21,D11
+PIN_PA23,D12
+PIN_PA22,D13
+PIN_PA02,A0
+PIN_PA05,A1
+PIN_PB08,A2
+PIN_PB09,A3
+PIN_PA04,A4
+PIN_PA06,A5
+PIN_PA12,SDA
+PIN_PA13,SCL
+PIN_PA00,MO
+PIN_PB23,MI
+PIN_PA01,SCK
+PIN_PB02,DOTSTAR_CLK
+PIN_PB03,DOTSTAR_DATA
+
+LED_PA22,LED
diff --git a/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.h b/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.h
deleted file mode 100644
index 45bee6167..000000000
--- a/ports/samd/boards/ADAFRUIT_ITSYBITSY_M4_EXPRESS/pins.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2021 Peter van der Burg
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * Used by machine_pin.c & board specific pins.c. Holds Board/MCU specific Pin
- * allocations.
- */
-
-typedef struct _machine_pin_obj_t {
- mp_obj_base_t base;
- uint32_t id;
-} machine_pin_obj_t;
-
-typedef struct _machine_led_obj_t {
- mp_obj_base_t base;
- uint32_t id;
-} machine_led_obj_t;
-
-// MUST explicitly hold array # of rows, else machine_pin.c wont compile.
-extern const machine_pin_obj_t machine_pin_obj[20];
-extern const machine_led_obj_t machine_led_obj[1];
diff --git a/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.c b/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.c
deleted file mode 100644
index 676b4794e..000000000
--- a/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2021 Peter van der Burg
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * Used by machine_pin.c. Holds Board/MCU specific Pin allocations.
- */
-
-#include "modmachine.h"
-#include "sam.h"
-#include "pins.h"
-
-// Ensure Declaration in 'pins.h' reflects # of Pins defined here.
-const machine_pin_obj_t machine_pin_obj[] = {
- {{&machine_pin_type}, PIN_PA08}, // D0
- {{&machine_pin_type}, PIN_PA02}, // D1
- {{&machine_pin_type}, PIN_PA09}, // D2
- {{&machine_pin_type}, PIN_PA07}, // D3/ RxD
- {{&machine_pin_type}, PIN_PA06}, // D4/ TxD
-};
-
-const machine_led_obj_t machine_led_obj[] = {
- {{&machine_led_type}, PIN_PA10}, // user LED
-};
diff --git a/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.csv b/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.csv
new file mode 100644
index 000000000..797b3f70b
--- /dev/null
+++ b/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.csv
@@ -0,0 +1,16 @@
+# Pin rows contain Pin number and pin name.
+# Pin rows start with PIN_
+# LED rows start with LED_
+# If the pin name is omitted, the pin number is added as name.
+# Rows for empty entries have to start with '-'
+# Empty lines and lines starting with # are ignored
+
+PIN_PA08,D0
+PIN_PA02,D1
+PIN_PA09,D2
+PIN_PA07,D3
+PIN_PA06,D4
+PIN_PA00,DOTSTAR_DATA
+PIN_PA01,DOTSTAR_CLK
+
+LED_PA10,LED
diff --git a/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.h b/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.h
deleted file mode 100644
index 843d69add..000000000
--- a/ports/samd/boards/ADAFRUIT_TRINKET_M0/pins.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2021 Peter van der Burg
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * Used by machine_pin.c & board specific pins.c. Holds Board/MCU specific Pin
- * allocations.
- */
-
-typedef struct _machine_pin_obj_t {
- mp_obj_base_t base;
- uint32_t id;
-} machine_pin_obj_t;
-
-typedef struct _machine_led_obj_t {
- mp_obj_base_t base;
- uint32_t id;
-} machine_led_obj_t;
-
-// MUST explicitly hold array # of rows, else machine_pin.c wont compile.
-extern const machine_pin_obj_t machine_pin_obj[5];
-extern const machine_led_obj_t machine_led_obj[1];
diff --git a/ports/samd/boards/MINISAM_M4/pins.c b/ports/samd/boards/MINISAM_M4/pins.c
deleted file mode 100644
index 17ed58d3c..000000000
--- a/ports/samd/boards/MINISAM_M4/pins.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2021 Peter van der Burg
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * Used by machine_pin.c. Holds Board/MCU specific Pin allocations.
- */
-
-#include "modmachine.h"
-#include "sam.h"
-#include "pins.h"
-
-// Ensure Declaration in 'pins.h' reflects # of Pins defined here.
-const machine_pin_obj_t machine_pin_obj[] = {
- {{&machine_pin_type}, PIN_PA02}, // A0,D9
- {{&machine_pin_type}, PIN_PB08}, // A1,D10
- {{&machine_pin_type}, PIN_PB09}, // A2,D11
- {{&machine_pin_type}, PIN_PA04}, // A3,D12
- {{&machine_pin_type}, PIN_PA05}, // A4,D13
- {{&machine_pin_type}, PIN_PA06}, // A5
- {{&machine_pin_type}, PIN_PA16}, // RX_D0
- {{&machine_pin_type}, PIN_PA17}, // TX_D1
- {{&machine_pin_type}, PIN_PA07}, // D2,A6
- {{&machine_pin_type}, PIN_PA19}, // D3
- {{&machine_pin_type}, PIN_PA20}, // D4
- {{&machine_pin_type}, PIN_PA21}, // D5
- {{&machine_pin_type}, PIN_PA00}, // BUTTON
-};
-
-const machine_led_obj_t machine_led_obj[] = {
- {{&machine_led_type}, PIN_PA15}, // LED
-};
diff --git a/ports/samd/boards/MINISAM_M4/pins.csv b/ports/samd/boards/MINISAM_M4/pins.csv
new file mode 100644
index 000000000..7442a028d
--- /dev/null
+++ b/ports/samd/boards/MINISAM_M4/pins.csv
@@ -0,0 +1,27 @@
+# Pin rows contain Pin number and pin name.
+# Pin rows start with PIN_
+# LED rows start with LED_
+# If the pin name is omitted, the pin number is added as name.
+# Rows for empty entries have to start with '-'
+# Empty lines and lines starting with # are ignored
+
+PIN_PA02,A0_D9
+PIN_PB08,A1_D10
+PIN_PB09,A2_D11
+PIN_PA04,A3_D12
+PIN_PA05,A4_D13
+PIN_PA06,A5
+PIN_PA16,D0
+PIN_PA17,D1
+PIN_PA07,A6_D2
+PIN_PA19,D3
+PIN_PA20,D4
+PIN_PA21,D5
+PIN_PA00,BUTTON
+PIN_PA03,AREF
+PIN_PA12,SDA
+PIN_PA13,SCL
+PIN_PB03,DOTSTAR_DATA
+PIN_PB02,DOTSTAR_CLK
+
+LED_PA15,LED
diff --git a/ports/samd/boards/MINISAM_M4/pins.h b/ports/samd/boards/MINISAM_M4/pins.h
deleted file mode 100644
index 892b0e7b9..000000000
--- a/ports/samd/boards/MINISAM_M4/pins.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2021 Peter van der Burg
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * Used by machine_pin.c & board specific pins.c. Holds Board/MCU specific Pin
- * allocations.
- */
-
-typedef struct _machine_pin_obj_t {
- mp_obj_base_t base;
- uint32_t id;
-} machine_pin_obj_t;
-
-typedef struct _machine_led_obj_t {
- mp_obj_base_t base;
- uint32_t id;
-} machine_led_obj_t;
-
-// MUST explicitly hold array # of rows, else machine_pin.c wont compile.
-extern const machine_pin_obj_t machine_pin_obj[13];
-extern const machine_led_obj_t machine_led_obj[1];
diff --git a/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.c b/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.c
deleted file mode 100644
index 35718ea7f..000000000
--- a/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2021 Peter van der Burg
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * Used by machine_pin.c. Holds Board/MCU specific Pin allocations.
- */
-
-#include "modmachine.h"
-#include "sam.h"
-#include "pins.h"
-
-// Ensure Declaration in 'pins.h' reflects # of Pins defined here.
-const machine_pin_obj_t machine_pin_obj[] = {
- // EXT1
- {{&machine_pin_type}, PIN_PB00}, // PIN3_ADC(+)
- {{&machine_pin_type}, PIN_PB01}, // PIN4_ADC(-)
- {{&machine_pin_type}, PIN_PB06}, // PIN5_GPIO
- {{&machine_pin_type}, PIN_PB07}, // PIN6_GPIO
- {{&machine_pin_type}, PIN_PB02}, // PIN7_PWM(+)
- {{&machine_pin_type}, PIN_PB03}, // PIN8_PWM(-)
- {{&machine_pin_type}, PIN_PB04}, // PIN9_IRQ/GPIO
- {{&machine_pin_type}, PIN_PB05}, // PIN10_SPI_SS_B/GPIO
- {{&machine_pin_type}, PIN_PA08}, // PIN11_TWI_SDA
- {{&machine_pin_type}, PIN_PA09}, // PIN12_TWI_SCL
- {{&machine_pin_type}, PIN_PB09}, // PIN13_UART_RX
- {{&machine_pin_type}, PIN_PB08}, // PIN14_UART_TX
- {{&machine_pin_type}, PIN_PA05}, // PIN15_SPI_SS_A
- {{&machine_pin_type}, PIN_PA06}, // PIN16_SPI_MOSI
- {{&machine_pin_type}, PIN_PA04}, // PIN17_SPI_MISO
- {{&machine_pin_type}, PIN_PA07}, // PIN18_SPI_SCK
-
- // EXT2
- {{&machine_pin_type}, PIN_PA10}, // PIN3_ADC(+)
- {{&machine_pin_type}, PIN_PA11}, // PIN4_ADC(-)
- {{&machine_pin_type}, PIN_PA20}, // PIN5_GPIO
- {{&machine_pin_type}, PIN_PA21}, // PIN6_GPIO
- {{&machine_pin_type}, PIN_PB12}, // PIN7_PWM(+)
- {{&machine_pin_type}, PIN_PB13}, // PIN8_PWM(-)
- {{&machine_pin_type}, PIN_PB14}, // PIN9_IRQ/GPIO
- {{&machine_pin_type}, PIN_PB15}, // PIN10_SPI_SS_B/GPIO
- {{NULL}, -1}, // PIN_PA08/ PIN11_TWI_SDA already defined
- {{NULL}, -1}, // PIN_PA09/ PIN12_TWI_SCL already defined
- {{&machine_pin_type}, PIN_PB11}, // PIN13_UART_RX
- {{&machine_pin_type}, PIN_PB10}, // PIN14_UART_TX
- {{&machine_pin_type}, PIN_PA17}, // PIN15_SPI_SS_A
- {{&machine_pin_type}, PIN_PA18}, // PIN16_SPI_MOSI
- {{&machine_pin_type}, PIN_PA16}, // PIN17_SPI_MISO
- {{&machine_pin_type}, PIN_PA19}, // PIN18_SPI_SCK
-
- // EXT3
- {{&machine_pin_type}, PIN_PA02}, // PIN3_ADC(+)
- {{&machine_pin_type}, PIN_PA03}, // PIN4_ADC(-)
- {{NULL}, -1}, // PIN_PB30/ PIN5_GPIO already defined
- {{&machine_pin_type}, PIN_PA15}, // PIN6_GPIO; USER_BUTTON
- {{&machine_pin_type}, PIN_PA12}, // PIN7_PWM(+)
- {{&machine_pin_type}, PIN_PA13}, // PIN8_PWM(-)
- {{&machine_pin_type}, PIN_PA28}, // PIN9_IRQ/GPIO
- {{&machine_pin_type}, PIN_PA27}, // PIN10_SPI_SS_B/GPIO
- {{NULL}, -1}, // PIN_PA08/ PIN11_TWI_SDA already defined
- {{NULL}, -1}, // PIN_PA09/ PIN12_TWI_SCL already defined
- {{NULL}, -1}, // PIN_PB11/ PIN13_UART_RX already defined
- {{NULL}, -1}, // PIN_PB10/ PIN14_UART_TX already defined
- {{&machine_pin_type}, PIN_PB17}, // PIN15_SPI_SS_A
- {{&machine_pin_type}, PIN_PB22}, // PIN16_SPI_MOSI
- {{&machine_pin_type}, PIN_PB16}, // PIN17_SPI_MISO
- {{&machine_pin_type}, PIN_PB23}, // PIN18_SPI_SCK
-};
-
-const machine_led_obj_t machine_led_obj[] = {
- {{&machine_led_type}, PIN_PB30}, // USER_LED
-};
diff --git a/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.csv b/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.csv
new file mode 100644
index 000000000..438119d90
--- /dev/null
+++ b/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.csv
@@ -0,0 +1,63 @@
+# Pin rows contain Pin number and pin name.
+# Pin rows start with PIN_
+# LED rows start with LED_
+# If the pin name is omitted, the pin number is added as name.
+# Rows for empty entries have to start with '-'
+# Empty lines and lines starting with # are ignored
+
+# EXT1
+PIN_PB00,EXT1_PIN3
+PIN_PB01,EXT1_PIN4
+PIN_PB06,EXT1_PIN5
+PIN_PB07,EXT1_PIN6
+PIN_PB02,EXT1_PIN7
+PIN_PB03,EXT1_PIN8
+PIN_PB04,EXT1_PIN9
+PIN_PB05,EXT1_PIN10
+PIN_PA08,EXT1_PIN11
+PIN_PA09,EXT1_PIN12
+PIN_PB09,EXT1_PIN13
+PIN_PB08,EXT1_PIN14
+PIN_PA05,EXT1_PIN15
+PIN_PA06,EXT1_PIN16
+PIN_PA04,EXT1_PIN17
+PIN_PA07,EXT1_PIN18
+
+# EXT2
+PIN_PA10,EXT2_PIN3
+PIN_PA11,EXT2_PIN4
+PIN_PA20,EXT2_PIN5
+PIN_PA21,EXT2_PIN6
+PIN_PB12,EXT2_PIN7
+PIN_PB13,EXT2_PIN8
+PIN_PB14,EXT2_PIN9
+PIN_PB15,EXT2_PIN10
+-
+-
+PIN_PB11,EXT2_PIN13
+PIN_PB10,EXT2_PIN14
+PIN_PA17,EXT2_PIN15
+PIN_PA18,EXT2_PIN16
+PIN_PA16,EXT2_PIN17
+PIN_PA19,EXT2_PIN18
+
+# EXT3
+PIN_PA02,EXT3_PIN3
+PIN_PA03,EXT3_PIN4
+-
+PIN_PA15,EXT3_PIN6
+PIN_PA12,EXT3_PIN7
+PIN_PA13,EXT3_PIN8
+PIN_PA28,EXT3_PIN9
+PIN_PA27,EXT3_PIN10
+-
+-
+-
+-
+PIN_PB17,EXT3_PIN15
+PIN_PB22,EXT3_PIN16
+PIN_PB16,EXT3_PIN17
+PIN_PB23,EXT3_PIN18
+
+LED_PB30,LED
+
diff --git a/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.h b/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.h
deleted file mode 100644
index 0b0e878b4..000000000
--- a/ports/samd/boards/SAMD21_XPLAINED_PRO/pins.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2021 Peter van der Burg
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * Used by machine_pin.c & board specific pins.c. Holds Board/MCU specific Pin
- * allocations.
- */
-
-typedef struct _machine_pin_obj_t {
- mp_obj_base_t base;
- uint32_t id;
-} machine_pin_obj_t;
-
-typedef struct _machine_led_obj_t {
- mp_obj_base_t base;
- uint32_t id;
-} machine_led_obj_t;
-
-// MUST explicitly hold array # of rows, else machine_pin.c wont compile.
-extern const machine_pin_obj_t machine_pin_obj[48];
-extern const machine_led_obj_t machine_led_obj[1];
diff --git a/ports/samd/boards/SEEED_WIO_TERMINAL/pins.c b/ports/samd/boards/SEEED_WIO_TERMINAL/pins.c
deleted file mode 100644
index d7833416d..000000000
--- a/ports/samd/boards/SEEED_WIO_TERMINAL/pins.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2021 Peter van der Burg
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * Used by machine_pin.c. Holds Board/MCU specific Pin allocations.
- */
-
-#include "modmachine.h"
-#include "sam.h"
-#include "pins.h"
-
-// Ensure Declaration in "pins.h" reflects # of Pins defined here.
-const machine_pin_obj_t machine_pin_obj[] = {
- {{&machine_pin_type}, PIN_PB08}, // A0/D0
- {{&machine_pin_type}, PIN_PB09}, // A1/D1
- {{&machine_pin_type}, PIN_PA07}, // A2/D2
- {{&machine_pin_type}, PIN_PB04}, // A3/D3
- {{&machine_pin_type}, PIN_PB05}, // A4/D4
- {{&machine_pin_type}, PIN_PB06}, // A5/D5
- {{&machine_pin_type}, PIN_PA04}, // A6/D6
- {{&machine_pin_type}, PIN_PB07}, // A7/D7
- {{&machine_pin_type}, PIN_PA06}, // A8/D8
- {{&machine_pin_type}, PIN_PD08}, // SWITCH_X
- {{&machine_pin_type}, PIN_PD09}, // SWITCH_Y
- {{&machine_pin_type}, PIN_PD10}, // SWITCH_Z
- {{&machine_pin_type}, PIN_PD12}, // SWITCH_B
- {{&machine_pin_type}, PIN_PD20}, // SWITCH_U
- {{&machine_pin_type}, PIN_PC26}, // BUTTON_1
- {{&machine_pin_type}, PIN_PC27}, // BUTTON_2
- {{&machine_pin_type}, PIN_PC28}, // BUTTON_3
- {{&machine_pin_type}, PIN_PD11}, // BUZZER_CTR
- {{&machine_pin_type}, PIN_PC14}, // 5V_OUTPUT_CTR- enable 5V on hdr
- {{&machine_pin_type}, PIN_PC15}, // 3V3_OUTPUT_CTR- enable 3V3 on hdr
-};
-
-// Ensure Declaration in 'pins.h' reflects # of Pins defined here.
-const machine_led_obj_t machine_led_obj[] = {
- {{&machine_led_type}, PIN_PA15}, // USER_LED (Blue)
- {{&machine_led_type}, PIN_PC05}, // LCD_BACKLIGHT_CTR
-};
diff --git a/ports/samd/boards/SEEED_WIO_TERMINAL/pins.csv b/ports/samd/boards/SEEED_WIO_TERMINAL/pins.csv
new file mode 100644
index 000000000..72da71224
--- /dev/null
+++ b/ports/samd/boards/SEEED_WIO_TERMINAL/pins.csv
@@ -0,0 +1,30 @@
+# Pin rows contain Pin number and pin name.
+# Pin rows start with PIN_
+# LED rows start with LED_
+# If the pin name is omitted, the pin number is added as name.
+# Rows for empty entries have to start with '-'
+# Empty lines and lines starting with # are ignored
+
+PIN_PB08,A0_D0
+PIN_PB09,A1_D1
+PIN_PA07,A2_D2
+PIN_PB04,A3_D3
+PIN_PB05,A4_D4
+PIN_PB06,A5_D5
+PIN_PA04,A6_D6
+PIN_PB07,A7_D7
+PIN_PA06,A8_D8
+PIN_PD08,SWITCH_X
+PIN_PD09,SWITCH_Y
+PIN_PD10,SWITCH_Z
+PIN_PD12,SWITCH_B
+PIN_PD20,SWITCH_U
+PIN_PC26,BUTTON_1
+PIN_PC27,BUTTON_2
+PIN_PC28,BUTTON_3
+PIN_PD11,BUZZER_CTR
+PIN_PC14,5V_ENABLE
+PIN_PC15,3V3_ENABLE
+
+LED_PA15,LED_BLUE
+LED_PC05,LED_LCD
diff --git a/ports/samd/boards/SEEED_WIO_TERMINAL/pins.h b/ports/samd/boards/SEEED_WIO_TERMINAL/pins.h
deleted file mode 100644
index 45ecc254f..000000000
--- a/ports/samd/boards/SEEED_WIO_TERMINAL/pins.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2021 Peter van der Burg
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * Used by machine_pin.c & board specific pins.c. Holds Board/MCU specific Pin
- * allocations.
- */
-
-typedef struct _machine_pin_obj_t {
- mp_obj_base_t base;
- uint32_t id;
-} machine_pin_obj_t;
-
-typedef struct _machine_led_obj_t {
- mp_obj_base_t base;
- uint32_t id;
-} machine_led_obj_t;
-
-// MUST explicitly hold array # of rows, else machine_pin.c wont compile.
-extern const machine_pin_obj_t machine_pin_obj[20];
-extern const machine_led_obj_t machine_led_obj[2];
diff --git a/ports/samd/boards/SEEED_XIAO/pins.c b/ports/samd/boards/SEEED_XIAO/pins.c
deleted file mode 100644
index e2f7c264b..000000000
--- a/ports/samd/boards/SEEED_XIAO/pins.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2021 Peter van der Burg
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * Used by machine_pin.c. Holds Board/MCU specific Pin allocations.
- */
-
-#include "modmachine.h"
-#include "sam.h"
-#include "pins.h"
-
-// Ensure Declaration in 'pins.h' reflects # of Pins defined here.
-const machine_pin_obj_t machine_pin_obj[] = {
- {{&machine_pin_type}, PIN_PA02}, // A0/D0
- {{&machine_pin_type}, PIN_PA04}, // A1/D1
- {{&machine_pin_type}, PIN_PA10}, // A2/D2
- {{&machine_pin_type}, PIN_PA11}, // A3/D3
- {{&machine_pin_type}, PIN_PA08}, // A4/D4
- {{&machine_pin_type}, PIN_PA09}, // A5/D5
- {{&machine_pin_type}, PIN_PB08}, // A6/D6
- {{&machine_pin_type}, PIN_PB09}, // A7/D7
- {{&machine_pin_type}, PIN_PA07}, // A8/D8
- {{&machine_pin_type}, PIN_PA05}, // A9/D9
- {{&machine_pin_type}, PIN_PA06}, // A10/D10
-};
-
-const machine_led_obj_t machine_led_obj[] = {
-// XIAO: Just the available LED Pins: User LED (PA17), Rx & Tx.
- {{&machine_led_type}, PIN_PA17}, // W13
- {{&machine_led_type}, PIN_PA18}, // RX_LED
- {{&machine_led_type}, PIN_PA19}, // TX_LED
-};
diff --git a/ports/samd/boards/SEEED_XIAO/pins.csv b/ports/samd/boards/SEEED_XIAO/pins.csv
new file mode 100644
index 000000000..8a70a7714
--- /dev/null
+++ b/ports/samd/boards/SEEED_XIAO/pins.csv
@@ -0,0 +1,22 @@
+# Pin rows contain Pin number and pin name.
+# Pin rows start with PIN_
+# LED rows start with LED_
+# If the pin name is omitted, the pin number is added as name.
+# Rows for empty entries have to start with '-'
+# Empty lines and lines starting with # are ignored
+
+PIN_PA02,A0_D0
+PIN_PA04,A1_D1
+PIN_PA10,A2_D2
+PIN_PA11,A3_D3
+PIN_PA08,A4_D4
+PIN_PA09,A5_D5
+PIN_PB08,A6_D6
+PIN_PB09,A7_D7
+PIN_PA07,A8_D8
+PIN_PA05,A9_D9
+PIN_PA06,A10_D10
+
+LED_PA17,USER_LED
+LED_PA18,RX_LED
+LED_PA19,TX_LED
diff --git a/ports/samd/boards/SEEED_XIAO/pins.h b/ports/samd/boards/SEEED_XIAO/pins.h
deleted file mode 100644
index 226b3f1d7..000000000
--- a/ports/samd/boards/SEEED_XIAO/pins.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * This file is part of the MicroPython project, http://micropython.org/
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2021 Peter van der Burg
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * Used by machine_pin.c & board specific pins.c. Holds Board/MCU specific Pin
- * allocations.
- */
-
-typedef struct _machine_pin_obj_t {
- mp_obj_base_t base;
- uint32_t id;
-} machine_pin_obj_t;
-
-typedef struct _machine_led_obj_t {
- mp_obj_base_t base;
- uint32_t id;
-} machine_led_obj_t;
-
-// MUST explicitly hold array # of rows, else machine_pin.c wont compile.
-extern const machine_pin_obj_t machine_pin_obj[11];
-extern const machine_led_obj_t machine_led_obj[3];
diff --git a/ports/samd/boards/make-pins.py b/ports/samd/boards/make-pins.py
new file mode 100644
index 000000000..400a9c9b8
--- /dev/null
+++ b/ports/samd/boards/make-pins.py
@@ -0,0 +1,126 @@
+#!/usr/bin/env python
+"""Generates the pins file for the SAMD port."""
+
+from __future__ import print_function
+
+import argparse
+import sys
+import csv
+
+pins_header_prefix = """// This file was automatically generated by make-pins.py
+//
+typedef struct _machine_pin_obj_t {
+ mp_obj_base_t base;
+ uint32_t id;
+ char *name;
+} machine_pin_obj_t;
+
+"""
+
+led_header_prefix = """typedef struct _machine_led_obj_t {
+ mp_obj_base_t base;
+ uint32_t id;
+ char *name;
+} machine_led_obj_t;
+
+"""
+
+
+class Pins:
+ def __init__(self):
+ self.board_pins = [] # list of pin objects
+ self.board_leds = [] # list of led objects
+
+ def parse_csv_file(self, filename):
+ with open(filename, "r") as csvfile:
+ rows = csv.reader(csvfile)
+ for row in rows:
+ # Pin numbers must start with "PIN_"
+ # LED numbers must start with "LED_"
+ if len(row) > 0:
+ if row[0].strip().startswith("PIN_"):
+ if len(row) == 1:
+ self.board_pins.append([row[0], row[0][4:]])
+ else:
+ self.board_pins.append([row[0], row[1]])
+ elif row[0].strip().startswith("LED_"):
+ self.board_leds.append(["PIN_" + row[0][4:], row[1]])
+ elif row[0].strip().startswith("-"):
+ self.board_pins.append(["-1", ""])
+
+ def print_pins(self, pins_filename):
+ with open(pins_filename, "wt") as pins_file:
+ pins_file.write("// This file was automatically generated by make-pins.py\n")
+ pins_file.write("//\n")
+ pins_file.write('#include "modmachine.h"\n')
+ pins_file.write('#include "sam.h"\n')
+ pins_file.write('#include "pins.h"\n\n')
+
+ pins_file.write("const machine_pin_obj_t machine_pin_obj[] = {\n")
+ for pin in self.board_pins:
+ pins_file.write(" {{&machine_pin_type}, ")
+ pins_file.write(pin[0] + ', "' + pin[1])
+ pins_file.write('"},\n')
+ pins_file.write("};\n")
+
+ if self.board_leds:
+ pins_file.write("\nconst machine_led_obj_t machine_led_obj[] = {\n")
+ for pin in self.board_leds:
+ pins_file.write(" {{&machine_pin_type}, ")
+ pins_file.write(pin[0] + ', "' + pin[1])
+ pins_file.write('"},\n')
+ pins_file.write("};\n")
+
+ def print_header(self, hdr_filename):
+ with open(hdr_filename, "wt") as hdr_file:
+ hdr_file.write(pins_header_prefix)
+ if self.board_leds:
+ hdr_file.write(led_header_prefix)
+ hdr_file.write(
+ "extern const machine_pin_obj_t machine_pin_obj[%d];\n" % len(self.board_pins)
+ )
+ if self.board_leds:
+ hdr_file.write(
+ "extern const machine_led_obj_t machine_led_obj[%d];\n" % len(self.board_leds)
+ )
+
+
+def main():
+ parser = argparse.ArgumentParser(
+ prog="make-pins.py",
+ usage="%(prog)s [options] [command]",
+ description="Generate board specific pin file",
+ )
+ parser.add_argument(
+ "-b",
+ "--board",
+ dest="csv_filename",
+ help="Specifies the pins.csv filename",
+ )
+ parser.add_argument(
+ "-p",
+ "--pins",
+ dest="pins_filename",
+ help="Specifies the name of the generated pins.c file",
+ )
+ parser.add_argument(
+ "-i",
+ "--inc",
+ dest="hdr_filename",
+ help="Specifies name of generated pin header file",
+ )
+ args = parser.parse_args(sys.argv[1:])
+
+ pins = Pins()
+
+ if args.csv_filename:
+ pins.parse_csv_file(args.csv_filename)
+
+ if args.pins_filename:
+ pins.print_pins(args.pins_filename)
+
+ pins.print_header(args.hdr_filename)
+
+
+if __name__ == "__main__":
+ main()