diff -urN trunk.ORG/target/linux/ar71xx/base-files/etc/board.d/01_leds trunk/target/linux/ar71xx/base-files/etc/board.d/01_leds
--- trunk.ORG/target/linux/ar71xx/base-files/etc/board.d/01_leds	2016-12-05 01:31:11.437623079 +0900
+++ trunk/target/linux/ar71xx/base-files/etc/board.d/01_leds	2016-12-22 00:44:44.428153545 +0900
@@ -420,6 +420,11 @@
 	ucidef_set_led_default "wan" "WAN" "omy:green:wan" "eth0"
 	;;
 
+pqi-air-pen)
+	ucidef_set_led_wlan "wlan" "WLAN" "pqi-air-pen:blue:wlan" "phy0tpt"
+	ucidef_set_led_default "wps" "WPS" "pqi-air-pen:blue:wps" "0"
+	;;
+
 qihoo-c301)
 	ucidef_set_led_wlan "wlan2g" "WLAN2G" "qihoo:red:status" "phy1tpt"
 	;;
diff -urN trunk.ORG/target/linux/ar71xx/base-files/etc/board.d/02_network trunk/target/linux/ar71xx/base-files/etc/board.d/02_network
--- trunk.ORG/target/linux/ar71xx/base-files/etc/board.d/02_network	2016-12-05 01:31:11.437623079 +0900
+++ trunk/target/linux/ar71xx/base-files/etc/board.d/02_network	2016-12-17 00:54:38.454221347 +0900
@@ -343,6 +343,7 @@
 mr600v2 |\
 mr900 |\
 mr900v2 |\
+pqi-air-pen |\
 rb-411 |\
 rb-911g-2hpnd |\
 rb-911g-5hpacd |\
diff -urN trunk.ORG/target/linux/ar71xx/base-files/lib/ar71xx.sh trunk/target/linux/ar71xx/base-files/lib/ar71xx.sh
--- trunk.ORG/target/linux/ar71xx/base-files/lib/ar71xx.sh	2016-12-05 01:31:11.437623079 +0900
+++ trunk/target/linux/ar71xx/base-files/lib/ar71xx.sh	2016-12-17 00:54:38.454221347 +0900
@@ -686,6 +686,9 @@
 	*PB92)
 		name="pb92"
 		;;
+	*"PQI Air Pen")
+		name="pqi-air-pen"
+		;;
 	*"Qihoo 360 C301")
 		name="qihoo-c301"
 		;;
diff -urN trunk.ORG/target/linux/ar71xx/base-files/lib/upgrade/platform.sh trunk/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
--- trunk.ORG/target/linux/ar71xx/base-files/lib/upgrade/platform.sh	2016-12-05 01:31:11.437623079 +0900
+++ trunk/target/linux/ar71xx/base-files/lib/upgrade/platform.sh	2016-12-17 00:54:38.454221347 +0900
@@ -253,6 +253,7 @@
 	rocket-m-xw | \
 	rocket-m-ti | \
 	nanostation-m-xw | \
+	pqi-air-pen | \
 	rw2458n | \
 	wpj531 | \
 	wndap360 | \
diff -urN trunk.ORG/target/linux/ar71xx/config-4.4 trunk/target/linux/ar71xx/config-4.4
--- trunk.ORG/target/linux/ar71xx/config-4.4	2016-12-05 01:31:11.437623079 +0900
+++ trunk/target/linux/ar71xx/config-4.4	2016-12-17 00:54:38.454221347 +0900
@@ -121,6 +121,7 @@
 CONFIG_ATH79_MACH_PB42=y
 CONFIG_ATH79_MACH_PB44=y
 CONFIG_ATH79_MACH_PB92=y
+CONFIG_ATH79_MACH_PQI_AIR_PEN=y
 CONFIG_ATH79_MACH_QIHOO_C301=y
 CONFIG_ATH79_MACH_R6100=y
 # CONFIG_ATH79_MACH_RB2011 is not set
diff -urN trunk.ORG/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt trunk/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
--- trunk.ORG/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt	2016-12-05 01:31:11.437623079 +0900
+++ trunk/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt	2016-12-17 00:54:38.454221347 +0900
@@ -1579,6 +1579,19 @@
 	select ATH79_DEV_USB
 	select ATH79_DEV_WMAC
 
