diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 50bf218..f6b6180 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -18,12 +18,14 @@ jobs:
with:
python-version: '3.10'
- - name: Install ltchiptool
- run: pip install ltchiptool
+ - name: Install docs dependencies
+ run: pip install -U ltchiptool boardgen
- - name: Generate static JSON files
+ - name: Generate docs and static JSON files
run: |
mkdir -p site/
+ boardgen ltci
+ python docs/update_docs.py
python docs/build_json.py
cp *.json site/
diff --git a/.gitignore b/.gitignore
index e0759e9..d4c122c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -258,3 +258,9 @@ xml/
ltapi/
hashChanges.yaml
.piopm
+
+# board files
+docs/status/supported_*.md
+docs/status/unsupported_boards_*.md
+boards/**/*.svg
+boards/**/*.md
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 4265a1e..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,2 +0,0 @@
-[submodule "tools/boardgen"]
- url = https://github.com/kuba2k2/boardgen
diff --git a/boards/SUMMARY.md b/boards/SUMMARY.md
deleted file mode 100644
index 2df5314..0000000
--- a/boards/SUMMARY.md
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-- [Generic - BK7231N (Tuya QFN32)](../boards/generic-bk7231n-qfn32-tuya/README.md)
-- [Generic - BK7231T (Tuya QFN32)](../boards/generic-bk7231t-qfn32-tuya/README.md)
-- [Generic - BK7252](../boards/generic-bk7252/README.md)
-- [Generic - RTL8710BN (2M/468k)](../boards/generic-rtl8710bn-2mb-468k/README.md)
-- [Generic - RTL8710BN (2M/788k)](../boards/generic-rtl8710bn-2mb-788k/README.md)
-- [Generic - RTL8710BX (4M/980k)](../boards/generic-rtl8710bx-4mb-980k/README.md)
-- [Generic - RTL8720CF (2M/992k)](../boards/generic-rtl8720cf-2mb-992k/README.md)
-- [BW12](../boards/bw12/README.md)
-- [BW15](../boards/bw15/README.md)
-- [CB2L](../boards/cb2l/README.md)
-- [CB2S](../boards/cb2s/README.md)
-- [CB3L](../boards/cb3l/README.md)
-- [CB3S](../boards/cb3s/README.md)
-- [CB3SE](../boards/cb3se/README.md)
-- [WB2L](../boards/wb2l/README.md)
-- [WB2S](../boards/wb2s/README.md)
-- [WB3L](../boards/wb3l/README.md)
-- [WB3S](../boards/wb3s/README.md)
-- [WR2](../boards/wr2/README.md)
-- [WR2E](../boards/wr2e/README.md)
-- [WR3](../boards/wr3/README.md)
-- [WR3E](../boards/wr3e/README.md)
-- [WR3N](../boards/wr3n/README.md)
-- [WR2L](../boards/wr2l/README.md)
-- [WR2LE](../boards/wr2le/README.md)
-- [WR3L](../boards/wr3l/README.md)
-- [WR3LE](../boards/wr3le/README.md)
-- [LSC LMA35](../boards/lsc-lma35/README.md)
-- [LSC LMA35 T](../boards/lsc-lma35-t/README.md)
-- [Generic - Host-native](../boards/generic-native/README.md)
diff --git a/boards/bw12/README.md b/boards/bw12/README.md
deleted file mode 100644
index db2e50c..0000000
--- a/boards/bw12/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-# BW12
-
-*by Ai-Thinker Co., Ltd.*
-
-[Product page](http://www.ai-thinker.com/pro_view-13.html)
-
-- [General info](../../docs/platform/realtek-amb/README.md)
-- [Flashing guide](../../docs/platform/realtek-ambz/flashing.md)
-- [Debugging](../../docs/platform/realtek-ambz/debugging.md)
-- [Vendor datasheet](https://docs.ai-thinker.com/_media/rtl8710/hardware/bw12_datasheet_en.pdf)
-
-Parameter | Value
--------------|------------------------------------------
-Board code | `bw12`
-MCU | RTL8710BX
-Manufacturer | Realtek
-Series | AmebaZ
-Frequency | 62.5 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 11x GPIO, 6x PWM, 2x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-FCC ID | [2ARI3-BW1X](https://fccid.io/2ARI3-BW1X)
-
-## Usage
-
-**Board code:** `bw12`
-
-In `platformio.ini`:
-
-```ini
-[env:bw12]
-platform = libretuya
-board = bw12
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: bw12
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|------------|-----------|----------|----------------------|------|------
-D0 | PA05 | | | | PWM4 |
-D1 | PA29 | UART2_RX | I2C0_SCL | | PWM4 |
-D2 | PA00 | | | | PWM2 |
-D3 | PA19 | UART0_CTS | I2C0_SDA | SPI0_CS, SPI1_CS | |
-D4 | PA22 | UART0_RTS | I2C0_SCL | SPI0_MISO, SPI1_MISO | PWM5 |
-D5 | PA30 | UART2_TX | I2C0_SDA | | PWM4 |
-D6 | PA14 | | | | PWM0 | SWCLK
-D7 | PA12 | | | | PWM3 |
-D8 | PA15 | | | | PWM1 | SWDIO
-D9 | PA18 | UART0_RX | I2C1_SCL | SPI0_SCK, SPI1_SCK | |
-D10 | PA23 | UART0_TX | I2C1_SDA | SPI0_MOSI, SPI1_MOSI | PWM0 |
-A0 | PA19, ADC1 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|-------------------|---------
-Boot XIP | 0x000000 | 16 KiB / 0x4000 | 0x004000
-Boot RAM | 0x004000 | 16 KiB / 0x4000 | 0x008000
-(reserved) | 0x008000 | 4 KiB / 0x1000 | 0x009000
-System Data | 0x009000 | 4 KiB / 0x1000 | 0x00A000
-Calibration | 0x00A000 | 4 KiB / 0x1000 | 0x00B000
-OTA1 Image | 0x00B000 | 468 KiB / 0x75000 | 0x080000
-OTA2 Image | 0x080000 | 468 KiB / 0x75000 | 0x0F5000
-Key-Value Store | 0x0F5000 | 24 KiB / 0x6000 | 0x0FB000
-User Data | 0x0FB000 | 1 MiB / 0x104000 | 0x1FF000
-RDP | 0x1FF000 | 4 KiB / 0x1000 | 0x200000
-
-RDP is most likely not used in Tuya firmwares, as the System Data partition contains an incorrect offset 0xFF000 for RDP, which is in the middle of OTA2 image.
-
-Additionally, Tuya firmware uses an encrypted KV or file storage, which resides at the end of flash memory. This seems to overlap system RDP area.
diff --git a/boards/bw12/pinout_bw12.svg b/boards/bw12/pinout_bw12.svg
deleted file mode 100644
index 97456f5..0000000
--- a/boards/bw12/pinout_bw12.svg
+++ /dev/null
@@ -1,315 +0,0 @@
-
-
diff --git a/boards/bw12/pins_arduino.h b/boards/bw12/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/bw12/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/bw15/README.md b/boards/bw15/README.md
deleted file mode 100644
index 9c5c778..0000000
--- a/boards/bw15/README.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# BW15
-
-*by Ai-Thinker Co., Ltd.*
-
-[Product page](https://docs.ai-thinker.com/_media/rtl8710/docs/bw15_datasheet_en.pdf)
-
-- [General info](../../docs/platform/realtek-amb/README.md)
-- [Vendor datasheet](https://docs.ai-thinker.com/_media/rtl8710/docs/bw15_datasheet_en.pdf)
-
-Parameter | Value
--------------|------------------------------------------
-Board code | `bw15`
-MCU | RTL8720CF
-Manufacturer | Realtek
-Series | AmebaZ2
-Frequency | 100 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 13x GPIO, 8x PWM, 3x UART
-Wi-Fi | 802.11 b/g/n
-BLE | v4.2
-FCC ID | [2AXVG-BW15](https://fccid.io/2AXVG-BW15)
-
-## Usage
-
-**Board code:** `bw15`
-
-In `platformio.ini`:
-
-```ini
-[env:bw15]
-platform = libretuya
-board = bw15
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: bw15
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|-------------------|---------
-Partition Table | 0x000000 | 4 KiB / 0x1000 | 0x001000
-System Data | 0x001000 | 4 KiB / 0x1000 | 0x002000
-Calibration | 0x002000 | 4 KiB / 0x1000 | 0x003000
-(reserved) | 0x003000 | 4 KiB / 0x1000 | 0x004000
-Boot Image | 0x004000 | 32 KiB / 0x8000 | 0x00C000
-OTA1 Image | 0x00C000 | 992 KiB / 0xF8000 | 0x104000
-OTA2 Image | 0x104000 | 992 KiB / 0xF8000 | 0x1FC000
-Key-Value Store | 0x1FC000 | 8 KiB / 0x2000 | 0x1FE000
-User Data | 0x1FE000 | 8 KiB / 0x2000 | 0x200000
diff --git a/boards/bw15/pinout_bw15.svg b/boards/bw15/pinout_bw15.svg
deleted file mode 100644
index fc777d0..0000000
--- a/boards/bw15/pinout_bw15.svg
+++ /dev/null
@@ -1,355 +0,0 @@
-
-
diff --git a/boards/bw15/pins_arduino.h b/boards/bw15/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/bw15/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/bw15/variant.h b/boards/bw15/variant.h
deleted file mode 100644
index 32b21b3..0000000
--- a/boards/bw15/variant.h
+++ /dev/null
@@ -1,7 +0,0 @@
-/* This file was auto-generated from bw15.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
diff --git a/boards/cb2l/README.md b/boards/cb2l/README.md
deleted file mode 100644
index 103c865..0000000
--- a/boards/cb2l/README.md
+++ /dev/null
@@ -1,82 +0,0 @@
-# CB2L Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/cb2l-module-datasheet?id=Kai2eku1m3pyl)
-
-- [General info](../../docs/platform/beken-72xx/README.md)
-- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
-
-Parameter | Value
--------------|------------------------------------------
-Board code | `cb2l`
-MCU | BK7231N
-Manufacturer | Beken
-Series | BK72XX
-Frequency | 120 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 9x GPIO, 5x PWM, 2x UART
-Wi-Fi | 802.11 b/g/n
-Bluetooth | BLE v5.1
-FCC ID | [2ANDL-CB2L](https://fccid.io/2ANDL-CB2L)
-
-## Usage
-
-**Board code:** `cb2l`
-
-In `platformio.ini`:
-
-```ini
-[env:cb2l]
-platform = libretuya
-board = cb2l
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: cb2l
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|-----|----------|----------|-----|------|------
-D0 | P8 | | | | PWM2 |
-D1 | P7 | | | | PWM1 |
-D2 | P6 | | | | PWM0 |
-D3 | P26 | | | | PWM5 |
-D4 | P24 | | | | PWM4 |
-D5 | P10 | UART1_RX | | | |
-D6 | P0 | UART2_TX | I2C2_SCL | | |
-D7 | P11 | UART1_TX | | | |
-D8 | P21 | | I2C1_SDA | | | TMS
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|--------------------|---------
-Bootloader | 0x000000 | 68 KiB / 0x11000 | 0x011000
-App Image | 0x011000 | 1.1 MiB / 0x119000 | 0x12A000
-OTA Image | 0x12A000 | 664 KiB / 0xA6000 | 0x1D0000
-Calibration | 0x1D0000 | 4 KiB / 0x1000 | 0x1D1000
-Network Data | 0x1D1000 | 4 KiB / 0x1000 | 0x1D2000
-TLV Store | 0x1D2000 | 4 KiB / 0x1000 | 0x1D3000
-Key-Value Store | 0x1D3000 | 32 KiB / 0x8000 | 0x1DB000
-User Data | 0x1DB000 | 148 KiB / 0x25000 | 0x200000
-
-Bootloader and app partitions contain CRC16 sums every 32 bytes. That results in the actual flash offsets/sizes not aligned to sector boundaries. To simplify calculations, the values shown in the table (extracted from bootloader's partition table) were aligned to 4096 bytes.
diff --git a/boards/cb2l/pinout_cb2l.svg b/boards/cb2l/pinout_cb2l.svg
deleted file mode 100644
index f41a95e..0000000
--- a/boards/cb2l/pinout_cb2l.svg
+++ /dev/null
@@ -1,258 +0,0 @@
-
-
diff --git a/boards/cb2l/pins_arduino.h b/boards/cb2l/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/cb2l/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/cb2l/variant.h b/boards/cb2l/variant.h
deleted file mode 100644
index a09b1e7..0000000
--- a/boards/cb2l/variant.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* This file was auto-generated from cb2l.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 9
-#define NUM_DIGITAL_PINS 9
-#define NUM_ANALOG_OUTPUTS 0
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 0
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 0
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 1
-#define PIN_SERIAL1_RX 5u // GPIO10
-#define PIN_SERIAL1_TX 7u // GPIO11
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_P0 6u // GPIO0
-#define PIN_FUNCTION_P6 2u // GPIO6
-#define PIN_FUNCTION_P7 1u // GPIO7
-#define PIN_FUNCTION_P8 0u // GPIO8
-#define PIN_FUNCTION_P10 5u // GPIO10
-#define PIN_FUNCTION_P11 7u // GPIO11
-#define PIN_FUNCTION_P21 8u // GPIO21
-#define PIN_FUNCTION_P24 4u // GPIO24
-#define PIN_FUNCTION_P26 3u // GPIO26
-#define PIN_FUNCTION_PWM0 2u // GPIO6
-#define PIN_FUNCTION_PWM1 1u // GPIO7
-#define PIN_FUNCTION_PWM2 0u // GPIO8
-#define PIN_FUNCTION_PWM4 4u // GPIO24
-#define PIN_FUNCTION_PWM5 3u // GPIO26
-#define PIN_FUNCTION_RX1 5u // GPIO10
-#define PIN_FUNCTION_SCL2 6u // GPIO0
-#define PIN_FUNCTION_SDA1 8u // GPIO21
-#define PIN_FUNCTION_TX1 7u // GPIO11
-#define PIN_FUNCTION_TX2 6u // GPIO0
diff --git a/boards/cb2s/README.md b/boards/cb2s/README.md
deleted file mode 100644
index bdaf6f8..0000000
--- a/boards/cb2s/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# CB2S Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/cb2s-module-datasheet?id=Kafgfsa2aaypq)
-
-- [General info](../../docs/platform/beken-72xx/README.md)
-- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
-
-Parameter | Value
--------------|------------------------------------------
-Board code | `cb2s`
-MCU | BK7231N
-Manufacturer | Beken
-Series | BK72XX
-Frequency | 120 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 11x GPIO, 5x PWM, 2x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-Bluetooth | BLE v5.1
-FCC ID | [2ANDL-CB2S](https://fccid.io/2ANDL-CB2S)
-
-## Usage
-
-**Board code:** `cb2s`
-
-In `platformio.ini`:
-
-```ini
-[env:cb2s]
-platform = libretuya
-board = cb2s
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: cb2s
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|-----------|----------|----------|-----|------|------
-D0 | P6 | | | | PWM0 |
-D1 | P7 | | | | PWM1 |
-D2 | P8 | | | | PWM2 |
-D3 | P23 | | | | | TDO
-D4 | P10 | UART1_RX | | | |
-D5 | P11 | UART1_TX | | | |
-D6 | P24 | | | | PWM4 |
-D7 | P26 | | | | PWM5 |
-D8 | P0 | UART2_TX | I2C2_SCL | | |
-D9 | P1 | UART2_RX | I2C2_SDA | | |
-D10 | P21 | | I2C1_SDA | | | TMS
-A0 | P23, ADC3 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|--------------------|---------
-Bootloader | 0x000000 | 68 KiB / 0x11000 | 0x011000
-App Image | 0x011000 | 1.1 MiB / 0x119000 | 0x12A000
-OTA Image | 0x12A000 | 664 KiB / 0xA6000 | 0x1D0000
-Calibration | 0x1D0000 | 4 KiB / 0x1000 | 0x1D1000
-Network Data | 0x1D1000 | 4 KiB / 0x1000 | 0x1D2000
-TLV Store | 0x1D2000 | 4 KiB / 0x1000 | 0x1D3000
-Key-Value Store | 0x1D3000 | 32 KiB / 0x8000 | 0x1DB000
-User Data | 0x1DB000 | 148 KiB / 0x25000 | 0x200000
-
-Bootloader and app partitions contain CRC16 sums every 32 bytes. That results in the actual flash offsets/sizes not aligned to sector boundaries. To simplify calculations, the values shown in the table (extracted from bootloader's partition table) were aligned to 4096 bytes.
diff --git a/boards/cb2s/pinout_cb2s.svg b/boards/cb2s/pinout_cb2s.svg
deleted file mode 100644
index bb69c2f..0000000
--- a/boards/cb2s/pinout_cb2s.svg
+++ /dev/null
@@ -1,276 +0,0 @@
-
-
diff --git a/boards/cb2s/pins_arduino.h b/boards/cb2s/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/cb2s/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/cb2s/variant.h b/boards/cb2s/variant.h
deleted file mode 100644
index f47ff6d..0000000
--- a/boards/cb2s/variant.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* This file was auto-generated from cb2s.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 11
-#define NUM_DIGITAL_PINS 11
-#define NUM_ANALOG_INPUTS 1
-#define NUM_ANALOG_OUTPUTS 0
-
-// Analog pins
-// -----------
-#define PIN_A0 3u // GPIO23
-#define A0 PIN_A0
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 0
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 1
-#define PIN_WIRE2_SCL 8u // GPIO0
-#define PIN_WIRE2_SDA 9u // GPIO1
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 2
-#define PIN_SERIAL1_RX 4u // GPIO10
-#define PIN_SERIAL1_TX 5u // GPIO11
-#define PIN_SERIAL2_RX 9u // GPIO1
-#define PIN_SERIAL2_TX 8u // GPIO0
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_ADC3 3u // GPIO23
-#define PIN_FUNCTION_P0 8u // GPIO0
-#define PIN_FUNCTION_P1 9u // GPIO1
-#define PIN_FUNCTION_P6 0u // GPIO6
-#define PIN_FUNCTION_P7 1u // GPIO7
-#define PIN_FUNCTION_P8 2u // GPIO8
-#define PIN_FUNCTION_P10 4u // GPIO10
-#define PIN_FUNCTION_P11 5u // GPIO11
-#define PIN_FUNCTION_P21 10u // GPIO21
-#define PIN_FUNCTION_P23 3u // GPIO23
-#define PIN_FUNCTION_P24 6u // GPIO24
-#define PIN_FUNCTION_P26 7u // GPIO26
-#define PIN_FUNCTION_PWM0 0u // GPIO6
-#define PIN_FUNCTION_PWM1 1u // GPIO7
-#define PIN_FUNCTION_PWM2 2u // GPIO8
-#define PIN_FUNCTION_PWM4 6u // GPIO24
-#define PIN_FUNCTION_PWM5 7u // GPIO26
-#define PIN_FUNCTION_RX1 4u // GPIO10
-#define PIN_FUNCTION_RX2 9u // GPIO1
-#define PIN_FUNCTION_SCL2 8u // GPIO0
-#define PIN_FUNCTION_SDA1 10u // GPIO21
-#define PIN_FUNCTION_SDA2 9u // GPIO1
-#define PIN_FUNCTION_TX1 5u // GPIO11
-#define PIN_FUNCTION_TX2 8u // GPIO0
diff --git a/boards/cb3l/README.md b/boards/cb3l/README.md
deleted file mode 100644
index 3d0a043..0000000
--- a/boards/cb3l/README.md
+++ /dev/null
@@ -1,86 +0,0 @@
-# CB3L Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/cb3l-module-datasheet?id=Kai51ngmrh3qm)
-
-- [General info](../../docs/platform/beken-72xx/README.md)
-- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
-
-Parameter | Value
--------------|------------------------------------------
-Board code | `cb3l`
-MCU | BK7231N
-Manufacturer | Beken
-Series | BK72XX
-Frequency | 120 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 12x GPIO, 6x PWM, 2x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-Bluetooth | BLE v5.1
-FCC ID | [2ANDL-CB3L](https://fccid.io/2ANDL-CB3L)
-
-## Usage
-
-**Board code:** `cb3l`
-
-In `platformio.ini`:
-
-```ini
-[env:cb3l]
-platform = libretuya
-board = cb3l
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: cb3l
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|-----------|----------|----------|-----|------|------
-D0 | P23 | | | | | TDO
-D1 | P14 | | | SCK | |
-D2 | P26 | | | | PWM5 |
-D3 | P24 | | | | PWM4 |
-D4 | P6 | | | | PWM0 |
-D5 | P9 | | | | PWM3 |
-D6 | P0 | UART2_TX | I2C2_SCL | | |
-D7 | P21 | | I2C1_SDA | | | TMS
-D8 | P8 | | | | PWM2 |
-D9 | P7 | | | | PWM1 |
-D10 | P10 | UART1_RX | | | |
-D11 | P11 | UART1_TX | | | |
-A0 | P23, ADC3 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|--------------------|---------
-Bootloader | 0x000000 | 68 KiB / 0x11000 | 0x011000
-App Image | 0x011000 | 1.1 MiB / 0x119000 | 0x12A000
-OTA Image | 0x12A000 | 664 KiB / 0xA6000 | 0x1D0000
-Calibration | 0x1D0000 | 4 KiB / 0x1000 | 0x1D1000
-Network Data | 0x1D1000 | 4 KiB / 0x1000 | 0x1D2000
-TLV Store | 0x1D2000 | 4 KiB / 0x1000 | 0x1D3000
-Key-Value Store | 0x1D3000 | 32 KiB / 0x8000 | 0x1DB000
-User Data | 0x1DB000 | 148 KiB / 0x25000 | 0x200000
-
-Bootloader and app partitions contain CRC16 sums every 32 bytes. That results in the actual flash offsets/sizes not aligned to sector boundaries. To simplify calculations, the values shown in the table (extracted from bootloader's partition table) were aligned to 4096 bytes.
diff --git a/boards/cb3l/pinout_cb3l.svg b/boards/cb3l/pinout_cb3l.svg
deleted file mode 100644
index 35eb017..0000000
--- a/boards/cb3l/pinout_cb3l.svg
+++ /dev/null
@@ -1,253 +0,0 @@
-
-
diff --git a/boards/cb3l/pins_arduino.h b/boards/cb3l/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/cb3l/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/cb3l/variant.h b/boards/cb3l/variant.h
deleted file mode 100644
index b787cde..0000000
--- a/boards/cb3l/variant.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* This file was auto-generated from cb3l.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 12
-#define NUM_DIGITAL_PINS 12
-#define NUM_ANALOG_INPUTS 1
-#define NUM_ANALOG_OUTPUTS 0
-
-// Analog pins
-// -----------
-#define PIN_A0 0u // GPIO23
-#define A0 PIN_A0
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 0
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 0
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 1
-#define PIN_SERIAL1_RX 10u // GPIO10
-#define PIN_SERIAL1_TX 11u // GPIO11
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_ADC3 0u // GPIO23
-#define PIN_FUNCTION_P0 6u // GPIO0
-#define PIN_FUNCTION_P6 4u // GPIO6
-#define PIN_FUNCTION_P7 9u // GPIO7
-#define PIN_FUNCTION_P8 8u // GPIO8
-#define PIN_FUNCTION_P9 5u // GPIO9
-#define PIN_FUNCTION_P10 10u // GPIO10
-#define PIN_FUNCTION_P11 11u // GPIO11
-#define PIN_FUNCTION_P14 1u // GPIO14
-#define PIN_FUNCTION_P21 7u // GPIO21
-#define PIN_FUNCTION_P23 0u // GPIO23
-#define PIN_FUNCTION_P24 3u // GPIO24
-#define PIN_FUNCTION_P26 2u // GPIO26
-#define PIN_FUNCTION_PWM0 4u // GPIO6
-#define PIN_FUNCTION_PWM1 9u // GPIO7
-#define PIN_FUNCTION_PWM2 8u // GPIO8
-#define PIN_FUNCTION_PWM3 5u // GPIO9
-#define PIN_FUNCTION_PWM4 3u // GPIO24
-#define PIN_FUNCTION_PWM5 2u // GPIO26
-#define PIN_FUNCTION_RX1 10u // GPIO10
-#define PIN_FUNCTION_SCK 1u // GPIO14
-#define PIN_FUNCTION_SCL2 6u // GPIO0
-#define PIN_FUNCTION_SDA1 7u // GPIO21
-#define PIN_FUNCTION_TX1 11u // GPIO11
-#define PIN_FUNCTION_TX2 6u // GPIO0
diff --git a/boards/cb3s/README.md b/boards/cb3s/README.md
deleted file mode 100644
index 825ed95..0000000
--- a/boards/cb3s/README.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# CB3S Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/cb3s?id=Kai94mec0s076)
-
-- [General info](../../docs/platform/beken-72xx/README.md)
-- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
-
-Parameter | Value
--------------|------------------------------------------
-Board code | `cb3s`
-MCU | BK7231N
-Manufacturer | Beken
-Series | BK72XX
-Frequency | 120 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 14x GPIO, 6x PWM, 2x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-Bluetooth | BLE v5.1
-FCC ID | [2ANDL-CB3S](https://fccid.io/2ANDL-CB3S)
-
-## Usage
-
-**Board code:** `cb3s`
-
-In `platformio.ini`:
-
-```ini
-[env:cb3s]
-platform = libretuya
-board = cb3s
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: cb3s
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|-----------|----------|----------|-----|------|------
-D0 | P23 | | | | | TDO
-D1 | P14 | | | SCK | |
-D2 | P26 | | | | PWM5 |
-D3 | P24 | | | | PWM4 |
-D4 | P6 | | | | PWM0 |
-D5 | P9 | | | | PWM3 |
-D6 | P0 | UART2_TX | I2C2_SCL | | |
-D7 | P21 | | I2C1_SDA | | | TMS
-D8 | P8 | | | | PWM2 |
-D9 | P7 | | | | PWM1 |
-D10 | P10 | UART1_RX | | | |
-D11 | P11 | UART1_TX | | | |
-D12 | P22 | | | | | TDI
-D13 | P20 | | I2C1_SCL | | | TCK
-A0 | P23, ADC3 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|--------------------|---------
-Bootloader | 0x000000 | 68 KiB / 0x11000 | 0x011000
-App Image | 0x011000 | 1.1 MiB / 0x119000 | 0x12A000
-OTA Image | 0x12A000 | 664 KiB / 0xA6000 | 0x1D0000
-Calibration | 0x1D0000 | 4 KiB / 0x1000 | 0x1D1000
-Network Data | 0x1D1000 | 4 KiB / 0x1000 | 0x1D2000
-TLV Store | 0x1D2000 | 4 KiB / 0x1000 | 0x1D3000
-Key-Value Store | 0x1D3000 | 32 KiB / 0x8000 | 0x1DB000
-User Data | 0x1DB000 | 148 KiB / 0x25000 | 0x200000
-
-Bootloader and app partitions contain CRC16 sums every 32 bytes. That results in the actual flash offsets/sizes not aligned to sector boundaries. To simplify calculations, the values shown in the table (extracted from bootloader's partition table) were aligned to 4096 bytes.
diff --git a/boards/cb3s/pinout_cb3s.svg b/boards/cb3s/pinout_cb3s.svg
deleted file mode 100644
index a35a0eb..0000000
--- a/boards/cb3s/pinout_cb3s.svg
+++ /dev/null
@@ -1,375 +0,0 @@
-
-
diff --git a/boards/cb3s/pins_arduino.h b/boards/cb3s/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/cb3s/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/cb3s/variant.h b/boards/cb3s/variant.h
deleted file mode 100644
index 991948c..0000000
--- a/boards/cb3s/variant.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* This file was auto-generated from cb3s.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 14
-#define NUM_DIGITAL_PINS 14
-#define NUM_ANALOG_INPUTS 1
-#define NUM_ANALOG_OUTPUTS 0
-
-// Analog pins
-// -----------
-#define PIN_A0 0u // GPIO23
-#define PIN_A0 0u // GPIO23
-#define A0 PIN_A0
-#define A0 PIN_A0
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 0
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 1
-#define PIN_WIRE1_SCL 13u // GPIO20
-#define PIN_WIRE1_SDA_0 7u // GPIO21
-#define PIN_WIRE1_SDA_1 7u // GPIO21
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 1
-#define PIN_SERIAL1_RX 10u // GPIO10
-#define PIN_SERIAL1_TX 11u // GPIO11
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_ADC3 0u // GPIO23
-#define PIN_FUNCTION_P0 6u // GPIO0
-#define PIN_FUNCTION_P6 4u // GPIO6
-#define PIN_FUNCTION_P7 9u // GPIO7
-#define PIN_FUNCTION_P8 8u // GPIO8
-#define PIN_FUNCTION_P9 5u // GPIO9
-#define PIN_FUNCTION_P10 10u // GPIO10
-#define PIN_FUNCTION_P11 11u // GPIO11
-#define PIN_FUNCTION_P14 1u // GPIO14
-#define PIN_FUNCTION_P20 13u // GPIO20
-#define PIN_FUNCTION_P21 7u // GPIO21
-#define PIN_FUNCTION_P22 12u // GPIO22
-#define PIN_FUNCTION_P23 0u // GPIO23
-#define PIN_FUNCTION_P24 3u // GPIO24
-#define PIN_FUNCTION_P26 2u // GPIO26
-#define PIN_FUNCTION_PWM0 4u // GPIO6
-#define PIN_FUNCTION_PWM1 9u // GPIO7
-#define PIN_FUNCTION_PWM2 8u // GPIO8
-#define PIN_FUNCTION_PWM3 5u // GPIO9
-#define PIN_FUNCTION_PWM4 3u // GPIO24
-#define PIN_FUNCTION_PWM5 2u // GPIO26
-#define PIN_FUNCTION_RX1 10u // GPIO10
-#define PIN_FUNCTION_SCK 1u // GPIO14
-#define PIN_FUNCTION_SCL1 13u // GPIO20
-#define PIN_FUNCTION_SCL2 6u // GPIO0
-#define PIN_FUNCTION_SDA1 7u // GPIO21
-#define PIN_FUNCTION_TX1 11u // GPIO11
-#define PIN_FUNCTION_TX2 6u // GPIO0
diff --git a/boards/cb3se/README.md b/boards/cb3se/README.md
deleted file mode 100644
index 584b8be..0000000
--- a/boards/cb3se/README.md
+++ /dev/null
@@ -1,91 +0,0 @@
-# CB3SE Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/CB3SE-Module-Datasheet?id=Kanoiluul7nl2)
-
-- [General info](../../docs/platform/beken-72xx/README.md)
-- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
-
-Parameter | Value
--------------|--------------------------------------------
-Board code | `cb3se`
-MCU | BK7231N
-Manufacturer | Beken
-Series | BK72XX
-Frequency | 120 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 17x GPIO, 6x PWM, 2x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-Bluetooth | BLE v5.1
-FCC ID | [2ANDL-CB3SE](https://fccid.io/2ANDL-CB3SE)
-
-## Usage
-
-**Board code:** `cb3se`
-
-In `platformio.ini`:
-
-```ini
-[env:cb3se]
-platform = libretuya
-board = cb3se
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: cb3se
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|-----------|----------|----------|------|------|------
-D0 | P23 | | | | | TDO
-D1 | P14 | | | SCK | |
-D2 | P26 | | | | PWM5 |
-D3 | P24 | | | | PWM4 |
-D4 | P6 | | | | PWM0 |
-D5 | P9 | | | | PWM3 |
-D6 | P0 | UART2_TX | I2C2_SCL | | |
-D7 | P1 | UART2_RX | I2C2_SDA | | |
-D8 | P8 | | | | PWM2 |
-D9 | P7 | | | | PWM1 |
-D10 | P10 | UART1_RX | | | |
-D11 | P11 | UART1_TX | | | |
-D12 | P15 | | | CS | |
-D13 | P22 | | | | | TDI
-D14 | P20 | | I2C1_SCL | | | TCK
-D15 | P17 | | | MISO | |
-D16 | P16 | | | MOSI | |
-A0 | P23, ADC3 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|--------------------|---------
-Bootloader | 0x000000 | 68 KiB / 0x11000 | 0x011000
-App Image | 0x011000 | 1.1 MiB / 0x119000 | 0x12A000
-OTA Image | 0x12A000 | 664 KiB / 0xA6000 | 0x1D0000
-Calibration | 0x1D0000 | 4 KiB / 0x1000 | 0x1D1000
-Network Data | 0x1D1000 | 4 KiB / 0x1000 | 0x1D2000
-TLV Store | 0x1D2000 | 4 KiB / 0x1000 | 0x1D3000
-Key-Value Store | 0x1D3000 | 32 KiB / 0x8000 | 0x1DB000
-User Data | 0x1DB000 | 148 KiB / 0x25000 | 0x200000
-
-Bootloader and app partitions contain CRC16 sums every 32 bytes. That results in the actual flash offsets/sizes not aligned to sector boundaries. To simplify calculations, the values shown in the table (extracted from bootloader's partition table) were aligned to 4096 bytes.
diff --git a/boards/cb3se/pinout_cb3se.svg b/boards/cb3se/pinout_cb3se.svg
deleted file mode 100644
index 4b9e01a..0000000
--- a/boards/cb3se/pinout_cb3se.svg
+++ /dev/null
@@ -1,345 +0,0 @@
-
-
diff --git a/boards/cb3se/pins_arduino.h b/boards/cb3se/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/cb3se/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/cb3se/variant.h b/boards/cb3se/variant.h
deleted file mode 100644
index ad56ccd..0000000
--- a/boards/cb3se/variant.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* This file was auto-generated from cb3se.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 17
-#define NUM_DIGITAL_PINS 17
-#define NUM_ANALOG_INPUTS 1
-#define NUM_ANALOG_OUTPUTS 0
-
-// Analog pins
-// -----------
-#define PIN_A0 0u // GPIO23
-#define A0 PIN_A0
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 0
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 1
-#define PIN_WIRE2_SCL 6u // GPIO0
-#define PIN_WIRE2_SDA 7u // GPIO1
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 2
-#define PIN_SERIAL1_RX 10u // GPIO10
-#define PIN_SERIAL1_TX 11u // GPIO11
-#define PIN_SERIAL2_RX 7u // GPIO1
-#define PIN_SERIAL2_TX 6u // GPIO0
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_ADC3 0u // GPIO23
-#define PIN_FUNCTION_CS 12u // GPIO15
-#define PIN_FUNCTION_MISO 15u // GPIO17
-#define PIN_FUNCTION_MOSI 16u // GPIO16
-#define PIN_FUNCTION_P0 6u // GPIO0
-#define PIN_FUNCTION_P1 7u // GPIO1
-#define PIN_FUNCTION_P6 4u // GPIO6
-#define PIN_FUNCTION_P7 9u // GPIO7
-#define PIN_FUNCTION_P8 8u // GPIO8
-#define PIN_FUNCTION_P9 5u // GPIO9
-#define PIN_FUNCTION_P10 10u // GPIO10
-#define PIN_FUNCTION_P11 11u // GPIO11
-#define PIN_FUNCTION_P14 1u // GPIO14
-#define PIN_FUNCTION_P15 12u // GPIO15
-#define PIN_FUNCTION_P16 16u // GPIO16
-#define PIN_FUNCTION_P17 15u // GPIO17
-#define PIN_FUNCTION_P20 14u // GPIO20
-#define PIN_FUNCTION_P22 13u // GPIO22
-#define PIN_FUNCTION_P23 0u // GPIO23
-#define PIN_FUNCTION_P24 3u // GPIO24
-#define PIN_FUNCTION_P26 2u // GPIO26
-#define PIN_FUNCTION_PWM0 4u // GPIO6
-#define PIN_FUNCTION_PWM1 9u // GPIO7
-#define PIN_FUNCTION_PWM2 8u // GPIO8
-#define PIN_FUNCTION_PWM3 5u // GPIO9
-#define PIN_FUNCTION_PWM4 3u // GPIO24
-#define PIN_FUNCTION_PWM5 2u // GPIO26
-#define PIN_FUNCTION_RX1 10u // GPIO10
-#define PIN_FUNCTION_RX2 7u // GPIO1
-#define PIN_FUNCTION_SCK 1u // GPIO14
-#define PIN_FUNCTION_SCL1 14u // GPIO20
-#define PIN_FUNCTION_SCL2 6u // GPIO0
-#define PIN_FUNCTION_SDA2 7u // GPIO1
-#define PIN_FUNCTION_TX1 11u // GPIO11
-#define PIN_FUNCTION_TX2 6u // GPIO0
diff --git a/boards/generic-bk7231n-qfn32-tuya/README.md b/boards/generic-bk7231n-qfn32-tuya/README.md
deleted file mode 100644
index a6a34c7..0000000
--- a/boards/generic-bk7231n-qfn32-tuya/README.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# Generic - BK7231N (Tuya QFN32)
-
-*by Generic*
-
-[Product page](https://kuba2k2.github.io/libretuya/boards/generic-bk7231n-qfn32-tuya/)
-
-- [General info](../../docs/platform/beken-72xx/README.md)
-- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
-
-Parameter | Value
--------------|----------------------------------
-Board code | `generic-bk7231n-qfn32-tuya`
-MCU | BK7231N
-Manufacturer | Beken
-Series | BK72XX
-Frequency | 120 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 19x GPIO, 6x PWM, 2x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-Bluetooth | BLE v5.1
-
-## Usage
-
-**Board code:** `generic-bk7231n-qfn32-tuya`
-
-In `platformio.ini`:
-
-```ini
-[env:generic-bk7231n-qfn32-tuya]
-platform = libretuya
-board = generic-bk7231n-qfn32-tuya
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: generic-bk7231n-qfn32-tuya
- framework:
- version: dev
-```
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|-----------|----------|----------|------|------|------
-D0 | P0 | UART2_TX | I2C2_SCL | | |
-D1 | P1 | UART2_RX | I2C2_SDA | | |
-D2 | P6 | | | | PWM0 |
-D3 | P7 | | | | PWM1 |
-D4 | P8 | | | | PWM2 |
-D5 | P9 | | | | PWM3 |
-D6 | P10 | UART1_RX | | | |
-D7 | P11 | UART1_TX | | | |
-D8 | P14 | | | SCK | |
-D9 | P15 | | | CS | |
-D10 | P16 | | | MOSI | |
-D11 | P17 | | | MISO | |
-D12 | P20 | | I2C1_SCL | | | TCK
-D13 | P21 | | I2C1_SDA | | | TMS
-D14 | P22 | | | | | TDI
-D15 | P23 | | | | | TDO
-D16 | P24 | | | | PWM4 |
-D17 | P26 | | | | PWM5 |
-D18 | P28 | | | | |
-A0 | P23, ADC3 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|--------------------|---------
-Bootloader | 0x000000 | 68 KiB / 0x11000 | 0x011000
-App Image | 0x011000 | 1.1 MiB / 0x119000 | 0x12A000
-OTA Image | 0x12A000 | 664 KiB / 0xA6000 | 0x1D0000
-Calibration | 0x1D0000 | 4 KiB / 0x1000 | 0x1D1000
-Network Data | 0x1D1000 | 4 KiB / 0x1000 | 0x1D2000
-TLV Store | 0x1D2000 | 4 KiB / 0x1000 | 0x1D3000
-Key-Value Store | 0x1D3000 | 32 KiB / 0x8000 | 0x1DB000
-User Data | 0x1DB000 | 148 KiB / 0x25000 | 0x200000
-
-Bootloader and app partitions contain CRC16 sums every 32 bytes. That results in the actual flash offsets/sizes not aligned to sector boundaries. To simplify calculations, the values shown in the table (extracted from bootloader's partition table) were aligned to 4096 bytes.
diff --git a/boards/generic-bk7231n-qfn32-tuya/pins_arduino.h b/boards/generic-bk7231n-qfn32-tuya/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/generic-bk7231n-qfn32-tuya/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/generic-bk7231n-qfn32-tuya/variant.h b/boards/generic-bk7231n-qfn32-tuya/variant.h
deleted file mode 100644
index 11cd0e6..0000000
--- a/boards/generic-bk7231n-qfn32-tuya/variant.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* This file was auto-generated from generic-bk7231n-qfn32-tuya.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 19
-#define NUM_DIGITAL_PINS 19
-#define NUM_ANALOG_INPUTS 1
-#define NUM_ANALOG_OUTPUTS 0
-
-// Analog pins
-// -----------
-#define PIN_A0 15u // GPIO23
-#define A0 PIN_A0
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 0
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 2
-#define PIN_WIRE1_SCL 12u // GPIO20
-#define PIN_WIRE1_SDA 13u // GPIO21
-#define PIN_WIRE2_SCL 0u // GPIO0
-#define PIN_WIRE2_SDA 1u // GPIO1
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 2
-#define PIN_SERIAL1_RX 6u // GPIO10
-#define PIN_SERIAL1_TX 7u // GPIO11
-#define PIN_SERIAL2_RX 1u // GPIO1
-#define PIN_SERIAL2_TX 0u // GPIO0
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_ADC3 15u // GPIO23
-#define PIN_FUNCTION_CS 9u // GPIO15
-#define PIN_FUNCTION_MISO 11u // GPIO17
-#define PIN_FUNCTION_MOSI 10u // GPIO16
-#define PIN_FUNCTION_P0 0u // GPIO0
-#define PIN_FUNCTION_P1 1u // GPIO1
-#define PIN_FUNCTION_P6 2u // GPIO6
-#define PIN_FUNCTION_P7 3u // GPIO7
-#define PIN_FUNCTION_P8 4u // GPIO8
-#define PIN_FUNCTION_P9 5u // GPIO9
-#define PIN_FUNCTION_P10 6u // GPIO10
-#define PIN_FUNCTION_P11 7u // GPIO11
-#define PIN_FUNCTION_P14 8u // GPIO14
-#define PIN_FUNCTION_P15 9u // GPIO15
-#define PIN_FUNCTION_P16 10u // GPIO16
-#define PIN_FUNCTION_P17 11u // GPIO17
-#define PIN_FUNCTION_P20 12u // GPIO20
-#define PIN_FUNCTION_P21 13u // GPIO21
-#define PIN_FUNCTION_P22 14u // GPIO22
-#define PIN_FUNCTION_P23 15u // GPIO23
-#define PIN_FUNCTION_P24 16u // GPIO24
-#define PIN_FUNCTION_P26 17u // GPIO26
-#define PIN_FUNCTION_P28 18u // GPIO28
-#define PIN_FUNCTION_PWM0 2u // GPIO6
-#define PIN_FUNCTION_PWM1 3u // GPIO7
-#define PIN_FUNCTION_PWM2 4u // GPIO8
-#define PIN_FUNCTION_PWM3 5u // GPIO9
-#define PIN_FUNCTION_PWM4 16u // GPIO24
-#define PIN_FUNCTION_PWM5 17u // GPIO26
-#define PIN_FUNCTION_RX1 6u // GPIO10
-#define PIN_FUNCTION_RX2 1u // GPIO1
-#define PIN_FUNCTION_SCK 8u // GPIO14
-#define PIN_FUNCTION_SCL1 12u // GPIO20
-#define PIN_FUNCTION_SCL2 0u // GPIO0
-#define PIN_FUNCTION_SDA1 13u // GPIO21
-#define PIN_FUNCTION_SDA2 1u // GPIO1
-#define PIN_FUNCTION_TX1 7u // GPIO11
-#define PIN_FUNCTION_TX2 0u // GPIO0
diff --git a/boards/generic-bk7231t-qfn32-tuya/README.md b/boards/generic-bk7231t-qfn32-tuya/README.md
deleted file mode 100644
index 8554058..0000000
--- a/boards/generic-bk7231t-qfn32-tuya/README.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# Generic - BK7231T (Tuya QFN32)
-
-*by Generic*
-
-[Product page](https://kuba2k2.github.io/libretuya/boards/generic-bk7231t-qfn32-tuya/)
-
-- [General info](../../docs/platform/beken-72xx/README.md)
-- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
-
-Parameter | Value
--------------|----------------------------------
-Board code | `generic-bk7231t-qfn32-tuya`
-MCU | BK7231T
-Manufacturer | Beken
-Series | BK72XX
-Frequency | 120 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 19x GPIO, 6x PWM, 2x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-Bluetooth | BLE v4.2
-
-## Usage
-
-**Board code:** `generic-bk7231t-qfn32-tuya`
-
-In `platformio.ini`:
-
-```ini
-[env:generic-bk7231t-qfn32-tuya]
-platform = libretuya
-board = generic-bk7231t-qfn32-tuya
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: generic-bk7231t-qfn32-tuya
- framework:
- version: dev
-```
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|-----------|----------|----------|------|------|------
-D0 | P0 | UART2_TX | I2C2_SCL | | |
-D1 | P1 | UART2_RX | I2C2_SDA | | |
-D2 | P6 | | | | PWM0 |
-D3 | P7 | | | | PWM1 |
-D4 | P8 | | | | PWM2 |
-D5 | P9 | | | | PWM3 |
-D6 | P10 | UART1_RX | | | |
-D7 | P11 | UART1_TX | | | |
-D8 | P14 | | | SCK | |
-D9 | P15 | | | CS | |
-D10 | P16 | | | MOSI | |
-D11 | P17 | | | MISO | |
-D12 | P20 | | I2C1_SCL | | | TCK
-D13 | P21 | | I2C1_SDA | | | TMS
-D14 | P22 | | | | | TDI
-D15 | P23 | | | | | TDO
-D16 | P24 | | | | PWM4 |
-D17 | P26 | | | | PWM5 |
-D18 | P28 | | | | |
-A0 | P23, ADC3 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|--------------------|---------
-Bootloader | 0x000000 | 68 KiB / 0x11000 | 0x011000
-App Image | 0x011000 | 1.1 MiB / 0x121000 | 0x132000
-OTA Image | 0x132000 | 664 KiB / 0xA6000 | 0x1D8000
-Key-Value Store | 0x1D8000 | 32 KiB / 0x8000 | 0x1E0000
-Calibration | 0x1E0000 | 4 KiB / 0x1000 | 0x1E1000
-TLV Store | 0x1E1000 | 4 KiB / 0x1000 | 0x1E2000
-Network Data | 0x1E2000 | 4 KiB / 0x1000 | 0x1E3000
-User Data | 0x1E3000 | 116 KiB / 0x1D000 | 0x200000
-
-Bootloader and app partitions contain CRC16 sums every 32 bytes. That results in the actual flash offsets/sizes not aligned to sector boundaries. To simplify calculations, the values shown in the table (extracted from bootloader's partition table) were aligned to 4096 bytes.
diff --git a/boards/generic-bk7231t-qfn32-tuya/pins_arduino.h b/boards/generic-bk7231t-qfn32-tuya/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/generic-bk7231t-qfn32-tuya/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/generic-bk7231t-qfn32-tuya/variant.h b/boards/generic-bk7231t-qfn32-tuya/variant.h
deleted file mode 100644
index bf4e5ae..0000000
--- a/boards/generic-bk7231t-qfn32-tuya/variant.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* This file was auto-generated from generic-bk7231t-qfn32-tuya.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 19
-#define NUM_DIGITAL_PINS 19
-#define NUM_ANALOG_INPUTS 1
-#define NUM_ANALOG_OUTPUTS 0
-
-// Analog pins
-// -----------
-#define PIN_A0 15u // GPIO23
-#define A0 PIN_A0
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 0
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 2
-#define PIN_WIRE1_SCL 12u // GPIO20
-#define PIN_WIRE1_SDA 13u // GPIO21
-#define PIN_WIRE2_SCL 0u // GPIO0
-#define PIN_WIRE2_SDA 1u // GPIO1
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 2
-#define PIN_SERIAL1_RX 6u // GPIO10
-#define PIN_SERIAL1_TX 7u // GPIO11
-#define PIN_SERIAL2_RX 1u // GPIO1
-#define PIN_SERIAL2_TX 0u // GPIO0
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_ADC3 15u // GPIO23
-#define PIN_FUNCTION_CS 9u // GPIO15
-#define PIN_FUNCTION_MISO 11u // GPIO17
-#define PIN_FUNCTION_MOSI 10u // GPIO16
-#define PIN_FUNCTION_P0 0u // GPIO0
-#define PIN_FUNCTION_P1 1u // GPIO1
-#define PIN_FUNCTION_P6 2u // GPIO6
-#define PIN_FUNCTION_P7 3u // GPIO7
-#define PIN_FUNCTION_P8 4u // GPIO8
-#define PIN_FUNCTION_P9 5u // GPIO9
-#define PIN_FUNCTION_P10 6u // GPIO10
-#define PIN_FUNCTION_P11 7u // GPIO11
-#define PIN_FUNCTION_P14 8u // GPIO14
-#define PIN_FUNCTION_P15 9u // GPIO15
-#define PIN_FUNCTION_P16 10u // GPIO16
-#define PIN_FUNCTION_P17 11u // GPIO17
-#define PIN_FUNCTION_P20 12u // GPIO20
-#define PIN_FUNCTION_P21 13u // GPIO21
-#define PIN_FUNCTION_P22 14u // GPIO22
-#define PIN_FUNCTION_P23 15u // GPIO23
-#define PIN_FUNCTION_P24 16u // GPIO24
-#define PIN_FUNCTION_P26 17u // GPIO26
-#define PIN_FUNCTION_P28 18u // GPIO28
-#define PIN_FUNCTION_PWM0 2u // GPIO6
-#define PIN_FUNCTION_PWM1 3u // GPIO7
-#define PIN_FUNCTION_PWM2 4u // GPIO8
-#define PIN_FUNCTION_PWM3 5u // GPIO9
-#define PIN_FUNCTION_PWM4 16u // GPIO24
-#define PIN_FUNCTION_PWM5 17u // GPIO26
-#define PIN_FUNCTION_RX1 6u // GPIO10
-#define PIN_FUNCTION_RX2 1u // GPIO1
-#define PIN_FUNCTION_SCK 8u // GPIO14
-#define PIN_FUNCTION_SCL1 12u // GPIO20
-#define PIN_FUNCTION_SCL2 0u // GPIO0
-#define PIN_FUNCTION_SDA1 13u // GPIO21
-#define PIN_FUNCTION_SDA2 1u // GPIO1
-#define PIN_FUNCTION_TX1 7u // GPIO11
-#define PIN_FUNCTION_TX2 0u // GPIO0
diff --git a/boards/generic-bk7252/README.md b/boards/generic-bk7252/README.md
deleted file mode 100644
index 6517fed..0000000
--- a/boards/generic-bk7252/README.md
+++ /dev/null
@@ -1,112 +0,0 @@
-# Generic - BK7252
-
-*by Generic*
-
-[Product page](https://kuba2k2.github.io/libretuya/boards/generic-bk7252/)
-
-- [General info](../../docs/platform/beken-72xx/README.md)
-- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
-
-Parameter | Value
--------------|----------------------------------
-Board code | `generic-bk7252`
-MCU | BK7252
-Manufacturer | Beken
-Series | BK72XX
-Frequency | 180 MHz
-Flash size | 4 MiB
-RAM size | 512 KiB
-Voltage | 3.0V - 3.6V
-I/O | 38x GPIO, 4x PWM, 2x UART, 7x ADC
-Wi-Fi | 802.11 b/g/n
-Bluetooth | BLE v5.0
-
-## Usage
-
-**Board code:** `generic-bk7252`
-
-In `platformio.ini`:
-
-```ini
-[env:generic-bk7252]
-platform = libretuya
-board = generic-bk7252
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: generic-bk7252
- framework:
- version: dev
-```
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|-----------|-----------|----------|------|------|----------
-D0 | P0 | UART2_TX | I2C2_SCL | | |
-D1 | P1 | UART2_RX | I2C2_SDA | | |
-D2 | P2 | | | | |
-D3 | P3 | | | | |
-D4 | P4 | | | | |
-D5 | P5 | | | | |
-D6 | P6 | | | | PWM0 |
-D7 | P7 | | | | PWM1 |
-D8 | P10 | UART1_RX | | | |
-D9 | P11 | UART1_TX | | | |
-D10 | P12 | UART1_CTS | | | |
-D11 | P13 | UART1_RTS | | | |
-D12 | P14 | | | SCK | |
-D13 | P15 | | | CS | |
-D14 | P16 | | | MOSI | |
-D15 | P17 | | | MISO | |
-D16 | P18 | | | | |
-D17 | P19 | | | | |
-D18 | P20 | | I2C1_SCL | | | TCK
-D19 | P21 | | I2C1_SDA | | | TMS
-D20 | P22 | | | | | TDI
-D21 | P23 | | | | | TDO
-D22 | P24 | | | | PWM4 |
-D23 | P25 | | | | |
-D24 | P26 | | | | PWM5 |
-D25 | P27 | | | | | DVP_MCLK
-D26 | P28 | | | | |
-D27 | P29 | | | | | DVP_PCLK
-D28 | P30 | | | | | DVP_HSYNC
-D29 | P31 | | | | | DVP_VSYNC
-D30 | P32 | | | | | DVP_PD0
-D31 | P33 | | | | | DVP_PD1
-D32 | P34 | | | | | DVP_PD2
-D33 | P35 | | | | | DVP_PD3
-D34 | P36 | | | | | DVP_PD4
-D35 | P37 | | | | | DVP_PD5
-D36 | P38 | | | | | DVP_PD6
-D37 | P39 | | | | | DVP_PD7
-A1 | P4, ADC1 | | | | |
-A2 | P5, ADC2 | | | | |
-A3 | P23, ADC3 | | | | |
-A4 | P3, ADC5 | | | | |
-A5 | P2, ADC4 | | | | |
-A6 | P12, ADC6 | | | | |
-A7 | P13, ADC7 | | | | |
-
-## Flash memory map
-
-Flash size: 4 MiB / 4,194,304 B / 0x400000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|--------------------|---------
-Bootloader | 0x000000 | 68 KiB / 0x11000 | 0x011000
-App Image | 0x011000 | 1.7 MiB / 0x1BA000 | 0x1CB000
-File System | 0x1CB000 | 1.1 MiB / 0x119000 | 0x2E4000
-Key-Value Store | 0x2E4000 | 32 KiB / 0x8000 | 0x2EC000
-OTA Image | 0x2EC000 | 1.1 MiB / 0x112000 | 0x3FE000
-Calibration | 0x3FE000 | 4 KiB / 0x1000 | 0x3FF000
-TLV Store | 0x3FF000 | 4 KiB / 0x1000 | 0x400000
-
-Bootloader and app partitions contain CRC16 sums every 32 bytes. That results in the actual flash offsets/sizes not aligned to sector boundaries. To simplify calculations, the values shown in the table (extracted from bootloader's partition table) were aligned to 4096 bytes.
diff --git a/boards/generic-bk7252/pins_arduino.h b/boards/generic-bk7252/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/generic-bk7252/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/generic-bk7252/variant.h b/boards/generic-bk7252/variant.h
deleted file mode 100644
index 47c4a52..0000000
--- a/boards/generic-bk7252/variant.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/* This file was auto-generated from generic-bk7252.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 38
-#define NUM_DIGITAL_PINS 38
-#define NUM_ANALOG_INPUTS 7
-#define NUM_ANALOG_OUTPUTS 0
-
-// Analog pins
-// -----------
-#define PIN_A5 2u // GPIO2
-#define PIN_A4 3u // GPIO3
-#define PIN_A1 4u // GPIO4
-#define PIN_A2 5u // GPIO5
-#define PIN_A6 10u // GPIO12
-#define PIN_A7 11u // GPIO13
-#define PIN_A3 21u // GPIO23
-#define A5 PIN_A5
-#define A4 PIN_A4
-#define A1 PIN_A1
-#define A2 PIN_A2
-#define A6 PIN_A6
-#define A7 PIN_A7
-#define A3 PIN_A3
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 0
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 2
-#define PIN_WIRE1_SCL 18u // GPIO20
-#define PIN_WIRE1_SDA 19u // GPIO21
-#define PIN_WIRE2_SCL 0u // GPIO0
-#define PIN_WIRE2_SDA 1u // GPIO1
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 2
-#define PIN_SERIAL1_CTS 10u // GPIO12
-#define PIN_SERIAL1_RTS 11u // GPIO13
-#define PIN_SERIAL1_RX 8u // GPIO10
-#define PIN_SERIAL1_TX 9u // GPIO11
-#define PIN_SERIAL2_RX 1u // GPIO1
-#define PIN_SERIAL2_TX 0u // GPIO0
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_ADC1 4u // GPIO4
-#define PIN_FUNCTION_ADC2 5u // GPIO5
-#define PIN_FUNCTION_ADC3 21u // GPIO23
-#define PIN_FUNCTION_ADC4 2u // GPIO2
-#define PIN_FUNCTION_ADC5 3u // GPIO3
-#define PIN_FUNCTION_ADC6 10u // GPIO12
-#define PIN_FUNCTION_ADC7 11u // GPIO13
-#define PIN_FUNCTION_CS 13u // GPIO15
-#define PIN_FUNCTION_CTS1 10u // GPIO12
-#define PIN_FUNCTION_MISO 15u // GPIO17
-#define PIN_FUNCTION_MOSI 14u // GPIO16
-#define PIN_FUNCTION_P0 0u // GPIO0
-#define PIN_FUNCTION_P1 1u // GPIO1
-#define PIN_FUNCTION_P2 2u // GPIO2
-#define PIN_FUNCTION_P3 3u // GPIO3
-#define PIN_FUNCTION_P4 4u // GPIO4
-#define PIN_FUNCTION_P5 5u // GPIO5
-#define PIN_FUNCTION_P6 6u // GPIO6
-#define PIN_FUNCTION_P7 7u // GPIO7
-#define PIN_FUNCTION_P10 8u // GPIO10
-#define PIN_FUNCTION_P11 9u // GPIO11
-#define PIN_FUNCTION_P12 10u // GPIO12
-#define PIN_FUNCTION_P13 11u // GPIO13
-#define PIN_FUNCTION_P14 12u // GPIO14
-#define PIN_FUNCTION_P15 13u // GPIO15
-#define PIN_FUNCTION_P16 14u // GPIO16
-#define PIN_FUNCTION_P17 15u // GPIO17
-#define PIN_FUNCTION_P18 16u // GPIO18
-#define PIN_FUNCTION_P19 17u // GPIO19
-#define PIN_FUNCTION_P20 18u // GPIO20
-#define PIN_FUNCTION_P21 19u // GPIO21
-#define PIN_FUNCTION_P22 20u // GPIO22
-#define PIN_FUNCTION_P23 21u // GPIO23
-#define PIN_FUNCTION_P24 22u // GPIO24
-#define PIN_FUNCTION_P25 23u // GPIO25
-#define PIN_FUNCTION_P26 24u // GPIO26
-#define PIN_FUNCTION_P27 25u // GPIO27
-#define PIN_FUNCTION_P28 26u // GPIO28
-#define PIN_FUNCTION_P29 27u // GPIO29
-#define PIN_FUNCTION_P30 28u // GPIO30
-#define PIN_FUNCTION_P31 29u // GPIO31
-#define PIN_FUNCTION_P32 30u // GPIO32
-#define PIN_FUNCTION_P33 31u // GPIO33
-#define PIN_FUNCTION_P34 32u // GPIO34
-#define PIN_FUNCTION_P35 33u // GPIO35
-#define PIN_FUNCTION_P36 34u // GPIO36
-#define PIN_FUNCTION_P37 35u // GPIO37
-#define PIN_FUNCTION_P38 36u // GPIO38
-#define PIN_FUNCTION_P39 37u // GPIO39
-#define PIN_FUNCTION_PWM0 6u // GPIO6
-#define PIN_FUNCTION_PWM1 7u // GPIO7
-#define PIN_FUNCTION_PWM4 22u // GPIO24
-#define PIN_FUNCTION_PWM5 24u // GPIO26
-#define PIN_FUNCTION_RTS1 11u // GPIO13
-#define PIN_FUNCTION_RX1 8u // GPIO10
-#define PIN_FUNCTION_RX2 1u // GPIO1
-#define PIN_FUNCTION_SCK 12u // GPIO14
-#define PIN_FUNCTION_SCL1 18u // GPIO20
-#define PIN_FUNCTION_SCL2 0u // GPIO0
-#define PIN_FUNCTION_SDA1 19u // GPIO21
-#define PIN_FUNCTION_SDA2 1u // GPIO1
-#define PIN_FUNCTION_TX1 9u // GPIO11
-#define PIN_FUNCTION_TX2 0u // GPIO0
diff --git a/boards/generic-rtl8710bn-2mb-468k/README.md b/boards/generic-rtl8710bn-2mb-468k/README.md
deleted file mode 100644
index 8d692ca..0000000
--- a/boards/generic-rtl8710bn-2mb-468k/README.md
+++ /dev/null
@@ -1,91 +0,0 @@
-# Generic - RTL8710BN (2M/468k)
-
-*by Generic*
-
-[Product page](https://kuba2k2.github.io/libretuya/boards/generic-rtl8710bn-2mb-468k/)
-
-- [General info](../../docs/platform/realtek-amb/README.md)
-- [Flashing guide](../../docs/platform/realtek-ambz/flashing.md)
-- [Debugging](../../docs/platform/realtek-ambz/debugging.md)
-
-Parameter | Value
--------------|----------------------------------
-Board code | `generic-rtl8710bn-2mb-468k`
-MCU | RTL8710BN
-Manufacturer | Realtek
-Series | AmebaZ
-Frequency | 125 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 17x GPIO, 6x PWM, 2x UART, 2x ADC
-Wi-Fi | 802.11 b/g/n
-
-## Usage
-
-**Board code:** `generic-rtl8710bn-2mb-468k`
-
-In `platformio.ini`:
-
-```ini
-[env:generic-rtl8710bn-2mb-468k]
-platform = libretuya
-board = generic-rtl8710bn-2mb-468k
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: generic-rtl8710bn-2mb-468k
- framework:
- version: dev
-```
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|------------|-----------|----------|----------------------|------|------
-D0 | PA00 | | | | PWM2 |
-D1 | PA05 | | | | PWM4 |
-D2 | PA06 | | | FCS | |
-D3 | PA07 | | | FD1 | |
-D4 | PA08 | | | FD2 | |
-D5 | PA09 | | | FD0 | |
-D6 | PA10 | | | FSCK | |
-D7 | PA11 | | | FD3 | |
-D8 | PA12 | | | | PWM3 |
-D9 | PA14 | | | | PWM0 | SWCLK
-D10 | PA15 | | | | PWM1 | SWDIO
-D11 | PA18 | UART0_RX | I2C1_SCL | SPI0_SCK, SPI1_SCK | |
-D12 | PA19 | UART0_CTS | I2C0_SDA | SPI0_CS, SPI1_CS | |
-D13 | PA22 | UART0_RTS | I2C0_SCL | SPI0_MISO, SPI1_MISO | PWM5 |
-D14 | PA23 | UART0_TX | I2C1_SDA | SPI0_MOSI, SPI1_MOSI | PWM0 |
-D15 | PA29 | UART2_RX | I2C0_SCL | | PWM4 |
-D16 | PA30 | UART2_TX | I2C0_SDA | | PWM4 |
-A0 | PA19, ADC1 | | | | |
-A1 | ADC2 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|-------------------|---------
-Boot XIP | 0x000000 | 16 KiB / 0x4000 | 0x004000
-Boot RAM | 0x004000 | 16 KiB / 0x4000 | 0x008000
-(reserved) | 0x008000 | 4 KiB / 0x1000 | 0x009000
-System Data | 0x009000 | 4 KiB / 0x1000 | 0x00A000
-Calibration | 0x00A000 | 4 KiB / 0x1000 | 0x00B000
-OTA1 Image | 0x00B000 | 468 KiB / 0x75000 | 0x080000
-OTA2 Image | 0x080000 | 468 KiB / 0x75000 | 0x0F5000
-Key-Value Store | 0x0F5000 | 24 KiB / 0x6000 | 0x0FB000
-User Data | 0x0FB000 | 1 MiB / 0x104000 | 0x1FF000
-RDP | 0x1FF000 | 4 KiB / 0x1000 | 0x200000
-
-RDP is most likely not used in Tuya firmwares, as the System Data partition contains an incorrect offset 0xFF000 for RDP, which is in the middle of OTA2 image.
-
-Additionally, Tuya firmware uses an encrypted KV or file storage, which resides at the end of flash memory. This seems to overlap system RDP area.
diff --git a/boards/generic-rtl8710bn-2mb-468k/pins_arduino.h b/boards/generic-rtl8710bn-2mb-468k/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/generic-rtl8710bn-2mb-468k/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/generic-rtl8710bn-2mb-468k/variant.h b/boards/generic-rtl8710bn-2mb-468k/variant.h
deleted file mode 100644
index 8906bd4..0000000
--- a/boards/generic-rtl8710bn-2mb-468k/variant.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/* This file was auto-generated from generic-rtl8710bn-2mb-468k.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 18
-#define NUM_DIGITAL_PINS 17
-#define NUM_ANALOG_INPUTS 2
-#define NUM_ANALOG_OUTPUTS 0
-
-// Analog pins
-// -----------
-#define PIN_A0 12u // PA_19
-#define PIN_A1 17u // AD_2
-#define A0 PIN_A0
-#define A1 PIN_A1
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 2
-#define PIN_SPI0_CS 12u // PA_19
-#define PIN_SPI0_MISO 13u // PA_22
-#define PIN_SPI0_MOSI 14u // PA_23
-#define PIN_SPI0_SCK 11u // PA_18
-#define PIN_SPI1_CS 12u // PA_19
-#define PIN_SPI1_MISO 13u // PA_22
-#define PIN_SPI1_MOSI 14u // PA_23
-#define PIN_SPI1_SCK 11u // PA_18
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 2
-#define PIN_WIRE0_SCL_0 13u // PA_22
-#define PIN_WIRE0_SCL_1 15u // PA_29
-#define PIN_WIRE0_SDA_0 12u // PA_19
-#define PIN_WIRE0_SDA_1 16u // PA_30
-#define PIN_WIRE1_SCL 11u // PA_18
-#define PIN_WIRE1_SDA 14u // PA_23
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 2
-#define PIN_SERIAL0_CTS 12u // PA_19
-#define PIN_SERIAL0_RTS 13u // PA_22
-#define PIN_SERIAL0_RX 11u // PA_18
-#define PIN_SERIAL0_TX 14u // PA_23
-#define PIN_SERIAL2_RX 15u // PA_29
-#define PIN_SERIAL2_TX 16u // PA_30
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_ADC1 12u // PA_19
-#define PIN_FUNCTION_ADC2 17u // AD_2
-#define PIN_FUNCTION_CS0 12u // PA_19
-#define PIN_FUNCTION_CS1 12u // PA_19
-#define PIN_FUNCTION_CTS0 12u // PA_19
-#define PIN_FUNCTION_FCS 2u // PA_6
-#define PIN_FUNCTION_FD0 5u // PA_9
-#define PIN_FUNCTION_FD1 3u // PA_7
-#define PIN_FUNCTION_FD2 4u // PA_8
-#define PIN_FUNCTION_FD3 7u // PA_11
-#define PIN_FUNCTION_FSCK 6u // PA_10
-#define PIN_FUNCTION_MISO0 13u // PA_22
-#define PIN_FUNCTION_MISO1 13u // PA_22
-#define PIN_FUNCTION_MOSI0 14u // PA_23
-#define PIN_FUNCTION_MOSI1 14u // PA_23
-#define PIN_FUNCTION_PA00 0u // PA_0
-#define PIN_FUNCTION_PA05 1u // PA_5
-#define PIN_FUNCTION_PA06 2u // PA_6
-#define PIN_FUNCTION_PA07 3u // PA_7
-#define PIN_FUNCTION_PA08 4u // PA_8
-#define PIN_FUNCTION_PA09 5u // PA_9
-#define PIN_FUNCTION_PA10 6u // PA_10
-#define PIN_FUNCTION_PA11 7u // PA_11
-#define PIN_FUNCTION_PA12 8u // PA_12
-#define PIN_FUNCTION_PA14 9u // PA_14
-#define PIN_FUNCTION_PA15 10u // PA_15
-#define PIN_FUNCTION_PA18 11u // PA_18
-#define PIN_FUNCTION_PA19 12u // PA_19
-#define PIN_FUNCTION_PA22 13u // PA_22
-#define PIN_FUNCTION_PA23 14u // PA_23
-#define PIN_FUNCTION_PA29 15u // PA_29
-#define PIN_FUNCTION_PA30 16u // PA_30
-#define PIN_FUNCTION_RTS0 13u // PA_22
-#define PIN_FUNCTION_RX0 11u // PA_18
-#define PIN_FUNCTION_RX2 15u // PA_29
-#define PIN_FUNCTION_SCK0 11u // PA_18
-#define PIN_FUNCTION_SCK1 11u // PA_18
-#define PIN_FUNCTION_TX0 14u // PA_23
-#define PIN_FUNCTION_TX2 16u // PA_30
diff --git a/boards/generic-rtl8710bn-2mb-788k/README.md b/boards/generic-rtl8710bn-2mb-788k/README.md
deleted file mode 100644
index d2d7c83..0000000
--- a/boards/generic-rtl8710bn-2mb-788k/README.md
+++ /dev/null
@@ -1,91 +0,0 @@
-# Generic - RTL8710BN (2M/788k)
-
-*by Generic*
-
-[Product page](https://kuba2k2.github.io/libretuya/boards/generic-rtl8710bn-2mb-788k/)
-
-- [General info](../../docs/platform/realtek-amb/README.md)
-- [Flashing guide](../../docs/platform/realtek-ambz/flashing.md)
-- [Debugging](../../docs/platform/realtek-ambz/debugging.md)
-
-Parameter | Value
--------------|----------------------------------
-Board code | `generic-rtl8710bn-2mb-788k`
-MCU | RTL8710BN
-Manufacturer | Realtek
-Series | AmebaZ
-Frequency | 125 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 17x GPIO, 6x PWM, 2x UART, 2x ADC
-Wi-Fi | 802.11 b/g/n
-
-## Usage
-
-**Board code:** `generic-rtl8710bn-2mb-788k`
-
-In `platformio.ini`:
-
-```ini
-[env:generic-rtl8710bn-2mb-788k]
-platform = libretuya
-board = generic-rtl8710bn-2mb-788k
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: generic-rtl8710bn-2mb-788k
- framework:
- version: dev
-```
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|------------|-----------|----------|----------------------|------|------
-D0 | PA00 | | | | PWM2 |
-D1 | PA05 | | | | PWM4 |
-D2 | PA06 | | | FCS | |
-D3 | PA07 | | | FD1 | |
-D4 | PA08 | | | FD2 | |
-D5 | PA09 | | | FD0 | |
-D6 | PA10 | | | FSCK | |
-D7 | PA11 | | | FD3 | |
-D8 | PA12 | | | | PWM3 |
-D9 | PA14 | | | | PWM0 | SWCLK
-D10 | PA15 | | | | PWM1 | SWDIO
-D11 | PA18 | UART0_RX | I2C1_SCL | SPI0_SCK, SPI1_SCK | |
-D12 | PA19 | UART0_CTS | I2C0_SDA | SPI0_CS, SPI1_CS | |
-D13 | PA22 | UART0_RTS | I2C0_SCL | SPI0_MISO, SPI1_MISO | PWM5 |
-D14 | PA23 | UART0_TX | I2C1_SDA | SPI0_MOSI, SPI1_MOSI | PWM0 |
-D15 | PA29 | UART2_RX | I2C0_SCL | | PWM4 |
-D16 | PA30 | UART2_TX | I2C0_SDA | | PWM4 |
-A0 | PA19, ADC1 | | | | |
-A1 | ADC2 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|-------------------|---------
-Boot XIP | 0x000000 | 16 KiB / 0x4000 | 0x004000
-Boot RAM | 0x004000 | 16 KiB / 0x4000 | 0x008000
-(reserved) | 0x008000 | 4 KiB / 0x1000 | 0x009000
-System Data | 0x009000 | 4 KiB / 0x1000 | 0x00A000
-Calibration | 0x00A000 | 4 KiB / 0x1000 | 0x00B000
-OTA1 Image | 0x00B000 | 788 KiB / 0xC5000 | 0x0D0000
-OTA2 Image | 0x0D0000 | 788 KiB / 0xC5000 | 0x195000
-Key-Value Store | 0x195000 | 24 KiB / 0x6000 | 0x19B000
-User Data | 0x19B000 | 400 KiB / 0x64000 | 0x1FF000
-RDP | 0x1FF000 | 4 KiB / 0x1000 | 0x200000
-
-RDP is most likely not used in Tuya firmwares, as the System Data partition contains an incorrect offset 0xFF000 for RDP, which is in the middle of OTA2 image.
-
-Additionally, Tuya firmware uses an encrypted KV or file storage, which resides at the end of flash memory. This seems to overlap system RDP area.
diff --git a/boards/generic-rtl8710bn-2mb-788k/pins_arduino.h b/boards/generic-rtl8710bn-2mb-788k/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/generic-rtl8710bn-2mb-788k/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/generic-rtl8710bn-2mb-788k/variant.h b/boards/generic-rtl8710bn-2mb-788k/variant.h
deleted file mode 100644
index cf285a0..0000000
--- a/boards/generic-rtl8710bn-2mb-788k/variant.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/* This file was auto-generated from generic-rtl8710bn-2mb-788k.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 18
-#define NUM_DIGITAL_PINS 17
-#define NUM_ANALOG_INPUTS 2
-#define NUM_ANALOG_OUTPUTS 0
-
-// Analog pins
-// -----------
-#define PIN_A0 12u // PA_19
-#define PIN_A1 17u // AD_2
-#define A0 PIN_A0
-#define A1 PIN_A1
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 2
-#define PIN_SPI0_CS 12u // PA_19
-#define PIN_SPI0_MISO 13u // PA_22
-#define PIN_SPI0_MOSI 14u // PA_23
-#define PIN_SPI0_SCK 11u // PA_18
-#define PIN_SPI1_CS 12u // PA_19
-#define PIN_SPI1_MISO 13u // PA_22
-#define PIN_SPI1_MOSI 14u // PA_23
-#define PIN_SPI1_SCK 11u // PA_18
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 2
-#define PIN_WIRE0_SCL_0 13u // PA_22
-#define PIN_WIRE0_SCL_1 15u // PA_29
-#define PIN_WIRE0_SDA_0 12u // PA_19
-#define PIN_WIRE0_SDA_1 16u // PA_30
-#define PIN_WIRE1_SCL 11u // PA_18
-#define PIN_WIRE1_SDA 14u // PA_23
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 2
-#define PIN_SERIAL0_CTS 12u // PA_19
-#define PIN_SERIAL0_RTS 13u // PA_22
-#define PIN_SERIAL0_RX 11u // PA_18
-#define PIN_SERIAL0_TX 14u // PA_23
-#define PIN_SERIAL2_RX 15u // PA_29
-#define PIN_SERIAL2_TX 16u // PA_30
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_ADC1 12u // PA_19
-#define PIN_FUNCTION_ADC2 17u // AD_2
-#define PIN_FUNCTION_CS0 12u // PA_19
-#define PIN_FUNCTION_CS1 12u // PA_19
-#define PIN_FUNCTION_CTS0 12u // PA_19
-#define PIN_FUNCTION_FCS 2u // PA_6
-#define PIN_FUNCTION_FD0 5u // PA_9
-#define PIN_FUNCTION_FD1 3u // PA_7
-#define PIN_FUNCTION_FD2 4u // PA_8
-#define PIN_FUNCTION_FD3 7u // PA_11
-#define PIN_FUNCTION_FSCK 6u // PA_10
-#define PIN_FUNCTION_MISO0 13u // PA_22
-#define PIN_FUNCTION_MISO1 13u // PA_22
-#define PIN_FUNCTION_MOSI0 14u // PA_23
-#define PIN_FUNCTION_MOSI1 14u // PA_23
-#define PIN_FUNCTION_PA00 0u // PA_0
-#define PIN_FUNCTION_PA05 1u // PA_5
-#define PIN_FUNCTION_PA06 2u // PA_6
-#define PIN_FUNCTION_PA07 3u // PA_7
-#define PIN_FUNCTION_PA08 4u // PA_8
-#define PIN_FUNCTION_PA09 5u // PA_9
-#define PIN_FUNCTION_PA10 6u // PA_10
-#define PIN_FUNCTION_PA11 7u // PA_11
-#define PIN_FUNCTION_PA12 8u // PA_12
-#define PIN_FUNCTION_PA14 9u // PA_14
-#define PIN_FUNCTION_PA15 10u // PA_15
-#define PIN_FUNCTION_PA18 11u // PA_18
-#define PIN_FUNCTION_PA19 12u // PA_19
-#define PIN_FUNCTION_PA22 13u // PA_22
-#define PIN_FUNCTION_PA23 14u // PA_23
-#define PIN_FUNCTION_PA29 15u // PA_29
-#define PIN_FUNCTION_PA30 16u // PA_30
-#define PIN_FUNCTION_RTS0 13u // PA_22
-#define PIN_FUNCTION_RX0 11u // PA_18
-#define PIN_FUNCTION_RX2 15u // PA_29
-#define PIN_FUNCTION_SCK0 11u // PA_18
-#define PIN_FUNCTION_SCK1 11u // PA_18
-#define PIN_FUNCTION_TX0 14u // PA_23
-#define PIN_FUNCTION_TX2 16u // PA_30
diff --git a/boards/generic-rtl8710bx-4mb-980k/README.md b/boards/generic-rtl8710bx-4mb-980k/README.md
deleted file mode 100644
index 403467d..0000000
--- a/boards/generic-rtl8710bx-4mb-980k/README.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# Generic - RTL8710BX (4M/980k)
-
-*by Generic*
-
-[Product page](https://kuba2k2.github.io/libretuya/boards/generic-rtl8710bx-4mb-980k/)
-
-- [General info](../../docs/platform/realtek-amb/README.md)
-- [Flashing guide](../../docs/platform/realtek-ambz/flashing.md)
-- [Debugging](../../docs/platform/realtek-ambz/debugging.md)
-
-Parameter | Value
--------------|----------------------------------
-Board code | `generic-rtl8710bx-4mb-980k`
-MCU | RTL8710BX
-Manufacturer | Realtek
-Series | AmebaZ
-Frequency | 62.5 MHz
-Flash size | 4 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 17x GPIO, 6x PWM, 2x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-
-## Usage
-
-**Board code:** `generic-rtl8710bx-4mb-980k`
-
-In `platformio.ini`:
-
-```ini
-[env:generic-rtl8710bx-4mb-980k]
-platform = libretuya
-board = generic-rtl8710bx-4mb-980k
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: generic-rtl8710bx-4mb-980k
- framework:
- version: dev
-```
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|------------|-----------|----------|----------------------|------|------
-D0 | PA00 | | | | PWM2 |
-D1 | PA05 | | | | PWM4 |
-D2 | PA06 | | | FCS | |
-D3 | PA07 | | | FD1 | |
-D4 | PA08 | | | FD2 | |
-D5 | PA09 | | | FD0 | |
-D6 | PA10 | | | FSCK | |
-D7 | PA11 | | | FD3 | |
-D8 | PA12 | | | | PWM3 |
-D9 | PA14 | | | | PWM0 | SWCLK
-D10 | PA15 | | | | PWM1 | SWDIO
-D11 | PA18 | UART0_RX | I2C1_SCL | SPI0_SCK, SPI1_SCK | |
-D12 | PA19 | UART0_CTS | I2C0_SDA | SPI0_CS, SPI1_CS | |
-D13 | PA22 | UART0_RTS | I2C0_SCL | SPI0_MISO, SPI1_MISO | PWM5 |
-D14 | PA23 | UART0_TX | I2C1_SDA | SPI0_MOSI, SPI1_MOSI | PWM0 |
-D15 | PA29 | UART2_RX | I2C0_SCL | | PWM4 |
-D16 | PA30 | UART2_TX | I2C0_SDA | | PWM4 |
-A0 | PA19, ADC1 | | | | |
-
-## Flash memory map
-
-Flash size: 4 MiB / 4,194,304 B / 0x400000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|-------------------|---------
-Boot XIP | 0x000000 | 16 KiB / 0x4000 | 0x004000
-Boot RAM | 0x004000 | 16 KiB / 0x4000 | 0x008000
-(reserved) | 0x008000 | 4 KiB / 0x1000 | 0x009000
-System Data | 0x009000 | 4 KiB / 0x1000 | 0x00A000
-Calibration | 0x00A000 | 4 KiB / 0x1000 | 0x00B000
-OTA1 Image | 0x00B000 | 980 KiB / 0xF5000 | 0x100000
-OTA2 Image | 0x100000 | 980 KiB / 0xF5000 | 0x1F5000
-Key-Value Store | 0x1F5000 | 32 KiB / 0x8000 | 0x1FD000
-User Data | 0x1FD000 | 2 MiB / 0x202000 | 0x3FF000
-RDP | 0x3FF000 | 4 KiB / 0x1000 | 0x400000
-
-RDP is most likely not used in Tuya firmwares, as the System Data partition contains an incorrect offset 0xFF000 for RDP, which is in the middle of OTA2 image.
-
-Additionally, Tuya firmware uses an encrypted KV or file storage, which resides at the end of flash memory. This seems to overlap system RDP area.
-
-## Information
-
-This is a generic board definition for RTL8710BX with 4 MiB of flash. It has a bigger application partition size (980 KiB). The used bootloader is also different from the standard Tuya one.
-
-It can be found in [Ezviz T31 smart plug](https://www.ezviz.com/product/T31/2021) - bare chip soldered onto the manufacturer-made PCB. The plug is not Tuya/SmartLife-compatible and has a 25Q32CSIG flash chip. Refer to [libretuya#23](https://github.com/kuba2k2/libretuya/issues/23) for photos and more information.
-
-Note that stock firmware seems to use smaller app images (0x80000 / 512 KiB). After 0x180000 some product-test data and device logs can be found. Because the OTA2 offset is 0x100000, the board definition was configured to use all available space.
diff --git a/boards/generic-rtl8710bx-4mb-980k/pins_arduino.h b/boards/generic-rtl8710bx-4mb-980k/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/generic-rtl8710bx-4mb-980k/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/generic-rtl8710bx-4mb-980k/variant.h b/boards/generic-rtl8710bx-4mb-980k/variant.h
deleted file mode 100644
index dab27a9..0000000
--- a/boards/generic-rtl8710bx-4mb-980k/variant.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* This file was auto-generated from generic-rtl8710bx-4mb-980k.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 17
-#define NUM_DIGITAL_PINS 17
-#define NUM_ANALOG_INPUTS 1
-#define NUM_ANALOG_OUTPUTS 0
-
-// Analog pins
-// -----------
-#define PIN_A0 12u // PA_19
-#define A0 PIN_A0
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 2
-#define PIN_SPI0_CS 12u // PA_19
-#define PIN_SPI0_MISO 13u // PA_22
-#define PIN_SPI0_MOSI 14u // PA_23
-#define PIN_SPI0_SCK 11u // PA_18
-#define PIN_SPI1_CS 12u // PA_19
-#define PIN_SPI1_MISO 13u // PA_22
-#define PIN_SPI1_MOSI 14u // PA_23
-#define PIN_SPI1_SCK 11u // PA_18
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 2
-#define PIN_WIRE0_SCL_0 13u // PA_22
-#define PIN_WIRE0_SCL_1 15u // PA_29
-#define PIN_WIRE0_SDA_0 12u // PA_19
-#define PIN_WIRE0_SDA_1 16u // PA_30
-#define PIN_WIRE1_SCL 11u // PA_18
-#define PIN_WIRE1_SDA 14u // PA_23
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 2
-#define PIN_SERIAL0_CTS 12u // PA_19
-#define PIN_SERIAL0_RTS 13u // PA_22
-#define PIN_SERIAL0_RX 11u // PA_18
-#define PIN_SERIAL0_TX 14u // PA_23
-#define PIN_SERIAL2_RX 15u // PA_29
-#define PIN_SERIAL2_TX 16u // PA_30
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_ADC1 12u // PA_19
-#define PIN_FUNCTION_CS0 12u // PA_19
-#define PIN_FUNCTION_CS1 12u // PA_19
-#define PIN_FUNCTION_CTS0 12u // PA_19
-#define PIN_FUNCTION_FCS 2u // PA_6
-#define PIN_FUNCTION_FD0 5u // PA_9
-#define PIN_FUNCTION_FD1 3u // PA_7
-#define PIN_FUNCTION_FD2 4u // PA_8
-#define PIN_FUNCTION_FD3 7u // PA_11
-#define PIN_FUNCTION_FSCK 6u // PA_10
-#define PIN_FUNCTION_MISO0 13u // PA_22
-#define PIN_FUNCTION_MISO1 13u // PA_22
-#define PIN_FUNCTION_MOSI0 14u // PA_23
-#define PIN_FUNCTION_MOSI1 14u // PA_23
-#define PIN_FUNCTION_PA00 0u // PA_0
-#define PIN_FUNCTION_PA05 1u // PA_5
-#define PIN_FUNCTION_PA06 2u // PA_6
-#define PIN_FUNCTION_PA07 3u // PA_7
-#define PIN_FUNCTION_PA08 4u // PA_8
-#define PIN_FUNCTION_PA09 5u // PA_9
-#define PIN_FUNCTION_PA10 6u // PA_10
-#define PIN_FUNCTION_PA11 7u // PA_11
-#define PIN_FUNCTION_PA12 8u // PA_12
-#define PIN_FUNCTION_PA14 9u // PA_14
-#define PIN_FUNCTION_PA15 10u // PA_15
-#define PIN_FUNCTION_PA18 11u // PA_18
-#define PIN_FUNCTION_PA19 12u // PA_19
-#define PIN_FUNCTION_PA22 13u // PA_22
-#define PIN_FUNCTION_PA23 14u // PA_23
-#define PIN_FUNCTION_PA29 15u // PA_29
-#define PIN_FUNCTION_PA30 16u // PA_30
-#define PIN_FUNCTION_RTS0 13u // PA_22
-#define PIN_FUNCTION_RX0 11u // PA_18
-#define PIN_FUNCTION_RX2 15u // PA_29
-#define PIN_FUNCTION_SCK0 11u // PA_18
-#define PIN_FUNCTION_SCK1 11u // PA_18
-#define PIN_FUNCTION_TX0 14u // PA_23
-#define PIN_FUNCTION_TX2 16u // PA_30
diff --git a/boards/generic-rtl8720cf-2mb-992k/README.md b/boards/generic-rtl8720cf-2mb-992k/README.md
deleted file mode 100644
index bab705c..0000000
--- a/boards/generic-rtl8720cf-2mb-992k/README.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# Generic - RTL8720CF (2M/992k)
-
-*by Generic*
-
-[Product page](https://kuba2k2.github.io/libretuya/boards/generic-rtl8720cf-2mb-992k/)
-
-- [General info](../../docs/platform/realtek-amb/README.md)
-
-Parameter | Value
--------------|-----------------------------
-Board code | `generic-rtl8720cf-2mb-992k`
-MCU | RTL8720CF
-Manufacturer | Realtek
-Series | AmebaZ2
-Frequency | 100 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 20x GPIO, 8x PWM, 3x UART
-Wi-Fi | 802.11 b/g/n
-BLE | v4.2
-
-## Usage
-
-**Board code:** `generic-rtl8720cf-2mb-992k`
-
-In `platformio.ini`:
-
-```ini
-[env:generic-rtl8720cf-2mb-992k]
-platform = libretuya
-board = generic-rtl8720cf-2mb-992k
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: generic-rtl8720cf-2mb-992k
- framework:
- version: dev
-```
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|-------------------|---------
-Partition Table | 0x000000 | 4 KiB / 0x1000 | 0x001000
-System Data | 0x001000 | 4 KiB / 0x1000 | 0x002000
-Calibration | 0x002000 | 4 KiB / 0x1000 | 0x003000
-(reserved) | 0x003000 | 4 KiB / 0x1000 | 0x004000
-Boot Image | 0x004000 | 32 KiB / 0x8000 | 0x00C000
-OTA1 Image | 0x00C000 | 992 KiB / 0xF8000 | 0x104000
-OTA2 Image | 0x104000 | 992 KiB / 0xF8000 | 0x1FC000
-Key-Value Store | 0x1FC000 | 8 KiB / 0x2000 | 0x1FE000
-User Data | 0x1FE000 | 8 KiB / 0x2000 | 0x200000
diff --git a/boards/generic-rtl8720cf-2mb-992k/pins_arduino.h b/boards/generic-rtl8720cf-2mb-992k/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/generic-rtl8720cf-2mb-992k/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/generic-rtl8720cf-2mb-992k/variant.h b/boards/generic-rtl8720cf-2mb-992k/variant.h
deleted file mode 100644
index 9cd90ec..0000000
--- a/boards/generic-rtl8720cf-2mb-992k/variant.h
+++ /dev/null
@@ -1,7 +0,0 @@
-/* This file was auto-generated from generic-rtl8720cf-2mb-992k.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
diff --git a/boards/lsc-lma35-t/README.md b/boards/lsc-lma35-t/README.md
deleted file mode 100644
index df042fc..0000000
--- a/boards/lsc-lma35-t/README.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# LSC LMA35 BK7231T
-
-*by Unknown*
-
-[Product page](https://www.action.com/de-at/p/lsc-smart-connect-outdoor-led-streifen/)
-
-- [General info](../../docs/platform/beken-72xx/README.md)
-- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
-
-Parameter | Value
--------------|----------------------------------
-Board code | `lsc-lma35-t`
-MCU | BK7231T
-Manufacturer | Beken
-Series | BK72XX
-Frequency | 120 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 15x GPIO, 6x PWM, 2x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-Bluetooth | BLE v4.2
-
-## Usage
-
-**Board code:** `lsc-lma35-t`
-
-In `platformio.ini`:
-
-```ini
-[env:lsc-lma35-t]
-platform = libretuya
-board = lsc-lma35-t
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: lsc-lma35-t
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|-----------|----------|----------|------|------|------
-D0 | P26 | | | | PWM5 |
-D1 | P14 | | | SCK | |
-D2 | P16 | | | MOSI | |
-D3 | P24 | | | | PWM4 |
-D4 | P22 | | | | | TDI
-D5 | P0 | UART2_TX | I2C2_SCL | | |
-D6 | P23 | | | | | TDO
-D7 | P8 | | | | PWM2 |
-D8 | P9 | | | | PWM3 |
-D9 | P21 | | I2C1_SDA | | | TMS
-D10 | P6 | | | | PWM0 |
-D11 | P7 | | | | PWM1 |
-D12 | P10 | UART1_RX | | | |
-D13 | P11 | UART1_TX | | | |
-D14 | P1 | UART2_RX | I2C2_SDA | | |
-A0 | P23, ADC3 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|--------------------|---------
-Bootloader | 0x000000 | 68 KiB / 0x11000 | 0x011000
-App Image | 0x011000 | 1.1 MiB / 0x121000 | 0x132000
-OTA Image | 0x132000 | 664 KiB / 0xA6000 | 0x1D8000
-Key-Value Store | 0x1D8000 | 32 KiB / 0x8000 | 0x1E0000
-Calibration | 0x1E0000 | 4 KiB / 0x1000 | 0x1E1000
-TLV Store | 0x1E1000 | 4 KiB / 0x1000 | 0x1E2000
-Network Data | 0x1E2000 | 4 KiB / 0x1000 | 0x1E3000
-User Data | 0x1E3000 | 116 KiB / 0x1D000 | 0x200000
-
-Bootloader and app partitions contain CRC16 sums every 32 bytes. That results in the actual flash offsets/sizes not aligned to sector boundaries. To simplify calculations, the values shown in the table (extracted from bootloader's partition table) were aligned to 4096 bytes.
-
-## Information
-
-This board has no marking on the front side, only something that looks like PCB manufacturing info on the back; thus it was named based on these symbols.
-
-It can be found in 'LSC Smart Connect Outdoor LED Strip', and is likely custom-made for this product.
-
-The pinout was established by writing to and probing consecutive GPIOs, using the generic board definition.
-
-Pins marked with '?' are currently unknown, with a possibility of being CEN. Pin 22 (P1/D14) is also not confirmed.
diff --git a/boards/lsc-lma35-t/pinout_lsc-lma35-t.svg b/boards/lsc-lma35-t/pinout_lsc-lma35-t.svg
deleted file mode 100644
index 3d02d8c..0000000
--- a/boards/lsc-lma35-t/pinout_lsc-lma35-t.svg
+++ /dev/null
@@ -1,325 +0,0 @@
-
-
diff --git a/boards/lsc-lma35-t/pins_arduino.h b/boards/lsc-lma35-t/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/lsc-lma35-t/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/lsc-lma35-t/variant.h b/boards/lsc-lma35-t/variant.h
deleted file mode 100644
index 7fff860..0000000
--- a/boards/lsc-lma35-t/variant.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* This file was auto-generated from lsc-lma35-t.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 15
-#define NUM_DIGITAL_PINS 15
-#define NUM_ANALOG_INPUTS 1
-#define NUM_ANALOG_OUTPUTS 0
-
-// Analog pins
-// -----------
-#define PIN_A0 6u // GPIO23
-#define A0 PIN_A0
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 0
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 1
-#define PIN_WIRE2_SCL 5u // GPIO0
-#define PIN_WIRE2_SDA 14u // GPIO1
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 2
-#define PIN_SERIAL1_RX 12u // GPIO10
-#define PIN_SERIAL1_TX 13u // GPIO11
-#define PIN_SERIAL2_RX 14u // GPIO1
-#define PIN_SERIAL2_TX 5u // GPIO0
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_ADC3 6u // GPIO23
-#define PIN_FUNCTION_MOSI 2u // GPIO16
-#define PIN_FUNCTION_P0 5u // GPIO0
-#define PIN_FUNCTION_P1 14u // GPIO1
-#define PIN_FUNCTION_P6 10u // GPIO6
-#define PIN_FUNCTION_P7 11u // GPIO7
-#define PIN_FUNCTION_P8 7u // GPIO8
-#define PIN_FUNCTION_P9 8u // GPIO9
-#define PIN_FUNCTION_P10 12u // GPIO10
-#define PIN_FUNCTION_P11 13u // GPIO11
-#define PIN_FUNCTION_P14 1u // GPIO14
-#define PIN_FUNCTION_P16 2u // GPIO16
-#define PIN_FUNCTION_P21 9u // GPIO21
-#define PIN_FUNCTION_P22 4u // GPIO22
-#define PIN_FUNCTION_P23 6u // GPIO23
-#define PIN_FUNCTION_P24 3u // GPIO24
-#define PIN_FUNCTION_P26 0u // GPIO26
-#define PIN_FUNCTION_PWM0 10u // GPIO6
-#define PIN_FUNCTION_PWM1 11u // GPIO7
-#define PIN_FUNCTION_PWM2 7u // GPIO8
-#define PIN_FUNCTION_PWM3 8u // GPIO9
-#define PIN_FUNCTION_PWM4 3u // GPIO24
-#define PIN_FUNCTION_PWM5 0u // GPIO26
-#define PIN_FUNCTION_RX1 12u // GPIO10
-#define PIN_FUNCTION_RX2 14u // GPIO1
-#define PIN_FUNCTION_SCK 1u // GPIO14
-#define PIN_FUNCTION_SCL2 5u // GPIO0
-#define PIN_FUNCTION_SDA1 9u // GPIO21
-#define PIN_FUNCTION_SDA2 14u // GPIO1
-#define PIN_FUNCTION_TX1 13u // GPIO11
-#define PIN_FUNCTION_TX2 5u // GPIO0
diff --git a/boards/lsc-lma35/README.md b/boards/lsc-lma35/README.md
deleted file mode 100644
index 9065734..0000000
--- a/boards/lsc-lma35/README.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# LSC LMA35
-
-*by Unknown*
-
-[Product page](https://www.action.com/de-at/p/lsc-smart-connect-outdoor-led-streifen/)
-
-- [General info](../../docs/platform/beken-72xx/README.md)
-- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
-
-Parameter | Value
--------------|----------------------------------
-Board code | `lsc-lma35`
-MCU | BK7231N
-Manufacturer | Beken
-Series | BK72XX
-Frequency | 120 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 15x GPIO, 6x PWM, 2x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-Bluetooth | BLE v5.1
-
-## Usage
-
-**Board code:** `lsc-lma35`
-
-In `platformio.ini`:
-
-```ini
-[env:lsc-lma35]
-platform = libretuya
-board = lsc-lma35
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: lsc-lma35
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|-----------|----------|----------|------|------|------
-D0 | P26 | | | | PWM5 |
-D1 | P14 | | | SCK | |
-D2 | P16 | | | MOSI | |
-D3 | P24 | | | | PWM4 |
-D4 | P22 | | | | | TDI
-D5 | P0 | UART2_TX | I2C2_SCL | | |
-D6 | P23 | | | | | TDO
-D7 | P8 | | | | PWM2 |
-D8 | P9 | | | | PWM3 |
-D9 | P21 | | I2C1_SDA | | | TMS
-D10 | P6 | | | | PWM0 |
-D11 | P7 | | | | PWM1 |
-D12 | P10 | UART1_RX | | | |
-D13 | P11 | UART1_TX | | | |
-D14 | P1 | UART2_RX | I2C2_SDA | | |
-A0 | P23, ADC3 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|--------------------|---------
-Bootloader | 0x000000 | 68 KiB / 0x11000 | 0x011000
-App Image | 0x011000 | 1.1 MiB / 0x119000 | 0x12A000
-OTA Image | 0x12A000 | 664 KiB / 0xA6000 | 0x1D0000
-Calibration | 0x1D0000 | 4 KiB / 0x1000 | 0x1D1000
-Network Data | 0x1D1000 | 4 KiB / 0x1000 | 0x1D2000
-TLV Store | 0x1D2000 | 4 KiB / 0x1000 | 0x1D3000
-Key-Value Store | 0x1D3000 | 32 KiB / 0x8000 | 0x1DB000
-User Data | 0x1DB000 | 148 KiB / 0x25000 | 0x200000
-
-Bootloader and app partitions contain CRC16 sums every 32 bytes. That results in the actual flash offsets/sizes not aligned to sector boundaries. To simplify calculations, the values shown in the table (extracted from bootloader's partition table) were aligned to 4096 bytes.
-
-## Information
-
-This board has no marking on the front side, only something that looks like PCB manufacturing info on the back; thus it was named based on these symbols.
-
-It can be found in 'LSC Smart Connect Outdoor LED Strip', and is likely custom-made for this product.
-
-The pinout was established by writing to and probing consecutive GPIOs, using the generic board definition.
-
-Pins marked with '?' are currently unknown, with a possibility of being CEN. Pin 22 (P1/D14) is also not confirmed.
diff --git a/boards/lsc-lma35/pinout_lsc-lma35.svg b/boards/lsc-lma35/pinout_lsc-lma35.svg
deleted file mode 100644
index 3d02d8c..0000000
--- a/boards/lsc-lma35/pinout_lsc-lma35.svg
+++ /dev/null
@@ -1,325 +0,0 @@
-
-
diff --git a/boards/lsc-lma35/pins_arduino.h b/boards/lsc-lma35/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/lsc-lma35/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/lsc-lma35/variant.h b/boards/lsc-lma35/variant.h
deleted file mode 100644
index 0fb2fa1..0000000
--- a/boards/lsc-lma35/variant.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* This file was auto-generated from lsc-lma35.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 15
-#define NUM_DIGITAL_PINS 15
-#define NUM_ANALOG_INPUTS 1
-#define NUM_ANALOG_OUTPUTS 0
-
-// Analog pins
-// -----------
-#define PIN_A0 6u // GPIO23
-#define A0 PIN_A0
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 0
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 1
-#define PIN_WIRE2_SCL 5u // GPIO0
-#define PIN_WIRE2_SDA 14u // GPIO1
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 2
-#define PIN_SERIAL1_RX 12u // GPIO10
-#define PIN_SERIAL1_TX 13u // GPIO11
-#define PIN_SERIAL2_RX 14u // GPIO1
-#define PIN_SERIAL2_TX 5u // GPIO0
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_ADC3 6u // GPIO23
-#define PIN_FUNCTION_MOSI 2u // GPIO16
-#define PIN_FUNCTION_P0 5u // GPIO0
-#define PIN_FUNCTION_P1 14u // GPIO1
-#define PIN_FUNCTION_P6 10u // GPIO6
-#define PIN_FUNCTION_P7 11u // GPIO7
-#define PIN_FUNCTION_P8 7u // GPIO8
-#define PIN_FUNCTION_P9 8u // GPIO9
-#define PIN_FUNCTION_P10 12u // GPIO10
-#define PIN_FUNCTION_P11 13u // GPIO11
-#define PIN_FUNCTION_P14 1u // GPIO14
-#define PIN_FUNCTION_P16 2u // GPIO16
-#define PIN_FUNCTION_P21 9u // GPIO21
-#define PIN_FUNCTION_P22 4u // GPIO22
-#define PIN_FUNCTION_P23 6u // GPIO23
-#define PIN_FUNCTION_P24 3u // GPIO24
-#define PIN_FUNCTION_P26 0u // GPIO26
-#define PIN_FUNCTION_PWM0 10u // GPIO6
-#define PIN_FUNCTION_PWM1 11u // GPIO7
-#define PIN_FUNCTION_PWM2 7u // GPIO8
-#define PIN_FUNCTION_PWM3 8u // GPIO9
-#define PIN_FUNCTION_PWM4 3u // GPIO24
-#define PIN_FUNCTION_PWM5 0u // GPIO26
-#define PIN_FUNCTION_RX1 12u // GPIO10
-#define PIN_FUNCTION_RX2 14u // GPIO1
-#define PIN_FUNCTION_SCK 1u // GPIO14
-#define PIN_FUNCTION_SCL2 5u // GPIO0
-#define PIN_FUNCTION_SDA1 9u // GPIO21
-#define PIN_FUNCTION_SDA2 14u // GPIO1
-#define PIN_FUNCTION_TX1 13u // GPIO11
-#define PIN_FUNCTION_TX2 5u // GPIO0
diff --git a/boards/bw12/variant.cpp b/boards/variants/bw12.cpp
similarity index 96%
rename from boards/bw12/variant.cpp
rename to boards/variants/bw12.cpp
index 035bb33..10b1ac9 100644
--- a/boards/bw12/variant.cpp
+++ b/boards/variants/bw12.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: PA05, PWM4, WAKE1
diff --git a/boards/bw12/variant.h b/boards/variants/bw12.h
similarity index 57%
rename from boards/bw12/variant.h
rename to boards/variants/bw12.h
index a895a4d..8eac368 100644
--- a/boards/bw12/variant.h
+++ b/boards/variants/bw12.h
@@ -2,8 +2,6 @@
#pragma once
-#include
-
// clang-format off
// Pins
@@ -52,29 +50,38 @@
// Pin function macros
// -------------------
-#define PIN_FUNCTION_ADC1 3u // PA_19
-#define PIN_FUNCTION_CS0 3u // PA_19
-#define PIN_FUNCTION_CS1 3u // PA_19
-#define PIN_FUNCTION_CTS0 3u // PA_19
-#define PIN_FUNCTION_MISO0 4u // PA_22
-#define PIN_FUNCTION_MISO1 4u // PA_22
-#define PIN_FUNCTION_MOSI0 10u // PA_23
-#define PIN_FUNCTION_MOSI1 10u // PA_23
-#define PIN_FUNCTION_PA00 2u // PA_0
-#define PIN_FUNCTION_PA05 0u // PA_5
-#define PIN_FUNCTION_PA12 7u // PA_12
-#define PIN_FUNCTION_PA14 6u // PA_14
-#define PIN_FUNCTION_PA15 8u // PA_15
-#define PIN_FUNCTION_PA18 9u // PA_18
-#define PIN_FUNCTION_PA19 3u // PA_19
-#define PIN_FUNCTION_PA22 4u // PA_22
-#define PIN_FUNCTION_PA23 10u // PA_23
-#define PIN_FUNCTION_PA29 1u // PA_29
-#define PIN_FUNCTION_PA30 5u // PA_30
-#define PIN_FUNCTION_RTS0 4u // PA_22
-#define PIN_FUNCTION_RX0 9u // PA_18
-#define PIN_FUNCTION_RX2 1u // PA_29
-#define PIN_FUNCTION_SCK0 9u // PA_18
-#define PIN_FUNCTION_SCK1 9u // PA_18
-#define PIN_FUNCTION_TX0 10u // PA_23
-#define PIN_FUNCTION_TX2 5u // PA_30
+#define PIN_ADC1 3u // PA_19
+#define PIN_CS0 3u // PA_19
+#define PIN_CS1 3u // PA_19
+#define PIN_CTS0 3u // PA_19
+#define PIN_MISO0 4u // PA_22
+#define PIN_MISO1 4u // PA_22
+#define PIN_MOSI0 10u // PA_23
+#define PIN_MOSI1 10u // PA_23
+#define PIN_PA00 2u // PA_0
+#define PIN_PA05 0u // PA_5
+#define PIN_PA12 7u // PA_12
+#define PIN_PA14 6u // PA_14
+#define PIN_PA15 8u // PA_15
+#define PIN_PA18 9u // PA_18
+#define PIN_PA19 3u // PA_19
+#define PIN_PA22 4u // PA_22
+#define PIN_PA23 10u // PA_23
+#define PIN_PA29 1u // PA_29
+#define PIN_PA30 5u // PA_30
+#define PIN_RTS0 4u // PA_22
+#define PIN_RX0 9u // PA_18
+#define PIN_RX2 1u // PA_29
+#define PIN_SCK0 9u // PA_18
+#define PIN_SCK1 9u // PA_18
+#define PIN_TX0 10u // PA_23
+#define PIN_TX2 5u // PA_30
+
+// Port availability
+// -----------------
+#define HAS_SERIAL0 1
+#define HAS_SERIAL2 1
+#define HAS_SPI0 1
+#define HAS_SPI1 1
+#define HAS_WIRE0 1
+#define HAS_WIRE1 1
diff --git a/boards/variants/bw15.cpp b/boards/variants/bw15.cpp
new file mode 100644
index 0000000..d098bcb
--- /dev/null
+++ b/boards/variants/bw15.cpp
@@ -0,0 +1,42 @@
+/* This file was auto-generated from bw15.json using boardgen */
+
+#include
+
+extern "C" {
+
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
+// clang-format off
+PinInfo pinTable[PINS_COUNT] = {
+ // D0: PA17, SD_CMD, PWM5
+ {PIN_A17, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
+ // D1: PA18, SD_CLK, PWM6
+ {PIN_A18, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
+ // D2: PA02, TDO, UART1_RX, SPI0_CS, I2C0_SCL, PWM2
+ {PIN_A2, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_JTAG | PIN_SPI | PIN_UART, PIN_NONE, 0},
+ // D3: PA15, SD_D2, SPI0_CS, UART2_RX, I2C0_SCL, PWM3
+ {PIN_A15, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_SPI | PIN_UART, PIN_NONE, 0},
+ // D4: PA04, tRST, UART1_CTS, SPI0_MOSI, PWM4
+ {PIN_A4, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_JTAG | PIN_SPI | PIN_UART, PIN_NONE, 0},
+ // D5: PA19, SD_D0, SPI0_MOSI, UART2_CTS, I2C0_SCL, PWM7
+ {PIN_A19, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_SPI | PIN_UART, PIN_NONE, 0},
+ // D6: PA20, SD_D1, SPI0_MISO, UART2_RTS, I2C0_SDA, PWM0
+ {PIN_A20, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_SPI | PIN_UART, PIN_NONE, 0},
+ // D7: PA16, SD_D3, SPI0_SCK, UART2_TX, I2C0_SDA, PWM4
+ {PIN_A16, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_SPI | PIN_UART, PIN_NONE, 0},
+ // D8: PA00, TCK, UART1_RX, PWM0, SWCLK
+ {PIN_A0, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_JTAG | PIN_SWD | PIN_UART, PIN_NONE, 0},
+ // D9: PA03, TDI, UART1_TX, SPI0_SCK, I2C0_SDA, PWM3
+ {PIN_A3, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_JTAG | PIN_SPI | PIN_UART, PIN_NONE, 0},
+ // D10: PA01, TMS, UART1_TX, PWM1, SWDIO
+ {PIN_A1, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_JTAG | PIN_SWD | PIN_UART, PIN_NONE, 0},
+ // D11: PA13, UART0_RX, PWM7
+ {PIN_A13, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_UART, PIN_NONE, 0},
+ // D12: PA14, SD_INT, UART0_TX, PWM2
+ {PIN_A14, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_UART, PIN_NONE, 0},
+};
+// clang-format on
+
+} // extern "C"
diff --git a/boards/variants/bw15.h b/boards/variants/bw15.h
new file mode 100644
index 0000000..e5d8771
--- /dev/null
+++ b/boards/variants/bw15.h
@@ -0,0 +1,75 @@
+/* This file was auto-generated from bw15.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 13
+#define NUM_DIGITAL_PINS 13
+#define NUM_ANALOG_OUTPUTS 0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 1
+#define PIN_SPI0_CS_0 2u // PIN_A2
+#define PIN_SPI0_CS_1 3u // PIN_A15
+#define PIN_SPI0_MISO 6u // PIN_A20
+#define PIN_SPI0_MOSI_0 4u // PIN_A4
+#define PIN_SPI0_MOSI_1 5u // PIN_A19
+#define PIN_SPI0_SCK_0 7u // PIN_A16
+#define PIN_SPI0_SCK_1 9u // PIN_A3
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 1
+#define PIN_WIRE0_SCL_0 2u // PIN_A2
+#define PIN_WIRE0_SCL_1 3u // PIN_A15
+#define PIN_WIRE0_SCL_2 5u // PIN_A19
+#define PIN_WIRE0_SDA_0 6u // PIN_A20
+#define PIN_WIRE0_SDA_1 7u // PIN_A16
+#define PIN_WIRE0_SDA_2 9u // PIN_A3
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 3
+#define PIN_SERIAL0_RX 11u // PIN_A13
+#define PIN_SERIAL0_TX 12u // PIN_A14
+#define PIN_SERIAL1_CTS 4u // PIN_A4
+#define PIN_SERIAL1_RX_0 2u // PIN_A2
+#define PIN_SERIAL1_RX_1 8u // PIN_A0
+#define PIN_SERIAL1_TX_0 9u // PIN_A3
+#define PIN_SERIAL1_TX_1 10u // PIN_A1
+#define PIN_SERIAL2_CTS 5u // PIN_A19
+#define PIN_SERIAL2_RTS 6u // PIN_A20
+#define PIN_SERIAL2_RX 3u // PIN_A15
+#define PIN_SERIAL2_TX 7u // PIN_A16
+
+// Pin function macros
+// -------------------
+#define PIN_CTS1 4u // PIN_A4
+#define PIN_CTS2 5u // PIN_A19
+#define PIN_MISO0 6u // PIN_A20
+#define PIN_PA00 8u // PIN_A0
+#define PIN_PA01 10u // PIN_A1
+#define PIN_PA02 2u // PIN_A2
+#define PIN_PA03 9u // PIN_A3
+#define PIN_PA04 4u // PIN_A4
+#define PIN_PA13 11u // PIN_A13
+#define PIN_PA14 12u // PIN_A14
+#define PIN_PA15 3u // PIN_A15
+#define PIN_PA16 7u // PIN_A16
+#define PIN_PA17 0u // PIN_A17
+#define PIN_PA18 1u // PIN_A18
+#define PIN_PA19 5u // PIN_A19
+#define PIN_PA20 6u // PIN_A20
+#define PIN_RTS2 6u // PIN_A20
+
+// Port availability
+// -----------------
+#define HAS_SERIAL0 1
+#define HAS_SERIAL1 1
+#define HAS_SERIAL2 1
+#define HAS_SPI0 1
+#define HAS_WIRE0 1
diff --git a/boards/cb2l/variant.cpp b/boards/variants/cb2l.cpp
similarity index 94%
rename from boards/cb2l/variant.cpp
rename to boards/variants/cb2l.cpp
index d67162b..f7ff683 100644
--- a/boards/cb2l/variant.cpp
+++ b/boards/variants/cb2l.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P8, PWM2
diff --git a/boards/variants/cb2l.h b/boards/variants/cb2l.h
new file mode 100644
index 0000000..103fd63
--- /dev/null
+++ b/boards/variants/cb2l.h
@@ -0,0 +1,53 @@
+/* This file was auto-generated from cb2l.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 9
+#define NUM_DIGITAL_PINS 9
+#define NUM_ANALOG_OUTPUTS 0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 0
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 0
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL1_RX 5u // GPIO10
+#define PIN_SERIAL1_TX 7u // GPIO11
+#define PIN_SERIAL2_TX 6u // GPIO0
+
+// Pin function macros
+// -------------------
+#define PIN_P0 6u // GPIO0
+#define PIN_P6 2u // GPIO6
+#define PIN_P7 1u // GPIO7
+#define PIN_P8 0u // GPIO8
+#define PIN_P10 5u // GPIO10
+#define PIN_P11 7u // GPIO11
+#define PIN_P21 8u // GPIO21
+#define PIN_P24 4u // GPIO24
+#define PIN_P26 3u // GPIO26
+#define PIN_PWM0 2u // GPIO6
+#define PIN_PWM1 1u // GPIO7
+#define PIN_PWM2 0u // GPIO8
+#define PIN_PWM4 4u // GPIO24
+#define PIN_PWM5 3u // GPIO26
+#define PIN_RX1 5u // GPIO10
+#define PIN_SCL2 6u // GPIO0
+#define PIN_SDA1 8u // GPIO21
+#define PIN_TX1 7u // GPIO11
+#define PIN_TX2 6u // GPIO0
+
+// Port availability
+// -----------------
+#define HAS_SERIAL1 1
+#define HAS_SERIAL2 1
diff --git a/boards/cb2s/variant.cpp b/boards/variants/cb2s.cpp
similarity index 95%
rename from boards/cb2s/variant.cpp
rename to boards/variants/cb2s.cpp
index 505e4e1..cce51a8 100644
--- a/boards/cb2s/variant.cpp
+++ b/boards/variants/cb2s.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P6, PWM0
diff --git a/boards/variants/cb2s.h b/boards/variants/cb2s.h
new file mode 100644
index 0000000..71cd454
--- /dev/null
+++ b/boards/variants/cb2s.h
@@ -0,0 +1,68 @@
+/* This file was auto-generated from cb2s.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 11
+#define NUM_DIGITAL_PINS 11
+#define NUM_ANALOG_INPUTS 1
+#define NUM_ANALOG_OUTPUTS 0
+
+// Analog pins
+// -----------
+#define PIN_A0 3u // GPIO23
+#define A0 PIN_A0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 0
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 1
+#define PIN_WIRE2_SCL 8u // GPIO0
+#define PIN_WIRE2_SDA 9u // GPIO1
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL1_RX 4u // GPIO10
+#define PIN_SERIAL1_TX 5u // GPIO11
+#define PIN_SERIAL2_RX 9u // GPIO1
+#define PIN_SERIAL2_TX 8u // GPIO0
+
+// Pin function macros
+// -------------------
+#define PIN_ADC3 3u // GPIO23
+#define PIN_P0 8u // GPIO0
+#define PIN_P1 9u // GPIO1
+#define PIN_P6 0u // GPIO6
+#define PIN_P7 1u // GPIO7
+#define PIN_P8 2u // GPIO8
+#define PIN_P10 4u // GPIO10
+#define PIN_P11 5u // GPIO11
+#define PIN_P21 10u // GPIO21
+#define PIN_P23 3u // GPIO23
+#define PIN_P24 6u // GPIO24
+#define PIN_P26 7u // GPIO26
+#define PIN_PWM0 0u // GPIO6
+#define PIN_PWM1 1u // GPIO7
+#define PIN_PWM2 2u // GPIO8
+#define PIN_PWM4 6u // GPIO24
+#define PIN_PWM5 7u // GPIO26
+#define PIN_RX1 4u // GPIO10
+#define PIN_RX2 9u // GPIO1
+#define PIN_SCL2 8u // GPIO0
+#define PIN_SDA1 10u // GPIO21
+#define PIN_SDA2 9u // GPIO1
+#define PIN_TX1 5u // GPIO11
+#define PIN_TX2 8u // GPIO0
+
+// Port availability
+// -----------------
+#define HAS_SERIAL1 1
+#define HAS_SERIAL2 1
+#define HAS_WIRE2 1
diff --git a/boards/cb3l/variant.cpp b/boards/variants/cb3l.cpp
similarity index 95%
rename from boards/cb3l/variant.cpp
rename to boards/variants/cb3l.cpp
index df4de7d..6f94d8a 100644
--- a/boards/cb3l/variant.cpp
+++ b/boards/variants/cb3l.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P23, ADC3, TDO, FSO
diff --git a/boards/variants/cb3l.h b/boards/variants/cb3l.h
new file mode 100644
index 0000000..28f8e80
--- /dev/null
+++ b/boards/variants/cb3l.h
@@ -0,0 +1,65 @@
+/* This file was auto-generated from cb3l.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 12
+#define NUM_DIGITAL_PINS 12
+#define NUM_ANALOG_INPUTS 1
+#define NUM_ANALOG_OUTPUTS 0
+
+// Analog pins
+// -----------
+#define PIN_A0 0u // GPIO23
+#define A0 PIN_A0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 0
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 0
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL1_RX 10u // GPIO10
+#define PIN_SERIAL1_TX 11u // GPIO11
+#define PIN_SERIAL2_TX 6u // GPIO0
+
+// Pin function macros
+// -------------------
+#define PIN_ADC3 0u // GPIO23
+#define PIN_P0 6u // GPIO0
+#define PIN_P6 4u // GPIO6
+#define PIN_P7 9u // GPIO7
+#define PIN_P8 8u // GPIO8
+#define PIN_P9 5u // GPIO9
+#define PIN_P10 10u // GPIO10
+#define PIN_P11 11u // GPIO11
+#define PIN_P14 1u // GPIO14
+#define PIN_P21 7u // GPIO21
+#define PIN_P23 0u // GPIO23
+#define PIN_P24 3u // GPIO24
+#define PIN_P26 2u // GPIO26
+#define PIN_PWM0 4u // GPIO6
+#define PIN_PWM1 9u // GPIO7
+#define PIN_PWM2 8u // GPIO8
+#define PIN_PWM3 5u // GPIO9
+#define PIN_PWM4 3u // GPIO24
+#define PIN_PWM5 2u // GPIO26
+#define PIN_RX1 10u // GPIO10
+#define PIN_SCK 1u // GPIO14
+#define PIN_SCL2 6u // GPIO0
+#define PIN_SDA1 7u // GPIO21
+#define PIN_TX1 11u // GPIO11
+#define PIN_TX2 6u // GPIO0
+
+// Port availability
+// -----------------
+#define HAS_SERIAL1 1
+#define HAS_SERIAL2 1
diff --git a/boards/cb3s/variant.cpp b/boards/variants/cb3s.cpp
similarity index 96%
rename from boards/cb3s/variant.cpp
rename to boards/variants/cb3s.cpp
index eb8b2d7..fb58969 100644
--- a/boards/cb3s/variant.cpp
+++ b/boards/variants/cb3s.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P23, ADC3, TDO, FSO
diff --git a/boards/variants/cb3s.h b/boards/variants/cb3s.h
new file mode 100644
index 0000000..a6c6464
--- /dev/null
+++ b/boards/variants/cb3s.h
@@ -0,0 +1,74 @@
+/* This file was auto-generated from cb3s.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 14
+#define NUM_DIGITAL_PINS 14
+#define NUM_ANALOG_INPUTS 1
+#define NUM_ANALOG_OUTPUTS 0
+
+// Analog pins
+// -----------
+#define PIN_A0 0u // GPIO23
+#define PIN_A0 0u // GPIO23
+#define A0 PIN_A0
+#define A0 PIN_A0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 0
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 1
+#define PIN_WIRE1_SCL 13u // GPIO20
+#define PIN_WIRE1_SDA_0 7u // GPIO21
+#define PIN_WIRE1_SDA_1 7u // GPIO21
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL1_RX 10u // GPIO10
+#define PIN_SERIAL1_TX 11u // GPIO11
+#define PIN_SERIAL2_TX 6u // GPIO0
+
+// Pin function macros
+// -------------------
+#define PIN_ADC3 0u // GPIO23
+#define PIN_P0 6u // GPIO0
+#define PIN_P6 4u // GPIO6
+#define PIN_P7 9u // GPIO7
+#define PIN_P8 8u // GPIO8
+#define PIN_P9 5u // GPIO9
+#define PIN_P10 10u // GPIO10
+#define PIN_P11 11u // GPIO11
+#define PIN_P14 1u // GPIO14
+#define PIN_P20 13u // GPIO20
+#define PIN_P21 7u // GPIO21
+#define PIN_P22 12u // GPIO22
+#define PIN_P23 0u // GPIO23
+#define PIN_P24 3u // GPIO24
+#define PIN_P26 2u // GPIO26
+#define PIN_PWM0 4u // GPIO6
+#define PIN_PWM1 9u // GPIO7
+#define PIN_PWM2 8u // GPIO8
+#define PIN_PWM3 5u // GPIO9
+#define PIN_PWM4 3u // GPIO24
+#define PIN_PWM5 2u // GPIO26
+#define PIN_RX1 10u // GPIO10
+#define PIN_SCK 1u // GPIO14
+#define PIN_SCL1 13u // GPIO20
+#define PIN_SCL2 6u // GPIO0
+#define PIN_SDA1 7u // GPIO21
+#define PIN_TX1 11u // GPIO11
+#define PIN_TX2 6u // GPIO0
+
+// Port availability
+// -----------------
+#define HAS_SERIAL1 1
+#define HAS_SERIAL2 1
+#define HAS_WIRE1 1
diff --git a/boards/cb3se/variant.cpp b/boards/variants/cb3se.cpp
similarity index 96%
rename from boards/cb3se/variant.cpp
rename to boards/variants/cb3se.cpp
index 55d77a9..2a73322 100644
--- a/boards/cb3se/variant.cpp
+++ b/boards/variants/cb3se.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P23, ADC3, TDO, FSO
diff --git a/boards/variants/cb3se.h b/boards/variants/cb3se.h
new file mode 100644
index 0000000..c511edd
--- /dev/null
+++ b/boards/variants/cb3se.h
@@ -0,0 +1,79 @@
+/* This file was auto-generated from cb3se.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 17
+#define NUM_DIGITAL_PINS 17
+#define NUM_ANALOG_INPUTS 1
+#define NUM_ANALOG_OUTPUTS 0
+
+// Analog pins
+// -----------
+#define PIN_A0 0u // GPIO23
+#define A0 PIN_A0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 0
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 1
+#define PIN_WIRE2_SCL 6u // GPIO0
+#define PIN_WIRE2_SDA 7u // GPIO1
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL1_RX 10u // GPIO10
+#define PIN_SERIAL1_TX 11u // GPIO11
+#define PIN_SERIAL2_RX 7u // GPIO1
+#define PIN_SERIAL2_TX 6u // GPIO0
+
+// Pin function macros
+// -------------------
+#define PIN_ADC3 0u // GPIO23
+#define PIN_CS 12u // GPIO15
+#define PIN_MISO 15u // GPIO17
+#define PIN_MOSI 16u // GPIO16
+#define PIN_P0 6u // GPIO0
+#define PIN_P1 7u // GPIO1
+#define PIN_P6 4u // GPIO6
+#define PIN_P7 9u // GPIO7
+#define PIN_P8 8u // GPIO8
+#define PIN_P9 5u // GPIO9
+#define PIN_P10 10u // GPIO10
+#define PIN_P11 11u // GPIO11
+#define PIN_P14 1u // GPIO14
+#define PIN_P15 12u // GPIO15
+#define PIN_P16 16u // GPIO16
+#define PIN_P17 15u // GPIO17
+#define PIN_P20 14u // GPIO20
+#define PIN_P22 13u // GPIO22
+#define PIN_P23 0u // GPIO23
+#define PIN_P24 3u // GPIO24
+#define PIN_P26 2u // GPIO26
+#define PIN_PWM0 4u // GPIO6
+#define PIN_PWM1 9u // GPIO7
+#define PIN_PWM2 8u // GPIO8
+#define PIN_PWM3 5u // GPIO9
+#define PIN_PWM4 3u // GPIO24
+#define PIN_PWM5 2u // GPIO26
+#define PIN_RX1 10u // GPIO10
+#define PIN_RX2 7u // GPIO1
+#define PIN_SCK 1u // GPIO14
+#define PIN_SCL1 14u // GPIO20
+#define PIN_SCL2 6u // GPIO0
+#define PIN_SDA2 7u // GPIO1
+#define PIN_TX1 11u // GPIO11
+#define PIN_TX2 6u // GPIO0
+
+// Port availability
+// -----------------
+#define HAS_SERIAL1 1
+#define HAS_SERIAL2 1
+#define HAS_WIRE2 1
diff --git a/boards/generic-bk7231n-qfn32-tuya/variant.cpp b/boards/variants/generic-bk7231n-qfn32-tuya.cpp
similarity index 97%
rename from boards/generic-bk7231n-qfn32-tuya/variant.cpp
rename to boards/variants/generic-bk7231n-qfn32-tuya.cpp
index fb33d95..e1c83f1 100644
--- a/boards/generic-bk7231n-qfn32-tuya/variant.cpp
+++ b/boards/variants/generic-bk7231n-qfn32-tuya.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P0, UART2_TX, I2C2_SCL
diff --git a/boards/variants/generic-bk7231n-qfn32-tuya.h b/boards/variants/generic-bk7231n-qfn32-tuya.h
new file mode 100644
index 0000000..a9537d8
--- /dev/null
+++ b/boards/variants/generic-bk7231n-qfn32-tuya.h
@@ -0,0 +1,85 @@
+/* This file was auto-generated from generic-bk7231n-qfn32-tuya.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 19
+#define NUM_DIGITAL_PINS 19
+#define NUM_ANALOG_INPUTS 1
+#define NUM_ANALOG_OUTPUTS 0
+
+// Analog pins
+// -----------
+#define PIN_A0 15u // GPIO23
+#define A0 PIN_A0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 0
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 2
+#define PIN_WIRE1_SCL 12u // GPIO20
+#define PIN_WIRE1_SDA 13u // GPIO21
+#define PIN_WIRE2_SCL 0u // GPIO0
+#define PIN_WIRE2_SDA 1u // GPIO1
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL1_RX 6u // GPIO10
+#define PIN_SERIAL1_TX 7u // GPIO11
+#define PIN_SERIAL2_RX 1u // GPIO1
+#define PIN_SERIAL2_TX 0u // GPIO0
+
+// Pin function macros
+// -------------------
+#define PIN_ADC3 15u // GPIO23
+#define PIN_CS 9u // GPIO15
+#define PIN_MISO 11u // GPIO17
+#define PIN_MOSI 10u // GPIO16
+#define PIN_P0 0u // GPIO0
+#define PIN_P1 1u // GPIO1
+#define PIN_P6 2u // GPIO6
+#define PIN_P7 3u // GPIO7
+#define PIN_P8 4u // GPIO8
+#define PIN_P9 5u // GPIO9
+#define PIN_P10 6u // GPIO10
+#define PIN_P11 7u // GPIO11
+#define PIN_P14 8u // GPIO14
+#define PIN_P15 9u // GPIO15
+#define PIN_P16 10u // GPIO16
+#define PIN_P17 11u // GPIO17
+#define PIN_P20 12u // GPIO20
+#define PIN_P21 13u // GPIO21
+#define PIN_P22 14u // GPIO22
+#define PIN_P23 15u // GPIO23
+#define PIN_P24 16u // GPIO24
+#define PIN_P26 17u // GPIO26
+#define PIN_P28 18u // GPIO28
+#define PIN_PWM0 2u // GPIO6
+#define PIN_PWM1 3u // GPIO7
+#define PIN_PWM2 4u // GPIO8
+#define PIN_PWM3 5u // GPIO9
+#define PIN_PWM4 16u // GPIO24
+#define PIN_PWM5 17u // GPIO26
+#define PIN_RX1 6u // GPIO10
+#define PIN_RX2 1u // GPIO1
+#define PIN_SCK 8u // GPIO14
+#define PIN_SCL1 12u // GPIO20
+#define PIN_SCL2 0u // GPIO0
+#define PIN_SDA1 13u // GPIO21
+#define PIN_SDA2 1u // GPIO1
+#define PIN_TX1 7u // GPIO11
+#define PIN_TX2 0u // GPIO0
+
+// Port availability
+// -----------------
+#define HAS_SERIAL1 1
+#define HAS_SERIAL2 1
+#define HAS_WIRE1 1
+#define HAS_WIRE2 1
diff --git a/boards/generic-bk7231t-qfn32-tuya/variant.cpp b/boards/variants/generic-bk7231t-qfn32-tuya.cpp
similarity index 97%
rename from boards/generic-bk7231t-qfn32-tuya/variant.cpp
rename to boards/variants/generic-bk7231t-qfn32-tuya.cpp
index c358dee..066f0e4 100644
--- a/boards/generic-bk7231t-qfn32-tuya/variant.cpp
+++ b/boards/variants/generic-bk7231t-qfn32-tuya.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P0, UART2_TX, I2C2_SCL
diff --git a/boards/variants/generic-bk7231t-qfn32-tuya.h b/boards/variants/generic-bk7231t-qfn32-tuya.h
new file mode 100644
index 0000000..75bbce6
--- /dev/null
+++ b/boards/variants/generic-bk7231t-qfn32-tuya.h
@@ -0,0 +1,85 @@
+/* This file was auto-generated from generic-bk7231t-qfn32-tuya.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 19
+#define NUM_DIGITAL_PINS 19
+#define NUM_ANALOG_INPUTS 1
+#define NUM_ANALOG_OUTPUTS 0
+
+// Analog pins
+// -----------
+#define PIN_A0 15u // GPIO23
+#define A0 PIN_A0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 0
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 2
+#define PIN_WIRE1_SCL 12u // GPIO20
+#define PIN_WIRE1_SDA 13u // GPIO21
+#define PIN_WIRE2_SCL 0u // GPIO0
+#define PIN_WIRE2_SDA 1u // GPIO1
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL1_RX 6u // GPIO10
+#define PIN_SERIAL1_TX 7u // GPIO11
+#define PIN_SERIAL2_RX 1u // GPIO1
+#define PIN_SERIAL2_TX 0u // GPIO0
+
+// Pin function macros
+// -------------------
+#define PIN_ADC3 15u // GPIO23
+#define PIN_CS 9u // GPIO15
+#define PIN_MISO 11u // GPIO17
+#define PIN_MOSI 10u // GPIO16
+#define PIN_P0 0u // GPIO0
+#define PIN_P1 1u // GPIO1
+#define PIN_P6 2u // GPIO6
+#define PIN_P7 3u // GPIO7
+#define PIN_P8 4u // GPIO8
+#define PIN_P9 5u // GPIO9
+#define PIN_P10 6u // GPIO10
+#define PIN_P11 7u // GPIO11
+#define PIN_P14 8u // GPIO14
+#define PIN_P15 9u // GPIO15
+#define PIN_P16 10u // GPIO16
+#define PIN_P17 11u // GPIO17
+#define PIN_P20 12u // GPIO20
+#define PIN_P21 13u // GPIO21
+#define PIN_P22 14u // GPIO22
+#define PIN_P23 15u // GPIO23
+#define PIN_P24 16u // GPIO24
+#define PIN_P26 17u // GPIO26
+#define PIN_P28 18u // GPIO28
+#define PIN_PWM0 2u // GPIO6
+#define PIN_PWM1 3u // GPIO7
+#define PIN_PWM2 4u // GPIO8
+#define PIN_PWM3 5u // GPIO9
+#define PIN_PWM4 16u // GPIO24
+#define PIN_PWM5 17u // GPIO26
+#define PIN_RX1 6u // GPIO10
+#define PIN_RX2 1u // GPIO1
+#define PIN_SCK 8u // GPIO14
+#define PIN_SCL1 12u // GPIO20
+#define PIN_SCL2 0u // GPIO0
+#define PIN_SDA1 13u // GPIO21
+#define PIN_SDA2 1u // GPIO1
+#define PIN_TX1 7u // GPIO11
+#define PIN_TX2 0u // GPIO0
+
+// Port availability
+// -----------------
+#define HAS_SERIAL1 1
+#define HAS_SERIAL2 1
+#define HAS_WIRE1 1
+#define HAS_WIRE2 1
diff --git a/boards/generic-bk7252/variant.cpp b/boards/variants/generic-bk7252.cpp
similarity index 98%
rename from boards/generic-bk7252/variant.cpp
rename to boards/variants/generic-bk7252.cpp
index 74c7841..537e81a 100644
--- a/boards/generic-bk7252/variant.cpp
+++ b/boards/variants/generic-bk7252.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P0, UART2_TX, I2C2_SCL
diff --git a/boards/variants/generic-bk7252.h b/boards/variants/generic-bk7252.h
new file mode 100644
index 0000000..d456037
--- /dev/null
+++ b/boards/variants/generic-bk7252.h
@@ -0,0 +1,124 @@
+/* This file was auto-generated from generic-bk7252.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 38
+#define NUM_DIGITAL_PINS 38
+#define NUM_ANALOG_INPUTS 7
+#define NUM_ANALOG_OUTPUTS 0
+
+// Analog pins
+// -----------
+#define PIN_A5 2u // GPIO2
+#define PIN_A4 3u // GPIO3
+#define PIN_A1 4u // GPIO4
+#define PIN_A2 5u // GPIO5
+#define PIN_A6 10u // GPIO12
+#define PIN_A7 11u // GPIO13
+#define PIN_A3 21u // GPIO23
+#define A5 PIN_A5
+#define A4 PIN_A4
+#define A1 PIN_A1
+#define A2 PIN_A2
+#define A6 PIN_A6
+#define A7 PIN_A7
+#define A3 PIN_A3
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 0
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 2
+#define PIN_WIRE1_SCL 18u // GPIO20
+#define PIN_WIRE1_SDA 19u // GPIO21
+#define PIN_WIRE2_SCL 0u // GPIO0
+#define PIN_WIRE2_SDA 1u // GPIO1
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL1_CTS 10u // GPIO12
+#define PIN_SERIAL1_RTS 11u // GPIO13
+#define PIN_SERIAL1_RX 8u // GPIO10
+#define PIN_SERIAL1_TX 9u // GPIO11
+#define PIN_SERIAL2_RX 1u // GPIO1
+#define PIN_SERIAL2_TX 0u // GPIO0
+
+// Pin function macros
+// -------------------
+#define PIN_ADC1 4u // GPIO4
+#define PIN_ADC2 5u // GPIO5
+#define PIN_ADC3 21u // GPIO23
+#define PIN_ADC4 2u // GPIO2
+#define PIN_ADC5 3u // GPIO3
+#define PIN_ADC6 10u // GPIO12
+#define PIN_ADC7 11u // GPIO13
+#define PIN_CS 13u // GPIO15
+#define PIN_CTS1 10u // GPIO12
+#define PIN_MISO 15u // GPIO17
+#define PIN_MOSI 14u // GPIO16
+#define PIN_P0 0u // GPIO0
+#define PIN_P1 1u // GPIO1
+#define PIN_P2 2u // GPIO2
+#define PIN_P3 3u // GPIO3
+#define PIN_P4 4u // GPIO4
+#define PIN_P5 5u // GPIO5
+#define PIN_P6 6u // GPIO6
+#define PIN_P7 7u // GPIO7
+#define PIN_P10 8u // GPIO10
+#define PIN_P11 9u // GPIO11
+#define PIN_P12 10u // GPIO12
+#define PIN_P13 11u // GPIO13
+#define PIN_P14 12u // GPIO14
+#define PIN_P15 13u // GPIO15
+#define PIN_P16 14u // GPIO16
+#define PIN_P17 15u // GPIO17
+#define PIN_P18 16u // GPIO18
+#define PIN_P19 17u // GPIO19
+#define PIN_P20 18u // GPIO20
+#define PIN_P21 19u // GPIO21
+#define PIN_P22 20u // GPIO22
+#define PIN_P23 21u // GPIO23
+#define PIN_P24 22u // GPIO24
+#define PIN_P25 23u // GPIO25
+#define PIN_P26 24u // GPIO26
+#define PIN_P27 25u // GPIO27
+#define PIN_P28 26u // GPIO28
+#define PIN_P29 27u // GPIO29
+#define PIN_P30 28u // GPIO30
+#define PIN_P31 29u // GPIO31
+#define PIN_P32 30u // GPIO32
+#define PIN_P33 31u // GPIO33
+#define PIN_P34 32u // GPIO34
+#define PIN_P35 33u // GPIO35
+#define PIN_P36 34u // GPIO36
+#define PIN_P37 35u // GPIO37
+#define PIN_P38 36u // GPIO38
+#define PIN_P39 37u // GPIO39
+#define PIN_PWM0 6u // GPIO6
+#define PIN_PWM1 7u // GPIO7
+#define PIN_PWM4 22u // GPIO24
+#define PIN_PWM5 24u // GPIO26
+#define PIN_RTS1 11u // GPIO13
+#define PIN_RX1 8u // GPIO10
+#define PIN_RX2 1u // GPIO1
+#define PIN_SCK 12u // GPIO14
+#define PIN_SCL1 18u // GPIO20
+#define PIN_SCL2 0u // GPIO0
+#define PIN_SDA1 19u // GPIO21
+#define PIN_SDA2 1u // GPIO1
+#define PIN_TX1 9u // GPIO11
+#define PIN_TX2 0u // GPIO0
+
+// Port availability
+// -----------------
+#define HAS_SERIAL1 1
+#define HAS_SERIAL2 1
+#define HAS_WIRE1 1
+#define HAS_WIRE2 1
diff --git a/boards/generic-rtl8710bn-2mb-468k/variant.cpp b/boards/variants/generic-rtl8710bn-2mb-468k.cpp
similarity index 97%
rename from boards/generic-rtl8710bn-2mb-468k/variant.cpp
rename to boards/variants/generic-rtl8710bn-2mb-468k.cpp
index 227abbe..332cecf 100644
--- a/boards/generic-rtl8710bn-2mb-468k/variant.cpp
+++ b/boards/variants/generic-rtl8710bn-2mb-468k.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: PA00, PWM2
diff --git a/boards/variants/generic-rtl8710bn-2mb-468k.h b/boards/variants/generic-rtl8710bn-2mb-468k.h
new file mode 100644
index 0000000..b3369bb
--- /dev/null
+++ b/boards/variants/generic-rtl8710bn-2mb-468k.h
@@ -0,0 +1,102 @@
+/* This file was auto-generated from generic-rtl8710bn-2mb-468k.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 18
+#define NUM_DIGITAL_PINS 17
+#define NUM_ANALOG_INPUTS 2
+#define NUM_ANALOG_OUTPUTS 0
+
+// Analog pins
+// -----------
+#define PIN_A0 12u // PA_19
+#define PIN_A1 17u // AD_2
+#define A0 PIN_A0
+#define A1 PIN_A1
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 2
+#define PIN_SPI0_CS 12u // PA_19
+#define PIN_SPI0_MISO 13u // PA_22
+#define PIN_SPI0_MOSI 14u // PA_23
+#define PIN_SPI0_SCK 11u // PA_18
+#define PIN_SPI1_CS 12u // PA_19
+#define PIN_SPI1_MISO 13u // PA_22
+#define PIN_SPI1_MOSI 14u // PA_23
+#define PIN_SPI1_SCK 11u // PA_18
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 2
+#define PIN_WIRE0_SCL_0 13u // PA_22
+#define PIN_WIRE0_SCL_1 15u // PA_29
+#define PIN_WIRE0_SDA_0 12u // PA_19
+#define PIN_WIRE0_SDA_1 16u // PA_30
+#define PIN_WIRE1_SCL 11u // PA_18
+#define PIN_WIRE1_SDA 14u // PA_23
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL0_CTS 12u // PA_19
+#define PIN_SERIAL0_RTS 13u // PA_22
+#define PIN_SERIAL0_RX 11u // PA_18
+#define PIN_SERIAL0_TX 14u // PA_23
+#define PIN_SERIAL2_RX 15u // PA_29
+#define PIN_SERIAL2_TX 16u // PA_30
+
+// Pin function macros
+// -------------------
+#define PIN_ADC1 12u // PA_19
+#define PIN_ADC2 17u // AD_2
+#define PIN_CS0 12u // PA_19
+#define PIN_CS1 12u // PA_19
+#define PIN_CTS0 12u // PA_19
+#define PIN_FCS 2u // PA_6
+#define PIN_FD0 5u // PA_9
+#define PIN_FD1 3u // PA_7
+#define PIN_FD2 4u // PA_8
+#define PIN_FD3 7u // PA_11
+#define PIN_FSCK 6u // PA_10
+#define PIN_MISO0 13u // PA_22
+#define PIN_MISO1 13u // PA_22
+#define PIN_MOSI0 14u // PA_23
+#define PIN_MOSI1 14u // PA_23
+#define PIN_PA00 0u // PA_0
+#define PIN_PA05 1u // PA_5
+#define PIN_PA06 2u // PA_6
+#define PIN_PA07 3u // PA_7
+#define PIN_PA08 4u // PA_8
+#define PIN_PA09 5u // PA_9
+#define PIN_PA10 6u // PA_10
+#define PIN_PA11 7u // PA_11
+#define PIN_PA12 8u // PA_12
+#define PIN_PA14 9u // PA_14
+#define PIN_PA15 10u // PA_15
+#define PIN_PA18 11u // PA_18
+#define PIN_PA19 12u // PA_19
+#define PIN_PA22 13u // PA_22
+#define PIN_PA23 14u // PA_23
+#define PIN_PA29 15u // PA_29
+#define PIN_PA30 16u // PA_30
+#define PIN_RTS0 13u // PA_22
+#define PIN_RX0 11u // PA_18
+#define PIN_RX2 15u // PA_29
+#define PIN_SCK0 11u // PA_18
+#define PIN_SCK1 11u // PA_18
+#define PIN_TX0 14u // PA_23
+#define PIN_TX2 16u // PA_30
+
+// Port availability
+// -----------------
+#define HAS_SERIAL0 1
+#define HAS_SERIAL2 1
+#define HAS_SPI0 1
+#define HAS_SPI1 1
+#define HAS_WIRE0 1
+#define HAS_WIRE1 1
diff --git a/boards/generic-rtl8710bn-2mb-788k/variant.cpp b/boards/variants/generic-rtl8710bn-2mb-788k.cpp
similarity index 97%
rename from boards/generic-rtl8710bn-2mb-788k/variant.cpp
rename to boards/variants/generic-rtl8710bn-2mb-788k.cpp
index 41602e5..0657707 100644
--- a/boards/generic-rtl8710bn-2mb-788k/variant.cpp
+++ b/boards/variants/generic-rtl8710bn-2mb-788k.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: PA00, PWM2
diff --git a/boards/variants/generic-rtl8710bn-2mb-788k.h b/boards/variants/generic-rtl8710bn-2mb-788k.h
new file mode 100644
index 0000000..870a76f
--- /dev/null
+++ b/boards/variants/generic-rtl8710bn-2mb-788k.h
@@ -0,0 +1,102 @@
+/* This file was auto-generated from generic-rtl8710bn-2mb-788k.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 18
+#define NUM_DIGITAL_PINS 17
+#define NUM_ANALOG_INPUTS 2
+#define NUM_ANALOG_OUTPUTS 0
+
+// Analog pins
+// -----------
+#define PIN_A0 12u // PA_19
+#define PIN_A1 17u // AD_2
+#define A0 PIN_A0
+#define A1 PIN_A1
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 2
+#define PIN_SPI0_CS 12u // PA_19
+#define PIN_SPI0_MISO 13u // PA_22
+#define PIN_SPI0_MOSI 14u // PA_23
+#define PIN_SPI0_SCK 11u // PA_18
+#define PIN_SPI1_CS 12u // PA_19
+#define PIN_SPI1_MISO 13u // PA_22
+#define PIN_SPI1_MOSI 14u // PA_23
+#define PIN_SPI1_SCK 11u // PA_18
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 2
+#define PIN_WIRE0_SCL_0 13u // PA_22
+#define PIN_WIRE0_SCL_1 15u // PA_29
+#define PIN_WIRE0_SDA_0 12u // PA_19
+#define PIN_WIRE0_SDA_1 16u // PA_30
+#define PIN_WIRE1_SCL 11u // PA_18
+#define PIN_WIRE1_SDA 14u // PA_23
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL0_CTS 12u // PA_19
+#define PIN_SERIAL0_RTS 13u // PA_22
+#define PIN_SERIAL0_RX 11u // PA_18
+#define PIN_SERIAL0_TX 14u // PA_23
+#define PIN_SERIAL2_RX 15u // PA_29
+#define PIN_SERIAL2_TX 16u // PA_30
+
+// Pin function macros
+// -------------------
+#define PIN_ADC1 12u // PA_19
+#define PIN_ADC2 17u // AD_2
+#define PIN_CS0 12u // PA_19
+#define PIN_CS1 12u // PA_19
+#define PIN_CTS0 12u // PA_19
+#define PIN_FCS 2u // PA_6
+#define PIN_FD0 5u // PA_9
+#define PIN_FD1 3u // PA_7
+#define PIN_FD2 4u // PA_8
+#define PIN_FD3 7u // PA_11
+#define PIN_FSCK 6u // PA_10
+#define PIN_MISO0 13u // PA_22
+#define PIN_MISO1 13u // PA_22
+#define PIN_MOSI0 14u // PA_23
+#define PIN_MOSI1 14u // PA_23
+#define PIN_PA00 0u // PA_0
+#define PIN_PA05 1u // PA_5
+#define PIN_PA06 2u // PA_6
+#define PIN_PA07 3u // PA_7
+#define PIN_PA08 4u // PA_8
+#define PIN_PA09 5u // PA_9
+#define PIN_PA10 6u // PA_10
+#define PIN_PA11 7u // PA_11
+#define PIN_PA12 8u // PA_12
+#define PIN_PA14 9u // PA_14
+#define PIN_PA15 10u // PA_15
+#define PIN_PA18 11u // PA_18
+#define PIN_PA19 12u // PA_19
+#define PIN_PA22 13u // PA_22
+#define PIN_PA23 14u // PA_23
+#define PIN_PA29 15u // PA_29
+#define PIN_PA30 16u // PA_30
+#define PIN_RTS0 13u // PA_22
+#define PIN_RX0 11u // PA_18
+#define PIN_RX2 15u // PA_29
+#define PIN_SCK0 11u // PA_18
+#define PIN_SCK1 11u // PA_18
+#define PIN_TX0 14u // PA_23
+#define PIN_TX2 16u // PA_30
+
+// Port availability
+// -----------------
+#define HAS_SERIAL0 1
+#define HAS_SERIAL2 1
+#define HAS_SPI0 1
+#define HAS_SPI1 1
+#define HAS_WIRE0 1
+#define HAS_WIRE1 1
diff --git a/boards/generic-rtl8710bx-4mb-980k/variant.cpp b/boards/variants/generic-rtl8710bx-4mb-980k.cpp
similarity index 97%
rename from boards/generic-rtl8710bx-4mb-980k/variant.cpp
rename to boards/variants/generic-rtl8710bx-4mb-980k.cpp
index dc55d0a..ab73383 100644
--- a/boards/generic-rtl8710bx-4mb-980k/variant.cpp
+++ b/boards/variants/generic-rtl8710bx-4mb-980k.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: PA00, PWM2
diff --git a/boards/variants/generic-rtl8710bx-4mb-980k.h b/boards/variants/generic-rtl8710bx-4mb-980k.h
new file mode 100644
index 0000000..ce00ee3
--- /dev/null
+++ b/boards/variants/generic-rtl8710bx-4mb-980k.h
@@ -0,0 +1,99 @@
+/* This file was auto-generated from generic-rtl8710bx-4mb-980k.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 17
+#define NUM_DIGITAL_PINS 17
+#define NUM_ANALOG_INPUTS 1
+#define NUM_ANALOG_OUTPUTS 0
+
+// Analog pins
+// -----------
+#define PIN_A0 12u // PA_19
+#define A0 PIN_A0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 2
+#define PIN_SPI0_CS 12u // PA_19
+#define PIN_SPI0_MISO 13u // PA_22
+#define PIN_SPI0_MOSI 14u // PA_23
+#define PIN_SPI0_SCK 11u // PA_18
+#define PIN_SPI1_CS 12u // PA_19
+#define PIN_SPI1_MISO 13u // PA_22
+#define PIN_SPI1_MOSI 14u // PA_23
+#define PIN_SPI1_SCK 11u // PA_18
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 2
+#define PIN_WIRE0_SCL_0 13u // PA_22
+#define PIN_WIRE0_SCL_1 15u // PA_29
+#define PIN_WIRE0_SDA_0 12u // PA_19
+#define PIN_WIRE0_SDA_1 16u // PA_30
+#define PIN_WIRE1_SCL 11u // PA_18
+#define PIN_WIRE1_SDA 14u // PA_23
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL0_CTS 12u // PA_19
+#define PIN_SERIAL0_RTS 13u // PA_22
+#define PIN_SERIAL0_RX 11u // PA_18
+#define PIN_SERIAL0_TX 14u // PA_23
+#define PIN_SERIAL2_RX 15u // PA_29
+#define PIN_SERIAL2_TX 16u // PA_30
+
+// Pin function macros
+// -------------------
+#define PIN_ADC1 12u // PA_19
+#define PIN_CS0 12u // PA_19
+#define PIN_CS1 12u // PA_19
+#define PIN_CTS0 12u // PA_19
+#define PIN_FCS 2u // PA_6
+#define PIN_FD0 5u // PA_9
+#define PIN_FD1 3u // PA_7
+#define PIN_FD2 4u // PA_8
+#define PIN_FD3 7u // PA_11
+#define PIN_FSCK 6u // PA_10
+#define PIN_MISO0 13u // PA_22
+#define PIN_MISO1 13u // PA_22
+#define PIN_MOSI0 14u // PA_23
+#define PIN_MOSI1 14u // PA_23
+#define PIN_PA00 0u // PA_0
+#define PIN_PA05 1u // PA_5
+#define PIN_PA06 2u // PA_6
+#define PIN_PA07 3u // PA_7
+#define PIN_PA08 4u // PA_8
+#define PIN_PA09 5u // PA_9
+#define PIN_PA10 6u // PA_10
+#define PIN_PA11 7u // PA_11
+#define PIN_PA12 8u // PA_12
+#define PIN_PA14 9u // PA_14
+#define PIN_PA15 10u // PA_15
+#define PIN_PA18 11u // PA_18
+#define PIN_PA19 12u // PA_19
+#define PIN_PA22 13u // PA_22
+#define PIN_PA23 14u // PA_23
+#define PIN_PA29 15u // PA_29
+#define PIN_PA30 16u // PA_30
+#define PIN_RTS0 13u // PA_22
+#define PIN_RX0 11u // PA_18
+#define PIN_RX2 15u // PA_29
+#define PIN_SCK0 11u // PA_18
+#define PIN_SCK1 11u // PA_18
+#define PIN_TX0 14u // PA_23
+#define PIN_TX2 16u // PA_30
+
+// Port availability
+// -----------------
+#define HAS_SERIAL0 1
+#define HAS_SERIAL2 1
+#define HAS_SPI0 1
+#define HAS_SPI1 1
+#define HAS_WIRE0 1
+#define HAS_WIRE1 1
diff --git a/boards/variants/generic-rtl8720cf-2mb-992k.cpp b/boards/variants/generic-rtl8720cf-2mb-992k.cpp
new file mode 100644
index 0000000..7bedd2d
--- /dev/null
+++ b/boards/variants/generic-rtl8720cf-2mb-992k.cpp
@@ -0,0 +1,56 @@
+/* This file was auto-generated from generic-rtl8720cf-2mb-992k.json using boardgen */
+
+#include
+
+extern "C" {
+
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
+// clang-format off
+PinInfo pinTable[PINS_COUNT] = {
+ // D0: PA00, TCK, UART1_RX, PWM0, SWCLK
+ {PIN_A0, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_JTAG | PIN_SWD | PIN_UART, PIN_NONE, 0},
+ // D1: PA01, TMS, UART1_TX, PWM1, SWDIO
+ {PIN_A1, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_JTAG | PIN_SWD | PIN_UART, PIN_NONE, 0},
+ // D2: PA02, TDO, UART1_RX, SPI0_CS, I2C0_SCL, PWM2
+ {PIN_A2, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_JTAG | PIN_SPI | PIN_UART, PIN_NONE, 0},
+ // D3: PA03, TDI, UART1_TX, SPI0_SCK, I2C0_SDA, PWM3
+ {PIN_A3, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_JTAG | PIN_SPI | PIN_UART, PIN_NONE, 0},
+ // D4: PA04, tRST, UART1_CTS, SPI0_MOSI, PWM4
+ {PIN_A4, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_JTAG | PIN_SPI | PIN_UART, PIN_NONE, 0},
+ // D5: PA07, ^FCS, SPI0_CS
+ {PIN_A7, PIN_GPIO | PIN_IRQ | PIN_SPI, PIN_NONE, 0},
+ // D6: PA08, FSCK, SPI0_SCK
+ {PIN_A8, PIN_GPIO | PIN_IRQ | PIN_SPI, PIN_NONE, 0},
+ // D7: PA09, FD2, SPI0_MOSI, UART0_RTS
+ {PIN_A9, PIN_GPIO | PIN_IRQ | PIN_SPI | PIN_UART, PIN_NONE, 0},
+ // D8: PA10, FD1, SPI0_MISO, UART0_CTS
+ {PIN_A10, PIN_GPIO | PIN_IRQ | PIN_SPI | PIN_UART, PIN_NONE, 0},
+ // D9: PA11, FD0, UART0_TX, I2C0_SCL, PWM0
+ {PIN_A11, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_UART, PIN_NONE, 0},
+ // D10: PA12, FD3, UART0_RX, I2C0_SDA, PWM1
+ {PIN_A12, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_UART, PIN_NONE, 0},
+ // D11: PA13, UART0_RX, PWM7
+ {PIN_A13, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_UART, PIN_NONE, 0},
+ // D12: PA14, SD_INT, UART0_TX, PWM2
+ {PIN_A14, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_UART, PIN_NONE, 0},
+ // D13: PA15, SD_D2, SPI0_CS, UART2_RX, I2C0_SCL, PWM3
+ {PIN_A15, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_SPI | PIN_UART, PIN_NONE, 0},
+ // D14: PA16, SD_D3, SPI0_SCK, UART2_TX, I2C0_SDA, PWM4
+ {PIN_A16, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_SPI | PIN_UART, PIN_NONE, 0},
+ // D15: PA17, SD_CMD, PWM5
+ {PIN_A17, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
+ // D16: PA18, SD_CLK, PWM6
+ {PIN_A18, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
+ // D17: PA19, SD_D0, SPI0_MOSI, UART2_CTS, I2C0_SCL, PWM7
+ {PIN_A19, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_SPI | PIN_UART, PIN_NONE, 0},
+ // D18: PA20, SD_D1, SPI0_MISO, UART2_RTS, I2C0_SDA, PWM0
+ {PIN_A20, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_SPI | PIN_UART, PIN_NONE, 0},
+ // D19: PA23, PWM7
+ {PIN_A23, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
+};
+// clang-format on
+
+} // extern "C"
diff --git a/boards/variants/generic-rtl8720cf-2mb-992k.h b/boards/variants/generic-rtl8720cf-2mb-992k.h
new file mode 100644
index 0000000..ea6e7da
--- /dev/null
+++ b/boards/variants/generic-rtl8720cf-2mb-992k.h
@@ -0,0 +1,93 @@
+/* This file was auto-generated from generic-rtl8720cf-2mb-992k.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 20
+#define NUM_DIGITAL_PINS 20
+#define NUM_ANALOG_OUTPUTS 0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 1
+#define PIN_SPI0_CS_0 2u // PIN_A2
+#define PIN_SPI0_CS_1 5u // PIN_A7
+#define PIN_SPI0_CS_2 13u // PIN_A15
+#define PIN_SPI0_MISO_0 8u // PIN_A10
+#define PIN_SPI0_MISO_1 18u // PIN_A20
+#define PIN_SPI0_MOSI_0 4u // PIN_A4
+#define PIN_SPI0_MOSI_1 7u // PIN_A9
+#define PIN_SPI0_MOSI_2 17u // PIN_A19
+#define PIN_SPI0_SCK_0 3u // PIN_A3
+#define PIN_SPI0_SCK_1 6u // PIN_A8
+#define PIN_SPI0_SCK_2 14u // PIN_A16
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 1
+#define PIN_WIRE0_SCL_0 2u // PIN_A2
+#define PIN_WIRE0_SCL_1 9u // PIN_A11
+#define PIN_WIRE0_SCL_2 13u // PIN_A15
+#define PIN_WIRE0_SCL_3 17u // PIN_A19
+#define PIN_WIRE0_SDA_0 3u // PIN_A3
+#define PIN_WIRE0_SDA_1 10u // PIN_A12
+#define PIN_WIRE0_SDA_2 14u // PIN_A16
+#define PIN_WIRE0_SDA_3 18u // PIN_A20
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 3
+#define PIN_SERIAL0_CTS 8u // PIN_A10
+#define PIN_SERIAL0_RTS 7u // PIN_A9
+#define PIN_SERIAL0_RX_0 10u // PIN_A12
+#define PIN_SERIAL0_RX_1 11u // PIN_A13
+#define PIN_SERIAL0_TX_0 9u // PIN_A11
+#define PIN_SERIAL0_TX_1 12u // PIN_A14
+#define PIN_SERIAL1_CTS 4u // PIN_A4
+#define PIN_SERIAL1_RX_0 0u // PIN_A0
+#define PIN_SERIAL1_RX_1 2u // PIN_A2
+#define PIN_SERIAL1_TX_0 1u // PIN_A1
+#define PIN_SERIAL1_TX_1 3u // PIN_A3
+#define PIN_SERIAL2_CTS 17u // PIN_A19
+#define PIN_SERIAL2_RTS 18u // PIN_A20
+#define PIN_SERIAL2_RX 13u // PIN_A15
+#define PIN_SERIAL2_TX 14u // PIN_A16
+
+// Pin function macros
+// -------------------
+#define PIN_CTS0 8u // PIN_A10
+#define PIN_CTS1 4u // PIN_A4
+#define PIN_CTS2 17u // PIN_A19
+#define PIN_PA00 0u // PIN_A0
+#define PIN_PA01 1u // PIN_A1
+#define PIN_PA02 2u // PIN_A2
+#define PIN_PA03 3u // PIN_A3
+#define PIN_PA04 4u // PIN_A4
+#define PIN_PA07 5u // PIN_A7
+#define PIN_PA08 6u // PIN_A8
+#define PIN_PA09 7u // PIN_A9
+#define PIN_PA10 8u // PIN_A10
+#define PIN_PA11 9u // PIN_A11
+#define PIN_PA12 10u // PIN_A12
+#define PIN_PA13 11u // PIN_A13
+#define PIN_PA14 12u // PIN_A14
+#define PIN_PA15 13u // PIN_A15
+#define PIN_PA16 14u // PIN_A16
+#define PIN_PA17 15u // PIN_A17
+#define PIN_PA18 16u // PIN_A18
+#define PIN_PA19 17u // PIN_A19
+#define PIN_PA20 18u // PIN_A20
+#define PIN_PA23 19u // PIN_A23
+#define PIN_RTS0 7u // PIN_A9
+#define PIN_RTS2 18u // PIN_A20
+
+// Port availability
+// -----------------
+#define HAS_SERIAL0 1
+#define HAS_SERIAL1 1
+#define HAS_SERIAL2 1
+#define HAS_SPI0 1
+#define HAS_WIRE0 1
diff --git a/boards/lsc-lma35-t/variant.cpp b/boards/variants/lsc-lma35-t.cpp
similarity index 96%
rename from boards/lsc-lma35-t/variant.cpp
rename to boards/variants/lsc-lma35-t.cpp
index 19882ab..528c92c 100644
--- a/boards/lsc-lma35-t/variant.cpp
+++ b/boards/variants/lsc-lma35-t.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P26, PWM5, IRDA
diff --git a/boards/variants/lsc-lma35-t.h b/boards/variants/lsc-lma35-t.h
new file mode 100644
index 0000000..458fd87
--- /dev/null
+++ b/boards/variants/lsc-lma35-t.h
@@ -0,0 +1,75 @@
+/* This file was auto-generated from lsc-lma35-t.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 15
+#define NUM_DIGITAL_PINS 15
+#define NUM_ANALOG_INPUTS 1
+#define NUM_ANALOG_OUTPUTS 0
+
+// Analog pins
+// -----------
+#define PIN_A0 6u // GPIO23
+#define A0 PIN_A0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 0
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 1
+#define PIN_WIRE2_SCL 5u // GPIO0
+#define PIN_WIRE2_SDA 14u // GPIO1
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL1_RX 12u // GPIO10
+#define PIN_SERIAL1_TX 13u // GPIO11
+#define PIN_SERIAL2_RX 14u // GPIO1
+#define PIN_SERIAL2_TX 5u // GPIO0
+
+// Pin function macros
+// -------------------
+#define PIN_ADC3 6u // GPIO23
+#define PIN_MOSI 2u // GPIO16
+#define PIN_P0 5u // GPIO0
+#define PIN_P1 14u // GPIO1
+#define PIN_P6 10u // GPIO6
+#define PIN_P7 11u // GPIO7
+#define PIN_P8 7u // GPIO8
+#define PIN_P9 8u // GPIO9
+#define PIN_P10 12u // GPIO10
+#define PIN_P11 13u // GPIO11
+#define PIN_P14 1u // GPIO14
+#define PIN_P16 2u // GPIO16
+#define PIN_P21 9u // GPIO21
+#define PIN_P22 4u // GPIO22
+#define PIN_P23 6u // GPIO23
+#define PIN_P24 3u // GPIO24
+#define PIN_P26 0u // GPIO26
+#define PIN_PWM0 10u // GPIO6
+#define PIN_PWM1 11u // GPIO7
+#define PIN_PWM2 7u // GPIO8
+#define PIN_PWM3 8u // GPIO9
+#define PIN_PWM4 3u // GPIO24
+#define PIN_PWM5 0u // GPIO26
+#define PIN_RX1 12u // GPIO10
+#define PIN_RX2 14u // GPIO1
+#define PIN_SCK 1u // GPIO14
+#define PIN_SCL2 5u // GPIO0
+#define PIN_SDA1 9u // GPIO21
+#define PIN_SDA2 14u // GPIO1
+#define PIN_TX1 13u // GPIO11
+#define PIN_TX2 5u // GPIO0
+
+// Port availability
+// -----------------
+#define HAS_SERIAL1 1
+#define HAS_SERIAL2 1
+#define HAS_WIRE2 1
diff --git a/boards/lsc-lma35/variant.cpp b/boards/variants/lsc-lma35.cpp
similarity index 96%
rename from boards/lsc-lma35/variant.cpp
rename to boards/variants/lsc-lma35.cpp
index e07b81f..b511787 100644
--- a/boards/lsc-lma35/variant.cpp
+++ b/boards/variants/lsc-lma35.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P26, PWM5, IRDA
diff --git a/boards/variants/lsc-lma35.h b/boards/variants/lsc-lma35.h
new file mode 100644
index 0000000..7612e73
--- /dev/null
+++ b/boards/variants/lsc-lma35.h
@@ -0,0 +1,75 @@
+/* This file was auto-generated from lsc-lma35.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 15
+#define NUM_DIGITAL_PINS 15
+#define NUM_ANALOG_INPUTS 1
+#define NUM_ANALOG_OUTPUTS 0
+
+// Analog pins
+// -----------
+#define PIN_A0 6u // GPIO23
+#define A0 PIN_A0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 0
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 1
+#define PIN_WIRE2_SCL 5u // GPIO0
+#define PIN_WIRE2_SDA 14u // GPIO1
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL1_RX 12u // GPIO10
+#define PIN_SERIAL1_TX 13u // GPIO11
+#define PIN_SERIAL2_RX 14u // GPIO1
+#define PIN_SERIAL2_TX 5u // GPIO0
+
+// Pin function macros
+// -------------------
+#define PIN_ADC3 6u // GPIO23
+#define PIN_MOSI 2u // GPIO16
+#define PIN_P0 5u // GPIO0
+#define PIN_P1 14u // GPIO1
+#define PIN_P6 10u // GPIO6
+#define PIN_P7 11u // GPIO7
+#define PIN_P8 7u // GPIO8
+#define PIN_P9 8u // GPIO9
+#define PIN_P10 12u // GPIO10
+#define PIN_P11 13u // GPIO11
+#define PIN_P14 1u // GPIO14
+#define PIN_P16 2u // GPIO16
+#define PIN_P21 9u // GPIO21
+#define PIN_P22 4u // GPIO22
+#define PIN_P23 6u // GPIO23
+#define PIN_P24 3u // GPIO24
+#define PIN_P26 0u // GPIO26
+#define PIN_PWM0 10u // GPIO6
+#define PIN_PWM1 11u // GPIO7
+#define PIN_PWM2 7u // GPIO8
+#define PIN_PWM3 8u // GPIO9
+#define PIN_PWM4 3u // GPIO24
+#define PIN_PWM5 0u // GPIO26
+#define PIN_RX1 12u // GPIO10
+#define PIN_RX2 14u // GPIO1
+#define PIN_SCK 1u // GPIO14
+#define PIN_SCL2 5u // GPIO0
+#define PIN_SDA1 9u // GPIO21
+#define PIN_SDA2 14u // GPIO1
+#define PIN_TX1 13u // GPIO11
+#define PIN_TX2 5u // GPIO0
+
+// Port availability
+// -----------------
+#define HAS_SERIAL1 1
+#define HAS_SERIAL2 1
+#define HAS_WIRE2 1
diff --git a/boards/wb2l/variant.cpp b/boards/variants/wb2l.cpp
similarity index 96%
rename from boards/wb2l/variant.cpp
rename to boards/variants/wb2l.cpp
index 534343b..84dd332 100644
--- a/boards/wb2l/variant.cpp
+++ b/boards/variants/wb2l.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P8, PWM2
diff --git a/boards/variants/wb2l.h b/boards/variants/wb2l.h
new file mode 100644
index 0000000..57cf1ef
--- /dev/null
+++ b/boards/variants/wb2l.h
@@ -0,0 +1,74 @@
+/* This file was auto-generated from wb2l.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 13
+#define NUM_DIGITAL_PINS 13
+#define NUM_ANALOG_INPUTS 1
+#define NUM_ANALOG_OUTPUTS 0
+
+// Analog pins
+// -----------
+#define PIN_A0 11u // GPIO23
+#define A0 PIN_A0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 0
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 2
+#define PIN_WIRE1_SCL 9u // GPIO20
+#define PIN_WIRE1_SDA 10u // GPIO21
+#define PIN_WIRE2_SCL 8u // GPIO0
+#define PIN_WIRE2_SDA 7u // GPIO1
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL1_RX 5u // GPIO10
+#define PIN_SERIAL1_TX 6u // GPIO11
+#define PIN_SERIAL2_RX 7u // GPIO1
+#define PIN_SERIAL2_TX 8u // GPIO0
+
+// Pin function macros
+// -------------------
+#define PIN_ADC3 11u // GPIO23
+#define PIN_P0 8u // GPIO0
+#define PIN_P1 7u // GPIO1
+#define PIN_P6 2u // GPIO6
+#define PIN_P7 1u // GPIO7
+#define PIN_P8 0u // GPIO8
+#define PIN_P10 5u // GPIO10
+#define PIN_P11 6u // GPIO11
+#define PIN_P20 9u // GPIO20
+#define PIN_P21 10u // GPIO21
+#define PIN_P22 12u // GPIO22
+#define PIN_P23 11u // GPIO23
+#define PIN_P24 4u // GPIO24
+#define PIN_P26 3u // GPIO26
+#define PIN_PWM0 2u // GPIO6
+#define PIN_PWM1 1u // GPIO7
+#define PIN_PWM2 0u // GPIO8
+#define PIN_PWM4 4u // GPIO24
+#define PIN_PWM5 3u // GPIO26
+#define PIN_RX1 5u // GPIO10
+#define PIN_RX2 7u // GPIO1
+#define PIN_SCL1 9u // GPIO20
+#define PIN_SCL2 8u // GPIO0
+#define PIN_SDA1 10u // GPIO21
+#define PIN_SDA2 7u // GPIO1
+#define PIN_TX1 6u // GPIO11
+#define PIN_TX2 8u // GPIO0
+
+// Port availability
+// -----------------
+#define HAS_SERIAL1 1
+#define HAS_SERIAL2 1
+#define HAS_WIRE1 1
+#define HAS_WIRE2 1
diff --git a/boards/wb2s/variant.cpp b/boards/variants/wb2s.cpp
similarity index 96%
rename from boards/wb2s/variant.cpp
rename to boards/variants/wb2s.cpp
index d0d6bc3..543fe04 100644
--- a/boards/wb2s/variant.cpp
+++ b/boards/variants/wb2s.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P8, PWM2
diff --git a/boards/variants/wb2s.h b/boards/variants/wb2s.h
new file mode 100644
index 0000000..eb3617b
--- /dev/null
+++ b/boards/variants/wb2s.h
@@ -0,0 +1,78 @@
+/* This file was auto-generated from wb2s.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 14
+#define NUM_DIGITAL_PINS 14
+#define NUM_ANALOG_INPUTS 1
+#define NUM_ANALOG_OUTPUTS 0
+
+// Analog pins
+// -----------
+#define PIN_A0 3u // GPIO23
+#define PIN_A0 3u // GPIO23
+#define A0 PIN_A0
+#define A0 PIN_A0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 0
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 2
+#define PIN_WIRE1_SCL 8u // GPIO20
+#define PIN_WIRE1_SDA 12u // GPIO21
+#define PIN_WIRE2_SCL 11u // GPIO0
+#define PIN_WIRE2_SDA 10u // GPIO1
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL1_RX 4u // GPIO10
+#define PIN_SERIAL1_TX 5u // GPIO11
+#define PIN_SERIAL2_RX 10u // GPIO1
+#define PIN_SERIAL2_TX 11u // GPIO0
+
+// Pin function macros
+// -------------------
+#define PIN_ADC3 3u // GPIO23
+#define PIN_P0 11u // GPIO0
+#define PIN_P1 10u // GPIO1
+#define PIN_P6 2u // GPIO6
+#define PIN_P7 1u // GPIO7
+#define PIN_P8 0u // GPIO8
+#define PIN_P9 9u // GPIO9
+#define PIN_P10 4u // GPIO10
+#define PIN_P11 5u // GPIO11
+#define PIN_P20 8u // GPIO20
+#define PIN_P21 12u // GPIO21
+#define PIN_P22 13u // GPIO22
+#define PIN_P23 3u // GPIO23
+#define PIN_P24 6u // GPIO24
+#define PIN_P26 7u // GPIO26
+#define PIN_PWM0 2u // GPIO6
+#define PIN_PWM1 1u // GPIO7
+#define PIN_PWM2 0u // GPIO8
+#define PIN_PWM3 9u // GPIO9
+#define PIN_PWM4 6u // GPIO24
+#define PIN_PWM5 7u // GPIO26
+#define PIN_RX1 4u // GPIO10
+#define PIN_RX2 10u // GPIO1
+#define PIN_SCL1 8u // GPIO20
+#define PIN_SCL2 11u // GPIO0
+#define PIN_SDA1 12u // GPIO21
+#define PIN_SDA2 10u // GPIO1
+#define PIN_TX1 5u // GPIO11
+#define PIN_TX2 11u // GPIO0
+
+// Port availability
+// -----------------
+#define HAS_SERIAL1 1
+#define HAS_SERIAL2 1
+#define HAS_WIRE1 1
+#define HAS_WIRE2 1
diff --git a/boards/wb3l/variant.cpp b/boards/variants/wb3l.cpp
similarity index 96%
rename from boards/wb3l/variant.cpp
rename to boards/variants/wb3l.cpp
index 41ddfce..5b75246 100644
--- a/boards/wb3l/variant.cpp
+++ b/boards/variants/wb3l.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P23, ADC3, TDO, FSO
diff --git a/boards/variants/wb3l.h b/boards/variants/wb3l.h
new file mode 100644
index 0000000..4f3b580
--- /dev/null
+++ b/boards/variants/wb3l.h
@@ -0,0 +1,82 @@
+/* This file was auto-generated from wb3l.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 16
+#define NUM_DIGITAL_PINS 16
+#define NUM_ANALOG_INPUTS 1
+#define NUM_ANALOG_OUTPUTS 0
+
+// Analog pins
+// -----------
+#define PIN_A0 0u // GPIO23
+#define PIN_A0 0u // GPIO23
+#define A0 PIN_A0
+#define A0 PIN_A0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 0
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 2
+#define PIN_WIRE1_SCL 14u // GPIO20
+#define PIN_WIRE1_SDA 13u // GPIO21
+#define PIN_WIRE2_SCL 6u // GPIO0
+#define PIN_WIRE2_SDA 15u // GPIO1
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL1_RX 10u // GPIO10
+#define PIN_SERIAL1_TX 11u // GPIO11
+#define PIN_SERIAL2_RX 15u // GPIO1
+#define PIN_SERIAL2_TX 6u // GPIO0
+
+// Pin function macros
+// -------------------
+#define PIN_ADC3 0u // GPIO23
+#define PIN_MOSI 7u // GPIO16
+#define PIN_P0 6u // GPIO0
+#define PIN_P1 15u // GPIO1
+#define PIN_P6 4u // GPIO6
+#define PIN_P7 9u // GPIO7
+#define PIN_P8 8u // GPIO8
+#define PIN_P9 5u // GPIO9
+#define PIN_P10 10u // GPIO10
+#define PIN_P11 11u // GPIO11
+#define PIN_P14 1u // GPIO14
+#define PIN_P16 7u // GPIO16
+#define PIN_P20 14u // GPIO20
+#define PIN_P21 13u // GPIO21
+#define PIN_P22 12u // GPIO22
+#define PIN_P23 0u // GPIO23
+#define PIN_P24 3u // GPIO24
+#define PIN_P26 2u // GPIO26
+#define PIN_PWM0 4u // GPIO6
+#define PIN_PWM1 9u // GPIO7
+#define PIN_PWM2 8u // GPIO8
+#define PIN_PWM3 5u // GPIO9
+#define PIN_PWM4 3u // GPIO24
+#define PIN_PWM5 2u // GPIO26
+#define PIN_RX1 10u // GPIO10
+#define PIN_RX2 15u // GPIO1
+#define PIN_SCK 1u // GPIO14
+#define PIN_SCL1 14u // GPIO20
+#define PIN_SCL2 6u // GPIO0
+#define PIN_SDA1 13u // GPIO21
+#define PIN_SDA2 15u // GPIO1
+#define PIN_TX1 11u // GPIO11
+#define PIN_TX2 6u // GPIO0
+
+// Port availability
+// -----------------
+#define HAS_SERIAL1 1
+#define HAS_SERIAL2 1
+#define HAS_WIRE1 1
+#define HAS_WIRE2 1
diff --git a/boards/wb3s/variant.cpp b/boards/variants/wb3s.cpp
similarity index 96%
rename from boards/wb3s/variant.cpp
rename to boards/variants/wb3s.cpp
index 3b4e22b..20dd48b 100644
--- a/boards/wb3s/variant.cpp
+++ b/boards/variants/wb3s.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P23, ADC3, TDO, FSO
diff --git a/boards/variants/wb3s.h b/boards/variants/wb3s.h
new file mode 100644
index 0000000..b658493
--- /dev/null
+++ b/boards/variants/wb3s.h
@@ -0,0 +1,80 @@
+/* This file was auto-generated from wb3s.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 15
+#define NUM_DIGITAL_PINS 15
+#define NUM_ANALOG_INPUTS 1
+#define NUM_ANALOG_OUTPUTS 0
+
+// Analog pins
+// -----------
+#define PIN_A0 0u // GPIO23
+#define PIN_A0 0u // GPIO23
+#define A0 PIN_A0
+#define A0 PIN_A0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 0
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 2
+#define PIN_WIRE1_SCL 14u // GPIO20
+#define PIN_WIRE1_SDA 13u // GPIO21
+#define PIN_WIRE2_SCL 6u // GPIO0
+#define PIN_WIRE2_SDA 7u // GPIO1
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 2
+#define PIN_SERIAL1_RX 10u // GPIO10
+#define PIN_SERIAL1_TX 11u // GPIO11
+#define PIN_SERIAL2_RX 7u // GPIO1
+#define PIN_SERIAL2_TX 6u // GPIO0
+
+// Pin function macros
+// -------------------
+#define PIN_ADC3 0u // GPIO23
+#define PIN_P0 6u // GPIO0
+#define PIN_P1 7u // GPIO1
+#define PIN_P6 4u // GPIO6
+#define PIN_P7 5u // GPIO7
+#define PIN_P8 9u // GPIO8
+#define PIN_P9 8u // GPIO9
+#define PIN_P10 10u // GPIO10
+#define PIN_P11 11u // GPIO11
+#define PIN_P14 1u // GPIO14
+#define PIN_P20 14u // GPIO20
+#define PIN_P21 13u // GPIO21
+#define PIN_P22 12u // GPIO22
+#define PIN_P23 0u // GPIO23
+#define PIN_P24 3u // GPIO24
+#define PIN_P26 2u // GPIO26
+#define PIN_PWM0 4u // GPIO6
+#define PIN_PWM1 5u // GPIO7
+#define PIN_PWM2 9u // GPIO8
+#define PIN_PWM3 8u // GPIO9
+#define PIN_PWM4 3u // GPIO24
+#define PIN_PWM5 2u // GPIO26
+#define PIN_RX1 10u // GPIO10
+#define PIN_RX2 7u // GPIO1
+#define PIN_SCK 1u // GPIO14
+#define PIN_SCL1 14u // GPIO20
+#define PIN_SCL2 6u // GPIO0
+#define PIN_SDA1 13u // GPIO21
+#define PIN_SDA2 7u // GPIO1
+#define PIN_TX1 11u // GPIO11
+#define PIN_TX2 6u // GPIO0
+
+// Port availability
+// -----------------
+#define HAS_SERIAL1 1
+#define HAS_SERIAL2 1
+#define HAS_WIRE1 1
+#define HAS_WIRE2 1
diff --git a/boards/wr2/variant.cpp b/boards/variants/wr2.cpp
similarity index 94%
rename from boards/wr2/variant.cpp
rename to boards/variants/wr2.cpp
index 7c5f0fa..59e09f3 100644
--- a/boards/wr2/variant.cpp
+++ b/boards/variants/wr2.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: PA12, PWM3
diff --git a/boards/wr2/variant.h b/boards/variants/wr2.h
similarity index 53%
rename from boards/wr2/variant.h
rename to boards/variants/wr2.h
index 3fb6663..e3f255c 100644
--- a/boards/wr2/variant.h
+++ b/boards/variants/wr2.h
@@ -2,8 +2,6 @@
#pragma once
-#include
-
// clang-format off
// Pins
@@ -36,19 +34,24 @@
// Pin function macros
// -------------------
-#define PIN_FUNCTION_ADC2 7u // AD_2
-#define PIN_FUNCTION_MOSI0 4u // PA_23
-#define PIN_FUNCTION_MOSI1 4u // PA_23
-#define PIN_FUNCTION_PA00 1u // PA_0
-#define PIN_FUNCTION_PA05 2u // PA_5
-#define PIN_FUNCTION_PA12 0u // PA_12
-#define PIN_FUNCTION_PA14 5u // PA_14
-#define PIN_FUNCTION_PA15 6u // PA_15
-#define PIN_FUNCTION_PA18 3u // PA_18
-#define PIN_FUNCTION_PA23 4u // PA_23
-#define PIN_FUNCTION_RX0 3u // PA_18
-#define PIN_FUNCTION_SCK0 3u // PA_18
-#define PIN_FUNCTION_SCK1 3u // PA_18
-#define PIN_FUNCTION_SCL1 3u // PA_18
-#define PIN_FUNCTION_SDA1 4u // PA_23
-#define PIN_FUNCTION_TX0 4u // PA_23
+#define PIN_ADC2 7u // AD_2
+#define PIN_MOSI0 4u // PA_23
+#define PIN_MOSI1 4u // PA_23
+#define PIN_PA00 1u // PA_0
+#define PIN_PA05 2u // PA_5
+#define PIN_PA12 0u // PA_12
+#define PIN_PA14 5u // PA_14
+#define PIN_PA15 6u // PA_15
+#define PIN_PA18 3u // PA_18
+#define PIN_PA23 4u // PA_23
+#define PIN_RX0 3u // PA_18
+#define PIN_SCK0 3u // PA_18
+#define PIN_SCK1 3u // PA_18
+#define PIN_SCL1 3u // PA_18
+#define PIN_SDA1 4u // PA_23
+#define PIN_TX0 4u // PA_23
+
+// Port availability
+// -----------------
+#define HAS_SERIAL0 1
+#define HAS_WIRE1 1
diff --git a/boards/wr2e/variant.cpp b/boards/variants/wr2e.cpp
similarity index 95%
rename from boards/wr2e/variant.cpp
rename to boards/variants/wr2e.cpp
index 3175921..9f1973d 100644
--- a/boards/wr2e/variant.cpp
+++ b/boards/variants/wr2e.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: PA12, PWM3
diff --git a/boards/wr2e/variant.h b/boards/variants/wr2e.h
similarity index 50%
rename from boards/wr2e/variant.h
rename to boards/variants/wr2e.h
index 290e3be..66d2f9f 100644
--- a/boards/wr2e/variant.h
+++ b/boards/variants/wr2e.h
@@ -2,8 +2,6 @@
#pragma once
-#include
-
// clang-format off
// Pins
@@ -39,24 +37,29 @@
// Pin function macros
// -------------------
-#define PIN_FUNCTION_ADC1 1u // PA_19
-#define PIN_FUNCTION_ADC2 7u // AD_2
-#define PIN_FUNCTION_CS0 1u // PA_19
-#define PIN_FUNCTION_CS1 1u // PA_19
-#define PIN_FUNCTION_CTS0 1u // PA_19
-#define PIN_FUNCTION_MOSI0 4u // PA_23
-#define PIN_FUNCTION_MOSI1 4u // PA_23
-#define PIN_FUNCTION_PA05 2u // PA_5
-#define PIN_FUNCTION_PA12 0u // PA_12
-#define PIN_FUNCTION_PA14 5u // PA_14
-#define PIN_FUNCTION_PA15 6u // PA_15
-#define PIN_FUNCTION_PA18 3u // PA_18
-#define PIN_FUNCTION_PA19 1u // PA_19
-#define PIN_FUNCTION_PA23 4u // PA_23
-#define PIN_FUNCTION_RX0 3u // PA_18
-#define PIN_FUNCTION_SCK0 3u // PA_18
-#define PIN_FUNCTION_SCK1 3u // PA_18
-#define PIN_FUNCTION_SCL1 3u // PA_18
-#define PIN_FUNCTION_SDA0 1u // PA_19
-#define PIN_FUNCTION_SDA1 4u // PA_23
-#define PIN_FUNCTION_TX0 4u // PA_23
+#define PIN_ADC1 1u // PA_19
+#define PIN_ADC2 7u // AD_2
+#define PIN_CS0 1u // PA_19
+#define PIN_CS1 1u // PA_19
+#define PIN_CTS0 1u // PA_19
+#define PIN_MOSI0 4u // PA_23
+#define PIN_MOSI1 4u // PA_23
+#define PIN_PA05 2u // PA_5
+#define PIN_PA12 0u // PA_12
+#define PIN_PA14 5u // PA_14
+#define PIN_PA15 6u // PA_15
+#define PIN_PA18 3u // PA_18
+#define PIN_PA19 1u // PA_19
+#define PIN_PA23 4u // PA_23
+#define PIN_RX0 3u // PA_18
+#define PIN_SCK0 3u // PA_18
+#define PIN_SCK1 3u // PA_18
+#define PIN_SCL1 3u // PA_18
+#define PIN_SDA0 1u // PA_19
+#define PIN_SDA1 4u // PA_23
+#define PIN_TX0 4u // PA_23
+
+// Port availability
+// -----------------
+#define HAS_SERIAL0 1
+#define HAS_WIRE1 1
diff --git a/boards/wr2l/variant.cpp b/boards/variants/wr2l.cpp
similarity index 93%
rename from boards/wr2l/variant.cpp
rename to boards/variants/wr2l.cpp
index 525dcf2..1ef6df8 100644
--- a/boards/wr2l/variant.cpp
+++ b/boards/variants/wr2l.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: PA15, PWM1, SWDIO
diff --git a/boards/wr2l/variant.h b/boards/variants/wr2l.h
similarity index 50%
rename from boards/wr2l/variant.h
rename to boards/variants/wr2l.h
index 3e44957..dc186cd 100644
--- a/boards/wr2l/variant.h
+++ b/boards/variants/wr2l.h
@@ -2,8 +2,6 @@
#pragma once
-#include
-
// clang-format off
// Pins
@@ -32,17 +30,17 @@
// Pin function macros
// -------------------
-#define PIN_FUNCTION_ADC1 3u // PA_19
-#define PIN_FUNCTION_CS0 3u // PA_19
-#define PIN_FUNCTION_CS1 3u // PA_19
-#define PIN_FUNCTION_CTS0 3u // PA_19
-#define PIN_FUNCTION_PA05 2u // PA_5
-#define PIN_FUNCTION_PA12 4u // PA_12
-#define PIN_FUNCTION_PA14 1u // PA_14
-#define PIN_FUNCTION_PA15 0u // PA_15
-#define PIN_FUNCTION_PA19 3u // PA_19
-#define PIN_FUNCTION_PWM0 1u // PA_14
-#define PIN_FUNCTION_PWM1 0u // PA_15
-#define PIN_FUNCTION_PWM3 4u // PA_12
-#define PIN_FUNCTION_PWM4 2u // PA_5
-#define PIN_FUNCTION_SDA0 3u // PA_19
+#define PIN_ADC1 3u // PA_19
+#define PIN_CS0 3u // PA_19
+#define PIN_CS1 3u // PA_19
+#define PIN_CTS0 3u // PA_19
+#define PIN_PA05 2u // PA_5
+#define PIN_PA12 4u // PA_12
+#define PIN_PA14 1u // PA_14
+#define PIN_PA15 0u // PA_15
+#define PIN_PA19 3u // PA_19
+#define PIN_PWM0 1u // PA_14
+#define PIN_PWM1 0u // PA_15
+#define PIN_PWM3 4u // PA_12
+#define PIN_PWM4 2u // PA_5
+#define PIN_SDA0 3u // PA_19
diff --git a/boards/wr2le/variant.cpp b/boards/variants/wr2le.cpp
similarity index 93%
rename from boards/wr2le/variant.cpp
rename to boards/variants/wr2le.cpp
index 677ebf2..2b188a5 100644
--- a/boards/wr2le/variant.cpp
+++ b/boards/variants/wr2le.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: PA15, PWM1, SWDIO
diff --git a/boards/variants/wr2le.h b/boards/variants/wr2le.h
new file mode 100644
index 0000000..2bc3957
--- /dev/null
+++ b/boards/variants/wr2le.h
@@ -0,0 +1,40 @@
+/* This file was auto-generated from wr2le.json using boardgen */
+
+#pragma once
+
+// clang-format off
+
+// Pins
+// ----
+#define PINS_COUNT 5
+#define NUM_DIGITAL_PINS 5
+#define NUM_ANALOG_OUTPUTS 0
+
+// SPI Interfaces
+// --------------
+#define SPI_INTERFACES_COUNT 0
+
+// Wire Interfaces
+// ---------------
+#define WIRE_INTERFACES_COUNT 0
+
+// Serial ports
+// ------------
+#define SERIAL_INTERFACES_COUNT 0
+
+// Pin function macros
+// -------------------
+#define PIN_MISO0 3u // PA_22
+#define PIN_MISO1 3u // PA_22
+#define PIN_PA05 2u // PA_5
+#define PIN_PA12 4u // PA_12
+#define PIN_PA14 1u // PA_14
+#define PIN_PA15 0u // PA_15
+#define PIN_PA22 3u // PA_22
+#define PIN_PWM0 1u // PA_14
+#define PIN_PWM1 0u // PA_15
+#define PIN_PWM3 4u // PA_12
+#define PIN_PWM4 2u // PA_5
+#define PIN_PWM5 3u // PA_22
+#define PIN_RTS0 3u // PA_22
+#define PIN_SCL0 3u // PA_22
diff --git a/boards/wr3/variant.cpp b/boards/variants/wr3.cpp
similarity index 96%
rename from boards/wr3/variant.cpp
rename to boards/variants/wr3.cpp
index 43aaa4b..b157c15 100644
--- a/boards/wr3/variant.cpp
+++ b/boards/variants/wr3.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: PA22, UART0_RTS, SPI0_MISO, SPI1_MISO, I2C0_SCL, SD_D0, PWM5, I2S0_WS, WAKE2
diff --git a/boards/wr3/variant.h b/boards/variants/wr3.h
similarity index 57%
rename from boards/wr3/variant.h
rename to boards/variants/wr3.h
index 89aa47c..bfdcd1b 100644
--- a/boards/wr3/variant.h
+++ b/boards/variants/wr3.h
@@ -2,8 +2,6 @@
#pragma once
-#include
-
// clang-format off
// Pins
@@ -54,30 +52,39 @@
// Pin function macros
// -------------------
-#define PIN_FUNCTION_ADC1 1u // PA_19
-#define PIN_FUNCTION_ADC2 11u // AD_2
-#define PIN_FUNCTION_CS0 1u // PA_19
-#define PIN_FUNCTION_CS1 1u // PA_19
-#define PIN_FUNCTION_CTS0 1u // PA_19
-#define PIN_FUNCTION_MISO0 0u // PA_22
-#define PIN_FUNCTION_MISO1 0u // PA_22
-#define PIN_FUNCTION_MOSI0 10u // PA_23
-#define PIN_FUNCTION_MOSI1 10u // PA_23
-#define PIN_FUNCTION_PA00 4u // PA_0
-#define PIN_FUNCTION_PA05 7u // PA_5
-#define PIN_FUNCTION_PA12 8u // PA_12
-#define PIN_FUNCTION_PA14 2u // PA_14
-#define PIN_FUNCTION_PA15 3u // PA_15
-#define PIN_FUNCTION_PA18 9u // PA_18
-#define PIN_FUNCTION_PA19 1u // PA_19
-#define PIN_FUNCTION_PA22 0u // PA_22
-#define PIN_FUNCTION_PA23 10u // PA_23
-#define PIN_FUNCTION_PA29 5u // PA_29
-#define PIN_FUNCTION_PA30 6u // PA_30
-#define PIN_FUNCTION_RTS0 0u // PA_22
-#define PIN_FUNCTION_RX0 9u // PA_18
-#define PIN_FUNCTION_RX2 5u // PA_29
-#define PIN_FUNCTION_SCK0 9u // PA_18
-#define PIN_FUNCTION_SCK1 9u // PA_18
-#define PIN_FUNCTION_TX0 10u // PA_23
-#define PIN_FUNCTION_TX2 6u // PA_30
+#define PIN_ADC1 1u // PA_19
+#define PIN_ADC2 11u // AD_2
+#define PIN_CS0 1u // PA_19
+#define PIN_CS1 1u // PA_19
+#define PIN_CTS0 1u // PA_19
+#define PIN_MISO0 0u // PA_22
+#define PIN_MISO1 0u // PA_22
+#define PIN_MOSI0 10u // PA_23
+#define PIN_MOSI1 10u // PA_23
+#define PIN_PA00 4u // PA_0
+#define PIN_PA05 7u // PA_5
+#define PIN_PA12 8u // PA_12
+#define PIN_PA14 2u // PA_14
+#define PIN_PA15 3u // PA_15
+#define PIN_PA18 9u // PA_18
+#define PIN_PA19 1u // PA_19
+#define PIN_PA22 0u // PA_22
+#define PIN_PA23 10u // PA_23
+#define PIN_PA29 5u // PA_29
+#define PIN_PA30 6u // PA_30
+#define PIN_RTS0 0u // PA_22
+#define PIN_RX0 9u // PA_18
+#define PIN_RX2 5u // PA_29
+#define PIN_SCK0 9u // PA_18
+#define PIN_SCK1 9u // PA_18
+#define PIN_TX0 10u // PA_23
+#define PIN_TX2 6u // PA_30
+
+// Port availability
+// -----------------
+#define HAS_SERIAL0 1
+#define HAS_SERIAL2 1
+#define HAS_SPI0 1
+#define HAS_SPI1 1
+#define HAS_WIRE0 1
+#define HAS_WIRE1 1
diff --git a/boards/wr3e/variant.cpp b/boards/variants/wr3e.cpp
similarity index 96%
rename from boards/wr3e/variant.cpp
rename to boards/variants/wr3e.cpp
index 0739909..c0abdc0 100644
--- a/boards/wr3e/variant.cpp
+++ b/boards/variants/wr3e.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: PA29, UART2_RX, I2C0_SCL, PWM4
diff --git a/boards/wr3e/variant.h b/boards/variants/wr3e.h
similarity index 57%
rename from boards/wr3e/variant.h
rename to boards/variants/wr3e.h
index 6ddccc9..c2bccac 100644
--- a/boards/wr3e/variant.h
+++ b/boards/variants/wr3e.h
@@ -2,8 +2,6 @@
#pragma once
-#include
-
// clang-format off
// Pins
@@ -54,30 +52,39 @@
// Pin function macros
// -------------------
-#define PIN_FUNCTION_ADC1 6u // PA_19
-#define PIN_FUNCTION_ADC2 11u // AD_2
-#define PIN_FUNCTION_CS0 6u // PA_19
-#define PIN_FUNCTION_CS1 6u // PA_19
-#define PIN_FUNCTION_CTS0 6u // PA_19
-#define PIN_FUNCTION_MISO0 3u // PA_22
-#define PIN_FUNCTION_MISO1 3u // PA_22
-#define PIN_FUNCTION_MOSI0 10u // PA_23
-#define PIN_FUNCTION_MOSI1 10u // PA_23
-#define PIN_FUNCTION_PA00 4u // PA_0
-#define PIN_FUNCTION_PA05 7u // PA_5
-#define PIN_FUNCTION_PA12 8u // PA_12
-#define PIN_FUNCTION_PA14 1u // PA_14
-#define PIN_FUNCTION_PA15 2u // PA_15
-#define PIN_FUNCTION_PA18 9u // PA_18
-#define PIN_FUNCTION_PA19 6u // PA_19
-#define PIN_FUNCTION_PA22 3u // PA_22
-#define PIN_FUNCTION_PA23 10u // PA_23
-#define PIN_FUNCTION_PA29 0u // PA_29
-#define PIN_FUNCTION_PA30 5u // PA_30
-#define PIN_FUNCTION_RTS0 3u // PA_22
-#define PIN_FUNCTION_RX0 9u // PA_18
-#define PIN_FUNCTION_RX2 0u // PA_29
-#define PIN_FUNCTION_SCK0 9u // PA_18
-#define PIN_FUNCTION_SCK1 9u // PA_18
-#define PIN_FUNCTION_TX0 10u // PA_23
-#define PIN_FUNCTION_TX2 5u // PA_30
+#define PIN_ADC1 6u // PA_19
+#define PIN_ADC2 11u // AD_2
+#define PIN_CS0 6u // PA_19
+#define PIN_CS1 6u // PA_19
+#define PIN_CTS0 6u // PA_19
+#define PIN_MISO0 3u // PA_22
+#define PIN_MISO1 3u // PA_22
+#define PIN_MOSI0 10u // PA_23
+#define PIN_MOSI1 10u // PA_23
+#define PIN_PA00 4u // PA_0
+#define PIN_PA05 7u // PA_5
+#define PIN_PA12 8u // PA_12
+#define PIN_PA14 1u // PA_14
+#define PIN_PA15 2u // PA_15
+#define PIN_PA18 9u // PA_18
+#define PIN_PA19 6u // PA_19
+#define PIN_PA22 3u // PA_22
+#define PIN_PA23 10u // PA_23
+#define PIN_PA29 0u // PA_29
+#define PIN_PA30 5u // PA_30
+#define PIN_RTS0 3u // PA_22
+#define PIN_RX0 9u // PA_18
+#define PIN_RX2 0u // PA_29
+#define PIN_SCK0 9u // PA_18
+#define PIN_SCK1 9u // PA_18
+#define PIN_TX0 10u // PA_23
+#define PIN_TX2 5u // PA_30
+
+// Port availability
+// -----------------
+#define HAS_SERIAL0 1
+#define HAS_SERIAL2 1
+#define HAS_SPI0 1
+#define HAS_SPI1 1
+#define HAS_WIRE0 1
+#define HAS_WIRE1 1
diff --git a/boards/wr3l/variant.cpp b/boards/variants/wr3l.cpp
similarity index 96%
rename from boards/wr3l/variant.cpp
rename to boards/variants/wr3l.cpp
index 977b8ef..ffa6ea6 100644
--- a/boards/wr3l/variant.cpp
+++ b/boards/variants/wr3l.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: PA22, UART0_RTS, SPI0_MISO, SPI1_MISO, I2C0_SCL, SD_D0, PWM5, I2S0_WS, WAKE2
diff --git a/boards/wr3l/variant.h b/boards/variants/wr3l.h
similarity index 57%
rename from boards/wr3l/variant.h
rename to boards/variants/wr3l.h
index ab59b7f..9071c4c 100644
--- a/boards/wr3l/variant.h
+++ b/boards/variants/wr3l.h
@@ -2,8 +2,6 @@
#pragma once
-#include
-
// clang-format off
// Pins
@@ -54,30 +52,39 @@
// Pin function macros
// -------------------
-#define PIN_FUNCTION_ADC1 1u // PA_19
-#define PIN_FUNCTION_ADC2 11u // AD_2
-#define PIN_FUNCTION_CS0 1u // PA_19
-#define PIN_FUNCTION_CS1 1u // PA_19
-#define PIN_FUNCTION_CTS0 1u // PA_19
-#define PIN_FUNCTION_MISO0 0u // PA_22
-#define PIN_FUNCTION_MISO1 0u // PA_22
-#define PIN_FUNCTION_MOSI0 10u // PA_23
-#define PIN_FUNCTION_MOSI1 10u // PA_23
-#define PIN_FUNCTION_PA00 4u // PA_0
-#define PIN_FUNCTION_PA05 7u // PA_5
-#define PIN_FUNCTION_PA12 8u // PA_12
-#define PIN_FUNCTION_PA14 2u // PA_14
-#define PIN_FUNCTION_PA15 3u // PA_15
-#define PIN_FUNCTION_PA18 9u // PA_18
-#define PIN_FUNCTION_PA19 1u // PA_19
-#define PIN_FUNCTION_PA22 0u // PA_22
-#define PIN_FUNCTION_PA23 10u // PA_23
-#define PIN_FUNCTION_PA29 5u // PA_29
-#define PIN_FUNCTION_PA30 6u // PA_30
-#define PIN_FUNCTION_RTS0 0u // PA_22
-#define PIN_FUNCTION_RX0 9u // PA_18
-#define PIN_FUNCTION_RX2 5u // PA_29
-#define PIN_FUNCTION_SCK0 9u // PA_18
-#define PIN_FUNCTION_SCK1 9u // PA_18
-#define PIN_FUNCTION_TX0 10u // PA_23
-#define PIN_FUNCTION_TX2 6u // PA_30
+#define PIN_ADC1 1u // PA_19
+#define PIN_ADC2 11u // AD_2
+#define PIN_CS0 1u // PA_19
+#define PIN_CS1 1u // PA_19
+#define PIN_CTS0 1u // PA_19
+#define PIN_MISO0 0u // PA_22
+#define PIN_MISO1 0u // PA_22
+#define PIN_MOSI0 10u // PA_23
+#define PIN_MOSI1 10u // PA_23
+#define PIN_PA00 4u // PA_0
+#define PIN_PA05 7u // PA_5
+#define PIN_PA12 8u // PA_12
+#define PIN_PA14 2u // PA_14
+#define PIN_PA15 3u // PA_15
+#define PIN_PA18 9u // PA_18
+#define PIN_PA19 1u // PA_19
+#define PIN_PA22 0u // PA_22
+#define PIN_PA23 10u // PA_23
+#define PIN_PA29 5u // PA_29
+#define PIN_PA30 6u // PA_30
+#define PIN_RTS0 0u // PA_22
+#define PIN_RX0 9u // PA_18
+#define PIN_RX2 5u // PA_29
+#define PIN_SCK0 9u // PA_18
+#define PIN_SCK1 9u // PA_18
+#define PIN_TX0 10u // PA_23
+#define PIN_TX2 6u // PA_30
+
+// Port availability
+// -----------------
+#define HAS_SERIAL0 1
+#define HAS_SERIAL2 1
+#define HAS_SPI0 1
+#define HAS_SPI1 1
+#define HAS_WIRE0 1
+#define HAS_WIRE1 1
diff --git a/boards/wr3le/variant.cpp b/boards/variants/wr3le.cpp
similarity index 96%
rename from boards/wr3le/variant.cpp
rename to boards/variants/wr3le.cpp
index 4fac504..463831f 100644
--- a/boards/wr3le/variant.cpp
+++ b/boards/variants/wr3le.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: PA29, UART2_RX, I2C0_SCL, PWM4
diff --git a/boards/wr3le/variant.h b/boards/variants/wr3le.h
similarity index 57%
rename from boards/wr3le/variant.h
rename to boards/variants/wr3le.h
index 7e9d8c0..69c097d 100644
--- a/boards/wr3le/variant.h
+++ b/boards/variants/wr3le.h
@@ -2,8 +2,6 @@
#pragma once
-#include
-
// clang-format off
// Pins
@@ -54,30 +52,39 @@
// Pin function macros
// -------------------
-#define PIN_FUNCTION_ADC1 6u // PA_19
-#define PIN_FUNCTION_ADC2 11u // AD_2
-#define PIN_FUNCTION_CS0 6u // PA_19
-#define PIN_FUNCTION_CS1 6u // PA_19
-#define PIN_FUNCTION_CTS0 6u // PA_19
-#define PIN_FUNCTION_MISO0 3u // PA_22
-#define PIN_FUNCTION_MISO1 3u // PA_22
-#define PIN_FUNCTION_MOSI0 10u // PA_23
-#define PIN_FUNCTION_MOSI1 10u // PA_23
-#define PIN_FUNCTION_PA00 4u // PA_0
-#define PIN_FUNCTION_PA05 7u // PA_5
-#define PIN_FUNCTION_PA12 8u // PA_12
-#define PIN_FUNCTION_PA14 1u // PA_14
-#define PIN_FUNCTION_PA15 2u // PA_15
-#define PIN_FUNCTION_PA18 9u // PA_18
-#define PIN_FUNCTION_PA19 6u // PA_19
-#define PIN_FUNCTION_PA22 3u // PA_22
-#define PIN_FUNCTION_PA23 10u // PA_23
-#define PIN_FUNCTION_PA29 0u // PA_29
-#define PIN_FUNCTION_PA30 5u // PA_30
-#define PIN_FUNCTION_RTS0 3u // PA_22
-#define PIN_FUNCTION_RX0 9u // PA_18
-#define PIN_FUNCTION_RX2 0u // PA_29
-#define PIN_FUNCTION_SCK0 9u // PA_18
-#define PIN_FUNCTION_SCK1 9u // PA_18
-#define PIN_FUNCTION_TX0 10u // PA_23
-#define PIN_FUNCTION_TX2 5u // PA_30
+#define PIN_ADC1 6u // PA_19
+#define PIN_ADC2 11u // AD_2
+#define PIN_CS0 6u // PA_19
+#define PIN_CS1 6u // PA_19
+#define PIN_CTS0 6u // PA_19
+#define PIN_MISO0 3u // PA_22
+#define PIN_MISO1 3u // PA_22
+#define PIN_MOSI0 10u // PA_23
+#define PIN_MOSI1 10u // PA_23
+#define PIN_PA00 4u // PA_0
+#define PIN_PA05 7u // PA_5
+#define PIN_PA12 8u // PA_12
+#define PIN_PA14 1u // PA_14
+#define PIN_PA15 2u // PA_15
+#define PIN_PA18 9u // PA_18
+#define PIN_PA19 6u // PA_19
+#define PIN_PA22 3u // PA_22
+#define PIN_PA23 10u // PA_23
+#define PIN_PA29 0u // PA_29
+#define PIN_PA30 5u // PA_30
+#define PIN_RTS0 3u // PA_22
+#define PIN_RX0 9u // PA_18
+#define PIN_RX2 0u // PA_29
+#define PIN_SCK0 9u // PA_18
+#define PIN_SCK1 9u // PA_18
+#define PIN_TX0 10u // PA_23
+#define PIN_TX2 5u // PA_30
+
+// Port availability
+// -----------------
+#define HAS_SERIAL0 1
+#define HAS_SERIAL2 1
+#define HAS_SPI0 1
+#define HAS_SPI1 1
+#define HAS_WIRE0 1
+#define HAS_WIRE1 1
diff --git a/boards/wr3n/variant.cpp b/boards/variants/wr3n.cpp
similarity index 95%
rename from boards/wr3n/variant.cpp
rename to boards/variants/wr3n.cpp
index 955c0a4..a222a3d 100644
--- a/boards/wr3n/variant.cpp
+++ b/boards/variants/wr3n.cpp
@@ -4,6 +4,10 @@
extern "C" {
+#ifdef LT_VARIANT_INCLUDE
+#include LT_VARIANT_INCLUDE
+#endif
+
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: PA29, UART2_RX, I2C0_SCL, PWM4
diff --git a/boards/wr3n/variant.h b/boards/variants/wr3n.h
similarity index 51%
rename from boards/wr3n/variant.h
rename to boards/variants/wr3n.h
index 38645fb..8ed7c7c 100644
--- a/boards/wr3n/variant.h
+++ b/boards/variants/wr3n.h
@@ -2,8 +2,6 @@
#pragma once
-#include
-
// clang-format off
// Pins
@@ -40,25 +38,32 @@
// Pin function macros
// -------------------
-#define PIN_FUNCTION_ADC2 9u // AD_2
-#define PIN_FUNCTION_MOSI0 8u // PA_23
-#define PIN_FUNCTION_MOSI1 8u // PA_23
-#define PIN_FUNCTION_PA00 3u // PA_0
-#define PIN_FUNCTION_PA05 5u // PA_5
-#define PIN_FUNCTION_PA12 6u // PA_12
-#define PIN_FUNCTION_PA14 1u // PA_14
-#define PIN_FUNCTION_PA15 2u // PA_15
-#define PIN_FUNCTION_PA18 7u // PA_18
-#define PIN_FUNCTION_PA23 8u // PA_23
-#define PIN_FUNCTION_PA29 0u // PA_29
-#define PIN_FUNCTION_PA30 4u // PA_30
-#define PIN_FUNCTION_RX0 7u // PA_18
-#define PIN_FUNCTION_RX2 0u // PA_29
-#define PIN_FUNCTION_SCK0 7u // PA_18
-#define PIN_FUNCTION_SCK1 7u // PA_18
-#define PIN_FUNCTION_SCL0 0u // PA_29
-#define PIN_FUNCTION_SCL1 7u // PA_18
-#define PIN_FUNCTION_SDA0 4u // PA_30
-#define PIN_FUNCTION_SDA1 8u // PA_23
-#define PIN_FUNCTION_TX0 8u // PA_23
-#define PIN_FUNCTION_TX2 4u // PA_30
+#define PIN_ADC2 9u // AD_2
+#define PIN_MOSI0 8u // PA_23
+#define PIN_MOSI1 8u // PA_23
+#define PIN_PA00 3u // PA_0
+#define PIN_PA05 5u // PA_5
+#define PIN_PA12 6u // PA_12
+#define PIN_PA14 1u // PA_14
+#define PIN_PA15 2u // PA_15
+#define PIN_PA18 7u // PA_18
+#define PIN_PA23 8u // PA_23
+#define PIN_PA29 0u // PA_29
+#define PIN_PA30 4u // PA_30
+#define PIN_RX0 7u // PA_18
+#define PIN_RX2 0u // PA_29
+#define PIN_SCK0 7u // PA_18
+#define PIN_SCK1 7u // PA_18
+#define PIN_SCL0 0u // PA_29
+#define PIN_SCL1 7u // PA_18
+#define PIN_SDA0 4u // PA_30
+#define PIN_SDA1 8u // PA_23
+#define PIN_TX0 8u // PA_23
+#define PIN_TX2 4u // PA_30
+
+// Port availability
+// -----------------
+#define HAS_SERIAL0 1
+#define HAS_SERIAL2 1
+#define HAS_WIRE0 1
+#define HAS_WIRE1 1
diff --git a/boards/wb2l/README.md b/boards/wb2l/README.md
deleted file mode 100644
index 698083f..0000000
--- a/boards/wb2l/README.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# WB2L Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/wb2l-datasheet?id=K9duegc9bualu)
-
-- [General info](../../docs/platform/beken-72xx/README.md)
-- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
-
-Parameter | Value
--------------|------------------------------------------
-Board code | `wb2l`
-MCU | BK7231T
-Manufacturer | Beken
-Series | BK72XX
-Frequency | 120 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 13x GPIO, 5x PWM, 2x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-Bluetooth | BLE v4.2
-FCC ID | [2ANDL-WB2L](https://fccid.io/2ANDL-WB2L)
-
-## Usage
-
-**Board code:** `wb2l`
-
-In `platformio.ini`:
-
-```ini
-[env:wb2l]
-platform = libretuya
-board = wb2l
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: wb2l
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|-----------|----------|----------|-----|------|------
-D0 | P8 | | | | PWM2 |
-D1 | P7 | | | | PWM1 |
-D2 | P6 | | | | PWM0 |
-D3 | P26 | | | | PWM5 |
-D4 | P24 | | | | PWM4 |
-D5 | P10 | UART1_RX | | | |
-D6 | P11 | UART1_TX | | | |
-D7 | P1 | UART2_RX | I2C2_SDA | | |
-D8 | P0 | UART2_TX | I2C2_SCL | | |
-D9 | P20 | | I2C1_SCL | | | TCK
-D10 | P21 | | I2C1_SDA | | | TMS
-D11 | P23 | | | | | TDO
-D12 | P22 | | | | | TDI
-A0 | P23, ADC3 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|--------------------|---------
-Bootloader | 0x000000 | 68 KiB / 0x11000 | 0x011000
-App Image | 0x011000 | 1.1 MiB / 0x121000 | 0x132000
-OTA Image | 0x132000 | 664 KiB / 0xA6000 | 0x1D8000
-Key-Value Store | 0x1D8000 | 32 KiB / 0x8000 | 0x1E0000
-Calibration | 0x1E0000 | 4 KiB / 0x1000 | 0x1E1000
-TLV Store | 0x1E1000 | 4 KiB / 0x1000 | 0x1E2000
-Network Data | 0x1E2000 | 4 KiB / 0x1000 | 0x1E3000
-User Data | 0x1E3000 | 116 KiB / 0x1D000 | 0x200000
-
-Bootloader and app partitions contain CRC16 sums every 32 bytes. That results in the actual flash offsets/sizes not aligned to sector boundaries. To simplify calculations, the values shown in the table (extracted from bootloader's partition table) were aligned to 4096 bytes.
diff --git a/boards/wb2l/pinout_wb2l.svg b/boards/wb2l/pinout_wb2l.svg
deleted file mode 100644
index c47c44e..0000000
--- a/boards/wb2l/pinout_wb2l.svg
+++ /dev/null
@@ -1,372 +0,0 @@
-
-
diff --git a/boards/wb2l/pins_arduino.h b/boards/wb2l/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/wb2l/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/wb2l/variant.h b/boards/wb2l/variant.h
deleted file mode 100644
index 3c26b7b..0000000
--- a/boards/wb2l/variant.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* This file was auto-generated from wb2l.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 13
-#define NUM_DIGITAL_PINS 13
-#define NUM_ANALOG_INPUTS 1
-#define NUM_ANALOG_OUTPUTS 0
-
-// Analog pins
-// -----------
-#define PIN_A0 11u // GPIO23
-#define A0 PIN_A0
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 0
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 2
-#define PIN_WIRE1_SCL 9u // GPIO20
-#define PIN_WIRE1_SDA 10u // GPIO21
-#define PIN_WIRE2_SCL 8u // GPIO0
-#define PIN_WIRE2_SDA 7u // GPIO1
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 2
-#define PIN_SERIAL1_RX 5u // GPIO10
-#define PIN_SERIAL1_TX 6u // GPIO11
-#define PIN_SERIAL2_RX 7u // GPIO1
-#define PIN_SERIAL2_TX 8u // GPIO0
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_ADC3 11u // GPIO23
-#define PIN_FUNCTION_P0 8u // GPIO0
-#define PIN_FUNCTION_P1 7u // GPIO1
-#define PIN_FUNCTION_P6 2u // GPIO6
-#define PIN_FUNCTION_P7 1u // GPIO7
-#define PIN_FUNCTION_P8 0u // GPIO8
-#define PIN_FUNCTION_P10 5u // GPIO10
-#define PIN_FUNCTION_P11 6u // GPIO11
-#define PIN_FUNCTION_P20 9u // GPIO20
-#define PIN_FUNCTION_P21 10u // GPIO21
-#define PIN_FUNCTION_P22 12u // GPIO22
-#define PIN_FUNCTION_P23 11u // GPIO23
-#define PIN_FUNCTION_P24 4u // GPIO24
-#define PIN_FUNCTION_P26 3u // GPIO26
-#define PIN_FUNCTION_PWM0 2u // GPIO6
-#define PIN_FUNCTION_PWM1 1u // GPIO7
-#define PIN_FUNCTION_PWM2 0u // GPIO8
-#define PIN_FUNCTION_PWM4 4u // GPIO24
-#define PIN_FUNCTION_PWM5 3u // GPIO26
-#define PIN_FUNCTION_RX1 5u // GPIO10
-#define PIN_FUNCTION_RX2 7u // GPIO1
-#define PIN_FUNCTION_SCL1 9u // GPIO20
-#define PIN_FUNCTION_SCL2 8u // GPIO0
-#define PIN_FUNCTION_SDA1 10u // GPIO21
-#define PIN_FUNCTION_SDA2 7u // GPIO1
-#define PIN_FUNCTION_TX1 6u // GPIO11
-#define PIN_FUNCTION_TX2 8u // GPIO0
diff --git a/boards/wb2s/README.md b/boards/wb2s/README.md
deleted file mode 100644
index cf44ee6..0000000
--- a/boards/wb2s/README.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# WB2S Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/wb2s-module-datasheet?id=K9ghecl7kc479)
-
-- [General info](../../docs/platform/beken-72xx/README.md)
-- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
-
-Parameter | Value
--------------|------------------------------------------
-Board code | `wb2s`
-MCU | BK7231T
-Manufacturer | Beken
-Series | BK72XX
-Frequency | 120 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 14x GPIO, 6x PWM, 2x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-Bluetooth | BLE v4.2
-FCC ID | [2ANDL-WB2S](https://fccid.io/2ANDL-WB2S)
-
-## Usage
-
-**Board code:** `wb2s`
-
-In `platformio.ini`:
-
-```ini
-[env:wb2s]
-platform = libretuya
-board = wb2s
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: wb2s
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|-----------|----------|----------|-----|------|------
-D0 | P8 | | | | PWM2 |
-D1 | P7 | | | | PWM1 |
-D2 | P6 | | | | PWM0 |
-D3 | P23 | | | | | TDO
-D4 | P10 | UART1_RX | | | |
-D5 | P11 | UART1_TX | | | |
-D6 | P24 | | | | PWM4 |
-D7 | P26 | | | | PWM5 |
-D8 | P20 | | I2C1_SCL | | | TCK
-D9 | P9 | | | | PWM3 |
-D10 | P1 | UART2_RX | I2C2_SDA | | |
-D11 | P0 | UART2_TX | I2C2_SCL | | |
-D12 | P21 | | I2C1_SDA | | | TMS
-D13 | P22 | | | | | TDI
-A0 | P23, ADC3 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|--------------------|---------
-Bootloader | 0x000000 | 68 KiB / 0x11000 | 0x011000
-App Image | 0x011000 | 1.1 MiB / 0x121000 | 0x132000
-OTA Image | 0x132000 | 664 KiB / 0xA6000 | 0x1D8000
-Key-Value Store | 0x1D8000 | 32 KiB / 0x8000 | 0x1E0000
-Calibration | 0x1E0000 | 4 KiB / 0x1000 | 0x1E1000
-TLV Store | 0x1E1000 | 4 KiB / 0x1000 | 0x1E2000
-Network Data | 0x1E2000 | 4 KiB / 0x1000 | 0x1E3000
-User Data | 0x1E3000 | 116 KiB / 0x1D000 | 0x200000
-
-Bootloader and app partitions contain CRC16 sums every 32 bytes. That results in the actual flash offsets/sizes not aligned to sector boundaries. To simplify calculations, the values shown in the table (extracted from bootloader's partition table) were aligned to 4096 bytes.
diff --git a/boards/wb2s/pinout_wb2s.svg b/boards/wb2s/pinout_wb2s.svg
deleted file mode 100644
index 5ecf3d1..0000000
--- a/boards/wb2s/pinout_wb2s.svg
+++ /dev/null
@@ -1,391 +0,0 @@
-
-
diff --git a/boards/wb2s/pins_arduino.h b/boards/wb2s/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/wb2s/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/wb2s/variant.h b/boards/wb2s/variant.h
deleted file mode 100644
index a2b9c4b..0000000
--- a/boards/wb2s/variant.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* This file was auto-generated from wb2s.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 14
-#define NUM_DIGITAL_PINS 14
-#define NUM_ANALOG_INPUTS 1
-#define NUM_ANALOG_OUTPUTS 0
-
-// Analog pins
-// -----------
-#define PIN_A0 3u // GPIO23
-#define PIN_A0 3u // GPIO23
-#define A0 PIN_A0
-#define A0 PIN_A0
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 0
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 2
-#define PIN_WIRE1_SCL 8u // GPIO20
-#define PIN_WIRE1_SDA 12u // GPIO21
-#define PIN_WIRE2_SCL 11u // GPIO0
-#define PIN_WIRE2_SDA 10u // GPIO1
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 2
-#define PIN_SERIAL1_RX 4u // GPIO10
-#define PIN_SERIAL1_TX 5u // GPIO11
-#define PIN_SERIAL2_RX 10u // GPIO1
-#define PIN_SERIAL2_TX 11u // GPIO0
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_ADC3 3u // GPIO23
-#define PIN_FUNCTION_P0 11u // GPIO0
-#define PIN_FUNCTION_P1 10u // GPIO1
-#define PIN_FUNCTION_P6 2u // GPIO6
-#define PIN_FUNCTION_P7 1u // GPIO7
-#define PIN_FUNCTION_P8 0u // GPIO8
-#define PIN_FUNCTION_P9 9u // GPIO9
-#define PIN_FUNCTION_P10 4u // GPIO10
-#define PIN_FUNCTION_P11 5u // GPIO11
-#define PIN_FUNCTION_P20 8u // GPIO20
-#define PIN_FUNCTION_P21 12u // GPIO21
-#define PIN_FUNCTION_P22 13u // GPIO22
-#define PIN_FUNCTION_P23 3u // GPIO23
-#define PIN_FUNCTION_P24 6u // GPIO24
-#define PIN_FUNCTION_P26 7u // GPIO26
-#define PIN_FUNCTION_PWM0 2u // GPIO6
-#define PIN_FUNCTION_PWM1 1u // GPIO7
-#define PIN_FUNCTION_PWM2 0u // GPIO8
-#define PIN_FUNCTION_PWM3 9u // GPIO9
-#define PIN_FUNCTION_PWM4 6u // GPIO24
-#define PIN_FUNCTION_PWM5 7u // GPIO26
-#define PIN_FUNCTION_RX1 4u // GPIO10
-#define PIN_FUNCTION_RX2 10u // GPIO1
-#define PIN_FUNCTION_SCL1 8u // GPIO20
-#define PIN_FUNCTION_SCL2 11u // GPIO0
-#define PIN_FUNCTION_SDA1 12u // GPIO21
-#define PIN_FUNCTION_SDA2 10u // GPIO1
-#define PIN_FUNCTION_TX1 5u // GPIO11
-#define PIN_FUNCTION_TX2 11u // GPIO0
diff --git a/boards/wb3l/README.md b/boards/wb3l/README.md
deleted file mode 100644
index 4baf8e4..0000000
--- a/boards/wb3l/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-# WB3L Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/wb3l-module-datasheet?id=K9duiggw2v8sp)
-
-- [General info](../../docs/platform/beken-72xx/README.md)
-- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
-
-Parameter | Value
--------------|------------------------------------------
-Board code | `wb3l`
-MCU | BK7231T
-Manufacturer | Beken
-Series | BK72XX
-Frequency | 120 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 16x GPIO, 6x PWM, 2x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-Bluetooth | BLE v4.2
-FCC ID | [2ANDL-WB3L](https://fccid.io/2ANDL-WB3L)
-
-## Usage
-
-**Board code:** `wb3l`
-
-In `platformio.ini`:
-
-```ini
-[env:wb3l]
-platform = libretuya
-board = wb3l
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: wb3l
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|-----------|----------|----------|------|------|------
-D0 | P23 | | | | | TDO
-D1 | P14 | | | SCK | |
-D2 | P26 | | | | PWM5 |
-D3 | P24 | | | | PWM4 |
-D4 | P6 | | | | PWM0 |
-D5 | P9 | | | | PWM3 |
-D6 | P0 | UART2_TX | I2C2_SCL | | |
-D7 | P16 | | | MOSI | |
-D8 | P8 | | | | PWM2 |
-D9 | P7 | | | | PWM1 |
-D10 | P10 | UART1_RX | | | |
-D11 | P11 | UART1_TX | | | |
-D12 | P22 | | | | | TDI
-D13 | P21 | | I2C1_SDA | | | TMS
-D14 | P20 | | I2C1_SCL | | | TCK
-D15 | P1 | UART2_RX | I2C2_SDA | | |
-A0 | P23, ADC3 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|--------------------|---------
-Bootloader | 0x000000 | 68 KiB / 0x11000 | 0x011000
-App Image | 0x011000 | 1.1 MiB / 0x121000 | 0x132000
-OTA Image | 0x132000 | 664 KiB / 0xA6000 | 0x1D8000
-Key-Value Store | 0x1D8000 | 32 KiB / 0x8000 | 0x1E0000
-Calibration | 0x1E0000 | 4 KiB / 0x1000 | 0x1E1000
-TLV Store | 0x1E1000 | 4 KiB / 0x1000 | 0x1E2000
-Network Data | 0x1E2000 | 4 KiB / 0x1000 | 0x1E3000
-User Data | 0x1E3000 | 116 KiB / 0x1D000 | 0x200000
-
-Bootloader and app partitions contain CRC16 sums every 32 bytes. That results in the actual flash offsets/sizes not aligned to sector boundaries. To simplify calculations, the values shown in the table (extracted from bootloader's partition table) were aligned to 4096 bytes.
diff --git a/boards/wb3l/pinout_wb3l.svg b/boards/wb3l/pinout_wb3l.svg
deleted file mode 100644
index 26cd9a6..0000000
--- a/boards/wb3l/pinout_wb3l.svg
+++ /dev/null
@@ -1,372 +0,0 @@
-
-
diff --git a/boards/wb3l/pins_arduino.h b/boards/wb3l/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/wb3l/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/wb3l/variant.h b/boards/wb3l/variant.h
deleted file mode 100644
index da5196a..0000000
--- a/boards/wb3l/variant.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* This file was auto-generated from wb3l.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 16
-#define NUM_DIGITAL_PINS 16
-#define NUM_ANALOG_INPUTS 1
-#define NUM_ANALOG_OUTPUTS 0
-
-// Analog pins
-// -----------
-#define PIN_A0 0u // GPIO23
-#define PIN_A0 0u // GPIO23
-#define A0 PIN_A0
-#define A0 PIN_A0
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 0
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 2
-#define PIN_WIRE1_SCL 14u // GPIO20
-#define PIN_WIRE1_SDA 13u // GPIO21
-#define PIN_WIRE2_SCL 6u // GPIO0
-#define PIN_WIRE2_SDA 15u // GPIO1
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 2
-#define PIN_SERIAL1_RX 10u // GPIO10
-#define PIN_SERIAL1_TX 11u // GPIO11
-#define PIN_SERIAL2_RX 15u // GPIO1
-#define PIN_SERIAL2_TX 6u // GPIO0
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_ADC3 0u // GPIO23
-#define PIN_FUNCTION_MOSI 7u // GPIO16
-#define PIN_FUNCTION_P0 6u // GPIO0
-#define PIN_FUNCTION_P1 15u // GPIO1
-#define PIN_FUNCTION_P6 4u // GPIO6
-#define PIN_FUNCTION_P7 9u // GPIO7
-#define PIN_FUNCTION_P8 8u // GPIO8
-#define PIN_FUNCTION_P9 5u // GPIO9
-#define PIN_FUNCTION_P10 10u // GPIO10
-#define PIN_FUNCTION_P11 11u // GPIO11
-#define PIN_FUNCTION_P14 1u // GPIO14
-#define PIN_FUNCTION_P16 7u // GPIO16
-#define PIN_FUNCTION_P20 14u // GPIO20
-#define PIN_FUNCTION_P21 13u // GPIO21
-#define PIN_FUNCTION_P22 12u // GPIO22
-#define PIN_FUNCTION_P23 0u // GPIO23
-#define PIN_FUNCTION_P24 3u // GPIO24
-#define PIN_FUNCTION_P26 2u // GPIO26
-#define PIN_FUNCTION_PWM0 4u // GPIO6
-#define PIN_FUNCTION_PWM1 9u // GPIO7
-#define PIN_FUNCTION_PWM2 8u // GPIO8
-#define PIN_FUNCTION_PWM3 5u // GPIO9
-#define PIN_FUNCTION_PWM4 3u // GPIO24
-#define PIN_FUNCTION_PWM5 2u // GPIO26
-#define PIN_FUNCTION_RX1 10u // GPIO10
-#define PIN_FUNCTION_RX2 15u // GPIO1
-#define PIN_FUNCTION_SCK 1u // GPIO14
-#define PIN_FUNCTION_SCL1 14u // GPIO20
-#define PIN_FUNCTION_SCL2 6u // GPIO0
-#define PIN_FUNCTION_SDA1 13u // GPIO21
-#define PIN_FUNCTION_SDA2 15u // GPIO1
-#define PIN_FUNCTION_TX1 11u // GPIO11
-#define PIN_FUNCTION_TX2 6u // GPIO0
diff --git a/boards/wb3s/README.md b/boards/wb3s/README.md
deleted file mode 100644
index de30353..0000000
--- a/boards/wb3s/README.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# WB3S Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/wb3s-module-datasheet?id=K9dx20n6hz5n4)
-
-- [General info](../../docs/platform/beken-72xx/README.md)
-- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
-
-Parameter | Value
--------------|------------------------------------------
-Board code | `wb3s`
-MCU | BK7231T
-Manufacturer | Beken
-Series | BK72XX
-Frequency | 120 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 15x GPIO, 6x PWM, 2x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-Bluetooth | BLE v4.2
-FCC ID | [2ANDL-WB3S](https://fccid.io/2ANDL-WB3S)
-
-## Usage
-
-**Board code:** `wb3s`
-
-In `platformio.ini`:
-
-```ini
-[env:wb3s]
-platform = libretuya
-board = wb3s
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: wb3s
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|-----------|----------|----------|-----|------|------
-D0 | P23 | | | | | TDO
-D1 | P14 | | | SCK | |
-D2 | P26 | | | | PWM5 |
-D3 | P24 | | | | PWM4 |
-D4 | P6 | | | | PWM0 |
-D5 | P7 | | | | PWM1 |
-D6 | P0 | UART2_TX | I2C2_SCL | | |
-D7 | P1 | UART2_RX | I2C2_SDA | | |
-D8 | P9 | | | | PWM3 |
-D9 | P8 | | | | PWM2 |
-D10 | P10 | UART1_RX | | | |
-D11 | P11 | UART1_TX | | | |
-D12 | P22 | | | | | TDI
-D13 | P21 | | I2C1_SDA | | | TMS
-D14 | P20 | | I2C1_SCL | | | TCK
-A0 | P23, ADC3 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|--------------------|---------
-Bootloader | 0x000000 | 68 KiB / 0x11000 | 0x011000
-App Image | 0x011000 | 1.1 MiB / 0x121000 | 0x132000
-OTA Image | 0x132000 | 664 KiB / 0xA6000 | 0x1D8000
-Key-Value Store | 0x1D8000 | 32 KiB / 0x8000 | 0x1E0000
-Calibration | 0x1E0000 | 4 KiB / 0x1000 | 0x1E1000
-TLV Store | 0x1E1000 | 4 KiB / 0x1000 | 0x1E2000
-Network Data | 0x1E2000 | 4 KiB / 0x1000 | 0x1E3000
-User Data | 0x1E3000 | 116 KiB / 0x1D000 | 0x200000
-
-Bootloader and app partitions contain CRC16 sums every 32 bytes. That results in the actual flash offsets/sizes not aligned to sector boundaries. To simplify calculations, the values shown in the table (extracted from bootloader's partition table) were aligned to 4096 bytes.
diff --git a/boards/wb3s/pinout_wb3s.svg b/boards/wb3s/pinout_wb3s.svg
deleted file mode 100644
index 9533b88..0000000
--- a/boards/wb3s/pinout_wb3s.svg
+++ /dev/null
@@ -1,370 +0,0 @@
-
-
diff --git a/boards/wb3s/pins_arduino.h b/boards/wb3s/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/wb3s/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/wb3s/variant.h b/boards/wb3s/variant.h
deleted file mode 100644
index 2c1fb78..0000000
--- a/boards/wb3s/variant.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* This file was auto-generated from wb3s.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 15
-#define NUM_DIGITAL_PINS 15
-#define NUM_ANALOG_INPUTS 1
-#define NUM_ANALOG_OUTPUTS 0
-
-// Analog pins
-// -----------
-#define PIN_A0 0u // GPIO23
-#define PIN_A0 0u // GPIO23
-#define A0 PIN_A0
-#define A0 PIN_A0
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 0
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 2
-#define PIN_WIRE1_SCL 14u // GPIO20
-#define PIN_WIRE1_SDA 13u // GPIO21
-#define PIN_WIRE2_SCL 6u // GPIO0
-#define PIN_WIRE2_SDA 7u // GPIO1
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 2
-#define PIN_SERIAL1_RX 10u // GPIO10
-#define PIN_SERIAL1_TX 11u // GPIO11
-#define PIN_SERIAL2_RX 7u // GPIO1
-#define PIN_SERIAL2_TX 6u // GPIO0
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_ADC3 0u // GPIO23
-#define PIN_FUNCTION_P0 6u // GPIO0
-#define PIN_FUNCTION_P1 7u // GPIO1
-#define PIN_FUNCTION_P6 4u // GPIO6
-#define PIN_FUNCTION_P7 5u // GPIO7
-#define PIN_FUNCTION_P8 9u // GPIO8
-#define PIN_FUNCTION_P9 8u // GPIO9
-#define PIN_FUNCTION_P10 10u // GPIO10
-#define PIN_FUNCTION_P11 11u // GPIO11
-#define PIN_FUNCTION_P14 1u // GPIO14
-#define PIN_FUNCTION_P20 14u // GPIO20
-#define PIN_FUNCTION_P21 13u // GPIO21
-#define PIN_FUNCTION_P22 12u // GPIO22
-#define PIN_FUNCTION_P23 0u // GPIO23
-#define PIN_FUNCTION_P24 3u // GPIO24
-#define PIN_FUNCTION_P26 2u // GPIO26
-#define PIN_FUNCTION_PWM0 4u // GPIO6
-#define PIN_FUNCTION_PWM1 5u // GPIO7
-#define PIN_FUNCTION_PWM2 9u // GPIO8
-#define PIN_FUNCTION_PWM3 8u // GPIO9
-#define PIN_FUNCTION_PWM4 3u // GPIO24
-#define PIN_FUNCTION_PWM5 2u // GPIO26
-#define PIN_FUNCTION_RX1 10u // GPIO10
-#define PIN_FUNCTION_RX2 7u // GPIO1
-#define PIN_FUNCTION_SCK 1u // GPIO14
-#define PIN_FUNCTION_SCL1 14u // GPIO20
-#define PIN_FUNCTION_SCL2 6u // GPIO0
-#define PIN_FUNCTION_SDA1 13u // GPIO21
-#define PIN_FUNCTION_SDA2 7u // GPIO1
-#define PIN_FUNCTION_TX1 11u // GPIO11
-#define PIN_FUNCTION_TX2 6u // GPIO0
diff --git a/boards/wr2/README.md b/boards/wr2/README.md
deleted file mode 100644
index 3fdfc80..0000000
--- a/boards/wr2/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# WR2 Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/wifiwr2module?id=K9605tko0juc3)
-
-- [General info](../../docs/platform/realtek-amb/README.md)
-- [Flashing guide](../../docs/platform/realtek-ambz/flashing.md)
-- [Debugging](../../docs/platform/realtek-ambz/debugging.md)
-
-Parameter | Value
--------------|----------------------------------------
-Board code | `wr2`
-MCU | RTL8710BN
-Manufacturer | Realtek
-Series | AmebaZ
-Frequency | 125 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 7x GPIO, 5x PWM, 1x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-FCC ID | [2ANDL-WR2](https://fccid.io/2ANDL-WR2)
-
-## Usage
-
-**Board code:** `wr2`
-
-In `platformio.ini`:
-
-```ini
-[env:wr2]
-platform = libretuya
-board = wr2
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: wr2
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|------|----------|----------|----------------------|------|------
-D0 | PA12 | | | | PWM3 |
-D1 | PA00 | | | | PWM2 |
-D2 | PA05 | | | | PWM4 |
-D4 | PA18 | UART0_RX | I2C1_SCL | SPI0_SCK, SPI1_SCK | |
-D5 | PA23 | UART0_TX | I2C1_SDA | SPI0_MOSI, SPI1_MOSI | PWM0 |
-D6 | PA14 | | | | PWM0 | SWCLK
-D7 | PA15 | | | | PWM1 | SWDIO
-A1 | ADC2 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|-------------------|---------
-Boot XIP | 0x000000 | 16 KiB / 0x4000 | 0x004000
-Boot RAM | 0x004000 | 16 KiB / 0x4000 | 0x008000
-(reserved) | 0x008000 | 4 KiB / 0x1000 | 0x009000
-System Data | 0x009000 | 4 KiB / 0x1000 | 0x00A000
-Calibration | 0x00A000 | 4 KiB / 0x1000 | 0x00B000
-OTA1 Image | 0x00B000 | 788 KiB / 0xC5000 | 0x0D0000
-OTA2 Image | 0x0D0000 | 788 KiB / 0xC5000 | 0x195000
-Key-Value Store | 0x195000 | 24 KiB / 0x6000 | 0x19B000
-User Data | 0x19B000 | 400 KiB / 0x64000 | 0x1FF000
-RDP | 0x1FF000 | 4 KiB / 0x1000 | 0x200000
-
-RDP is most likely not used in Tuya firmwares, as the System Data partition contains an incorrect offset 0xFF000 for RDP, which is in the middle of OTA2 image.
-
-Additionally, Tuya firmware uses an encrypted KV or file storage, which resides at the end of flash memory. This seems to overlap system RDP area.
diff --git a/boards/wr2/pinout_wr2.svg b/boards/wr2/pinout_wr2.svg
deleted file mode 100644
index e240c2d..0000000
--- a/boards/wr2/pinout_wr2.svg
+++ /dev/null
@@ -1,224 +0,0 @@
-
-
diff --git a/boards/wr2/pins_arduino.h b/boards/wr2/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/wr2/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/wr2e/README.md b/boards/wr2e/README.md
deleted file mode 100644
index 2a513f0..0000000
--- a/boards/wr2e/README.md
+++ /dev/null
@@ -1,86 +0,0 @@
-# WR2E Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/wr2e?id=K97scnsjhue4h)
-
-- [General info](../../docs/platform/realtek-amb/README.md)
-- [Flashing guide](../../docs/platform/realtek-ambz/flashing.md)
-- [Debugging](../../docs/platform/realtek-ambz/debugging.md)
-
-Parameter | Value
--------------|------------------------------------------
-Board code | `wr2e`
-MCU | RTL8710BN
-Manufacturer | Realtek
-Series | AmebaZ
-Frequency | 125 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 7x GPIO, 4x PWM, 1x UART, 2x ADC
-Wi-Fi | 802.11 b/g/n
-FCC ID | [2ANDL-WR2E](https://fccid.io/2ANDL-WR2E)
-
-## Usage
-
-**Board code:** `wr2e`
-
-In `platformio.ini`:
-
-```ini
-[env:wr2e]
-platform = libretuya
-board = wr2e
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: wr2e
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|------------|-----------|----------|----------------------|------|------
-D0 | PA12 | | | | PWM3 |
-D1 | PA19 | UART0_CTS | I2C0_SDA | SPI0_CS, SPI1_CS | |
-D2 | PA05 | | | | PWM4 |
-D3 | PA18 | UART0_RX | I2C1_SCL | SPI0_SCK, SPI1_SCK | |
-D4 | PA23 | UART0_TX | I2C1_SDA | SPI0_MOSI, SPI1_MOSI | PWM0 |
-D5 | PA14 | | | | PWM0 | SWCLK
-D6 | PA15 | | | | PWM1 | SWDIO
-A0 | PA19, ADC1 | | | | |
-A1 | ADC2 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|-------------------|---------
-Boot XIP | 0x000000 | 16 KiB / 0x4000 | 0x004000
-Boot RAM | 0x004000 | 16 KiB / 0x4000 | 0x008000
-(reserved) | 0x008000 | 4 KiB / 0x1000 | 0x009000
-System Data | 0x009000 | 4 KiB / 0x1000 | 0x00A000
-Calibration | 0x00A000 | 4 KiB / 0x1000 | 0x00B000
-OTA1 Image | 0x00B000 | 788 KiB / 0xC5000 | 0x0D0000
-OTA2 Image | 0x0D0000 | 788 KiB / 0xC5000 | 0x195000
-Key-Value Store | 0x195000 | 24 KiB / 0x6000 | 0x19B000
-User Data | 0x19B000 | 400 KiB / 0x64000 | 0x1FF000
-RDP | 0x1FF000 | 4 KiB / 0x1000 | 0x200000
-
-RDP is most likely not used in Tuya firmwares, as the System Data partition contains an incorrect offset 0xFF000 for RDP, which is in the middle of OTA2 image.
-
-Additionally, Tuya firmware uses an encrypted KV or file storage, which resides at the end of flash memory. This seems to overlap system RDP area.
diff --git a/boards/wr2e/pinout_wr2e.svg b/boards/wr2e/pinout_wr2e.svg
deleted file mode 100644
index a0549c7..0000000
--- a/boards/wr2e/pinout_wr2e.svg
+++ /dev/null
@@ -1,228 +0,0 @@
-
-
diff --git a/boards/wr2e/pins_arduino.h b/boards/wr2e/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/wr2e/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/wr2l/README.md b/boards/wr2l/README.md
deleted file mode 100644
index 65e4299..0000000
--- a/boards/wr2l/README.md
+++ /dev/null
@@ -1,83 +0,0 @@
-# WR2L Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/wifiwr2lmodule?id=K9605tnbj7gva)
-
-- [General info](../../docs/platform/realtek-amb/README.md)
-- [Flashing guide](../../docs/platform/realtek-ambz/flashing.md)
-- [Debugging](../../docs/platform/realtek-ambz/debugging.md)
-
-Parameter | Value
--------------|------------------------------------------
-Board code | `wr2l`
-MCU | RTL8710BX
-Manufacturer | Realtek
-Series | AmebaZ
-Frequency | 62.5 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 5x GPIO, 4x PWM, 1x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-FCC ID | [2ANDL-WR2L](https://fccid.io/2ANDL-WR2L)
-
-## Usage
-
-**Board code:** `wr2l`
-
-In `platformio.ini`:
-
-```ini
-[env:wr2l]
-platform = libretuya
-board = wr2l
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: wr2l
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|------------|-----------|----------|------------------|------|------
-D0 | PA15 | | | | PWM1 | SWDIO
-D1 | PA14 | | | | PWM0 | SWCLK
-D2 | PA05 | | | | PWM4 |
-D3 | PA19 | UART0_CTS | I2C0_SDA | SPI0_CS, SPI1_CS | |
-D4 | PA12 | | | | PWM3 |
-A0 | PA19, ADC1 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|-------------------|---------
-Boot XIP | 0x000000 | 16 KiB / 0x4000 | 0x004000
-Boot RAM | 0x004000 | 16 KiB / 0x4000 | 0x008000
-(reserved) | 0x008000 | 4 KiB / 0x1000 | 0x009000
-System Data | 0x009000 | 4 KiB / 0x1000 | 0x00A000
-Calibration | 0x00A000 | 4 KiB / 0x1000 | 0x00B000
-OTA1 Image | 0x00B000 | 788 KiB / 0xC5000 | 0x0D0000
-OTA2 Image | 0x0D0000 | 788 KiB / 0xC5000 | 0x195000
-Key-Value Store | 0x195000 | 24 KiB / 0x6000 | 0x19B000
-User Data | 0x19B000 | 400 KiB / 0x64000 | 0x1FF000
-RDP | 0x1FF000 | 4 KiB / 0x1000 | 0x200000
-
-RDP is most likely not used in Tuya firmwares, as the System Data partition contains an incorrect offset 0xFF000 for RDP, which is in the middle of OTA2 image.
-
-Additionally, Tuya firmware uses an encrypted KV or file storage, which resides at the end of flash memory. This seems to overlap system RDP area.
diff --git a/boards/wr2l/pinout_wr2l.svg b/boards/wr2l/pinout_wr2l.svg
deleted file mode 100644
index 34f6e6e..0000000
--- a/boards/wr2l/pinout_wr2l.svg
+++ /dev/null
@@ -1,157 +0,0 @@
-
-
diff --git a/boards/wr2l/pins_arduino.h b/boards/wr2l/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/wr2l/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/wr2le/README.md b/boards/wr2le/README.md
deleted file mode 100644
index fb05274..0000000
--- a/boards/wr2le/README.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# WR2LE Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/wr2le?id=K9eio9y9e8i8c)
-
-- [General info](../../docs/platform/realtek-amb/README.md)
-- [Flashing guide](../../docs/platform/realtek-ambz/flashing.md)
-- [Debugging](../../docs/platform/realtek-ambz/debugging.md)
-
-Parameter | Value
--------------|-------------------------
-Board code | `wr2le`
-MCU | RTL8710BX
-Manufacturer | Realtek
-Series | AmebaZ
-Frequency | 62.5 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 5x GPIO, 5x PWM, 1x UART
-Wi-Fi | 802.11 b/g/n
-
-## Usage
-
-**Board code:** `wr2le`
-
-In `platformio.ini`:
-
-```ini
-[env:wr2le]
-platform = libretuya
-board = wr2le
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: wr2le
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|------|-----------|----------|----------------------|------|------
-D0 | PA15 | | | | PWM1 | SWDIO
-D1 | PA14 | | | | PWM0 | SWCLK
-D2 | PA05 | | | | PWM4 |
-D3 | PA22 | UART0_RTS | I2C0_SCL | SPI0_MISO, SPI1_MISO | PWM5 |
-D4 | PA12 | | | | PWM3 |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|-------------------|---------
-Boot XIP | 0x000000 | 16 KiB / 0x4000 | 0x004000
-Boot RAM | 0x004000 | 16 KiB / 0x4000 | 0x008000
-(reserved) | 0x008000 | 4 KiB / 0x1000 | 0x009000
-System Data | 0x009000 | 4 KiB / 0x1000 | 0x00A000
-Calibration | 0x00A000 | 4 KiB / 0x1000 | 0x00B000
-OTA1 Image | 0x00B000 | 788 KiB / 0xC5000 | 0x0D0000
-OTA2 Image | 0x0D0000 | 788 KiB / 0xC5000 | 0x195000
-Key-Value Store | 0x195000 | 24 KiB / 0x6000 | 0x19B000
-User Data | 0x19B000 | 400 KiB / 0x64000 | 0x1FF000
-RDP | 0x1FF000 | 4 KiB / 0x1000 | 0x200000
-
-RDP is most likely not used in Tuya firmwares, as the System Data partition contains an incorrect offset 0xFF000 for RDP, which is in the middle of OTA2 image.
-
-Additionally, Tuya firmware uses an encrypted KV or file storage, which resides at the end of flash memory. This seems to overlap system RDP area.
diff --git a/boards/wr2le/pinout_wr2le.svg b/boards/wr2le/pinout_wr2le.svg
deleted file mode 100644
index aa10a33..0000000
--- a/boards/wr2le/pinout_wr2le.svg
+++ /dev/null
@@ -1,153 +0,0 @@
-
-
diff --git a/boards/wr2le/pins_arduino.h b/boards/wr2le/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/wr2le/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/wr2le/variant.h b/boards/wr2le/variant.h
deleted file mode 100644
index 2d4b8a0..0000000
--- a/boards/wr2le/variant.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* This file was auto-generated from wr2le.json using boardgen */
-
-#pragma once
-
-#include
-
-// clang-format off
-
-// Pins
-// ----
-#define PINS_COUNT 5
-#define NUM_DIGITAL_PINS 5
-#define NUM_ANALOG_OUTPUTS 0
-
-// SPI Interfaces
-// --------------
-#define SPI_INTERFACES_COUNT 0
-
-// Wire Interfaces
-// ---------------
-#define WIRE_INTERFACES_COUNT 0
-
-// Serial ports
-// ------------
-#define SERIAL_INTERFACES_COUNT 0
-
-// Pin function macros
-// -------------------
-#define PIN_FUNCTION_MISO0 3u // PA_22
-#define PIN_FUNCTION_MISO1 3u // PA_22
-#define PIN_FUNCTION_PA05 2u // PA_5
-#define PIN_FUNCTION_PA12 4u // PA_12
-#define PIN_FUNCTION_PA14 1u // PA_14
-#define PIN_FUNCTION_PA15 0u // PA_15
-#define PIN_FUNCTION_PA22 3u // PA_22
-#define PIN_FUNCTION_PWM0 1u // PA_14
-#define PIN_FUNCTION_PWM1 0u // PA_15
-#define PIN_FUNCTION_PWM3 4u // PA_12
-#define PIN_FUNCTION_PWM4 2u // PA_5
-#define PIN_FUNCTION_PWM5 3u // PA_22
-#define PIN_FUNCTION_RTS0 3u // PA_22
-#define PIN_FUNCTION_SCL0 3u // PA_22
diff --git a/boards/wr3/README.md b/boards/wr3/README.md
deleted file mode 100644
index cae18a1..0000000
--- a/boards/wr3/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-# WR3 Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/wr3-module-datasheet?id=K9g3ainzbj9z1)
-
-- [General info](../../docs/platform/realtek-amb/README.md)
-- [Flashing guide](../../docs/platform/realtek-ambz/flashing.md)
-- [Debugging](../../docs/platform/realtek-ambz/debugging.md)
-
-Parameter | Value
--------------|----------------------------------------
-Board code | `wr3`
-MCU | RTL8710BN
-Manufacturer | Realtek
-Series | AmebaZ
-Frequency | 125 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 11x GPIO, 6x PWM, 2x UART, 2x ADC
-Wi-Fi | 802.11 b/g/n
-FCC ID | [2ANDL-WR3](https://fccid.io/2ANDL-WR3)
-
-## Usage
-
-**Board code:** `wr3`
-
-In `platformio.ini`:
-
-```ini
-[env:wr3]
-platform = libretuya
-board = wr3
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: wr3
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|------------|-----------|----------|----------------------|------|------
-D0 | PA22 | UART0_RTS | I2C0_SCL | SPI0_MISO, SPI1_MISO | PWM5 |
-D1 | PA19 | UART0_CTS | I2C0_SDA | SPI0_CS, SPI1_CS | |
-D2 | PA14 | | | | PWM0 | SWCLK
-D3 | PA15 | | | | PWM1 | SWDIO
-D4 | PA00 | | | | PWM2 |
-D5 | PA29 | UART2_RX | I2C0_SCL | | PWM4 |
-D6 | PA30 | UART2_TX | I2C0_SDA | | PWM4 |
-D7 | PA05 | | | | PWM4 |
-D8 | PA12 | | | | PWM3 |
-D9 | PA18 | UART0_RX | I2C1_SCL | SPI0_SCK, SPI1_SCK | |
-D10 | PA23 | UART0_TX | I2C1_SDA | SPI0_MOSI, SPI1_MOSI | PWM0 |
-A0 | PA19, ADC1 | | | | |
-A1 | ADC2 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|-------------------|---------
-Boot XIP | 0x000000 | 16 KiB / 0x4000 | 0x004000
-Boot RAM | 0x004000 | 16 KiB / 0x4000 | 0x008000
-(reserved) | 0x008000 | 4 KiB / 0x1000 | 0x009000
-System Data | 0x009000 | 4 KiB / 0x1000 | 0x00A000
-Calibration | 0x00A000 | 4 KiB / 0x1000 | 0x00B000
-OTA1 Image | 0x00B000 | 788 KiB / 0xC5000 | 0x0D0000
-OTA2 Image | 0x0D0000 | 788 KiB / 0xC5000 | 0x195000
-Key-Value Store | 0x195000 | 24 KiB / 0x6000 | 0x19B000
-User Data | 0x19B000 | 400 KiB / 0x64000 | 0x1FF000
-RDP | 0x1FF000 | 4 KiB / 0x1000 | 0x200000
-
-RDP is most likely not used in Tuya firmwares, as the System Data partition contains an incorrect offset 0xFF000 for RDP, which is in the middle of OTA2 image.
-
-Additionally, Tuya firmware uses an encrypted KV or file storage, which resides at the end of flash memory. This seems to overlap system RDP area.
diff --git a/boards/wr3/pinout_wr3.svg b/boards/wr3/pinout_wr3.svg
deleted file mode 100644
index fc5c656..0000000
--- a/boards/wr3/pinout_wr3.svg
+++ /dev/null
@@ -1,309 +0,0 @@
-
-
diff --git a/boards/wr3/pins_arduino.h b/boards/wr3/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/wr3/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/wr3e/README.md b/boards/wr3e/README.md
deleted file mode 100644
index d564d2d..0000000
--- a/boards/wr3e/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-# WR3E Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/wr3e-module-datasheet?id=K9elwlqbfosbc)
-
-- [General info](../../docs/platform/realtek-amb/README.md)
-- [Flashing guide](../../docs/platform/realtek-ambz/flashing.md)
-- [Debugging](../../docs/platform/realtek-ambz/debugging.md)
-
-Parameter | Value
--------------|------------------------------------------
-Board code | `wr3e`
-MCU | RTL8710BN
-Manufacturer | Realtek
-Series | AmebaZ
-Frequency | 125 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 11x GPIO, 6x PWM, 2x UART, 2x ADC
-Wi-Fi | 802.11 b/g/n
-FCC ID | [2ANDL-WR3E](https://fccid.io/2ANDL-WR3E)
-
-## Usage
-
-**Board code:** `wr3e`
-
-In `platformio.ini`:
-
-```ini
-[env:wr3e]
-platform = libretuya
-board = wr3e
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: wr3e
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|------------|-----------|----------|----------------------|------|------
-D0 | PA29 | UART2_RX | I2C0_SCL | | PWM4 |
-D1 | PA14 | | | | PWM0 | SWCLK
-D2 | PA15 | | | | PWM1 | SWDIO
-D3 | PA22 | UART0_RTS | I2C0_SCL | SPI0_MISO, SPI1_MISO | PWM5 |
-D4 | PA00 | | | | PWM2 |
-D5 | PA30 | UART2_TX | I2C0_SDA | | PWM4 |
-D6 | PA19 | UART0_CTS | I2C0_SDA | SPI0_CS, SPI1_CS | |
-D7 | PA05 | | | | PWM4 |
-D8 | PA12 | | | | PWM3 |
-D9 | PA18 | UART0_RX | I2C1_SCL | SPI0_SCK, SPI1_SCK | |
-D10 | PA23 | UART0_TX | I2C1_SDA | SPI0_MOSI, SPI1_MOSI | PWM0 |
-A0 | PA19, ADC1 | | | | |
-A1 | ADC2 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|-------------------|---------
-Boot XIP | 0x000000 | 16 KiB / 0x4000 | 0x004000
-Boot RAM | 0x004000 | 16 KiB / 0x4000 | 0x008000
-(reserved) | 0x008000 | 4 KiB / 0x1000 | 0x009000
-System Data | 0x009000 | 4 KiB / 0x1000 | 0x00A000
-Calibration | 0x00A000 | 4 KiB / 0x1000 | 0x00B000
-OTA1 Image | 0x00B000 | 788 KiB / 0xC5000 | 0x0D0000
-OTA2 Image | 0x0D0000 | 788 KiB / 0xC5000 | 0x195000
-Key-Value Store | 0x195000 | 24 KiB / 0x6000 | 0x19B000
-User Data | 0x19B000 | 400 KiB / 0x64000 | 0x1FF000
-RDP | 0x1FF000 | 4 KiB / 0x1000 | 0x200000
-
-RDP is most likely not used in Tuya firmwares, as the System Data partition contains an incorrect offset 0xFF000 for RDP, which is in the middle of OTA2 image.
-
-Additionally, Tuya firmware uses an encrypted KV or file storage, which resides at the end of flash memory. This seems to overlap system RDP area.
diff --git a/boards/wr3e/pinout_wr3e.svg b/boards/wr3e/pinout_wr3e.svg
deleted file mode 100644
index f1fc4fd..0000000
--- a/boards/wr3e/pinout_wr3e.svg
+++ /dev/null
@@ -1,309 +0,0 @@
-
-
diff --git a/boards/wr3e/pins_arduino.h b/boards/wr3e/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/wr3e/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/wr3l/README.md b/boards/wr3l/README.md
deleted file mode 100644
index e10a350..0000000
--- a/boards/wr3l/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-# WR3L Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/wifiwr3lmodule?id=K9605tt0kveqm)
-
-- [General info](../../docs/platform/realtek-amb/README.md)
-- [Flashing guide](../../docs/platform/realtek-ambz/flashing.md)
-- [Debugging](../../docs/platform/realtek-ambz/debugging.md)
-
-Parameter | Value
--------------|------------------------------------------
-Board code | `wr3l`
-MCU | RTL8710BX
-Manufacturer | Realtek
-Series | AmebaZ
-Frequency | 62.5 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 11x GPIO, 6x PWM, 2x UART, 2x ADC
-Wi-Fi | 802.11 b/g/n
-FCC ID | [2ANDL-WR3L](https://fccid.io/2ANDL-WR3L)
-
-## Usage
-
-**Board code:** `wr3l`
-
-In `platformio.ini`:
-
-```ini
-[env:wr3l]
-platform = libretuya
-board = wr3l
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: wr3l
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|------------|-----------|----------|----------------------|------|------
-D0 | PA22 | UART0_RTS | I2C0_SCL | SPI0_MISO, SPI1_MISO | PWM5 |
-D1 | PA19 | UART0_CTS | I2C0_SDA | SPI0_CS, SPI1_CS | |
-D2 | PA14 | | | | PWM0 | SWCLK
-D3 | PA15 | | | | PWM1 | SWDIO
-D4 | PA00 | | | | PWM2 |
-D5 | PA29 | UART2_RX | I2C0_SCL | | PWM4 |
-D6 | PA30 | UART2_TX | I2C0_SDA | | PWM4 |
-D7 | PA05 | | | | PWM4 |
-D8 | PA12 | | | | PWM3 |
-D9 | PA18 | UART0_RX | I2C1_SCL | SPI0_SCK, SPI1_SCK | |
-D10 | PA23 | UART0_TX | I2C1_SDA | SPI0_MOSI, SPI1_MOSI | PWM0 |
-A0 | PA19, ADC1 | | | | |
-A1 | ADC2 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|-------------------|---------
-Boot XIP | 0x000000 | 16 KiB / 0x4000 | 0x004000
-Boot RAM | 0x004000 | 16 KiB / 0x4000 | 0x008000
-(reserved) | 0x008000 | 4 KiB / 0x1000 | 0x009000
-System Data | 0x009000 | 4 KiB / 0x1000 | 0x00A000
-Calibration | 0x00A000 | 4 KiB / 0x1000 | 0x00B000
-OTA1 Image | 0x00B000 | 788 KiB / 0xC5000 | 0x0D0000
-OTA2 Image | 0x0D0000 | 788 KiB / 0xC5000 | 0x195000
-Key-Value Store | 0x195000 | 24 KiB / 0x6000 | 0x19B000
-User Data | 0x19B000 | 400 KiB / 0x64000 | 0x1FF000
-RDP | 0x1FF000 | 4 KiB / 0x1000 | 0x200000
-
-RDP is most likely not used in Tuya firmwares, as the System Data partition contains an incorrect offset 0xFF000 for RDP, which is in the middle of OTA2 image.
-
-Additionally, Tuya firmware uses an encrypted KV or file storage, which resides at the end of flash memory. This seems to overlap system RDP area.
diff --git a/boards/wr3l/pinout_wr3l.svg b/boards/wr3l/pinout_wr3l.svg
deleted file mode 100644
index 50a4006..0000000
--- a/boards/wr3l/pinout_wr3l.svg
+++ /dev/null
@@ -1,325 +0,0 @@
-
-
diff --git a/boards/wr3l/pins_arduino.h b/boards/wr3l/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/wr3l/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/wr3le/README.md b/boards/wr3le/README.md
deleted file mode 100644
index 6e28e43..0000000
--- a/boards/wr3le/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-# WR3LE Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/wr3le?id=K986l7a1ha8tm)
-
-- [General info](../../docs/platform/realtek-amb/README.md)
-- [Flashing guide](../../docs/platform/realtek-ambz/flashing.md)
-- [Debugging](../../docs/platform/realtek-ambz/debugging.md)
-
-Parameter | Value
--------------|--------------------------------------------
-Board code | `wr3le`
-MCU | RTL8710BX
-Manufacturer | Realtek
-Series | AmebaZ
-Frequency | 62.5 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 11x GPIO, 6x PWM, 2x UART, 2x ADC
-Wi-Fi | 802.11 b/g/n
-FCC ID | [2ANDL-WR3LE](https://fccid.io/2ANDL-WR3LE)
-
-## Usage
-
-**Board code:** `wr3le`
-
-In `platformio.ini`:
-
-```ini
-[env:wr3le]
-platform = libretuya
-board = wr3le
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: wr3le
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|------------|-----------|----------|----------------------|------|------
-D0 | PA29 | UART2_RX | I2C0_SCL | | PWM4 |
-D1 | PA14 | | | | PWM0 | SWCLK
-D2 | PA15 | | | | PWM1 | SWDIO
-D3 | PA22 | UART0_RTS | I2C0_SCL | SPI0_MISO, SPI1_MISO | PWM5 |
-D4 | PA00 | | | | PWM2 |
-D5 | PA30 | UART2_TX | I2C0_SDA | | PWM4 |
-D6 | PA19 | UART0_CTS | I2C0_SDA | SPI0_CS, SPI1_CS | |
-D7 | PA05 | | | | PWM4 |
-D8 | PA12 | | | | PWM3 |
-D9 | PA18 | UART0_RX | I2C1_SCL | SPI0_SCK, SPI1_SCK | |
-D10 | PA23 | UART0_TX | I2C1_SDA | SPI0_MOSI, SPI1_MOSI | PWM0 |
-A0 | PA19, ADC1 | | | | |
-A1 | ADC2 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|-------------------|---------
-Boot XIP | 0x000000 | 16 KiB / 0x4000 | 0x004000
-Boot RAM | 0x004000 | 16 KiB / 0x4000 | 0x008000
-(reserved) | 0x008000 | 4 KiB / 0x1000 | 0x009000
-System Data | 0x009000 | 4 KiB / 0x1000 | 0x00A000
-Calibration | 0x00A000 | 4 KiB / 0x1000 | 0x00B000
-OTA1 Image | 0x00B000 | 788 KiB / 0xC5000 | 0x0D0000
-OTA2 Image | 0x0D0000 | 788 KiB / 0xC5000 | 0x195000
-Key-Value Store | 0x195000 | 24 KiB / 0x6000 | 0x19B000
-User Data | 0x19B000 | 400 KiB / 0x64000 | 0x1FF000
-RDP | 0x1FF000 | 4 KiB / 0x1000 | 0x200000
-
-RDP is most likely not used in Tuya firmwares, as the System Data partition contains an incorrect offset 0xFF000 for RDP, which is in the middle of OTA2 image.
-
-Additionally, Tuya firmware uses an encrypted KV or file storage, which resides at the end of flash memory. This seems to overlap system RDP area.
diff --git a/boards/wr3le/pinout_wr3le.svg b/boards/wr3le/pinout_wr3le.svg
deleted file mode 100644
index 2ba22d2..0000000
--- a/boards/wr3le/pinout_wr3le.svg
+++ /dev/null
@@ -1,325 +0,0 @@
-
-
diff --git a/boards/wr3le/pins_arduino.h b/boards/wr3le/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/wr3le/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/boards/wr3n/README.md b/boards/wr3n/README.md
deleted file mode 100644
index 4bfa78e..0000000
--- a/boards/wr3n/README.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# WR3N Wi-Fi Module
-
-*by Tuya Inc.*
-
-[Product page](https://developer.tuya.com/en/docs/iot/wr3n-datasheet?id=K98zdx31ztdge)
-
-- [General info](../../docs/platform/realtek-amb/README.md)
-- [Flashing guide](../../docs/platform/realtek-ambz/flashing.md)
-- [Debugging](../../docs/platform/realtek-ambz/debugging.md)
-
-Parameter | Value
--------------|------------------------------------------
-Board code | `wr3n`
-MCU | RTL8710BN
-Manufacturer | Realtek
-Series | AmebaZ
-Frequency | 125 MHz
-Flash size | 2 MiB
-RAM size | 256 KiB
-Voltage | 3.0V - 3.6V
-I/O | 9x GPIO, 5x PWM, 2x UART, 1x ADC
-Wi-Fi | 802.11 b/g/n
-FCC ID | [2ANDL-WR3N](https://fccid.io/2ANDL-WR3N)
-
-## Usage
-
-**Board code:** `wr3n`
-
-In `platformio.ini`:
-
-```ini
-[env:wr3n]
-platform = libretuya
-board = wr3n
-framework = arduino
-```
-
-In ESPHome YAML:
-
-```yaml
-libretuya:
- board: wr3n
- framework:
- version: dev
-```
-
-## Pinout
-
-
-
-## Arduino Core pin mapping
-
-No. | Pin | UART | I²C | SPI | PWM | Other
-----|------|----------|----------|----------------------|------|------
-D0 | PA29 | UART2_RX | I2C0_SCL | | PWM4 |
-D1 | PA14 | | | | PWM0 | SWCLK
-D2 | PA15 | | | | PWM1 | SWDIO
-D3 | PA00 | | | | PWM2 |
-D4 | PA30 | UART2_TX | I2C0_SDA | | PWM4 |
-D5 | PA05 | | | | PWM4 |
-D6 | PA12 | | | | PWM3 |
-D7 | PA18 | UART0_RX | I2C1_SCL | SPI0_SCK, SPI1_SCK | |
-D8 | PA23 | UART0_TX | I2C1_SDA | SPI0_MOSI, SPI1_MOSI | PWM0 |
-A1 | ADC2 | | | | |
-
-## Flash memory map
-
-Flash size: 2 MiB / 2,097,152 B / 0x200000
-
-Hex values are in bytes.
-
-Name | Start | Length | End
-----------------|----------|-------------------|---------
-Boot XIP | 0x000000 | 16 KiB / 0x4000 | 0x004000
-Boot RAM | 0x004000 | 16 KiB / 0x4000 | 0x008000
-(reserved) | 0x008000 | 4 KiB / 0x1000 | 0x009000
-System Data | 0x009000 | 4 KiB / 0x1000 | 0x00A000
-Calibration | 0x00A000 | 4 KiB / 0x1000 | 0x00B000
-OTA1 Image | 0x00B000 | 788 KiB / 0xC5000 | 0x0D0000
-OTA2 Image | 0x0D0000 | 788 KiB / 0xC5000 | 0x195000
-Key-Value Store | 0x195000 | 24 KiB / 0x6000 | 0x19B000
-User Data | 0x19B000 | 400 KiB / 0x64000 | 0x1FF000
-RDP | 0x1FF000 | 4 KiB / 0x1000 | 0x200000
-
-RDP is most likely not used in Tuya firmwares, as the System Data partition contains an incorrect offset 0xFF000 for RDP, which is in the middle of OTA2 image.
-
-Additionally, Tuya firmware uses an encrypted KV or file storage, which resides at the end of flash memory. This seems to overlap system RDP area.
diff --git a/boards/wr3n/pinout_wr3n.svg b/boards/wr3n/pinout_wr3n.svg
deleted file mode 100644
index 428d398..0000000
--- a/boards/wr3n/pinout_wr3n.svg
+++ /dev/null
@@ -1,241 +0,0 @@
-
-
diff --git a/boards/wr3n/pins_arduino.h b/boards/wr3n/pins_arduino.h
deleted file mode 100644
index 1de3ade..0000000
--- a/boards/wr3n/pins_arduino.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "variant.h"
diff --git a/builder/frameworks/arduino.py b/builder/frameworks/arduino.py
index b9dbdbb..b8c3077 100644
--- a/builder/frameworks/arduino.py
+++ b/builder/frameworks/arduino.py
@@ -57,9 +57,9 @@ queue.AddExternalLibrary("arduino_api")
# Sources - board variant
queue.AddLibrary(
name="board_${VARIANT}",
- base_dir="$BOARD_DIR",
+ base_dir="$VARIANTS_DIR",
srcs=[
- "+",
+ "+<${VARIANT}.cpp>",
],
# not adding includes since they're added with the base core
)
diff --git a/builder/frameworks/base.py b/builder/frameworks/base.py
index 01903c7..4995979 100644
--- a/builder/frameworks/base.py
+++ b/builder/frameworks/base.py
@@ -71,6 +71,7 @@ queue.AppendPublic(
("LIBRETUYA", 1),
("LT_VERSION", env.ReadLTVersion(platform.get_dir(), platform.version)),
("LT_BOARD", "${VARIANT}"),
+ ("LT_VARIANT_H", r"\"${VARIANT}.h\""),
("F_CPU", board.get("build.f_cpu")),
("MCU", "${MCU}"),
("FAMILY", "F_${FAMILY}"),
@@ -78,7 +79,7 @@ queue.AppendPublic(
*env["FLASH_DEFINES"].items(),
],
CPPPATH=[
- "$BOARD_DIR",
+ "$VARIANTS_DIR",
],
LINKFLAGS=[
# malloc.c wrappers
diff --git a/builder/utils/env.py b/builder/utils/env.py
index bf81177..55ebf2b 100644
--- a/builder/utils/env.py
+++ b/builder/utils/env.py
@@ -28,13 +28,8 @@ def env_read_version(env: Environment, platform_dir: str, version: str):
return version
sha = p.stdout.read().decode().strip()
- p = Popen(["git", "status", "--short"], stdout=PIPE, cwd=platform_dir)
- if p.wait() != 0:
- sys.stderr.write(
- f"Warning! Non-zero return code received from Git: {p.returncode}\n"
- )
- return version
- dirty = p.stdout.read().strip()
+ p = Popen(["git", "diff", "--quiet"], stdout=PIPE, cwd=platform_dir)
+ dirty = p.wait() != 0
except (FileNotFoundError, IndexError):
sys.stderr.write(
"Warning! Git executable not found, or unreadable data received. Cannot read version information.\n"
@@ -67,7 +62,7 @@ def env_configure(
CORES_DIR=join("${LT_DIR}", "cores"),
COMMON_DIR=join("${LT_DIR}", "cores", "common"),
# Build directories & paths
- BOARD_DIR=join("${LT_DIR}", "boards", "${VARIANT}"),
+ VARIANTS_DIR=join("${LT_DIR}", "boards", "variants"),
FAMILY_DIR=join("${LT_DIR}", "cores", "${FAMILY_NAME}"),
MISC_DIR=join("${FAMILY_DIR}", "misc"),
LDSCRIPT_PATH=[board.get("build.ldscript")],
diff --git a/cores/beken-72xx/base/lt_family.h b/cores/beken-72xx/base/lt_family.h
index 5223d7f..4484a1d 100644
--- a/cores/beken-72xx/base/lt_family.h
+++ b/cores/beken-72xx/base/lt_family.h
@@ -2,7 +2,7 @@
#pragma once
-#include
+#include LT_VARIANT_H
// Choose the main UART output port
#ifndef LT_UART_DEFAULT_PORT
diff --git a/cores/common/base/libretuya.h b/cores/common/base/libretuya.h
index b72eae8..746b1dc 100644
--- a/cores/common/base/libretuya.h
+++ b/cores/common/base/libretuya.h
@@ -42,7 +42,7 @@
// Family-specific macros
#include
// Board variant (pin definitions)
-#include
+#include LT_VARIANT_H
// APIs
#include "lt_common_api.h" // common APIs
#include "lt_family_api.h" // family-specific APIs
diff --git a/cores/realtek-ambz/base/lt_family.h b/cores/realtek-ambz/base/lt_family.h
index b83d559..9723ffb 100644
--- a/cores/realtek-ambz/base/lt_family.h
+++ b/cores/realtek-ambz/base/lt_family.h
@@ -2,7 +2,7 @@
#pragma once
-#include
+#include LT_VARIANT_H
// Choose the main UART output port
#ifndef LT_UART_DEFAULT_PORT
diff --git a/cores/realtek-ambz2/base/lt_family.h b/cores/realtek-ambz2/base/lt_family.h
index b83d559..9723ffb 100644
--- a/cores/realtek-ambz2/base/lt_family.h
+++ b/cores/realtek-ambz2/base/lt_family.h
@@ -2,7 +2,7 @@
#pragma once
-#include
+#include LT_VARIANT_H
// Choose the main UART output port
#ifndef LT_UART_DEFAULT_PORT
diff --git a/docs/boards_tuya_all.json b/docs/boards_tuya_all.json
index cf108ac..2832f16 100644
--- a/docs/boards_tuya_all.json
+++ b/docs/boards_tuya_all.json
@@ -415,6 +415,32 @@
"datasheet_id": "Kbtesqh678sbe"
}
},
+ "tcs905": {
+ "tcs905-3s": {
+ "mcu": "bk7231n",
+ "flash": 2097152,
+ "ram": 262144,
+ "pins_total": 22,
+ "connectivity": [
+ "wifi",
+ "ble"
+ ],
+ "datasheet_name": "TCS905-3S-Module-Datasheet",
+ "datasheet_id": "Kc5xc8hhigndh"
+ },
+ "tcs905-u": {
+ "mcu": "bk7231n",
+ "flash": 2097152,
+ "ram": 262144,
+ "pins_total": 21,
+ "connectivity": [
+ "wifi",
+ "ble"
+ ],
+ "datasheet_name": "TCS905-U-module-datasheet",
+ "datasheet_id": "Kc5x1p35fs5zf"
+ }
+ },
"axy": {
"axy2s": {
"mcu": "ecr6600",
@@ -493,6 +519,20 @@
"datasheet_id": "Kbohlj8eg19u5"
}
},
+ "wx": {
+ "wxu": {
+ "mcu": "t103c-hl",
+ "flash": 2097152,
+ "ram": 327680,
+ "pins_total": 21,
+ "connectivity": [
+ "wifi",
+ "ble"
+ ],
+ "datasheet_name": "wxu-module-datasheet",
+ "datasheet_id": "Kc2xk9qlk04so"
+ }
+ },
"wr": {
"wr1": {
"mcu": "rtl8710bn",
diff --git a/docs/status/supported_boards.md b/docs/status/supported_boards.md
deleted file mode 100644
index 7182c61..0000000
--- a/docs/status/supported_boards.md
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-Name | MCU | Flash | RAM | Pins* | Wi-Fi | BLE | ZigBee | Family name
---------------------------------------------------------------------------|-----------|-------|---------|-------------|-------|-----|--------|----------------
-**Generic** | | | | | | | |
-[BK7231N (Tuya QFN32)](../../boards/generic-bk7231n-qfn32-tuya/README.md) | BK7231N | 2 MiB | 256 KiB | 19 (19 I/O) | ✔️ | ✔️ | ❌ | `beken-7231n`
-[BK7231T (Tuya QFN32)](../../boards/generic-bk7231t-qfn32-tuya/README.md) | BK7231T | 2 MiB | 256 KiB | 19 (19 I/O) | ✔️ | ✔️ | ❌ | `beken-7231u`
-[BK7252](../../boards/generic-bk7252/README.md) | BK7252 | 4 MiB | 512 KiB | 38 (38 I/O) | ✔️ | ✔️ | ❌ | `beken-7251`
-[RTL8710BN (2M/468k)](../../boards/generic-rtl8710bn-2mb-468k/README.md) | RTL8710BN | 2 MiB | 256 KiB | 18 (18 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
-[RTL8710BN (2M/788k)](../../boards/generic-rtl8710bn-2mb-788k/README.md) | RTL8710BN | 2 MiB | 256 KiB | 18 (18 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
-[RTL8710BX (4M/980k)](../../boards/generic-rtl8710bx-4mb-980k/README.md) | RTL8710BX | 4 MiB | 256 KiB | 17 (17 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
-[RTL8720CF (2M/992k)](../../boards/generic-rtl8720cf-2mb-992k/README.md) | RTL8720CF | 2 MiB | 256 KiB | 20 (20 I/O) | ✔️ | ✔️ | ❌ | `realtek-ambz2`
-**Ai-Thinker Co., Ltd.** | | | | | | | |
-[BW12](../../boards/bw12/README.md) | RTL8710BX | 2 MiB | 256 KiB | 16 (12 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
-[BW15](../../boards/bw15/README.md) | RTL8720CF | 2 MiB | 256 KiB | 16 (13 I/O) | ✔️ | ✔️ | ❌ | `realtek-ambz2`
-**Tuya Inc.** | | | | | | | |
-[CB2L](../../boards/cb2l/README.md) | BK7231N | 2 MiB | 256 KiB | 7 (5 I/O) | ✔️ | ✔️ | ❌ | `beken-7231n`
-[CB2S](../../boards/cb2s/README.md) | BK7231N | 2 MiB | 256 KiB | 11 (8 I/O) | ✔️ | ✔️ | ❌ | `beken-7231n`
-[CB3L](../../boards/cb3l/README.md) | BK7231N | 2 MiB | 256 KiB | 16 (12 I/O) | ✔️ | ✔️ | ❌ | `beken-7231n`
-[CB3S](../../boards/cb3s/README.md) | BK7231N | 2 MiB | 256 KiB | 22 (16 I/O) | ✔️ | ✔️ | ❌ | `beken-7231n`
-[CB3SE](../../boards/cb3se/README.md) | BK7231N | 2 MiB | 256 KiB | 22 (17 I/O) | ✔️ | ✔️ | ❌ | `beken-7231n`
-[WB2L](../../boards/wb2l/README.md) | BK7231T | 2 MiB | 256 KiB | 7 (5 I/O) | ✔️ | ✔️ | ❌ | `beken-7231u`
-[WB2S](../../boards/wb2s/README.md) | BK7231T | 2 MiB | 256 KiB | 11 (8 I/O) | ✔️ | ✔️ | ❌ | `beken-7231u`
-[WB3L](../../boards/wb3l/README.md) | BK7231T | 2 MiB | 256 KiB | 21 (17 I/O) | ✔️ | ✔️ | ❌ | `beken-7231u`
-[WB3S](../../boards/wb3s/README.md) | BK7231T | 2 MiB | 256 KiB | 22 (16 I/O) | ✔️ | ✔️ | ❌ | `beken-7231u`
-[WR2](../../boards/wr2/README.md) | RTL8710BN | 2 MiB | 256 KiB | 11 (8 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
-[WR2E](../../boards/wr2e/README.md) | RTL8710BN | 2 MiB | 256 KiB | 11 (8 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
-[WR3](../../boards/wr3/README.md) | RTL8710BN | 2 MiB | 256 KiB | 16 (12 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
-[WR3E](../../boards/wr3e/README.md) | RTL8710BN | 2 MiB | 256 KiB | 16 (12 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
-[WR3N](../../boards/wr3n/README.md) | RTL8710BN | 2 MiB | 256 KiB | 16 (10 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
-[WR2L](../../boards/wr2l/README.md) | RTL8710BX | 2 MiB | 256 KiB | 7 (5 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
-[WR2LE](../../boards/wr2le/README.md) | RTL8710BX | 2 MiB | 256 KiB | 7 (5 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
-[WR3L](../../boards/wr3l/README.md) | RTL8710BX | 2 MiB | 256 KiB | 16 (12 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
-[WR3LE](../../boards/wr3le/README.md) | RTL8710BX | 2 MiB | 256 KiB | 16 (12 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
-**Unknown** | | | | | | | |
-[LSC LMA35](../../boards/lsc-lma35/README.md) | BK7231N | 2 MiB | 256 KiB | 22 (15 I/O) | ✔️ | ✔️ | ❌ | `beken-7231n`
-[LSC LMA35 T](../../boards/lsc-lma35-t/README.md) | BK7231T | 2 MiB | 256 KiB | 22 (15 I/O) | ✔️ | ✔️ | ❌ | `beken-7231u`
-**N/A** | | | | | | | |
-[Native](../../boards/generic-native/README.md) | NATIVE | 4 MiB | 4 MiB | - | ✔️ | ❌ | ❌ | `host-native`
diff --git a/docs/status/supported_chips.md b/docs/status/supported_chips.md
deleted file mode 100644
index 7a0d597..0000000
--- a/docs/status/supported_chips.md
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-- BK7231N
-- BK7231S
-- BK7231T
-- BK7231U
-- BK7251
-- BK7252
-- BL2028N
-- NATIVE
-- RTL8710BN
-- RTL8710BX
-- RTL8720CF
diff --git a/docs/status/supported_families.md b/docs/status/supported_families.md
deleted file mode 100644
index 3c17c61..0000000
--- a/docs/status/supported_families.md
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-Title | Name (parent) | Code | Short name & ID | Arduino Core | Source SDK
---------------------------------------------------------------------------|---------------------------------|----------------------|-------------------------|--------------|----------------------------------------------------------------------------------
-Realtek Ameba1 | `-` | `-` | `RTL8710A` (0x9FFFD543) | ❌ | -
-[Realtek AmebaZ](https://www.amebaiot.com/en/amebaz/) | `realtek-ambz` (`realtek-amb`) | `ambz` (`amb`) | `RTL8710B` (0x22E0D6FC) | ✔️ | `framework-realtek-amb1` ([amb1_sdk](https://github.com/ambiot/amb1_sdk))
-[Realtek AmebaZ2](https://www.amebaiot.com/en/amebaz2/) | `realtek-ambz2` (`realtek-amb`) | `ambz2` (`amb`) | `RTL8720C` (0xE08F7564) | ❌ | `framework-realtek-ambz2` ([ambz2_sdk](https://github.com/ambiot/ambz2_sdk))
-Realtek AmebaD | `-` | `-` | `RTL8720D` (0x3379CFE2) | ❌ | -
-[Beken 7231U/7231T](http://www.bekencorp.com/en/goods/detail/cid/13.html) | `beken-7231u` (`beken-72xx`) | `bk7231u` (`bk72xx`) | `BK7231U` (0x675A40B0) | ✔️ | `framework-beken-bdk` ([bdk_freertos](https://github.com/bekencorp/bdk_freertos))
-[Beken 7231N](http://www.bekencorp.com/en/goods/detail/cid/39.html) | `beken-7231n` (`beken-72xx`) | `bk7231n` (`bk72xx`) | `BK7231N` (0x7B3EF230) | ✔️ | `framework-beken-bdk` ([bdk_freertos](https://github.com/bekencorp/bdk_freertos))
-[Beken 7251/7252](http://www.bekencorp.com/en/goods/detail/cid/21.html) | `beken-7251` (`beken-72xx`) | `bk7251` (`bk72xx`) | `BK7251` (0x6A82CC42) | ✔️ | `framework-beken-bdk` ([bdk_freertos](https://github.com/bekencorp/bdk_freertos))
-Boufallo 602 | `-` | `-` | `BL602` (0xDE1270B7) | ❌ | -
-Xradiotech 809 | `-` | `-` | `XR809` (0x51E903A8) | ❌ | -
-Native host architecture | `host-native` | `native` | `NATIVE` (0xDEADBEEF) | ❌ | -
diff --git a/docs/status/unsupported_boards_tuya_all.md b/docs/status/unsupported_boards_tuya_all.md
deleted file mode 100644
index fe61c1b..0000000
--- a/docs/status/unsupported_boards_tuya_all.md
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-Name | MCU | Flash | RAM | Pins | Wi-Fi | BLE | ZigBee
----------------|------------|-------|---------|------|-------|-----|-------
-**AXY Series** | | | | | | |
-AXY2S | ECR6600 | 2 MiB | 512 KiB | 11 | ✔️ | ✔️ | ❌
-AXY3L | ECR6600 | 2 MiB | 512 KiB | 18 | ✔️ | ✔️ | ❌
-AXY3S | ECR6600 | 2 MiB | 512 KiB | 22 | ✔️ | ✔️ | ❌
-AXYU | ECR6600 | 2 MiB | 512 KiB | 21 | ✔️ | ✔️ | ❌
-**CB Series** | | | | | | |
-CB1S | BK7231N | 2 MiB | 256 KiB | 18 | ✔️ | ✔️ | ❌
-CB8P | BK7231N | 2 MiB | 256 KiB | 10 | ✔️ | ✔️ | ❌
-CBLC5 | BK7231N | 2 MiB | 256 KiB | 15 | ✔️ | ✔️ | ❌
-CBLC9 | BK7231N | 2 MiB | 256 KiB | 8 | ✔️ | ✔️ | ❌
-CBU | BK7231N | 2 MiB | 256 KiB | 21 | ✔️ | ✔️ | ❌
-**CR Series** | | | | | | |
-CR2S | RTL8720CM | 4 MiB | 4 MiB | 11 | ✔️ | ✔️ | ❌
-CR3L | RTL8720CM | 4 MiB | 4 MiB | 18 | ✔️ | ✔️ | ❌
-CRG1 | RTL8720CM | 4 MiB | 4 MiB | 25 | ✔️ | ✔️ | ❌
-**WB Series** | | | | | | |
-WB1S | BK7231T | 2 MiB | 256 KiB | 18 | ✔️ | ✔️ | ❌
-WB8P | BK7231T | 2 MiB | 256 KiB | 10 | ✔️ | ✔️ | ❌
-WBLC5 | BK7231T | 2 MiB | 256 KiB | 15 | ✔️ | ✔️ | ❌
-WBLC9 | BK7231T | 2 MiB | 256 KiB | 8 | ✔️ | ✔️ | ❌
-**WBR Series** | | | | | | |
-WBR1 | RTL8720CF | 2 MiB | 256 KiB | 18 | ✔️ | ✔️ | ❌
-WBR2 | RTL8720CF | 2 MiB | 256 KiB | 11 | ✔️ | ✔️ | ❌
-WBR2L | RTL8720CF | 2 MiB | 256 KiB | 7 | ✔️ | ✔️ | ❌
-WBR3 | RTL8720CF | 2 MiB | 256 KiB | 16 | ✔️ | ✔️ | ❌
-WBR3L | RTL8720CF | 2 MiB | 256 KiB | 18 | ✔️ | ✔️ | ❌
-WBR3S | RTL8720CF | 2 MiB | 256 KiB | 22 | ✔️ | ✔️ | ❌
-WBRU | RTL8720CF | 2 MiB | 256 KiB | 21 | ✔️ | ✔️ | ❌
-WBR3N | RTL8720CS | 4 MiB | 512 KiB | 16 | ✔️ | ✔️ | ❌
-WBRG1 | RTL8720CSM | 8 MiB | 4 MiB | 25 | ✔️ | ✔️ | ❌
-WBR1D | RTL8720DN | 4 MiB | 512 KiB | 18 | ✔️ | ✔️ | ❌
-WBR2D | RTL8720DN | 4 MiB | 512 KiB | 11 | ✔️ | ✔️ | ❌
-WBR3D | RTL8720DN | 4 MiB | 512 KiB | 16 | ✔️ | ✔️ | ❌
-WBR3T | RTL8720DN | 4 MiB | 512 KiB | 16 | ✔️ | ✔️ | ❌
-**WL Series** | | | | | | |
-WL2H-U | LN882H | ? | 296 KiB | 21 | ✔️ | ✔️ | ❌
-**WR Series** | | | | | | |
-WR1 | RTL8710BN | 1 MiB | 256 KiB | 18 | ✔️ | ❌ | ❌
-WR1E | RTL8710BN | 2 MiB | 256 KiB | 18 | ✔️ | ❌ | ❌
-WR4 | RTL8710BN | 1 MiB | 256 KiB | 16 | ✔️ | ❌ | ❌
-WR5E | RTL8710BN | 2 MiB | 256 KiB | 15 | ✔️ | ❌ | ❌
-WR6 | RTL8710BN | 2 MiB | 256 KiB | 14 | ✔️ | ❌ | ❌
-WR6-H | RTL8710BN | 2 MiB | 256 KiB | 14 | ✔️ | ❌ | ❌
-WRG1 | RTL8711AM | 4 MiB | 2 MiB | 25 | ✔️ | ❌ | ❌
-**WT Series** | | | | | | |
-WT3 | T2 | 2 MiB | 256 KiB | 16 | ✔️ | ✔️ | ❌
-**XR Series** | | | | | | |
-XR1 | XR809 | 2 MiB | 384 KiB | 18 | ✔️ | ❌ | ❌
-XR3 | XR809 | 2 MiB | 384 KiB | 16 | ✔️ | ❌ | ❌
diff --git a/tools/boardgen b/tools/boardgen
deleted file mode 160000
index 7d6a236..0000000
--- a/tools/boardgen
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 7d6a23672ba33dd2a6a445db1d28cd38247d5ee4