diff -urN linux-3.16.72/arch/arm/configs/tk71_defconfig linux-3.16.72-tk71/arch/arm/configs/tk71_defconfig
--- linux-3.16.72/arch/arm/configs/tk71_defconfig	1970-01-01 01:00:00.000000000 +0100
+++ linux-3.16.72-tk71/arch/arm/configs/tk71_defconfig	2019-08-14 20:34:33.985289797 +0200
@@ -0,0 +1,180 @@
+# CONFIG_ARM_PATCH_PHYS_VIRT is not set
+CONFIG_PHYS_OFFSET=0x00
+CONFIG_EXPERIMENTAL=y
+CONFIG_DEFAULT_HOSTNAME="tk71"
+CONFIG_SYSVIPC=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=15
+CONFIG_NAMESPACES=y
+CONFIG_EMBEDDED=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+CONFIG_ARCH_KIRKWOOD=y
+CONFIG_MACH_TK71=y
+# CONFIG_CPU_FEROCEON_OLD_ID is not set
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_PREEMPT_VOLUNTARY=y
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+# CONFIG_UACCESS_WITH_MEMCPY is not set
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CPU_IDLE=y
+CONFIG_PM_RUNTIME=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_IPV6 is not set
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_DEVTMPFS=y
+CONFIG_MTD=y
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# CONFIG_MTD_CFI_I2 is not set
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_ORION=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_SR_VENDOR=y
+CONFIG_CHR_DEV_SG=y
+# CONFIG_SCSI_LOWLEVEL is not set
+CONFIG_ATA=y
+CONFIG_SATA_MV=y
+CONFIG_NETDEVICES=y
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_NET_VENDOR_ADAPTEC is not set
+# CONFIG_NET_VENDOR_ALTEON is not set
+# CONFIG_NET_VENDOR_AMD is not set
+# CONFIG_NET_VENDOR_ATHEROS is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_VENDOR_BROCADE is not set
+# CONFIG_NET_VENDOR_CHELSIO is not set
+# CONFIG_NET_VENDOR_CISCO is not set
+# CONFIG_NET_VENDOR_DEC is not set
+# CONFIG_NET_VENDOR_DLINK is not set
+# CONFIG_NET_VENDOR_EMULEX is not set
+# CONFIG_NET_VENDOR_EXAR is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+CONFIG_MV643XX_ETH=y
+# CONFIG_NET_VENDOR_MELLANOX is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MYRI is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_NVIDIA is not set
+# CONFIG_NET_VENDOR_OKI is not set
+# CONFIG_NET_VENDOR_QLOGIC is not set
+# CONFIG_NET_VENDOR_REALTEK is not set
+# CONFIG_NET_VENDOR_RDC is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SILAN is not set
+# CONFIG_NET_VENDOR_SIS is not set
+# CONFIG_NET_VENDOR_SMSC is not set
+# CONFIG_NET_VENDOR_STMICRO is not set
+# CONFIG_NET_VENDOR_SUN is not set
+# CONFIG_NET_VENDOR_TEHUTI is not set
+# CONFIG_NET_VENDOR_TI is not set
+# CONFIG_NET_VENDOR_VIA is not set
+CONFIG_MARVELL_PHY=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_SERIO is not set
+CONFIG_LEGACY_PTY_COUNT=16
+# CONFIG_DEVKMEM is not set
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+CONFIG_HW_RANDOM=y
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_MV64XXX=y
+CONFIG_GPIO_SYSFS=y
+# CONFIG_HWMON is not set
+CONFIG_WATCHDOG=y
+CONFIG_ORION_WATCHDOG=y
+# CONFIG_HID_SUPPORT is not set
+CONFIG_USB=y
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_LIBUSUAL=y
+CONFIG_USB_SISUSBVGA=m
+CONFIG_USB_SISUSBVGA_CON=y
+CONFIG_MMC=y
+CONFIG_MMC_MVSDIO=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_MV=y
+CONFIG_DMADEVICES=y
+CONFIG_MV_XOR=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
+# CONFIG_EXT3_FS_XATTR is not set
+CONFIG_FSCACHE=y
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=850
+CONFIG_TMPFS=y
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_FS_XATTR=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_LZO=y
+CONFIG_JFFS2_CMODE_FAVOURLZO=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_ROOT_NFS=y
+CONFIG_NFSD=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_850=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_PRINTK_TIME=y
+# CONFIG_ENABLE_WARN_DEPRECATED is not set
+# CONFIG_ENABLE_MUST_CHECK is not set
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_FTRACE is not set
+# CONFIG_ARM_UNWIND is not set
+CONFIG_DEBUG_LL=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_SHA1=y
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_DEV_MV_CESA=y
diff -urN linux-3.16.72/arch/arm/mach-kirkwood/Kconfig linux-3.16.72-tk71/arch/arm/mach-kirkwood/Kconfig
--- linux-3.16.72/arch/arm/mach-kirkwood/Kconfig	2019-08-13 13:39:34.000000000 +0200
+++ linux-3.16.72-tk71/arch/arm/mach-kirkwood/Kconfig	2019-08-14 20:38:03.145904449 +0200
@@ -88,6 +88,13 @@
 	  QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo
 	  NAS devices.
 
