diff --git a/core/linux-armv7/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch b/core/linux-armv7/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch
index 2877ee4b3..62083ea28 100644
--- a/core/linux-armv7/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch
+++ b/core/linux-armv7/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch
@@ -1,7 +1,7 @@
-From a2d76eb657d4044818cadd30cd9878215d77cd96 Mon Sep 17 00:00:00 2001
+From 715001b5f5917bddfde2d802fabfb9a64dab0368 Mon Sep 17 00:00:00 2001
 From: Willy Tarreau <w@xxxxxx>
 Date: Sun, 2 Dec 2012 19:59:28 +0100
-Subject: [PATCH 1/8] ARM: atags: add support for Marvell's u-boot
+Subject: [PATCH 1/9] ARM: atags: add support for Marvell's u-boot
 
 Marvell uses a specific atag in its u-boot which includes among other
 information the MAC addresses for up to 4 network interfaces.
@@ -47,5 +47,5 @@ index 6b335a9ff8c8..614150b53643 100644
  };
  
 -- 
-2.20.1
+2.22.0
 
diff --git a/core/linux-armv7/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch b/core/linux-armv7/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch
index 0a0ac6316..b270b7fc0 100644
--- a/core/linux-armv7/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch
+++ b/core/linux-armv7/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch
@@ -1,7 +1,7 @@
-From 497fb4e86afb7ccf180a914aeadf63351aabd62f Mon Sep 17 00:00:00 2001
+From 45ce3dfa97865b1ab05b5074b0712f24daeee36c Mon Sep 17 00:00:00 2001
 From: Willy Tarreau <w@xxxxxx>
 Date: Sun, 2 Dec 2012 19:56:58 +0100
-Subject: [PATCH 2/8] ARM: atags/fdt: retrieve MAC addresses from Marvell boot
+Subject: [PATCH 2/9] ARM: atags/fdt: retrieve MAC addresses from Marvell boot
  loader
 
 The atags are parsed and if a Marvell atag is found, up to 4 MAC
@@ -43,5 +43,5 @@ index 330cd3c2eae5..82f3802ff695 100644
  	}
  
 -- 
-2.20.1
+2.22.0
 
diff --git a/core/linux-armv7/0003-SMILE-Plug-device-tree-file.patch b/core/linux-armv7/0003-SMILE-Plug-device-tree-file.patch
index 4955b1267..88d8878dc 100644
--- a/core/linux-armv7/0003-SMILE-Plug-device-tree-file.patch
+++ b/core/linux-armv7/0003-SMILE-Plug-device-tree-file.patch
@@ -1,7 +1,7 @@
-From bdc405844ccfe7c82cd1ec5b1d014415e75b19c7 Mon Sep 17 00:00:00 2001
+From 39b7c00e3cb226a9356937425a29da17c2981f8d Mon Sep 17 00:00:00 2001
 From: Kevin Mihelich <kevin@archlinuxarm.org>
 Date: Fri, 5 Sep 2014 15:41:19 -0600
-Subject: [PATCH 3/8] SMILE Plug device tree file
+Subject: [PATCH 3/9] SMILE Plug device tree file
 
 This adds a dts file for the SMILE Plug, which only differs from the Mirabox
 dts with the LED definitions.
@@ -14,10 +14,10 @@ Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
  create mode 100644 arch/arm/boot/dts/armada-370-smileplug.dts
 
 diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
-index f4f5aeaf3298..a690ff95ff93 100644
+index dab2914fa293..acc6197cdc41 100644
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -1188,6 +1188,7 @@ dtb-$(CONFIG_MACH_ARMADA_370) += \
+@@ -1202,6 +1202,7 @@ dtb-$(CONFIG_MACH_ARMADA_370) += \
  	armada-370-db.dtb \
  	armada-370-dlink-dns327l.dtb \
  	armada-370-mirabox.dtb \
@@ -205,5 +205,5 @@ index 000000000000..d01308ab848b
 +	};
 +};
 -- 
-2.20.1
+2.22.0
 
diff --git a/core/linux-armv7/0004-fix-mvsdio-eMMC-timing.patch b/core/linux-armv7/0004-fix-mvsdio-eMMC-timing.patch
index 413255483..50b463f13 100644
--- a/core/linux-armv7/0004-fix-mvsdio-eMMC-timing.patch
+++ b/core/linux-armv7/0004-fix-mvsdio-eMMC-timing.patch
@@ -1,7 +1,7 @@
-From 56fb0137e1c8281ef338ad78e9b90ecedc175852 Mon Sep 17 00:00:00 2001
+From c0a8c786ab5cd65319a330d264d1cf5485b77939 Mon Sep 17 00:00:00 2001
 From: Kevin Mihelich <kevin@archlinuxarm.org>
 Date: Fri, 5 Sep 2014 15:43:56 -0600
