From 226cd4fa694378ea07b4a67f219391fb6ef246d1 Mon Sep 17 00:00:00 2001
From: brentru <brent@adafruit.com>
Date: Mon, 10 Jan 2022 14:34:09 -0500
Subject: [PATCH 1/5] add s2 tft

---
 src/Wippersnapper_Boards.h                           |  8 ++++++++
 src/components/i2c/WipperSnapper_I2C.cpp             |  3 ++-
 src/components/statusLED/Wippersnapper_StatusLED.cpp |  3 ++-
 src/provisioning/tinyusb/Wippersnapper_FS.cpp        | 12 ++++++++++--
 4 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/src/Wippersnapper_Boards.h b/src/Wippersnapper_Boards.h
index 6d18ca45c..4982f48bb 100644
--- a/src/Wippersnapper_Boards.h
+++ b/src/Wippersnapper_Boards.h
@@ -60,6 +60,14 @@
 #define STATUS_NEOPIXEL_PIN 33
 #define STATUS_NEOPIXEL_NUM 1
 #define PIN_I2C_POWER_INVERTED 7
+#elif defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2_TFT)
+#define BOARD_ID "adafruit-feather-esp32s2-tft"
+#define USE_TINYUSB
+#define USE_STATUS_NEOPIXEL
+#define NEEDS_STATUS_NEOPIXEL_POWER
+#define STATUS_NEOPIXEL_PIN 33
+#define STATUS_NEOPIXEL_NUM 1
+#define PIN_I2C_POWER_INVERTED 7
 #elif defined(ARDUINO_ADAFRUIT_QTPY_ESP32S2)
 #define BOARD_ID "adafruit-qtpy-esp32s2"
 #define USE_TINYUSB
diff --git a/src/components/i2c/WipperSnapper_I2C.cpp b/src/components/i2c/WipperSnapper_I2C.cpp
index ebca6e210..faf1d2592 100644
--- a/src/components/i2c/WipperSnapper_I2C.cpp
+++ b/src/components/i2c/WipperSnapper_I2C.cpp
@@ -36,7 +36,8 @@ WipperSnapper_Component_I2C::WipperSnapper_Component_I2C(
   WS_DEBUG_PRINTLN(msgInitRequest->i2c_frequency);
 
 // Invert Feather ESP32-S2 pin power for I2C
-#ifdef ARDUINO_ADAFRUIT_FEATHER_ESP32S2
+#if defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2) ||                               \
+    defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2_TFT)
   pinMode(PIN_I2C_POWER_INVERTED, OUTPUT);
   digitalWrite(PIN_I2C_POWER_INVERTED, LOW);
 #endif
diff --git a/src/components/statusLED/Wippersnapper_StatusLED.cpp b/src/components/statusLED/Wippersnapper_StatusLED.cpp
index aeeaaceba..3f3ee593f 100644
--- a/src/components/statusLED/Wippersnapper_StatusLED.cpp
+++ b/src/components/statusLED/Wippersnapper_StatusLED.cpp
@@ -51,7 +51,8 @@ bool Wippersnapper::statusLEDInit() {
 #ifdef NEEDS_STATUS_NEOPIXEL_POWER
   pinMode(NEOPIXEL_POWER, OUTPUT);
 #if defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2) ||                               \
-    defined(ARDUINO_ADAFRUIT_QTPY_ESP32S2)
+    defined(ARDUINO_ADAFRUIT_QTPY_ESP32S2) ||                                  \
+    defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2_TFT)
   digitalWrite(NEOPIXEL_POWER, HIGH);
 #else
   digitalWrite(NEOPIXEL_POWER, LOW);
diff --git a/src/provisioning/tinyusb/Wippersnapper_FS.cpp b/src/provisioning/tinyusb/Wippersnapper_FS.cpp
index 35ed0569d..ffb0c4412 100644
--- a/src/provisioning/tinyusb/Wippersnapper_FS.cpp
+++ b/src/provisioning/tinyusb/Wippersnapper_FS.cpp
@@ -12,7 +12,12 @@
  * BSD license, all text here must be included in any redistribution.
  *
  */
