diff --git a/Makefile b/Makefile
index f95ba8d..2a54c73 100644
--- a/Makefile
+++ b/Makefile
@@ -49,7 +49,8 @@
 	sst49lfxxxc.o sst_fwhub.o layout.o cbtable.o flashchips.o physmap.o \
 	flashrom.o w39v080fa.o sharplhf00l04.o w29ee011.o spi.o it87spi.o \
 	ichspi.o w39v040c.o sb600spi.o wbsio_spi.o m29f002.o internal.o \
-	dummyflasher.o pcidev.o nic3com.o satasii.o ft2232_spi.o print.o
+	dummyflasher.o pcidev.o nic3com.o satasii.o ft2232_spi.o serprog.o \
+	print.o
 
 all: pciutils features dep $(PROGRAM)
 
diff --git a/flash.h b/flash.h
index 5abda95..74a9e4b 100644
--- a/flash.h
+++ b/flash.h
@@ -87,6 +87,7 @@
 #define PROGRAMMER_SATASII	0x03
 #define PROGRAMMER_IT87SPI	0x04
 #define PROGRAMMER_FT2232SPI	0x05
+#define PROGRAMMER_SERPROG	0x06
 
 struct programmer_entry {
 	const char *vendor;
@@ -585,4 +586,12 @@
 int erase_stm50flw0x0x(struct flashchip *flash);
 int write_stm50flw0x0x(struct flashchip *flash, uint8_t *buf);
 
+/* serprog.c */
+extern char* serprog_param;
+int serprog_init(void);
+int serprog_shutdown(void);
+void serprog_chip_writeb(uint8_t val, chipaddr addr);
+uint8_t serprog_chip_readb(const chipaddr addr);
+void serprog_chip_readn(uint8_t *buf, const chipaddr addr, size_t len);
+void serprog_delay(int delay);
 #endif				/* !__FLASH_H__ */
diff --git a/flashrom.c b/flashrom.c
index b3f9b03..914ee4b 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -130,6 +130,21 @@
 		.chip_writen		= fallback_chip_writen,
 		.delay			= internal_delay,
 	},
+	{
+		.init			= serprog_init,
+		.shutdown		= serprog_shutdown,
+		.map_flash_region	= fallback_map,
+		.unmap_flash_region	= fallback_unmap,
+		.chip_readb		= serprog_chip_readb,
+		.chip_readw		= fallback_chip_readw,
+		.chip_readl		= fallback_chip_readl,
+		.chip_readn		= serprog_chip_readn,
+		.chip_writeb		= serprog_chip_writeb,
+		.chip_writew		= fallback_chip_writew,
+		.chip_writel		= fallback_chip_writel,
+		.chip_writen		= fallback_chip_writen,
+		.delay			= serprog_delay,
+	},
 
 	{},
 };
@@ -500,7 +515,7 @@
 	     "   -z | --list-supported-wiki:       print supported devices in wiki syntax\n"
 	     "   -p | --programmer <name>:         specify the programmer device\n"
 	     "                                     (internal, dummy, nic3com, satasii,\n"
-	     "                                     it87spi, ft2232spi)\n"
+	     "                                     it87spi, ft2232spi, serprog)\n"
 	     "   -h | --help:                      print this help text\n"
 	     "   -R | --version:                   print the version (release)\n"
 	     "\nYou can specify one of -E, -r, -w, -v or no operation. "
@@ -653,6 +668,10 @@
 				programmer = PROGRAMMER_IT87SPI;
 			} else if (strncmp(optarg, "ft2232spi", 9) == 0) {
 				programmer = PROGRAMMER_FT2232SPI;
+ 			} else if (strncmp(optarg, "serprog", 7) == 0) {
+ 				programmer = PROGRAMMER_SERPROG;
+ 				if (optarg[7] == '=')
+ 					serprog_param = strdup(optarg + 8);
 			} else {
 				printf("Error: Unknown programmer.\n");
 				exit(1);
diff --git a/serprog.c b/serprog.c
new file mode 100644
index 0000000..3a105c8
--- /dev/null
+++ b/serprog.c
@@ -0,0 +1,80 @@
+/*
+ * This file is part of the flashrom project.
+ *
+ * Copyright (C) 2009 Urja Rannikko <urjaman@gmail.com>
+ * Copyright (C) 2009 Carl-Daniel Hailfinger
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <netdb.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <inttypes.h>
+#include <termios.h>
+#include "flash.h"
+
+char *serprog_param = NULL;
+
+#define SERPROG_SUPPORT 0
+#if SERPROG_SUPPORT == 1
+#else
+int serprog_init(void)
+{
+	fprintf(stderr, "Serial programmer support was not compiled in\n");
+	exit(1);
+}
+
+int serprog_shutdown(void)
+{
+	fprintf(stderr, "Serial programmer support was not compiled in\n");
+	exit(1);
+}
+
+void serprog_chip_writeb(uint8_t val, chipaddr addr)
+{
+	fprintf(stderr, "Serial programmer support was not compiled in\n");
+	exit(1);
+}
+
+uint8_t serprog_chip_readb(const chipaddr addr)
+{
+	fprintf(stderr, "Serial programmer support was not compiled in\n");
+	exit(1);
+}
+
+void serprog_chip_readn(uint8_t *buf, const chipaddr addr, size_t len)
+{
+	fprintf(stderr, "Serial programmer support was not compiled in\n");
+	exit(1);
+}
+
+void serprog_delay(int delay)
+{
+	fprintf(stderr, "Serial programmer support was not compiled in\n");
+	exit(1);
+}
+#endif