-Subject: [PATCH 4/8] fix mvsdio eMMC timing
+Subject: [PATCH 4/9] fix mvsdio eMMC timing
 
 These changes from Globalscale change the MMC timing to allow the eMMC versions
 of the Mirabox and SMILE Plug to work.
@@ -12,10 +12,10 @@ Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 diff --git a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c
-index e22bbff89c8d..6b30c850ce07 100644
+index 74a0a7fbbf7f..92eadb116762 100644
 --- a/drivers/mmc/host/mvsdio.c
 +++ b/drivers/mmc/host/mvsdio.c
-@@ -93,7 +93,7 @@ static int mvsd_setup_data(struct mvsd_host *host, struct mmc_data *data)
+@@ -90,7 +90,7 @@ static int mvsd_setup_data(struct mvsd_host *host, struct mmc_data *data)
  	tmout_index = fls(tmout - 1) - 12;
  	if (tmout_index < 0)
  		tmout_index = 0;
@@ -24,7 +24,7 @@ index e22bbff89c8d..6b30c850ce07 100644
  		tmout_index = MVSD_HOST_CTRL_TMOUT_MAX;
  
  	dev_dbg(host->dev, "data %s at 0x%08x: blocks=%d blksz=%d tmout=%u (%d)\n",
-@@ -616,6 +616,8 @@ static void mvsd_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
+@@ -613,6 +613,8 @@ static void mvsd_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
  		u32 m = DIV_ROUND_UP(host->base_clock, ios->clock) - 1;
  		if (m > MVSD_BASE_DIV_MAX)
  			m = MVSD_BASE_DIV_MAX;
@@ -34,5 +34,5 @@ index e22bbff89c8d..6b30c850ce07 100644
  		host->clock = ios->clock;
  		host->ns_per_clk = 1000000000 / (host->base_clock / (m+1));
 -- 
-2.20.1
+2.22.0
 
diff --git a/core/linux-armv7/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch b/core/linux-armv7/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch
index 29b694340..92e3b3e00 100644
--- a/core/linux-armv7/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch
+++ b/core/linux-armv7/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch
@@ -1,17 +1,17 @@
-From 44feb9ee18a0a63523a1ac84a2122a91ab827f29 Mon Sep 17 00:00:00 2001
+From a71f7ca149aa36525082c55ba3d353e5638b056f Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix@gmail.com>
 Date: Tue, 18 Feb 2014 01:43:50 -0300
-Subject: [PATCH 5/8] net/smsc95xx: Allow mac address to be set as a parameter
+Subject: [PATCH 5/9] net/smsc95xx: Allow mac address to be set as a parameter
 
 ---
  drivers/net/usb/smsc95xx.c | 56 ++++++++++++++++++++++++++++++++++++++
  1 file changed, 56 insertions(+)
 
 diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
-index e3d08626828e..2eaae00b4033 100644
+index 355be77f4241..c94a7193e0b9 100644
 --- a/drivers/net/usb/smsc95xx.c
 +++ b/drivers/net/usb/smsc95xx.c
-@@ -60,6 +60,7 @@
+@@ -48,6 +48,7 @@
  #define SUSPEND_SUSPEND3		(0x08)
  #define SUSPEND_ALLMODES		(SUSPEND_SUSPEND0 | SUSPEND_SUSPEND1 | \
  					 SUSPEND_SUSPEND2 | SUSPEND_SUSPEND3)
@@ -19,7 +19,7 @@ index e3d08626828e..2eaae00b4033 100644
  
  #define CARRIER_CHECK_DELAY (2 * HZ)
  
-@@ -82,6 +83,10 @@ static bool turbo_mode = true;
+@@ -70,6 +71,10 @@ static bool turbo_mode = true;
  module_param(turbo_mode, bool, 0644);
  MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
  
@@ -30,7 +30,7 @@ index e3d08626828e..2eaae00b4033 100644
  static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
  					    u32 *data, int in_pm)
  {
-@@ -911,8 +916,59 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
+@@ -899,8 +904,59 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
  	return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
  }
  
@@ -91,5 +91,5 @@ index e3d08626828e..2eaae00b4033 100644
  
  	/* maybe the boot loader passed the MAC address in devicetree */
 -- 
-2.20.1
+2.22.0
 