+config ATH79_MACH_PQI_AIR_PEN
+	bool "PQI Air Pen"
+	select SOC_AR933X
+	select ATH79_DEV_ETH
+	select ATH79_DEV_GPIO_BUTTONS
+	select ATH79_DEV_LEDS_GPIO
+	select ATH79_DEV_M25P80
+	select ATH79_DEV_USB
+	select ATH79_DEV_WMAC
+	help
+	  Say 'Y' here if you want your kernel to support the
+	  PQI Air Pen.
+
 config ATH79_MACH_CF_E316N_V2
 	bool "COMFAST CF-E316N v2 board"
 	select SOC_AR934X
diff -urN trunk.ORG/target/linux/ar71xx/files/arch/mips/ath79/Makefile trunk/target/linux/ar71xx/files/arch/mips/ath79/Makefile
--- trunk.ORG/target/linux/ar71xx/files/arch/mips/ath79/Makefile	2016-12-05 01:31:11.441623080 +0900
+++ trunk/target/linux/ar71xx/files/arch/mips/ath79/Makefile	2016-12-17 00:54:38.454221347 +0900
@@ -124,6 +124,7 @@
 obj-$(CONFIG_ATH79_MACH_PB42)		+= mach-pb42.o
 obj-$(CONFIG_ATH79_MACH_PB44)		+= mach-pb44.o
 obj-$(CONFIG_ATH79_MACH_PB92)		+= mach-pb92.o
+obj-$(CONFIG_ATH79_MACH_PQI_AIR_PEN)	+= mach-pqi-air-pen.o
 obj-$(CONFIG_ATH79_MACH_C55)		+= mach-c55.o
 obj-$(CONFIG_ATH79_MACH_QIHOO_C301)	+= mach-qihoo-c301.o
 obj-$(CONFIG_ATH79_MACH_R6100)		+= mach-r6100.o
diff -urN trunk.ORG/target/linux/ar71xx/files/arch/mips/ath79/mach-pqi-air-pen.c trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-pqi-air-pen.c
--- trunk.ORG/target/linux/ar71xx/files/arch/mips/ath79/mach-pqi-air-pen.c	1970-01-01 09:00:00.000000000 +0900
+++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-pqi-air-pen.c	2016-12-22 00:45:42.880156517 +0900
@@ -0,0 +1,99 @@
+/*
+ *  PQI Air Pen stick support
+ *
+ *  Copyright (C) 2016 YuheiOKAWA <tochiro.srchack@gmail.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License version 2 as published
+ *  by the Free Software Foundation.
+*/
+
+#include <linux/gpio.h>
+
+#include <asm/mach-ath79/ath79.h>
+
+#include "common.h"
+#include "dev-eth.h"
+#include "dev-gpio-buttons.h"
+#include "dev-leds-gpio.h"
+#include "dev-m25p80.h"
+#include "dev-usb.h"
+#include "dev-wmac.h"
+#include "machtypes.h"
+
+#define PQI_AIR_PEN_GPIO_LED_WLAN		0
+#define PQI_AIR_PEN_GPIO_LED_WPS		23
+
+#define PQI_AIR_PEN_GPIO_BTN_WPS		22
+#define PQI_AIR_PEN_GPIO_BTN_RESET		12
+
+#define PQI_AIR_PEN_KEYS_POLL_INTERVAL   20	/* msecs */
+#define PQI_AIR_PEN_KEYS_DEBOUNCE_INTERVAL	(3 * PQI_AIR_PEN_KEYS_POLL_INTERVAL)
+
+#define PQI_AIR_PEN_WMAC_CALDATA_OFFSET         0x1000
+#define PQI_AIR_PEN_LAN_MAC_OFFSET		0x1002
+#define PQI_AIR_PEN_WMAC_MAC_OFFSET		0x1002
+
+static struct gpio_led pqi_air_pen_leds_gpio[] __initdata = {
+	{
+		.name = "pqi-air-pen:blue:wlan",
+		.gpio = PQI_AIR_PEN_GPIO_LED_WLAN,
+		.active_low = 0,
+	},
+	{
+		.name = "pqi-air-pen:blue:wps",
+		.gpio = PQI_AIR_PEN_GPIO_LED_WPS,
+		.active_low = 0,
+	},
+};
+
+static struct gpio_keys_button pqi_air_pen_gpio_keys[] __initdata = {
+	{
+		.desc = "wps",
+		.type = EV_KEY,
+		.code = KEY_WPS_BUTTON,
+		.debounce_interval = PQI_AIR_PEN_KEYS_DEBOUNCE_INTERVAL,
+		.gpio = PQI_AIR_PEN_GPIO_BTN_WPS,
+		.active_low = 0,
+	},
+	{
+		.desc = "reset",
+		.type = EV_KEY,
+		.code = KEY_RESTART,
+		.debounce_interval = PQI_AIR_PEN_KEYS_DEBOUNCE_INTERVAL,
+		.gpio = PQI_AIR_PEN_GPIO_BTN_RESET,
+		.active_low = 0,
+	},
+};
+
+static void __init pqi_air_pen_setup(void)
+{
+	/* ART base address */
+	u8 *art = (u8 *) KSEG1ADDR(0x9f050000);
+
+	/* register flash. */
+	ath79_register_m25p80(NULL);
+
+	/* register wireless mac with cal data */
+	ath79_register_wmac(art + PQI_AIR_PEN_WMAC_CALDATA_OFFSET, art + PQI_AIR_PEN_WMAC_MAC_OFFSET);
+
+	/* false PHY_SWAP and PHY_ADDR_SWAP bits */
+	ath79_setup_ar933x_phy4_switch(false, false);
+
+	/* register gpio LEDs and keys */
+	ath79_register_leds_gpio(-1, ARRAY_SIZE(pqi_air_pen_leds_gpio),
+				 pqi_air_pen_leds_gpio);
+	ath79_register_gpio_keys_polled(-1, PQI_AIR_PEN_KEYS_POLL_INTERVAL,
+					ARRAY_SIZE(pqi_air_pen_gpio_keys),
+					pqi_air_pen_gpio_keys);
+
+	/* enable usb */
+	ath79_register_usb();
+	
+	/* register eth0 as LAN */
+	ath79_init_mac(ath79_eth0_data.mac_addr, art + PQI_AIR_PEN_LAN_MAC_OFFSET, 0);
+	ath79_register_mdio(0, 0x0);
+	ath79_register_eth(0);
+}
+
+MIPS_MACHINE(ATH79_MACH_PQI_AIR_PEN, "PQI-AIR-PEN", "PQI Air Pen",pqi_air_pen_setup);
diff -urN trunk.ORG/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h trunk/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
--- trunk.ORG/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h	2016-12-05 01:31:11.453623080 +0900
+++ trunk/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h	2016-12-17 00:54:38.458221347 +0900
@@ -127,6 +127,7 @@
 	ATH79_MACH_ONION_OMEGA,		/* ONION OMEGA */
 	ATH79_MACH_PB42,		/* Atheros PB42 */
 	ATH79_MACH_PB92,		/* Atheros PB92 */
