esp32/boards/GENERIC: Merge with GENERIC_{SPIRAM,OTA,D2WD,UNICORE}.

These are now variants of the GENERIC board.

This work was funded through GitHub Sponsors.

Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
diff --git a/ports/esp32/boards/GENERIC/board.json b/ports/esp32/boards/GENERIC/board.json
index f70e2e0..d08fcfe 100644
--- a/ports/esp32/boards/GENERIC/board.json
+++ b/ports/esp32/boards/GENERIC/board.json
@@ -13,11 +13,15 @@
         "esp32_devkitc.jpg"
     ],
     "mcu": "esp32",
-    "product": "ESP32",
+    "product": "ESP32 / WROOM",
     "thumbnail": "",
     "url": "https://www.espressif.com/en/products/modules",
     "variants": {
-        "idf3": "Compiled with IDF 3.x"
+        "idf3": "Compiled with IDF 3.x",
+        "d2wd": "ESP32 D2WD",
+        "spiram": "Support for SPIRAM / WROVER",
+        "unicore": "ESP32 Unicore",
+        "ota": "Support for OTA"
     },
     "vendor": "Espressif"
 }
diff --git a/ports/esp32/boards/GENERIC/board.md b/ports/esp32/boards/GENERIC/board.md
index efb2b2c..8a66941 100644
--- a/ports/esp32/boards/GENERIC/board.md
+++ b/ports/esp32/boards/GENERIC/board.md
@@ -1 +1,9 @@
-The following files are firmware for ESP32-based boards without external SPIRAM.
+The following files are firmware that should work on most ESP32-based boards
+with 4MiB of flash, including WROOM WROVER, SOLO, PICO, and MINI modules.
+
+If your board is based on a WROVER module, or otherwise has SPIRAM (also known
+as PSRAM), then use the "spiram" variant.
+
+The "d2wd" variant is for ESP32-D2WD chips (with 2MiB flash), and "unicore" is
+for single-core ESP32 chips (e.g. the "SOLO" modules). The "ota" variant sets
+up the partition table to allow for Over-the-Air updates.
diff --git a/ports/esp32/boards/GENERIC/mpconfigboard.cmake b/ports/esp32/boards/GENERIC/mpconfigboard.cmake
index ac60dc8..29096c2 100644
--- a/ports/esp32/boards/GENERIC/mpconfigboard.cmake
+++ b/ports/esp32/boards/GENERIC/mpconfigboard.cmake
@@ -2,3 +2,47 @@
     boards/sdkconfig.base
     boards/sdkconfig.ble
 )
+
+if(MICROPY_BOARD_VARIANT STREQUAL "d2wd")
+    set(SDKCONFIG_DEFAULTS
+        ${SDKCONFIG_DEFAULTS}
+        boards/GENERIC/sdkconfig.d2wd
+    )
+
+    list(APPEND MICROPY_DEF_BOARD
+        MICROPY_HW_MCU_NAME="ESP32-D2WD"
+    )
+endif()
+
+if(MICROPY_BOARD_VARIANT STREQUAL "ota")
+    set(SDKCONFIG_DEFAULTS
+        ${SDKCONFIG_DEFAULTS}
+        boards/GENERIC/sdkconfig.ota
+    )
+
+    list(APPEND MICROPY_DEF_BOARD
+        MICROPY_HW_BOARD_NAME="Generic ESP32 module with OTA"
+    )
+endif()
+
+if(MICROPY_BOARD_VARIANT STREQUAL "spiram")
+    set(SDKCONFIG_DEFAULTS
+        ${SDKCONFIG_DEFAULTS}
+        boards/sdkconfig.spiram
+    )
+
+    list(APPEND MICROPY_DEF_BOARD
+        MICROPY_HW_BOARD_NAME="Generic ESP32 module with SPIRAM"
+    )
+endif()
+
+if(MICROPY_BOARD_VARIANT STREQUAL "unicore")
+    set(SDKCONFIG_DEFAULTS
+        ${SDKCONFIG_DEFAULTS}
+        boards/GENERIC/sdkconfig.unicore
+    )
+
+    list(APPEND MICROPY_DEF_BOARD
+        MICROPY_HW_MCU_NAME="ESP32-UNICORE"
+    )
+endif()
diff --git a/ports/esp32/boards/GENERIC/mpconfigboard.h b/ports/esp32/boards/GENERIC/mpconfigboard.h
index 644807f..7171a84 100644
--- a/ports/esp32/boards/GENERIC/mpconfigboard.h
+++ b/ports/esp32/boards/GENERIC/mpconfigboard.h
@@ -1,2 +1,10 @@
-#define MICROPY_HW_BOARD_NAME "ESP32 module"
+// Both of these can be set by mpconfigboard.cmake if a BOARD_VARIANT is
+// specified.
+
+#ifndef MICROPY_HW_BOARD_NAME
+#define MICROPY_HW_BOARD_NAME "Generic ESP32 module"
+#endif
+
+#ifndef MICROPY_HW_MCU_NAME
 #define MICROPY_HW_MCU_NAME "ESP32"