diff --git a/core/linux-armv7/0006-set-default-cubietruck-led-triggers.patch b/core/linux-armv7/0006-set-default-cubietruck-led-triggers.patch
index 1ec7c6597..000edeeed 100644
--- a/core/linux-armv7/0006-set-default-cubietruck-led-triggers.patch
+++ b/core/linux-armv7/0006-set-default-cubietruck-led-triggers.patch
@@ -1,7 +1,7 @@
-From 2a1d4185dc6412fe95a3d01edfefc9526a732c6d Mon Sep 17 00:00:00 2001
+From 67004e3f653d695e342b2aafd3405ef40d70dc73 Mon Sep 17 00:00:00 2001
 From: Kevin Mihelich <kevin@archlinuxarm.org>
 Date: Sat, 14 Feb 2015 12:32:27 +0100
-Subject: [PATCH 6/8] set default cubietruck led triggers
+Subject: [PATCH 6/9] set default cubietruck led triggers
 
 Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
 ---
@@ -29,5 +29,5 @@ index 99f531b8d2a7..534392a72621 100644
  	};
  
 -- 
-2.20.1
+2.22.0
 
diff --git a/core/linux-armv7/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch b/core/linux-armv7/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch
index 1617bc8fd..f7d083e5a 100644
--- a/core/linux-armv7/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch
+++ b/core/linux-armv7/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch
@@ -1,7 +1,7 @@
-From f53116c63eb823ec4b217dbe9d4741244e57fd43 Mon Sep 17 00:00:00 2001
+From ba9005d557f10c61701551a084ca05b8ac720809 Mon Sep 17 00:00:00 2001
 From: Kevin Mihelich <kevin@archlinuxarm.org>
 Date: Thu, 11 Aug 2016 00:42:37 -0600
-Subject: [PATCH 7/8] exynos4412-odroid: set higher minimum buck2 regulator
+Subject: [PATCH 7/9] exynos4412-odroid: set higher minimum buck2 regulator
  voltage
 
 Set a higher minimum voltage to help reboot issue.
@@ -26,5 +26,5 @@ index 08d3a0a7b4eb..cf3e2ab900dd 100644
  				regulator-always-on;
  				regulator-boot-on;
 -- 
-2.20.1
+2.22.0
 
diff --git a/core/linux-armv7/0008-ARM-dove-enable-ethernet-on-D3Plug.patch b/core/linux-armv7/0008-ARM-dove-enable-ethernet-on-D3Plug.patch
index 8351585c9..120274b07 100644
--- a/core/linux-armv7/0008-ARM-dove-enable-ethernet-on-D3Plug.patch
+++ b/core/linux-armv7/0008-ARM-dove-enable-ethernet-on-D3Plug.patch
@@ -1,7 +1,7 @@
-From 96ae2f7a3ca863db0820373ab57ebf06c1133954 Mon Sep 17 00:00:00 2001
+From fbb489e948062ea2e4c666f1d87ff5f81b8caf26 Mon Sep 17 00:00:00 2001
 From: Kevin Mihelich <kevin@archlinuxarm.org>
 Date: Sun, 7 May 2017 13:32:25 -0600
-Subject: [PATCH 8/8] ARM: dove: enable ethernet on D3Plug
+Subject: [PATCH 8/9] ARM: dove: enable ethernet on D3Plug
 
 Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
 ---
