From 5d0f151f4aab62cde4da30278ec79077b8456d4d Mon Sep 17 00:00:00 2001
From: Marius Greuel <greuelm@mgtek.com>
Date: Tue, 27 Dec 2022 13:00:57 +0100
Subject: [PATCH 1/6] Add ft2232h programmer for consistency with existing
 ft232h programmer

---
 src/avrdude.conf.in | 32 +++++++++++++++++---------------
 1 file changed, 17 insertions(+), 15 deletions(-)

diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in
index ccc5f271..cf4fc34f 100644
--- a/src/avrdude.conf.in
+++ b/src/avrdude.conf.in
@@ -788,7 +788,7 @@ programmer
 ;
 
 #------------------------------------------------------------
-# avrftdi
+# ft2232h
 #------------------------------------------------------------
 
 # this will interface with the chips on these programmers:
@@ -812,26 +812,28 @@ programmer
 # these FTDI ICs has been designed.
 
 programmer
-    id                     = "avrftdi";
-    desc                   = "FT2232D based generic programmer";
+    id                     = "ft2232h";
+    desc                   = "FT2232H based generic programmer";
     type                   = "avrftdi";
     prog_modes             = PM_TPI | PM_ISP;
     connection_type        = usb;
     usbvid                 = 0x0403;
     usbpid                 = 0x6010;
     usbdev                 = "A";
-#   ISP-signals - lower ADBUS-Nibble (default)
-    reset                  = 3;
-    sck                    = 0;
-    sdo                    = 1;
-    sdi                    = 2;
-#   LED SIGNALs - higher ADBUS-Nibble
-#   errled                 = 4;
-#   rdyled                 = 5;
-#   pgmled                 = 6;
-#   vfyled                 = 7;
-#   Buffer Signal - ACBUS - Nibble
-#   buff                   = 8;
+# ISP-signals - lower ADBUS-Nibble (default)
+    reset                  = 3; # AD3 (TMS)
+    sck                    = 0; # AD0 (TCK)
+    sdo                    = 1; # AD1 (TDI)
+    sdi                    = 2; # AD2 (TDO)
+;
+
+#------------------------------------------------------------
+# avrftdi
+#------------------------------------------------------------
+
+programmer parent "ft2232h"
+    id                     = "avrftdi";
+    desc                   = "FT2232D based generic programmer";
 ;
 
 #------------------------------------------------------------

From 252d6833d4c4c347516b0f0583ded7c94a20942f Mon Sep 17 00:00:00 2001
From: Marius Greuel <greuelm@mgtek.com>
Date: Tue, 27 Dec 2022 13:03:41 +0100
Subject: [PATCH 2/6] Add ft4232h programmer

---
 src/avrdude.conf.in | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in
index cf4fc34f..db6440de 100644
--- a/src/avrdude.conf.in
+++ b/src/avrdude.conf.in
@@ -869,18 +869,27 @@ programmer
 ;
 
 #------------------------------------------------------------
-# 4232h
+# ft4232h
 #------------------------------------------------------------
 
 #The FT4232H can be treated as FT2232H, but it has a different USB
 #device ID of 0x6011.
 
-programmer parent "avrftdi"
-    id                     = "4232h";
+programmer parent "ft2232h"
+    id                     = "ft4232h";
     desc                   = "FT4232H based generic programmer";
     usbpid                 = 0x6011;
 ;
 
+#------------------------------------------------------------
+# 4232h
+#------------------------------------------------------------
+
+programmer parent "ft4232h"
+    id                     = "4232h";
+    desc                   = "FT4232H based generic programmer";
+;
+
 #------------------------------------------------------------
 # jtagkey
 #------------------------------------------------------------

From 9412413fca5ea3f8198db6e955d8133f0314fb85 Mon Sep 17 00:00:00 2001
From: Marius Greuel <greuelm@mgtek.com>
Date: Tue, 27 Dec 2022 13:05:38 +0100
Subject: [PATCH 3/6] Make 2232hio programmer derive from ft2232h

---
 src/avrdude.conf.in | 20 +++-----------------
 1 file changed, 3 insertions(+), 17 deletions(-)

diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in
index db6440de..d8d1055a 100644
--- a/src/avrdude.conf.in
+++ b/src/avrdude.conf.in
@@ -843,25 +843,11 @@ programmer parent "ft2232h"
 # This is an implementation of the above with a buffer IC (74AC244) and
 # 4 LEDs directly attached, all active low.
 
-programmer
-    id                     = "2232HIO";
+programmer parent "ft2232h"
+    id                     = "2232hio";
     desc                   = "FT2232H based generic programmer";