-#if defined(ARDUINO_MAGTAG29_ESP32S2) || defined(ARDUINO_METRO_ESP32S2) || defined(ARDUINO_FUNHOUSE_ESP32S2) || defined(ADAFRUIT_METRO_M4_AIRLIFT_LITE) || defined(ADAFRUIT_PYPORTAL) || defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2) || defined(ARDUINO_ADAFRUIT_QTPY_ESP32S2)
+#if defined(ARDUINO_MAGTAG29_ESP32S2) || defined(ARDUINO_METRO_ESP32S2) ||     \
+    defined(ARDUINO_FUNHOUSE_ESP32S2) ||                                       \
+    defined(ADAFRUIT_METRO_M4_AIRLIFT_LITE) || defined(ADAFRUIT_PYPORTAL) ||   \
+    defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2) ||                               \
+    defined(ARDUINO_ADAFRUIT_QTPY_ESP32S2) ||                                  \
+    defined(ADAFRUIT_FEATHER_ESP32S2_TFT)
 #include "Wippersnapper_FS.h"
 // On-board external flash (QSPI or SPI) macros should already
 // defined in your board variant if supported
@@ -277,7 +282,10 @@ void Wippersnapper_FS::createConfigFileSkel() {
   secretsFile.flush();
 // platform-dependent changes
 #if defined(ARDUINO_MAGTAG29_ESP32S2) || defined(ARDUINO_METRO_ESP32S2) ||     \
-    defined(ARDUINO_FUNHOUSE_ESP32S2) || defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2) || defined (ARDUINO_ADAFRUIT_QTPY_ESP32S2)
+    defined(ARDUINO_FUNHOUSE_ESP32S2) ||                                       \
+    defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2) ||                               \
+    defined(ARDUINO_ADAFRUIT_QTPY_ESP32S2) ||                                  \
+    defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2_TFT)
   secretsFile.print("HERE\",\n\t\"network_type_wifi_native\":{\n\t\t\"network_"
                     "ssid\":\"YOUR_WIFI_SSID_");
 #elif defined(ADAFRUIT_PYPORTAL) || defined(ADAFRUIT_METRO_M4_AIRLIFT_LITE)

From 80db3c86a6ea7349a4d60e913ee2cd0518763d39 Mon Sep 17 00:00:00 2001
From: brentru <brent@adafruit.com>
Date: Mon, 10 Jan 2022 16:28:37 -0500
Subject: [PATCH 2/5] link filesystem, add define for powering the AP2212
 regulator, delay within esp32-specific network

---
 src/components/i2c/WipperSnapper_I2C.cpp      | 10 +++++++---
 src/network_interfaces/Wippersnapper_ESP32.h  |  2 +-
 src/provisioning/tinyusb/Wippersnapper_FS.cpp |  2 +-
 3 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/components/i2c/WipperSnapper_I2C.cpp b/src/components/i2c/WipperSnapper_I2C.cpp
index faf1d2592..15b76a259 100644
--- a/src/components/i2c/WipperSnapper_I2C.cpp
+++ b/src/components/i2c/WipperSnapper_I2C.cpp
@@ -35,11 +35,15 @@ WipperSnapper_Component_I2C::WipperSnapper_Component_I2C(
   WS_DEBUG_PRINT("\tFrequency (Hz): ");
   WS_DEBUG_PRINTLN(msgInitRequest->i2c_frequency);
 
-// Invert Feather ESP32-S2 pin power for I2C
-#if defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2) ||                               \
-    defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2_TFT)
+#if defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2)
+  // Invert Feather ESP32-S2 pin power for I2C
   pinMode(PIN_I2C_POWER_INVERTED, OUTPUT);
   digitalWrite(PIN_I2C_POWER_INVERTED, LOW);
+#elif defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2_TFT)
+  // Power the AP2112 regulator
+  // TODO: Remove when fixed by latest BSP release
+  pinMode(TFT_I2C_POWER, OUTPUT);
+  digitalWrite(TFT_I2C_POWER, HIGH);
 #endif
 
   // Enable pullups on SCL, SDA
