--- a/arch/arm/boot/dts/armada-370-synology-ds213j.dts
+++ b/arch/arm/boot/dts/armada-370-synology-ds213j.dts
@@ -31,6 +31,7 @@
 
 	chosen {
 		stdout-path = "serial0:115200n8";
+		append-rootblock = "nullparameter="; /* override the bootloader args */
 	};
 
 	memory@0 {
@@ -94,6 +95,8 @@
 			       status = "okay";
 			       phy = <&phy1>;
 			       phy-mode = "sgmii";
+		               nvmem-cells = <&macaddr_vendor_0>;
+        		       nvmem-cell-names = "mac-address";
 			};
 
 			sata@a0000 {
@@ -175,6 +178,24 @@
 			gpio = <&gpio1 30 GPIO_ACTIVE_HIGH>;
 		};
 	};
+
+	virtual_flash {
+		compatible = "mtd-concat";
+
+		devices = <&mtd_kernel &mtd_gap &mtd_gap2>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				compatible = "openwrt,uimage", "denx,uimage";
+				label = "firmware";
+				reg = <0x0 0x0>;
+			};
+		};
+	};
 };
 
 &mdio {
@@ -265,48 +286,52 @@
 		reg = <0>; /* Chip select 0 */
 		spi-max-frequency = <20000000>;
 
-		/*
-		 * Warning!
-		 *
-		 * Synology u-boot uses its compiled-in environment
-		 * and it seems Synology did not care to change u-boot
-		 * default configuration in order to allow saving a
-		 * modified environment at a sensible location. So,
-		 * if you do a 'saveenv' under u-boot, your modified
-		 * environment will be saved at 1MB after the start
-		 * of the flash, i.e. in the middle of the uImage.
-		 * For that reason, it is strongly advised not to
-		 * change the default environment, unless you know
-		 * what you are doing.
-		 */
-		partition@0 { /* u-boot */
-			label = "RedBoot";
-			reg = <0x00000000 0x000c0000>; /* 768KB */
-		};
+		partitions {
+			compatible = "fixed-partitions";
 
-		partition@c0000 { /* uImage */
-			label = "zImage";
-			reg = <0x000c0000 0x002d0000>; /* 2880KB */
-		};
+			partition@0 { /* u-boot */
+				label = "u-boot";
+				reg = <0x00000000 0x000c0000>; /* 768KB */
+				read-only;
+			};
 
-		partition@390000 { /* uInitramfs */
-			label = "rd.gz";
-			reg = <0x00390000 0x00440000>; /* 4250KB */
-		};
+			mtd_gap: partition@c0000 { /* gap */
+				label = "gap";
+				reg = <0x000c0000 0x00040000>; /* 256KB */
+			};
 
-		partition@7d0000 { /* MAC address and serial number */
-			label = "vendor";
-			reg = <0x007d0000 0x00010000>; /* 64KB */
-		};
+			partition@100000 { /* u-boot-env */
+				label = "u-boot-env";
+				reg = <0x00100000 0x00010000>; /* 64KB */
+			};
 
-		partition@7e0000 {
-			label = "RedBoot config";
-			reg = <0x007e0000 0x00010000>; /* 64KB */
-		};
+			mtd_kernel: partition@110000 {
+				label = "kernel";
+				reg = <0x00110000 0x006c0000>; /* 6912KB */
+			};
 
-		partition@7f0000 {
-			label = "FIS directory";
-			reg = <0x007f0000 0x00010000>; /* 64KB */
+			partition@7d0000 { /* MAC address and serial number */
+				reg = <0x007d0000 0x00010000>; /* 64KB */
+				label = "vendor";
+				read-only;
+
+				compatible = "nvmem-cells";
+
+				nvmem-layout {
+					compatible = "fixed-layout";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					macaddr_vendor_0: macaddr@0 {
+						reg = <0x0 0x6>;
+					};
+				};
+			};
+
+			mtd_gap2: partition@7e0000 {
+				label = "gap2";
+				reg = <0x007e0000 0x00020000>; /* 128KB */
+			};
 		};
 	};
 };