+#endif
diff --git a/ports/esp32/boards/GENERIC_D2WD/sdkconfig.board b/ports/esp32/boards/GENERIC/sdkconfig.d2wd
similarity index 100%
rename from ports/esp32/boards/GENERIC_D2WD/sdkconfig.board
rename to ports/esp32/boards/GENERIC/sdkconfig.d2wd
diff --git a/ports/esp32/boards/GENERIC_OTA/sdkconfig.board b/ports/esp32/boards/GENERIC/sdkconfig.ota
similarity index 100%
rename from ports/esp32/boards/GENERIC_OTA/sdkconfig.board
rename to ports/esp32/boards/GENERIC/sdkconfig.ota
diff --git a/ports/esp32/boards/GENERIC_UNICORE/sdkconfig.board b/ports/esp32/boards/GENERIC/sdkconfig.unicore
similarity index 100%
rename from ports/esp32/boards/GENERIC_UNICORE/sdkconfig.board
rename to ports/esp32/boards/GENERIC/sdkconfig.unicore
diff --git a/ports/esp32/boards/GENERIC_D2WD/board.json b/ports/esp32/boards/GENERIC_D2WD/board.json
deleted file mode 100644
index 0582820..0000000
--- a/ports/esp32/boards/GENERIC_D2WD/board.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-    "deploy": [
-        "../deploy.md"
-    ],
-    "docs": "",
-    "features": [
-        "BLE",
-        "External Flash",
-        "WiFi"
-    ],
-    "id": "esp32-d2wd",
-    "images": [
-        "generic_d2wd.jpg"
-    ],
-    "mcu": "esp32",
-    "product": "ESP32 D2WD",
-    "thumbnail": "",
-    "url": "https://www.espressif.com/en/products/modules",
-    "vendor": "Espressif"
-}
diff --git a/ports/esp32/boards/GENERIC_D2WD/mpconfigboard.cmake b/ports/esp32/boards/GENERIC_D2WD/mpconfigboard.cmake
deleted file mode 100644
index 88cc7a7..0000000
--- a/ports/esp32/boards/GENERIC_D2WD/mpconfigboard.cmake
+++ /dev/null
@@ -1,5 +0,0 @@
-set(SDKCONFIG_DEFAULTS
-    boards/sdkconfig.base
-    boards/sdkconfig.ble
-    boards/GENERIC_D2WD/sdkconfig.board
-)
diff --git a/ports/esp32/boards/GENERIC_D2WD/mpconfigboard.h b/ports/esp32/boards/GENERIC_D2WD/mpconfigboard.h
deleted file mode 100644
index 8923d46..0000000
--- a/ports/esp32/boards/GENERIC_D2WD/mpconfigboard.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#define MICROPY_HW_BOARD_NAME "Generic ESP32-D2WD module"
-#define MICROPY_HW_MCU_NAME "ESP32-D2WD"
diff --git a/ports/esp32/boards/GENERIC_OTA/board.json b/ports/esp32/boards/GENERIC_OTA/board.json
deleted file mode 100644
index 3b882e0..0000000
--- a/ports/esp32/boards/GENERIC_OTA/board.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-    "deploy": [
-        "../deploy.md"
-    ],
-    "docs": "",
-    "features": [
-        "BLE",
-        "External Flash",
-        "WiFi"
-    ],
-    "id": "esp32-ota",
-    "images": [
-        "esp32_devkitc.jpg"
-    ],
-    "mcu": "esp32",
-    "product": "ESP32 with OTA support",
-    "thumbnail": "",
-    "url": "https://www.espressif.com/en/products/modules",
-    "vendor": "Espressif"
-}
diff --git a/ports/esp32/boards/GENERIC_OTA/mpconfigboard.cmake b/ports/esp32/boards/GENERIC_OTA/mpconfigboard.cmake
deleted file mode 100644
index 8bc9d50..0000000
--- a/ports/esp32/boards/GENERIC_OTA/mpconfigboard.cmake
+++ /dev/null
@@ -1,5 +0,0 @@
-set(SDKCONFIG_DEFAULTS
-    boards/sdkconfig.base
-    boards/sdkconfig.ble
-    boards/GENERIC_OTA/sdkconfig.board
-)
diff --git a/ports/esp32/boards/GENERIC_OTA/mpconfigboard.h b/ports/esp32/boards/GENERIC_OTA/mpconfigboard.h
deleted file mode 100644
index ff39c4b..0000000
--- a/ports/esp32/boards/GENERIC_OTA/mpconfigboard.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#define MICROPY_HW_BOARD_NAME "4MB/OTA module"
-#define MICROPY_HW_MCU_NAME "ESP32"
diff --git a/ports/esp32/boards/GENERIC_SPIRAM/board.json b/ports/esp32/boards/GENERIC_SPIRAM/board.json
deleted file mode 100644
index 0224202..0000000
--- a/ports/esp32/boards/GENERIC_SPIRAM/board.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-    "deploy": [
-        "../deploy.md"
-    ],
-    "docs": "",
-    "features": [
-        "BLE",
-        "External Flash",
-        "External RAM",
-        "WiFi"
-    ],
-    "id": "esp32spiram",
-    "images": [
-        "esp32_psram.jpg"
-    ],
-    "mcu": "esp32",
-    "product": "ESP32 with SPIRAM",
-    "thumbnail": "",
-    "url": "https://www.espressif.com/en/products/modules",
-    "variants": {
-        "idf3": "Compiled with IDF 3.x"
-    },
-    "vendor": "Espressif"
-}
diff --git a/ports/esp32/boards/GENERIC_SPIRAM/board.md b/ports/esp32/boards/GENERIC_SPIRAM/board.md
deleted file mode 100644
index c638f63..0000000
--- a/ports/esp32/boards/GENERIC_SPIRAM/board.md
+++ /dev/null
@@ -1 +0,0 @@
-The following files are firmware for ESP32-based boards with external SPIRAM (also known as PSRAM).
diff --git a/ports/esp32/boards/GENERIC_SPIRAM/mpconfigboard.cmake b/ports/esp32/boards/GENERIC_SPIRAM/mpconfigboard.cmake
deleted file mode 100644
index 2e1d799..0000000
--- a/ports/esp32/boards/GENERIC_SPIRAM/mpconfigboard.cmake
+++ /dev/null
@@ -1,5 +0,0 @@
-set(SDKCONFIG_DEFAULTS
-    boards/sdkconfig.base
-    boards/sdkconfig.ble
-    boards/sdkconfig.spiram
-)
diff --git a/ports/esp32/boards/GENERIC_SPIRAM/mpconfigboard.h b/ports/esp32/boards/GENERIC_SPIRAM/mpconfigboard.h
deleted file mode 100644
index a5982e4..0000000
--- a/ports/esp32/boards/GENERIC_SPIRAM/mpconfigboard.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#define MICROPY_HW_BOARD_NAME "ESP32 module (spiram)"
-#define MICROPY_HW_MCU_NAME "ESP32"
diff --git a/ports/esp32/boards/GENERIC_UNICORE/board.json b/ports/esp32/boards/GENERIC_UNICORE/board.json
deleted file mode 100644
index 1f3beaf..0000000
--- a/ports/esp32/boards/GENERIC_UNICORE/board.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-    "deploy": [
-        "../deploy.md"
-    ],
-    "docs": "",
-    "features": [
-        "BLE",
-        "External Flash",
-        "WiFi"
-    ],
-    "id": "esp32-unicore",
-    "images": [
-        "generic_unicore.jpg"
-    ],
-    "mcu": "esp32",
-    "product": "ESP32 Unicore",
-    "thumbnail": "",
-    "url": "https://www.espressif.com/en/products/modules",
-    "vendor": "Espressif"
-}
diff --git a/ports/esp32/boards/GENERIC_UNICORE/board.md b/ports/esp32/boards/GENERIC_UNICORE/board.md
deleted file mode 100644
index b41c167..0000000
--- a/ports/esp32/boards/GENERIC_UNICORE/board.md
+++ /dev/null
@@ -1 +0,0 @@
-The following files are daily firmware for single-core ESP32-based boards without external SPIRAM.
diff --git a/ports/esp32/boards/GENERIC_UNICORE/mpconfigboard.cmake b/ports/esp32/boards/GENERIC_UNICORE/mpconfigboard.cmake
deleted file mode 100644
index 2f34688..0000000
--- a/ports/esp32/boards/GENERIC_UNICORE/mpconfigboard.cmake
+++ /dev/null
@@ -1,5 +0,0 @@
-set(SDKCONFIG_DEFAULTS
-    boards/sdkconfig.base
-    boards/sdkconfig.ble
-    boards/GENERIC_UNICORE/sdkconfig.board
-)
diff --git a/ports/esp32/boards/GENERIC_UNICORE/mpconfigboard.h b/ports/esp32/boards/GENERIC_UNICORE/mpconfigboard.h
deleted file mode 100644
index 5d0624b..0000000
--- a/ports/esp32/boards/GENERIC_UNICORE/mpconfigboard.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#define MICROPY_HW_BOARD_NAME "ESP32 Unicore module"
-#define MICROPY_HW_MCU_NAME "ESP32-UNICORE"
diff --git a/ports/esp32/esp32_common.cmake b/ports/esp32/esp32_common.cmake
index 098df1f..f521904 100644
--- a/ports/esp32/esp32_common.cmake
+++ b/ports/esp32/esp32_common.cmake
@@ -170,6 +170,7 @@
 # Set compile options for this port.
 target_compile_definitions(${MICROPY_TARGET} PUBLIC
     ${MICROPY_DEF_CORE}
+    ${MICROPY_DEF_BOARD}
     MICROPY_ESP_IDF_4=1
     MICROPY_VFS_FAT=1
     MICROPY_VFS_LFS2=1