diff --git a/src/network_interfaces/Wippersnapper_ESP32.h b/src/network_interfaces/Wippersnapper_ESP32.h
index abfad44b1..511e735b6 100644
--- a/src/network_interfaces/Wippersnapper_ESP32.h
+++ b/src/network_interfaces/Wippersnapper_ESP32.h
@@ -216,8 +216,8 @@ class Wippersnapper_ESP32 : public Wippersnapper {
       _disconnect();
       delay(100);
       WiFi.begin(_ssid, _pass);
-      delay(100);
       _status = WS_NET_DISCONNECTED;
+      delay(5000);
     }
   }
 
diff --git a/src/provisioning/tinyusb/Wippersnapper_FS.cpp b/src/provisioning/tinyusb/Wippersnapper_FS.cpp
index ffb0c4412..649e94a35 100644
--- a/src/provisioning/tinyusb/Wippersnapper_FS.cpp
+++ b/src/provisioning/tinyusb/Wippersnapper_FS.cpp
@@ -17,7 +17,7 @@
     defined(ADAFRUIT_METRO_M4_AIRLIFT_LITE) || defined(ADAFRUIT_PYPORTAL) ||   \
     defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2) ||                               \
     defined(ARDUINO_ADAFRUIT_QTPY_ESP32S2) ||                                  \
-    defined(ADAFRUIT_FEATHER_ESP32S2_TFT)
+    defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2_TFT)
 #include "Wippersnapper_FS.h"
 // On-board external flash (QSPI or SPI) macros should already
 // defined in your board variant if supported

From a8b3a00baba05ed62ce7810408035617f899ef18 Mon Sep 17 00:00:00 2001
From: brentru <brent@adafruit.com>
Date: Mon, 10 Jan 2022 16:31:12 -0500
Subject: [PATCH 3/5] add release workflow

---
 .github/workflows/release.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index a621444fb..0a2f94ce7 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -36,7 +36,7 @@ jobs:
       matrix:
         arduino-platform: ["funhouse_tinyusb", "magtag_tinyusb",
                            "metro_s2_tinyusb", "feather_s2_tinyusb",
-                           "qtpy_esp32_s2"]
+                           "qtpy_esp32_s2", "feather_s2_tft_tinyusb"]
     steps:
     - uses: actions/setup-python@v1
       with:

From 606c7d56a9ef07b7f439a47668a07ed16ecc2e21 Mon Sep 17 00:00:00 2001
From: brentru <brent@adafruit.com>
Date: Mon, 10 Jan 2022 16:41:07 -0500
Subject: [PATCH 4/5] add skipfile for nofs example

---
 examples/Wippersnapper_NoFS/.feather_s2_tft_tinyusb.test.skip | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 examples/Wippersnapper_NoFS/.feather_s2_tft_tinyusb.test.skip

diff --git a/examples/Wippersnapper_NoFS/.feather_s2_tft_tinyusb.test.skip b/examples/Wippersnapper_NoFS/.feather_s2_tft_tinyusb.test.skip
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/examples/Wippersnapper_NoFS/.feather_s2_tft_tinyusb.test.skip
@@ -0,0 +1 @@
+

From 52ec163f1dfb2b429c01960f310e6b18cb9a268f Mon Sep 17 00:00:00 2001
From: brentru <brent@adafruit.com>
Date: Mon, 10 Jan 2022 16:42:10 -0500
Subject: [PATCH 5/5] add generate file for s2 tft

---
 examples/Wippersnapper_demo/.feather_s2_tft_tinyusb.generate | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 examples/Wippersnapper_demo/.feather_s2_tft_tinyusb.generate

diff --git a/examples/Wippersnapper_demo/.feather_s2_tft_tinyusb.generate b/examples/Wippersnapper_demo/.feather_s2_tft_tinyusb.generate
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/examples/Wippersnapper_demo/.feather_s2_tft_tinyusb.generate
@@ -0,0 +1 @@
+