+config MACH_TK71
+	bool "TK71 88F6281 based Q7 form factor board"
+	select KIRKWOOD_LEGACY
+	help
+	  Say 'Y' here if you want your kernel to support the
+	  TK71 88F6281 based Q7 form factor board.
+
 comment "Device tree entries"
 
 config ARCH_KIRKWOOD_DT
diff -urN linux-3.16.72/arch/arm/mach-kirkwood/Makefile linux-3.16.72-tk71/arch/arm/mach-kirkwood/Makefile
--- linux-3.16.72/arch/arm/mach-kirkwood/Makefile	2019-08-13 13:39:34.000000000 +0200
+++ linux-3.16.72-tk71/arch/arm/mach-kirkwood/Makefile	2019-08-14 20:39:05.306087280 +0200
@@ -10,5 +10,6 @@
 obj-$(CONFIG_MACH_T5325)		+= t5325-setup.o
 obj-$(CONFIG_MACH_TS219)		+= ts219-setup.o tsx1x-common.o
 obj-$(CONFIG_MACH_TS41X)		+= ts41x-setup.o tsx1x-common.o
+obj-$(CONFIG_MACH_TK71)			+= tk71-setup.o
 
 obj-$(CONFIG_ARCH_KIRKWOOD_DT)		+= board-dt.o