+	ATH79_MACH_PQI_AIR_PEN,		/* PQI Air Pen */
 	ATH79_MACH_QIHOO_C301,		/* Qihoo 360 C301 */
 	ATH79_MACH_R6100,		/* NETGEAR R6100 */
 	ATH79_MACH_RB_411,		/* MikroTik RouterBOARD 411/411A/411AH */
diff -urN trunk.ORG/target/linux/ar71xx/generic/profiles/pqi.mk trunk/target/linux/ar71xx/generic/profiles/pqi.mk
--- trunk.ORG/target/linux/ar71xx/generic/profiles/pqi.mk	1970-01-01 09:00:00.000000000 +0900
+++ trunk/target/linux/ar71xx/generic/profiles/pqi.mk	2016-12-17 00:54:38.458221347 +0900
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2013 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Profile/PQI-AIR-PEN
+	NAME:=PQI Air Pen
+	PACKAGES:=kmod-usb-core kmod-usb2 kmod-usb-storage kmod-ath10k
+endef
+
+define Profile/PQI-AIR-PEN/Description
+	Package set optimized for the PQI Air Pen.
+endef
+
+$(eval $(call Profile,PQI-AIR-PEN))
diff -urN trunk.ORG/target/linux/ar71xx/image/generic.mk trunk/target/linux/ar71xx/image/generic.mk
--- trunk.ORG/target/linux/ar71xx/image/generic.mk	2016-12-05 01:31:11.461623081 +0900
+++ trunk/target/linux/ar71xx/image/generic.mk	2016-12-19 01:12:54.487062027 +0900
@@ -65,6 +65,14 @@
 endef
 TARGET_DEVICES += gl-domino
 
+define Device/pqi-air-pen
+  BOARDNAME = PQI-AIR-PEN
+  IMAGE_SIZE = 7744k
+  CONSOLE = ttyATH0,115200
+  MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,64k(art)ro,64k(NVRAM)ro,7680k(firmware),64k(CONF)
+endef
+TARGET_DEVICES += pqi-air-pen
+
 define Device/wndr3700
   BOARDNAME = WNDR3700
   NETGEAR_KERNEL_MAGIC = 0x33373030
