diff --git a/board/LaCie/netspace_v2/Makefile b/board/LaCie/netspace_v2/Makefile
index d4a613f..b43c3d3 100644
--- a/board/LaCie/netspace_v2/Makefile
+++ b/board/LaCie/netspace_v2/Makefile
@@ -21,10 +21,13 @@
 #
 
 include $(TOPDIR)/config.mk
+ifneq ($(OBJTREE),$(SRCTREE))
+$(shell mkdir -p $(obj)../common)
+endif
 
 LIB	= $(obj)lib$(BOARD).o
 
-COBJS	:= netspace_v2.o
+COBJS	:= $(BOARD).o ../common/common.o
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS))
diff --git a/board/LaCie/netspace_v2/netspace_v2.c b/board/LaCie/netspace_v2/netspace_v2.c
index 6938a43..fbf020f 100644
--- a/board/LaCie/netspace_v2/netspace_v2.c
+++ b/board/LaCie/netspace_v2/netspace_v2.c
@@ -21,15 +21,14 @@
  */
 
 #include <common.h>
-#include <miiphy.h>
-#include <netdev.h>
 #include <command.h>
-#include <i2c.h>
 #include <asm/arch/cpu.h>
 #include <asm/arch/kirkwood.h>
 #include <asm/arch/mpp.h>
 #include <asm/arch/gpio.h>
+
 #include "netspace_v2.h"
+#include "../common/common.h"
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -90,91 +89,29 @@
 	return 0;
 }
 
+#if defined(CONFIG_MISC_INIT_R)
 int misc_init_r(void)
 {
 #if defined(CONFIG_CMD_I2C) && defined(CONFIG_SYS_I2C_EEPROM_ADDR)
 	if (!getenv("ethaddr")) {
-		ushort version;
 		uchar mac[6];
-		int ret;
-
-		/* I2C-0 for on-board EEPROM */
-		i2c_set_bus_num(0);
-
-		/* Check layout version for EEPROM data */
-		ret = i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0,
-				CONFIG_SYS_I2C_EEPROM_ADDR_LEN,
-				(uchar *) &version, 2);
-		if (ret != 0) {
-			printf("Error: failed to read I2C EEPROM @%02x\n",
-				CONFIG_SYS_I2C_EEPROM_ADDR);
-			return ret;
-		}
-		version = be16_to_cpu(version);
-		if (version < 1 || version > 3) {
-			printf("Error: unknown version %d for EEPROM data\n",
-				version);
-			return -1;
-		}
-
-		/* Read Ethernet MAC address from EEPROM */
-		ret = i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 2,
-				CONFIG_SYS_I2C_EEPROM_ADDR_LEN, mac, 6);
-		if (ret != 0) {
-			printf("Error: failed to read I2C EEPROM @%02x\n",
-				CONFIG_SYS_I2C_EEPROM_ADDR);
-			return ret;
-		}
-		eth_setenv_enetaddr("ethaddr", mac);
+		if (lacie_read_mac_address(mac) == 0)
+			eth_setenv_enetaddr("ethaddr", mac);
 	}
-#endif /* CONFIG_CMD_I2C && CONFIG_SYS_I2C_EEPROM_ADDR */
-
+#endif
 	return 0;
 }
+#endif
 
-void mv_phy_88e1116_init(char *name)
-{
-	u16 reg;
-	u16 devadr;
-
-	if (miiphy_set_current_dev(name))
-		return;
-
-	/* command to read PHY dev address */
-	if (miiphy_read(name, 0xEE, 0xEE, (u16 *) &devadr)) {
-		printf("Err..(%s) could not read PHY dev address\n", __func__);
-		return;
-	}
-
-	/*
-	 * Enable RGMII delay on Tx and Rx for CPU port
-	 * Ref: sec 4.7.2 of chip datasheet
-	 */
-	miiphy_write(name, devadr, MV88E1116_PGADR_REG, 2);
-	miiphy_read(name, devadr, MV88E1116_MAC_CTRL_REG, &reg);
-	reg |= (MV88E1116_RGMII_RXTM_CTRL | MV88E1116_RGMII_TXTM_CTRL);
-	miiphy_write(name, devadr, MV88E1116_MAC_CTRL_REG, reg);
-	miiphy_write(name, devadr, MV88E1116_PGADR_REG, 0);
-
-	/* reset the phy */
-	if (miiphy_read(name, devadr, MII_BMCR, &reg) != 0) {
-		printf("Err..(%s) PHY status read failed\n", __func__);
-		return;
-	}
-	if (miiphy_write(name, devadr, MII_BMCR, reg | 0x8000) != 0) {
-		printf("Err..(%s) PHY reset failed\n", __func__);
-		return;
-	}
-
-	debug("88E1116 Initialized on %s\n", name);
-}
-
+#if defined(CONFIG_CMD_NET) && defined(CONFIG_RESET_PHY_R)
 /* Configure and initialize PHY */
 void reset_phy(void)
 {
 	mv_phy_88e1116_init("egiga0");
 }
+#endif
 
+#if defined(CONFIG_KIRKWOOD_GPIO)
 /* Return GPIO button status */
 static int
 do_read_button(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
@@ -184,3 +121,4 @@
 
 U_BOOT_CMD(button, 1, 1, do_read_button,
 	   "Return GPIO button status 0=off 1=on", "");
+#endif
diff --git a/board/LaCie/netspace_v2/netspace_v2.h b/board/LaCie/netspace_v2/netspace_v2.h
index 3f3d51c..34e492c 100644
--- a/board/LaCie/netspace_v2/netspace_v2.h
+++ b/board/LaCie/netspace_v2/netspace_v2.h
@@ -31,12 +31,4 @@
 
 #define NETSPACE_V2_GPIO_BUTTON         32
 
-/* PHY related */
-#define MV88E1116_LED_FCTRL_REG		10
-#define MV88E1116_CPRSP_CR3_REG		21
-#define MV88E1116_MAC_CTRL_REG		21
-#define MV88E1116_PGADR_REG		22
-#define MV88E1116_RGMII_TXTM_CTRL	(1 << 4)
-#define MV88E1116_RGMII_RXTM_CTRL	(1 << 5)
-
 #endif /* NETSPACE_V2_H */