-    type                   = "avrftdi";
-    prog_modes             = PM_TPI | PM_ISP;
-    connection_type        = usb;
-    usbvid                 = 0x0403;
-# Note: This PID is reserved for generic H devices and
-# should be programmed into the EEPROM
-#   usbpid                 = 0x8A48;
-    usbpid                 = 0x6010;
-    usbdev                 = "A";
     buff                   = ~4;
-#ISP-signals
-    reset                  = 3;
-    sck                    = 0;
-    sdo                    = 1;
-    sdi                    = 2;
-#LED SIGNALs
+# LED SIGNALs
     errled                 = ~11;
     rdyled                 = ~14;
     pgmled                 = ~13;

From aed9e1b7fa5eef63ce0d66a2703322fee44d88c0 Mon Sep 17 00:00:00 2001
From: Marius Greuel <greuelm@mgtek.com>
Date: Tue, 27 Dec 2022 13:09:00 +0100
Subject: [PATCH 4/6] Improve FTDI programmer documentation

---
 src/avrdude.conf.in | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in
index d8d1055a..d1f291a5 100644
--- a/src/avrdude.conf.in
+++ b/src/avrdude.conf.in
@@ -907,14 +907,14 @@ programmer
 
 programmer
     id                     = "ft232h";
-    desc                   = "FT232H in MPSSE mode";
+    desc                   = "FT232H based generic programmer";
     type                   = "avrftdi";
     prog_modes             = PM_TPI | PM_ISP;
     connection_type        = usb;
     usbvid                 = 0x0403;
     usbpid                 = 0x6014;
     usbdev                 = "A";
-#ISP-signals
+# ISP-signals
     reset                  = 3; # AD3 (TMS)
     sck                    = 0; # AD0 (TCK)
     sdo                    = 1; # AD1 (TDI)
@@ -1024,7 +1024,7 @@ programmer
     usbproduct             = "LM3S811 Evaluation Board";
 # Enable correct buffers
     buff                   = 7;
-#ISP-signals - lower ACBUS-Nibble (default)
+# ISP-signals - lower ACBUS-Nibble (default)
     reset                  = 3;
     sck                    = 0;
     sdo                    = 1;
@@ -1332,7 +1332,7 @@ programmer
 
 programmer
     id                     = "ft245r";
-    desc                   = "FT245R Synchronous BitBang";
+    desc                   = "FT245R based generic programmer";
     type                   = "ftdi_syncbb";
     prog_modes             = PM_TPI | PM_ISP;
     connection_type        = usb;
@@ -1348,7 +1348,7 @@ programmer
 
 programmer
     id                     = "ft232r";
-    desc                   = "FT232R Synchronous BitBang";
+    desc                   = "FT232R based generic programmer";
     type                   = "ftdi_syncbb";
     prog_modes             = PM_TPI | PM_ISP;
     connection_type        = usb;

From 805db5b13e345ccbaa853ff517130e6f2b3ac8ff Mon Sep 17 00:00:00 2001
From: Marius Greuel <greuelm@mgtek.com>
Date: Tue, 27 Dec 2022 13:17:27 +0100
Subject: [PATCH 5/6] Add tigard programmer

---
 src/avrdude.conf.in | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in
index d1f291a5..56ecc8ab 100644
--- a/src/avrdude.conf.in
+++ b/src/avrdude.conf.in
@@ -854,6 +854,24 @@ programmer parent "ft2232h"
     vfyled                 = ~12;
 ;
 
+#------------------------------------------------------------
+# tigard
+#------------------------------------------------------------
+
+# Tigard - FT2232H based multi-protocol tool for hardware hacking.
+# https://github.com/tigard-tools/tigard
+
+programmer parent "ft2232h"
+    id                     = "tigard";
+    desc                   = "Tigard interface board";
+    usbdev                 = "B";
+# ISP-signals
+    reset                  = 5; # BD5 (GPIOL1)
+    sck                    = 0; # BD0 (TCK)
+    sdo                    = 1; # BD1 (TDI)
+    sdi                    = 2; # BD2 (TDO)
+;
+
 #------------------------------------------------------------
 # ft4232h
 #------------------------------------------------------------

From f220656e0b3afd69fe72df206bb8a25de40d3021 Mon Sep 17 00:00:00 2001
From: Marius Greuel <greuelm@mgtek.com>
Date: Tue, 27 Dec 2022 13:35:52 +0100
Subject: [PATCH 6/6] CMake: For MSVC builds, use latest libftdi for Windows

---
 CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1269650d..22043cba 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -247,7 +247,7 @@ if(USE_EXTERNAL)
 
     FetchContent_Declare(libftdi
         GIT_REPOSITORY https://github.com/avrdudes/libftdi.git
-        GIT_TAG f3a54da710002a7d25a32a69e667a69ef84cc120
+        GIT_TAG f9fe6e96b97c3a08efd081632c1859cb83aa14e3
         )
 
     message(STATUS "Fetching external libraries, please wait...")