@@ -27,5 +27,5 @@ index 826026c28f90..a4c9963e1261 100644
  /* Samsung M8G2F eMMC */
  &sdio0 {
 -- 
-2.20.1
+2.22.0
 
diff --git a/core/linux-armv7/0009-USB-Armory-MkII-support.patch b/core/linux-armv7/0009-USB-Armory-MkII-support.patch
new file mode 100644
index 000000000..a30723472
--- /dev/null
+++ b/core/linux-armv7/0009-USB-Armory-MkII-support.patch
@@ -0,0 +1,559 @@
+From fd2185ebe25bb1d2a846013d62e4c621ac6a3210 Mon Sep 17 00:00:00 2001
+From: Kevin Mihelich <kevin@archlinuxarm.org>
+Date: Sun, 11 Aug 2019 12:34:17 -0600
+Subject: [PATCH 9/9] USB Armory MkII support
+
+---
+ arch/arm/boot/dts/Makefile              |   2 +
+ arch/arm/boot/dts/imx6ul-usbarmory.dts  | 257 +++++++++++++++++++++++
+ arch/arm/boot/dts/imx6ull-usbarmory.dts | 258 ++++++++++++++++++++++++
+ 3 files changed, 517 insertions(+)
+ create mode 100644 arch/arm/boot/dts/imx6ul-usbarmory.dts
+ create mode 100644 arch/arm/boot/dts/imx6ull-usbarmory.dts
+
+diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
+index acc6197cdc41..1a36a8de9ef2 100644
+--- a/arch/arm/boot/dts/Makefile
++++ b/arch/arm/boot/dts/Makefile
+@@ -577,9 +577,11 @@ dtb-$(CONFIG_SOC_IMX6UL) += \
+ 	imx6ul-tx6ul-0010.dtb \
+ 	imx6ul-tx6ul-0011.dtb \
+ 	imx6ul-tx6ul-mainboard.dtb \
++	imx6ul-usbarmory.dtb \
+ 	imx6ull-14x14-evk.dtb \
+ 	imx6ull-colibri-eval-v3.dtb \
+ 	imx6ull-colibri-wifi-eval-v3.dtb \
++	imx6ull-usbarmory.dtb \
+ 	imx6ulz-14x14-evk.dtb
+ dtb-$(CONFIG_SOC_IMX7D) += \
+ 	imx7d-cl-som-imx7.dtb \
+diff --git a/arch/arm/boot/dts/imx6ul-usbarmory.dts b/arch/arm/boot/dts/imx6ul-usbarmory.dts
+new file mode 100644
+index 000000000000..a596af4cea25
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6ul-usbarmory.dts
+@@ -0,0 +1,257 @@
++/*
++ * USB armory Mk II device tree file
++ * https://inversepath.com/usbarmory
++ *
++ * Copyright (C) 2019, F-Secure Corporation
++ * Andrej Rosano <andrej.rosano@f-secure.com>
++ *
++ * This file is dual-licensed: you can use it either under the terms
++ * of the GPL or the X11 license, at your option. Note that this dual
++ * licensing only applies to this file, and not this project as a
++ * whole.
++ *
++ *  a) This file 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 file 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.
++ *
++ * Or, alternatively,
++ *
++ *  b) Permission is hereby granted, free of charge, to any person
++ *     obtaining a copy of this software and associated documentation
++ *     files (the "Software"), to deal in the Software without
++ *     restriction, including without limitation the rights to use,
++ *     copy, modify, merge, publish, distribute, sublicense, and/or
++ *     sell copies of the Software, and to permit persons to whom the
++ *     Software is furnished to do so, subject to the following
++ *     conditions:
++ *
++ *     The above copyright notice and this permission notice shall be
++ *     included in all copies or substantial portions of the Software.
++ *
++ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
++ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
++ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
++ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
++ *     OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++/dts-v1/;
++
++#include "imx6ul.dtsi"
++
++/ {
++	model = "F-Secure USB armory Mk II";
++	compatible = "inversepath,imx6ul-usbarmory-mkII", "fsl,imx6ul";
++
++	chosen {
++		stdout-path = &uart2;
++	};
++
++	memory {
++		reg = <0x80000000 0x20000000>;
++	};
++
++	leds {
++		compatible = "gpio-leds";
++		pinctrl-names = "default";
++		pinctrl-0 = <&pinctrl_led>;
++
++		led-white {
++			label = "LED_WHITE";
++			gpios = <&gpio4 21 GPIO_ACTIVE_LOW>;
++			linux,default-trigger = "heartbeat";
++		};
++
++		led-blue {
++			label = "LED_BLUE";
++			gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
++		};
++	};
++
++	regulators {
++		compatible = "simple-bus";
++		#address-cells = <1>;
++		#size-cells = <0>;
++
++		reg_sd1_vmmc: sd1_regulator {
++			compatible = "regulator-fixed";
++			regulator-name = "VSD_3V3";
++			regulator-min-microvolt = <3300000>;
++			regulator-max-microvolt = <3300000>;
++			gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>;
++			enable-active-high;
++		};
++	};
++};
++
++&uart1 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&pinctrl_bluetooth>;
++	uart-has-rtscts;
++	status = "okay";
++};
++
++&uart2 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&pinctrl_uart2>;
++	status = "okay";
++};
++
++&usdhc1 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&pinctrl_usdhc1>;
++	no-1-8-v;
++	keep-power-in-suspend;
++	wakeup-source;
++	status = "okay";
++};
++
++&usdhc2 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&pinctrl_usdhc2>;
++	non-removable;
++	status = "okay";
++};
++
++&i2c1 {
++	pinctrl-0 = <&pinctrl_i2c1>;
++	status = "okay";
++};
++
++&iomuxc {
++	pinctrl_uart2: uart2grp {
++		fsl,pins = <
++			MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX	0x1b0b1
++			MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX	0x1b0b1
++		>;
++	};
++
++	pinctrl_bluetooth: uart1grp {
++		fsl,pins = <
++			MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX	0x1b0b0 /* BT_UART_TX  */
++			MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX	0x1b0b0 /* BT_UART_RX  */
++			MX6UL_PAD_UART1_CTS_B__UART1_DCE_CTS	0x1b0b0 /* BT_UART_CTS */
++			MX6UL_PAD_GPIO1_IO07__UART1_DCE_RTS	0x130b0 /* BT_UART_RTS */
++			MX6UL_PAD_UART3_TX_DATA__GPIO1_IO24	0x1f020 /* BT_UART_DSR */
++			MX6UL_PAD_UART3_RX_DATA__GPIO1_IO25	0x10020 /* BT_UART_DTR */
++			MX6UL_PAD_GPIO1_IO04__GPIO1_IO04	0x1f020 /* BT_SWDCLK   */
++			MX6UL_PAD_GPIO1_IO05__GPIO1_IO05	0x1f020 /* BT_SWDIO    */
++			MX6UL_PAD_GPIO1_IO09__GPIO1_IO09	0x1f020 /* BT_RESET    */
++			MX6UL_PAD_UART3_RTS_B__GPIO1_IO27	0x1f020 /* BT_SWITCH_1 */
++			MX6UL_PAD_UART3_CTS_B__GPIO1_IO26	0x1f020 /* BT_SWITCH_2 */
++		>;
++	};
++
++	pinctrl_i2c1: i2c1grp {
++		fsl,pins = <
++			MX6UL_PAD_GPIO1_IO02__I2C1_SCL	0x4001b8b0
++			MX6UL_PAD_GPIO1_IO03__I2C1_SDA	0x4001b8b0
++		>;
++	};
++
++	pinctrl_led: ledgrp {
++		fsl,pins = <
++			MX6UL_PAD_CSI_DATA06__GPIO4_IO27	0x1f020
++			MX6UL_PAD_CSI_DATA07__GPIO4_IO28	0x1f020
++		>;
++	};
++
++	pinctrl_usdhc1: usdhc1grp {
++		fsl,pins = <
++			MX6UL_PAD_SD1_CMD__USDHC1_CMD		0x1f019
++			MX6UL_PAD_SD1_CLK__USDHC1_CLK		0x1f019
++			MX6UL_PAD_SD1_DATA0__USDHC1_DATA0	0x1f019
++			MX6UL_PAD_SD1_DATA1__USDHC1_DATA1	0x1f019
++			MX6UL_PAD_SD1_DATA2__USDHC1_DATA2	0x1f019
++			MX6UL_PAD_SD1_DATA3__USDHC1_DATA3	0x1f019
++		>;
++	};
++
++	pinctrl_usdhc2: usdhc2grp {
++		fsl,pins = <
++			MX6UL_PAD_NAND_RE_B__USDHC2_CLK		0x10071
++			MX6UL_PAD_NAND_WE_B__USDHC2_CMD		0x17059
++			MX6UL_PAD_NAND_DATA00__USDHC2_DATA0	0x17059
++			MX6UL_PAD_NAND_DATA01__USDHC2_DATA1	0x17059
++			MX6UL_PAD_NAND_DATA02__USDHC2_DATA2	0x17059
++			MX6UL_PAD_NAND_DATA03__USDHC2_DATA3	0x17059
++			MX6UL_PAD_NAND_DATA04__USDHC2_DATA4	0x17059
++			MX6UL_PAD_NAND_DATA05__USDHC2_DATA5	0x17059
++			MX6UL_PAD_NAND_DATA06__USDHC2_DATA6	0x17059
++			MX6UL_PAD_NAND_DATA07__USDHC2_DATA7	0x17059
++		>;
++	};
++};
++
++&aips2 {
++	crypto: caam@2140000 {
++		compatible = "fsl,imx6ul-caam", "fsl,sec-v4.0";
++		#address-cells = <1>;
++		#size-cells = <1>;
++		reg = <0x2140000 0x3c000>;
++		ranges = <0 0x2140000 0x3c000>;
++		interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
++		clocks = <&clks IMX6UL_CLK_CAAM_IPG>, <&clks IMX6UL_CLK_CAAM_ACLK>,
++			 <&clks IMX6UL_CLK_CAAM_MEM>;
++		clock-names = "ipg", "aclk", "mem";
++
++		sec_jr0: jr0@1000 {
++			compatible = "fsl,sec-v4.0-job-ring";
++			reg = <0x1000 0x1000>;
++			interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
++		};
++
++		sec_jr1: jr1@2000 {
++			compatible = "fsl,sec-v4.0-job-ring";
++			reg = <0x2000 0x1000>;
++			interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
++		};
++		sec_jr2: jr2@3000 {
++			compatible = "fsl,sec-v4.0-job-ring";
++			reg = <0x3000 0x1000>;
++			interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
++		};
++	};
++};
++
++/ {
++	soc {
++		caam_sm: caam-sm@00100000 {
++			 compatible = "fsl,imx7d-caam-sm", "fsl,imx6q-caam-sm";
++			 reg = <0x00100000 0x3fff>;
++		};
++
++		irq_sec_vio: caam_secvio {
++			     compatible = "fsl,imx7d-caam-secvio", "fsl,imx6q-caam-secvio";
++			     interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
++		};
++	};
++
++	caam_keyblob: caam-keyblob {
++		compatible = "fsl,sec-v4.0-keyblob";
++		status = "okay";
++	};
++};
++
++&usbotg1 {
++	dr_mode = "otg";
++	disable-over-current;
++	tpl-support;
++	status = "okay";
++};
++
++&usbotg2 {
++	dr_mode = "host";
++	disable-over-current;
++	tpl-support;
++	status = "okay";
++};
+diff --git a/arch/arm/boot/dts/imx6ull-usbarmory.dts b/arch/arm/boot/dts/imx6ull-usbarmory.dts
+new file mode 100644
+index 000000000000..7b3ed97fbe31
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6ull-usbarmory.dts
+@@ -0,0 +1,258 @@
++/*
++ * USB armory Mk II device tree file
++ * https://inversepath.com/usbarmory
++ *
++ * Copyright (C) 2019, F-Secure Corporation
++ * Andrej Rosano <andrej.rosano@f-secure.com>
++ *
++ * This file is dual-licensed: you can use it either under the terms
++ * of the GPL or the X11 license, at your option. Note that this dual
++ * licensing only applies to this file, and not this project as a
++ * whole.
++ *
++ *  a) This file 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 file 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.
++ *
++ * Or, alternatively,
++ *
++ *  b) Permission is hereby granted, free of charge, to any person
++ *     obtaining a copy of this software and associated documentation
++ *     files (the "Software"), to deal in the Software without
++ *     restriction, including without limitation the rights to use,
++ *     copy, modify, merge, publish, distribute, sublicense, and/or
++ *     sell copies of the Software, and to permit persons to whom the
++ *     Software is furnished to do so, subject to the following
++ *     conditions:
++ *
++ *     The above copyright notice and this permission notice shall be
++ *     included in all copies or substantial portions of the Software.
++ *
++ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
++ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
++ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
++ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
++ *     OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++/dts-v1/;
++
++#include "imx6ul.dtsi"
++
++/ {
++	model = "F-Secure USB armory Mk II";
++	compatible = "inversepath,imx6ull-usbarmory-mkII", "fsl,imx6ull";
++
++	chosen {
++		stdout-path = &uart2;
++	};
++
++	memory {
++		reg = <0x80000000 0x20000000>;
++	};
++
++	leds {
++		compatible = "gpio-leds";
++		pinctrl-names = "default";
++		pinctrl-0 = <&pinctrl_led>;
++
++		led-white {
++			label = "LED_WHITE";
++			gpios = <&gpio4 21 GPIO_ACTIVE_LOW>;
++			linux,default-trigger = "heartbeat";
++		};
++
++		led-blue {
++			label = "LED_BLUE";
++			gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
++		};
++	};
++
++	regulators {
++		compatible = "simple-bus";
++		#address-cells = <1>;
++		#size-cells = <0>;
++
++		reg_sd1_vmmc: sd1_regulator {
++			compatible = "regulator-fixed";
++			regulator-name = "VSD_3V3";
++			regulator-min-microvolt = <3300000>;
++			regulator-max-microvolt = <3300000>;
++			gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>;
++			enable-active-high;
++		};
++	};
++};
++
++/* Delete CAAM node in AIPS-2 (i.MX6UL specific) */
++/delete-node/ &crypto;
++
++&cpu0 {
++	operating-points = <
++		/* kHz	uV */
++		900000	1275000
++		792000	1225000
++		528000	1175000
++		396000	1025000
++		198000	950000
++	>;
++	fsl,soc-operating-points = <
++		/* KHz	uV */
++		900000	1250000
++		792000	1175000
++		528000	1175000
++		396000	1175000
++		198000	1175000
++	>;
++};
++
++&uart1 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&pinctrl_bluetooth>;
++	uart-has-rtscts;
++	status = "okay";
++};
++
++&uart2 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&pinctrl_uart2>;
++	status = "okay";
++};
++
++&usdhc1 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&pinctrl_usdhc1>;
++	no-1-8-v;
++	keep-power-in-suspend;
++	wakeup-source;
++	status = "okay";
++};
++
++&usdhc2 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&pinctrl_usdhc2>;
++	non-removable;
++	status = "okay";
++};
++
++&i2c1 {
++	pinctrl-0 = <&pinctrl_i2c1>;
++	status = "okay";
++};
++
++&iomuxc {
++	pinctrl_uart2: uart2grp {
++		fsl,pins = <
++			MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX	0x1b0b1
++			MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX	0x1b0b1
++		>;
++	};
++
++	pinctrl_bluetooth: uart1grp {
++		fsl,pins = <
++			MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX	0x1b0b0 /* BT_UART_TX  */
++			MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX	0x1b0b0 /* BT_UART_RX  */
++			MX6UL_PAD_UART1_CTS_B__UART1_DCE_CTS	0x1b0b0 /* BT_UART_CTS */
++			MX6UL_PAD_GPIO1_IO07__UART1_DCE_RTS	0x130b0 /* BT_UART_RTS */
++			MX6UL_PAD_UART3_TX_DATA__GPIO1_IO24	0x1f020 /* BT_UART_DSR */
++			MX6UL_PAD_UART3_RX_DATA__GPIO1_IO25	0x10020 /* BT_UART_DTR */
++			MX6UL_PAD_GPIO1_IO04__GPIO1_IO04	0x1f020 /* BT_SWDCLK   */
++			MX6UL_PAD_GPIO1_IO05__GPIO1_IO05	0x1f020 /* BT_SWDIO    */
++			MX6UL_PAD_GPIO1_IO09__GPIO1_IO09	0x1f020 /* BT_RESET    */
++			MX6UL_PAD_UART3_RTS_B__GPIO1_IO27	0x1f020 /* BT_SWITCH_1 */
++			MX6UL_PAD_UART3_CTS_B__GPIO1_IO26	0x1f020 /* BT_SWITCH_2 */
++		>;
++	};
++
++	pinctrl_i2c1: i2c1grp {
++		fsl,pins = <
++			MX6UL_PAD_GPIO1_IO02__I2C1_SCL	0x4001b8b0
++			MX6UL_PAD_GPIO1_IO03__I2C1_SDA	0x4001b8b0
++		>;
++	};
++
++	pinctrl_led: ledgrp {
++		fsl,pins = <
++			MX6UL_PAD_CSI_DATA06__GPIO4_IO27	0x1f020
++			MX6UL_PAD_CSI_DATA07__GPIO4_IO28	0x1f020
++		>;
++	};
++
++	pinctrl_usdhc1: usdhc1grp {
++		fsl,pins = <
++			MX6UL_PAD_SD1_CMD__USDHC1_CMD		0x1f019
++			MX6UL_PAD_SD1_CLK__USDHC1_CLK		0x1f019
++			MX6UL_PAD_SD1_DATA0__USDHC1_DATA0	0x1f019
++			MX6UL_PAD_SD1_DATA1__USDHC1_DATA1	0x1f019
++			MX6UL_PAD_SD1_DATA2__USDHC1_DATA2	0x1f019
++			MX6UL_PAD_SD1_DATA3__USDHC1_DATA3	0x1f019
++		>;
++	};
++
++	pinctrl_usdhc2: usdhc2grp {
++		fsl,pins = <
++			MX6UL_PAD_NAND_RE_B__USDHC2_CLK		0x10071
++			MX6UL_PAD_NAND_WE_B__USDHC2_CMD		0x17059
++			MX6UL_PAD_NAND_DATA00__USDHC2_DATA0	0x17059
++			MX6UL_PAD_NAND_DATA01__USDHC2_DATA1	0x17059
++			MX6UL_PAD_NAND_DATA02__USDHC2_DATA2	0x17059
++			MX6UL_PAD_NAND_DATA03__USDHC2_DATA3	0x17059
++			MX6UL_PAD_NAND_DATA04__USDHC2_DATA4	0x17059
++			MX6UL_PAD_NAND_DATA05__USDHC2_DATA5	0x17059
++			MX6UL_PAD_NAND_DATA06__USDHC2_DATA6	0x17059
++			MX6UL_PAD_NAND_DATA07__USDHC2_DATA7	0x17059
++		>;
++	};
++};
++
++/ {
++	soc {
++		aips3: aips-bus@02200000 {
++			compatible = "fsl,aips-bus", "simple-bus";
++			#address-cells = <1>;
++			#size-cells = <1>;
++			reg = <0x02200000 0x100000>;
++			ranges;
++
++			dcp: dcp@02280000 {
++				compatible = "fsl,imx6ull-dcp", "fsl,imx6sl-dcp", "fsl,imx28-dcp";
++				reg = <0x02280000 0x4000>;
++				interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>,
++					     <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
++					     <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
++				clocks = <&clks IMX6ULL_CLK_DCP_CLK>;
++				clock-names = "dcp";
++			};
++
++			rngb: rngb@02284000 {
++				compatible = "fsl,imx6sl-rng", "fsl,imx25-rngb", "fsl,imx-rng", "imx-rng";
++				reg = <0x02284000 0x4000>;
++				interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
++				clocks = <&clks IMX6UL_CLK_DUMMY>;
++			};
++		};
++	};
++};
++
++&usbotg1 {
++	dr_mode = "peripheral";
++	disable-over-current;
++	tpl-support;
++	status = "okay";
++};
++
++&usbotg2 {
++	dr_mode = "host";
++	disable-over-current;
++	tpl-support;
++	status = "okay";
++};
+-- 
+2.22.0
+
diff --git a/core/linux-armv7/PKGBUILD b/core/linux-armv7/PKGBUILD
index 7b56efd08..172035432 100644
--- a/core/linux-armv7/PKGBUILD
+++ b/core/linux-armv7/PKGBUILD
@@ -8,9 +8,9 @@ _srcname=linux-5.2
 _kernelname=${pkgbase#linux}
 _desc="ARMv7 multi-platform"
 pkgver=5.2.8
-pkgrel=1
-rcnver=5.2.5
-rcnrel=armv7-x3
+pkgrel=2
+rcnver=5.2.8
+rcnrel=armv7-x4
 arch=('armv7h')
 url="http://www.kernel.org/"
 license=('GPL2')
@@ -27,6 +27,7 @@ source=("http://www.kernel.org/pub/linux/kernel/v5.x/${_srcname}.tar.xz"
         '0006-set-default-cubietruck-led-triggers.patch'
         '0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch'
         '0008-ARM-dove-enable-ethernet-on-D3Plug.patch'
+        '0009-USB-Armory-MkII-support.patch'
         'config'
         'kernel.its'
         'kernel.keyblock'
@@ -36,15 +37,16 @@ source=("http://www.kernel.org/pub/linux/kernel/v5.x/${_srcname}.tar.xz"
         '90-linux.hook')
 md5sums=('ddf994de00d7b18395886dd9b30b9262'
          '86638e3bb71b4b0494d4c7f0851a54b1'
-         'ef32c9bf05aeff66073c09255a526b32'
-         '6f246601cdecde127ebed315ef43c160'
-         '5e381b69c3489bee2b3a4b9fdb13341c'
-         'b0915e4cb58dea29468a2c6f8ec1293d'
-         '133715eeef64488a09d1d9ad7040e0e8'
-         '18410bb9deae2a96adee56bc095ace3a'
-         '04da90e80f4e688737bc5fdd559bc0fd'
-         '115109b6746ab011dcc05e85959a30c0'
-         '32fd9f4595caebff5c761d336af19bc8'
+         'c458cd95b46b24009eca6913811787b4'
+         'bc5c7bb9fb157ad9af8196033b3834cc'
+         '019ac78d013a8e71b95579f878c82b7e'
+         'c0ad915e7e3ae8c0ee22aac089cd9ff2'
+         '5b633aa2c22d2f21618ee4e9936e7eae'
+         '5a146854f80a647c13dbaaf356bf3619'
+         '5385bda90e24c36cd05d6357503ab393'
+         '4e84ffb105e0743802dadb074dd1582c'
+         '88ab731bfa6b7211ae6937e4b9de909c'
+         '0b2f6e03e7188b8d14eb3d1b166f7236'
          '1ca53b1158e36525dbfb6ddfe79333b3'
          '4f2379ed84258050edb858ee8d281678'
          '61c5ff73c136ed07a7aadbf58db3d96a'
@@ -71,6 +73,7 @@ prepare() {
   git apply ../0006-set-default-cubietruck-led-triggers.patch
   git apply ../0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch
   git apply ../0008-ARM-dove-enable-ethernet-on-D3Plug.patch
+  git apply ../0009-USB-Armory-MkII-support.patch
 
   cat "${srcdir}/config" > ./.config