diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/network b/target/linux/ar71xx/base-files/etc/uci-defaults/network
index 3a5b704e74910e208c0a27f2585b859684818cfb..ae4b88b7c7967b376907c9bec50d1e3853c8fb34 100755
--- a/target/linux/ar71xx/base-files/etc/uci-defaults/network
+++ b/target/linux/ar71xx/base-files/etc/uci-defaults/network
@@ -133,6 +133,7 @@ wzr-hp-g300nh)
 aw-nr580 |\
 bullet-m |\
 eap7660d |\
+ew-dorin |\
 rb-411 |\
 tl-mr11u |\
 tl-mr3020 |\
@@ -186,7 +187,7 @@ wzr-hp-g450h)
 	ucidef_add_switch_vlan "eth0" "2" "0t 1"
 	;;
 
-ew-dorin)
+ew-dorin-router)
 	ucidef_set_interfaces_lan_wan "eth0" "eth1"
 	ucidef_add_switch "eth0" "1" "1"
 	ucidef_add_switch_vlan "eth0" "1" "0 2 3"
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index 2829d9f2909a98dd926d686ef4925153fb78fe8e..648cca8b5a74708abae4089d2ece8f2479632821 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -399,6 +399,9 @@ ar71xx_board_detect() {
 	*EmbWir-Dorin)
 		name="ew-dorin"
 		;;
+	*EmbWir-Dorin-Router)
+		name="ew-dorin-router"
+		;;
 	esac
 
 	case "$machine" in
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index 0e086039c524c7c21df65211538b4ccad292566a..fb5fe7318aad4821b4ca8fc4865810afeba8f927 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -94,13 +94,14 @@ platform_check_image() {
 		}
 		return 0
 		;;
-	ew-dorin | \
 	ap81 | \
 	ap83 | \
 	dir-600-a1 | \
 	dir-615-c1 | \
 	dir-615-e4 | \
 	dir-825-b1 | \
+	ew-dorin | \
+	ew-dorin-router | \
 	mzk-w04nu | \
 	mzk-w300nh | \
 	tew-632brp | \
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-ew-dorin.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-ew-dorin.c
index dc052c486879543040b31bad657fbe3eca6d042f..47ed51b5ddc94f3f8baeb4a8af2738d9f0063d58 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/mach-ew-dorin.c
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-ew-dorin.c
@@ -85,6 +85,42 @@ static void __init ew_dorin_setup(void)
 	mac[3] |= 0x40;
 	ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
 
+	ath79_register_mdio(0, 0x0);
+
+	/* LAN ports */
+	ath79_register_eth(1);
+
+	ath79_register_leds_gpio(-1, ARRAY_SIZE(dorin_leds_gpio),
+				 dorin_leds_gpio);
+	ath79_register_gpio_keys_polled(-1, DORIN_KEYS_POLL_INTERVAL,
+					ARRAY_SIZE(dorin_gpio_keys),
+					dorin_gpio_keys);
+}
+
+MIPS_MACHINE(ATH79_MACH_EW_DORIN, "EW-DORIN", "EmbWir-Dorin",
+	     ew_dorin_setup);
+
+
+static void __init ew_dorin_router_setup(void)
+{
+	u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
+	static u8 mac[6];
+
+	ath79_register_m25p80(NULL);
+
+	ath79_register_usb();
+
+	if (ar93xx_wmac_read_mac_address(mac)) {
+		ath79_register_wmac(NULL, NULL);
+	} else {
+		ath79_register_wmac(art + DORIN_CALDATA_OFFSET,
+				    art + DORIN_WMAC_MAC_OFFSET);
+		memcpy(mac, art + DORIN_WMAC_MAC_OFFSET, sizeof(mac));
+	}
+
+	mac[3] |= 0x40;
+	ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
+
 	mac[3] &= 0x3F;
 	ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
 	ath79_setup_ar933x_phy4_switch(true, true);
@@ -104,5 +140,5 @@ static void __init ew_dorin_setup(void)
 					dorin_gpio_keys);
 }
 
-MIPS_MACHINE(ATH79_MACH_EW_DORIN, "EW-DORIN", "EmbWir-Dorin",
-	     ew_dorin_setup);
+MIPS_MACHINE(ATH79_MACH_EW_DORIN_ROUTER, "EW-DORIN-ROUTER",
+	     "EmbWir-Dorin-Router", ew_dorin_router_setup);
diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile
index 6e6de706f5dfb2a89945327479526b42f60ad570..3897dd49bf20742a6d3e9ac003892444a148f777 100644
--- a/target/linux/ar71xx/image/Makefile
+++ b/target/linux/ar71xx/image/Makefile
@@ -682,9 +682,11 @@ define Image/Build/Profile/AP121MINI
 endef
 
 ew-dorin_cmdline=board=EW-DORIN console=ttyATH0,115200
+ew-dorin-router_cmdline=board=EW-DORIN-ROUTER console=ttyATH0,115200
 ew-dorin_mtdlayout_4M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env),1024k(kernel),2688k(rootfs),64k(art),3712k@0x50000(firmware)
 define Image/Build/Profile/EWDORIN
 	$(call Image/Build/Template/$(fs_64k)/$(1),AthLzma,ew-dorin,$(ew-dorin_cmdline),$(ew-dorin_mtdlayout_4M),1048576,2752512,KRuImage)
+	$(call Image/Build/Template/$(fs_64k)/$(1),AthLzma,ew-dorin-router,$(ew-dorin-router_cmdline),$(ew-dorin_mtdlayout_4M),1048576,2752512,KRuImage)
 endef
 
 ap81_cmdline=board=AP81 console=ttyS0,115200
diff --git a/target/linux/ar71xx/patches-3.3/610-MIPS-ath79-openwrt-machines.patch b/target/linux/ar71xx/patches-3.3/610-MIPS-ath79-openwrt-machines.patch
index 6ef787124cf8c13032561870003cd39cf4a3bf6f..4179681a29898221a3220d751b9a1c7f2c678f33 100644
--- a/target/linux/ar71xx/patches-3.3/610-MIPS-ath79-openwrt-machines.patch
+++ b/target/linux/ar71xx/patches-3.3/610-MIPS-ath79-openwrt-machines.patch
@@ -1,6 +1,6 @@
 --- a/arch/mips/ath79/machtypes.h
 +++ b/arch/mips/ath79/machtypes.h
-@@ -16,18 +16,92 @@
+@@ -16,18 +16,93 @@
  
  enum ath79_mach_type {
  	ATH79_MACH_GENERIC = 0,
@@ -22,6 +22,7 @@
 +	ATH79_MACH_DIR_615_E4,		/* D-Link DIR-615 rev. E4 */
 +	ATH79_MACH_DIR_825_B1,		/* D-Link DIR-825 rev. B1 */
 +	ATH79_MACH_EW_DORIN,		/* embedded wireless Dorin Platform */
++	ATH79_MACH_EW_DORIN_ROUTER,	/* embedded wireless Dorin Router Platform */
 +	ATH79_MACH_EAP7660D,		/* Senao EAP7660D */
 +	ATH79_MACH_JA76PF,		/* jjPlus JA76PF */
 +	ATH79_MACH_JA76PF2,		/* jjPlus JA76PF2 */