diff --git a/ChangeLog b/ChangeLog
index 277e1682..2c00d507 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2021-11-27  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
+
+	Submitted by David Mosberger-Tang:
+	patch #8923: Enable TPI for linuxgpio
+	* linuxgpio.c (linuxgpio_initpgm): add cmd_tpi entry
+
 2021-11-27  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
 
 	Submitted by: Milan Kupcevic <milan@debian.org>
diff --git a/NEWS b/NEWS
index 222e3fda..cce22bfb 100644
--- a/NEWS
+++ b/NEWS
@@ -15,6 +15,7 @@ Current:
     - UPDI support added (AVR8X family)
     - TPI support for USBtinyISP
     - TPI support for ft245r
+    - TPI support for linuxgpio
     - AVR Doper uses libhidapi rather than raw libusb (patch #9033)
     - -P net:host:port can use IPv6 now (Posix systems only)
     - New configure option: -disable-libusb_1_0
@@ -131,6 +132,7 @@ Current:
     (no-id): Use -B <bitclock> rather than -b <baudrate> for linuxspi driver
     patch #9304: [Bug #48767] Implemented WinSock variation of "ser_drain(...)" functionality
     patch #8996: Remove lock byte read mask (bug#21954, bug#46759)
+    patch #8923: Enable TPI for linuxgpio
 
   * Internals:
     - New avrdude.conf keyword "family_id", used to verify SIB attributes
diff --git a/linuxgpio.c b/linuxgpio.c
index b6163117..86fefd76 100644
--- a/linuxgpio.c
+++ b/linuxgpio.c
@@ -330,6 +330,7 @@ void linuxgpio_initpgm(PROGRAMMER *pgm)
   pgm->program_enable = bitbang_program_enable;
   pgm->chip_erase     = bitbang_chip_erase;
   pgm->cmd            = bitbang_cmd;
+  pgm->cmd_tpi        = bitbang_cmd_tpi;
   pgm->open           = linuxgpio_open;
   pgm->close          = linuxgpio_close;
   pgm->setpin         = linuxgpio_setpin;