diff -urN linux-3.16.72/arch/arm/mach-kirkwood/tk71-setup.c linux-3.16.72-tk71/arch/arm/mach-kirkwood/tk71-setup.c
--- linux-3.16.72/arch/arm/mach-kirkwood/tk71-setup.c	1970-01-01 01:00:00.000000000 +0100
+++ linux-3.16.72-tk71/arch/arm/mach-kirkwood/tk71-setup.c	2019-08-15 12:32:05.351086578 +0200
@@ -0,0 +1,152 @@
+/*
+ * arch/arm/mach-kirkwood/tk71-setup.c
+ * based on
+ * arch/arm/mach-kirkwood/rd88f6281-setup.c
+ *
+ * TK71 Kirkwood based Q7 formfactor board
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/irq.h>
+#include <linux/mtd/nand.h>
+#include <linux/mtd/partitions.h>
+#include <linux/ata_platform.h>
+#include <linux/mv643xx_eth.h>
+#include <linux/gpio.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <mach/kirkwood.h>
+#include <linux/platform_data/mmc-mvsdio.h>
+#include "common.h"
+#include "mpp.h"
+
+static struct mtd_partition tk71_nand_parts[] = {
+	{
+		.name = "u-boot",
+		.offset = 0,
+		.size = 0x80000
+	}, {
+		.name = "u-boot-env",
+		.offset = MTDPART_OFS_NXTBLK,
+		.size = 0x80000
+	}, {
+		.name = "kernel",
+		.offset = MTDPART_OFS_NXTBLK,
+		.size = 0x300000
+	}, {
+		.name = "root",
+		.offset = MTDPART_OFS_NXTBLK,
+		.size = MTDPART_SIZ_FULL
+	},
+};
+
+static struct mv643xx_eth_platform_data tk71_ge00_data = {
+	.phy_addr	= MV643XX_ETH_PHY_ADDR(8),
+	/* in case a hardcoded MAC address is needed uncomment next line */
+	/* .mac_addr	= {0x00, 0x0c, 0xc6, 0x76, 0x76, 0x2b}, */
+};
+
+static struct mv643xx_eth_platform_data tk71_ge01_data = {
+	.phy_addr	= MV643XX_ETH_PHY_ADDR(28),
+	/* in case a hardcoded MAC address is needed uncomment next line */
+	/* .mac_addr	= {0x00, 0x0c, 0xc6, 0x76, 0x76, 0x2c}, */
+};
+
+static struct mv_sata_platform_data tk71_sata_data = {
+	.n_ports	= 2,
+};
+
+static struct mvsdio_platform_data tk71_mvsdio_data = {
+	.gpio_card_detect = 29,
+};
+
+static unsigned int tk71_mpp_config[] __initdata = {
+#if 0
+	MPP0_SPI_SCn,		/* SPI - currently unused */
+	MPP1_SPI_MOSI,
+	MPP2_SPI_SCK,
+	MPP3_SPI_MISO,
+#endif
+	MPP7_PEX_RST_OUTn,	/* PCIe #reset */
+	MPP8_TW0_SDA,		/* I2C */
+	MPP9_TW0_SCK,		/* I2C */
+	MPP20_GE1_TXD0,		/* second GigE */
+	MPP21_GE1_TXD1,
+	MPP22_GE1_TXD2,
+	MPP23_GE1_TXD3,
+	MPP24_GE1_RXD0,
+	MPP25_GE1_RXD1,
+	MPP26_GE1_RXD2,
+	MPP27_GE1_RXD3,
+	MPP28_GPIO,		/* PHY2 RESET */
+	MPP29_GPIO,		/* SDIO_CD# */
+	MPP30_GE1_RXCTL,
+	MPP31_GE1_RXCLK,
+	MPP32_GE1_TCLKOUT,
+	MPP33_GE1_TXCTL,
+	MPP34_GPIO,		/* SDIO_PWR# */
+	0
+};
+
+static void __init tk71_init(void)
+{
+	/*
+	 * Basic setup. Needs to be called early.
+	 */
+	kirkwood_init();
+
+	kirkwood_mpp_conf(tk71_mpp_config);
+
+	kirkwood_uart0_init();
+
+	kirkwood_nand_init(ARRAY_AND_SIZE(tk71_nand_parts), 25);
+
+	/* kirkwood_spi_init(); */ /* if you want to use SPI, uncomment this and MPP setup above*/
+
+	kirkwood_i2c_init();
+
+	/* eth0 */
+	kirkwood_ge00_init(&tk71_ge00_data);
+
+	/* eth1 */
+	if (gpio_request(28, "PHY2 reset") != 0 ||
+		gpio_direction_input(28) != 0) /* high-z */
+		pr_err("can't deassert GPIO 28 (PHY2 reset)\n");
+	else
+		kirkwood_ge01_init(&tk71_ge01_data);
+
+	kirkwood_sata_init(&tk71_sata_data);
+
+	kirkwood_ehci_init();
+
+	if (gpio_request(34, "SDIO Power Enable") != 0 ||
+		gpio_direction_output(34, 0) != 0) /* low active */
+		pr_err("can't set up GPIO 34 (SDIO Power Enable)\n");
+	kirkwood_sdio_init(&tk71_mvsdio_data);
+}
+
+static int __init tk71_pci_init(void)
+{
+	if (machine_is_tk71())
+		kirkwood_pcie_init(KW_PCIE0);
+
+	return 0;
+}
+subsys_initcall(tk71_pci_init);
+
+MACHINE_START(TK71, "TK71 Kirkwood based Q7 formfactor board")
+	/* Maintainer: Nicole Faerber <nicole.faerber@id3p.com> */
+	.atag_offset	= 0x100,
+	.init_machine	= tk71_init,
+	.map_io		= kirkwood_map_io,
+	.init_early	= kirkwood_init_early,
+	.init_irq	= kirkwood_init_irq,
+	.init_time      = kirkwood_timer_init,
+	.restart        = kirkwood_restart,
+MACHINE_END
diff -urN linux-3.16.72/arch/arm/tools/mach-types linux-3.16.72-tk71/arch/arm/tools/mach-types
--- linux-3.16.72/arch/arm/tools/mach-types	2019-08-13 13:39:34.000000000 +0200
+++ linux-3.16.72-tk71/arch/arm/tools/mach-types	2019-08-14 20:34:33.985289797 +0200
@@ -428,6 +428,7 @@
 flint			MACH_FLINT		FLINT			2383
 tavorevb3		MACH_TAVOREVB3		TAVOREVB3		2384
 touchbook		MACH_TOUCHBOOK		TOUCHBOOK		2393
+tk71			MACH_TK71		TK71			2399
 raumfeld_rc		MACH_RAUMFELD_RC	RAUMFELD_RC		2413
 raumfeld_connector	MACH_RAUMFELD_CONNECTOR	RAUMFELD_CONNECTOR	2414
 raumfeld_speaker	MACH_RAUMFELD_SPEAKER	RAUMFELD_SPEAKER	2415
