Patchwork [U-Boot,v2,2/2] ARM: lacie_kw: add support for WIRELESS_SPACE

login
register
mail settings
Submitter Albert ARIBAUD
Date Oct. 19, 2012, 9:38 p.m.
Message ID <1350682689-2986-2-git-send-email-albert.u.boot@aribaud.net>
Download mbox | patch
Permalink /patch/192828/
State Superseded
Delegated to: Prafulla Wadaskar
Headers show

Comments

Albert ARIBAUD - Oct. 19, 2012, 9:38 p.m.
Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
---
Changes in v2:
- split the patch in two: mvgbe phy/port changes and WS support.
- removed spurious DEBUG define
- fixed various checkpatch errors/warnings/typos

 board/LaCie/netspace_v2/netspace_v2.c |   44 ++----------
 board/LaCie/netspace_v2/netspace_v2.h |  121 +++++++++++++++++++++++++++++++++
 boards.cfg                            |    1 +
 include/configs/lacie_kw.h            |   42 +++++++++++-
 4 files changed, 168 insertions(+), 40 deletions(-)
Albert ARIBAUD - Oct. 19, 2012, 10:57 p.m.
On Fri, 19 Oct 2012 23:38:09 +0200, Albert ARIBAUD
<albert.u.boot@aribaud.net> wrote:

> Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
> ---
> Changes in v2:
> - split the patch in two: mvgbe phy/port changes and WS support.
> - removed spurious DEBUG define
> - fixed various checkpatch errors/warnings/typos

For some reason the series now breaks build for 2 lacie_kw boards and
one orion5x. I'll investigate and either post a v3 or a further message
to clarify.

Amicalement,
Simon Guinot - Oct. 20, 2012, 12:17 a.m.
On Fri, Oct 19, 2012 at 11:38:09PM +0200, Albert ARIBAUD wrote:
> Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
> ---
> Changes in v2:
> - split the patch in two: mvgbe phy/port changes and WS support.
> - removed spurious DEBUG define
> - fixed various checkpatch errors/warnings/typos
> 
>  board/LaCie/netspace_v2/netspace_v2.c |   44 ++----------
>  board/LaCie/netspace_v2/netspace_v2.h |  121 +++++++++++++++++++++++++++++++++
>  boards.cfg                            |    1 +
>  include/configs/lacie_kw.h            |   42 +++++++++++-
>  4 files changed, 168 insertions(+), 40 deletions(-)

Hi Albert,

Thank you for your work on the Wireless Space. It is nice to have this
patch.

> 
> diff --git a/board/LaCie/netspace_v2/netspace_v2.c b/board/LaCie/netspace_v2/netspace_v2.c
> index 101a80a..084f0cf 100644
> --- a/board/LaCie/netspace_v2/netspace_v2.c
> +++ b/board/LaCie/netspace_v2/netspace_v2.c
> @@ -39,40 +39,7 @@ int board_early_init_f(void)
>  			NETSPACE_V2_OE_LOW, NETSPACE_V2_OE_HIGH);
>  
>  	/* Multi-Purpose Pins Functionality configuration */
> -	u32 kwmpp_config[] = {
> -		MPP0_SPI_SCn,
> -		MPP1_SPI_MOSI,
> -		MPP2_SPI_SCK,
> -		MPP3_SPI_MISO,
> -		MPP4_NF_IO6,
> -		MPP5_NF_IO7,
> -		MPP6_SYSRST_OUTn,
> -		MPP7_GPO,		/* Fan speed (bit 1) */
> -		MPP8_TW_SDA,
> -		MPP9_TW_SCK,
> -		MPP10_UART0_TXD,
> -		MPP11_UART0_RXD,
> -		MPP12_GPO,		/* Red led */
> -		MPP14_GPIO,		/* USB fuse */
> -		MPP16_GPIO,		/* SATA 0 power */
> -		MPP17_GPIO,		/* SATA 1 power */
> -		MPP18_NF_IO0,
> -		MPP19_NF_IO1,
> -		MPP20_SATA1_ACTn,
> -		MPP21_SATA0_ACTn,
> -		MPP22_GPIO,		/* Fan speed (bit 0) */
> -		MPP23_GPIO,		/* Fan power */
> -		MPP24_GPIO,		/* USB mode select */
> -		MPP25_GPIO,		/* Fan rotation fail */
> -		MPP26_GPIO,		/* USB vbus-in detection */
> -		MPP28_GPIO,		/* USB enable vbus-out */
> -		MPP29_GPIO,		/* Blue led (slow register) */
> -		MPP30_GPIO,		/* Blue led (command register) */
> -		MPP31_GPIO,		/* Board power off */
> -		MPP32_GPIO,		/* Button (0 = Released, 1 = Pushed) */
> -		MPP33_GPIO,		/* Fan speed (bit 2) */
> -		0
> -	};
> +	u32 kwmpp_config[] = NETSPACE_V2_MPP_CONFIG;
>  	kirkwood_mpp_conf(kwmpp_config, NULL);
>  
>  	return 0;
> @@ -107,10 +74,11 @@ int misc_init_r(void)
>  /* Configure and initialize PHY */
>  void reset_phy(void)
>  {
> -#if defined(CONFIG_NETSPACE_LITE_V2) || defined(CONFIG_NETSPACE_MINI_V2)
> -	mv_phy_88e1318_init("egiga0", 0);
> -#else
> -	mv_phy_88e1116_init("egiga0", 8);
> +#ifdef CONFIG_EGIGA0_PHY
> +	mv_phy_88e1116_init("egiga0", CONFIG_EGIGA0_PHY);
> +#endif
> +#ifdef CONFIG_EGIGA1_PHY
> +	mv_phy_88e1116_init("egiga1", CONFIG_EGIGA1_PHY);
>  #endif
>  }
>  #endif
> diff --git a/board/LaCie/netspace_v2/netspace_v2.h b/board/LaCie/netspace_v2/netspace_v2.h
> index 34e492c..1f0eefd 100644
> --- a/board/LaCie/netspace_v2/netspace_v2.h
> +++ b/board/LaCie/netspace_v2/netspace_v2.h
> @@ -24,11 +24,132 @@
>  #define NETSPACE_V2_H
>  
>  /* GPIO configuration */
> +
> +/* Net Space V2, Net Space Max V2, Internet Space V2: */
> +#if defined(CONFIG_NETSPACE_MAX_V2) \
> +	|| defined(CONFIG_NETSPACE_V2) \
> +	|| defined(CONFIG_NET2BIG_V2) \
> +	|| defined(CONFIG_INETSPACE_V2)

I think you missed here a couple of 'defined()' for the boards ns2lite
and ns2mini.

Moreover, don't you think that the Wireless Space could have his own
board files ? I mean, there is almost no common hardware between ws and
ns2 boards. I think it is confusing to have NETSPACE_V2_ macros to
designate MPP and GPIO configuration for both ns2 and ws.

> +
>  #define NETSPACE_V2_OE_LOW		0x06004000
>  #define NETSPACE_V2_OE_HIGH		0x00000031
>  #define NETSPACE_V2_OE_VAL_LOW		0x10030000
>  #define NETSPACE_V2_OE_VAL_HIGH		0x00000000
>  
> +/* Wireless Space */
> +
> +#elif defined(CONFIG_WIRELESS_SPACE)
> +
> +#define NETSPACE_V2_OE_LOW		0xFF006808
> +#define NETSPACE_V2_OE_HIGH		0x0000F989
> +#define NETSPACE_V2_OE_VAL_LOW		0x00000000
> +#define NETSPACE_V2_OE_VAL_HIGH		0x00000000
> +
> +#else
> +
> +#error Undefined or unsupported LaCie KW board variant
> +
> +#endif
> +
>  #define NETSPACE_V2_GPIO_BUTTON         32
>  
> +/* MPP configuration */
> +
> +/* Net Space V2, Net Space Max V2, Internet Space V2: */
> +#if defined(CONFIG_NETSPACE_MAX_V2) \
> +	|| defined(CONFIG_NETSPACE_V2) \
> +	|| defined(CONFIG_NET2BIG_V2) \
> +	|| defined(CONFIG_INETSPACE_V2)
> +
> +#define NETSPACE_V2_MPP_CONFIG	{ \
> +	MPP0_SPI_SCn, \
> +	MPP1_SPI_MOSI, \
> +	MPP2_SPI_SCK, \
> +	MPP3_SPI_MISO, \
> +	MPP4_NF_IO6, \
> +	MPP5_NF_IO7, \
> +	MPP6_SYSRST_OUTn, \
> +	MPP7_GPO,		/* Fan speed (bit 1) */ \
> +	MPP8_TW_SDA, \
> +	MPP9_TW_SCK, \
> +	MPP10_UART0_TXD, \
> +	MPP11_UART0_RXD, \
> +	MPP12_GPO,		/* Red led */ \
> +	MPP14_GPIO,		/* USB fuse */ \
> +	MPP16_GPIO,		/* SATA 0 power */ \
> +	MPP17_GPIO,		/* SATA 1 power */ \
> +	MPP18_NF_IO0, \
> +	MPP19_NF_IO1, \
> +	MPP20_SATA1_ACTn, \
> +	MPP21_SATA0_ACTn, \
> +	MPP22_GPIO,		/* Fan speed (bit 0) */ \
> +	MPP23_GPIO,		/* Fan power */ \
> +	MPP24_GPIO,		/* USB mode select */ \
> +	MPP25_GPIO,		/* Fan rotation fail */ \
> +	MPP26_GPIO,		/* USB vbus-in detection */ \
> +	MPP28_GPIO,		/* USB enable vbus-out */ \
> +	MPP29_GPIO,		/* Blue led (slow register) */ \
> +	MPP30_GPIO,		/* Blue led (command register) */ \
> +	MPP31_GPIO,		/* Board power off */ \
> +	MPP32_GPIO,		/* Button (0 = Released, 1 = Pushed) */ \
> +	MPP33_GPIO,		/* Fan speed (bit 2) */ \
> +	0 \
> +	}
> +
> +#elif defined(CONFIG_WIRELESS_SPACE)
> +
> +#define NETSPACE_V2_MPP_CONFIG	{ \
> +	MPP0_NF_IO2, \
> +	MPP1_NF_IO3, \
> +	MPP2_NF_IO4, \
> +	MPP3_NF_IO5, \
> +	MPP4_NF_IO6, \
> +	MPP5_NF_IO7, \
> +	MPP6_SYSRST_OUTn, \
> +	MPP7_GPO,		/* Fan speed (bit 1) */ \
> +	MPP8_TW_SDA, \
> +	MPP9_TW_SCK, \
> +	MPP10_UART0_TXD, \
> +	MPP11_UART0_RXD, \
> +	MPP13_GPIO,		/* Red led */ \
> +	MPP14_GPIO,		/* USB fuse */ \
> +	MPP15_SATA0_ACTn, \
> +	MPP16_GPIO,		/* SATA 0 power */ \
> +	MPP17_GPIO,		/* SATA 1 power */ \
> +	MPP18_NF_IO0, \
> +	MPP19_NF_IO1, \
> +	MPP20_GE1_0,		/* Gigabit Ethernet 1 */ \
> +	MPP21_GE1_1, \
> +	MPP22_GE1_2, \
> +	MPP23_GE1_3, \
> +	MPP24_GE1_4, \
> +	MPP25_GE1_5, \
> +	MPP26_GE1_6, \
> +	MPP27_GE1_7, \
> +	MPP28_GE1_8, \
> +	MPP29_GE1_9, \
> +	MPP30_GE1_10, \
> +	MPP31_GE1_11, \
> +	MPP32_GE1_12, \
> +	MPP33_GE1_13, \
> +	MPP34_GE1_14, \
> +	MPP35_GE1_15, \
> +	MPP36_GPIO,		/* Fan speed (bit 2) */ \
> +	MPP37_GPIO,		/* Fan speed (bit 0) */ \
> +	MPP38_GPIO,		/* Fan power */ \
> +	MPP39_GPIO,		/* Fan rotation fail */ \
> +	MPP40_GPIO,		/* Ethernet switch link */ \
> +	MPP41_GPIO,		/* USB enable host vbus */ \
> +	MPP42_GPIO,		/* LED clock control */ \
> +	MPP43_GPIO,		/* WPS button (0=Pushed, 1=Released) */ \
> +	MPP44_GPIO,		/* Red LED on/off */ \
> +	MPP45_GPIO,		/* Red LED timer blink (on=off=100ms) */ \
> +	MPP46_GPIO,		/* Green LED on/off */ \
> +	MPP47_GPIO,		/* LED (blue, green) SATA activity blink */ \
> +	MPP48_GPIO,		/* Blue LED on/off */ \
> +	0 \
> +	}
> +
> +#endif
> +
>  #endif /* NETSPACE_V2_H */
> diff --git a/boards.cfg b/boards.cfg
> index d467f56..3f49b18 100644
> --- a/boards.cfg
> +++ b/boards.cfg
> @@ -168,6 +168,7 @@ netspace_lite_v2             arm         arm926ejs   netspace_v2         LaCie
>  netspace_max_v2              arm         arm926ejs   netspace_v2         LaCie          kirkwood	lacie_kw:NETSPACE_MAX_V2
>  netspace_mini_v2             arm         arm926ejs   netspace_v2         LaCie          kirkwood	lacie_kw:NETSPACE_MINI_V2
>  netspace_v2                  arm         arm926ejs   netspace_v2         LaCie          kirkwood	lacie_kw:NETSPACE_V2
> +wireless_space               arm         arm926ejs   netspace_v2         LaCie          kirkwood	lacie_kw:WIRELESS_SPACE
>  dreamplug                    arm         arm926ejs   -                   Marvell        kirkwood
>  guruplug                     arm         arm926ejs   -                   Marvell        kirkwood
>  mv88f6281gtw_ge              arm         arm926ejs   -                   Marvell        kirkwood
> diff --git a/include/configs/lacie_kw.h b/include/configs/lacie_kw.h
> index 09b5798..fdbc785 100644
> --- a/include/configs/lacie_kw.h
> +++ b/include/configs/lacie_kw.h
> @@ -44,6 +44,10 @@
>  #elif defined(CONFIG_NET2BIG_V2)
>  #define CONFIG_MACH_TYPE		MACH_TYPE_NET2BIG_V2
>  #define CONFIG_IDENT_STRING		" 2Big v2"
> +#elif defined(CONFIG_WIRELESS_SPACE)
> +#define MACH_TYPE_WIRELESS_SPACE	2500 /* is missing in mach-types.h */
> +#define CONFIG_MACH_TYPE		MACH_TYPE_WIRELESS_SPACE
> +#define CONFIG_IDENT_STRING		" Wireless Space"
>  #else
>  #error "Unknown board"
>  #endif
> @@ -96,6 +100,12 @@
>  #define CONFIG_SYS_KWD_CONFIG $(SRCTREE)/$(CONFIG_BOARDDIR)/kwbimage-ns2l.cfg
>  #endif
>  
> +#ifdef CONFIG_WIRELESS_SPACE
> +/* No SPI but NAND */
> +#undef CONFIG_CMD_SF
> +#define CONFIG_CMD_NAND
> +#endif
> +
>  /*
>   * mv-common.h should be defined after CMD configs since it used them
>   * to enable certain macros
> @@ -115,8 +125,14 @@
>  #define CONFIG_SYS_PROMPT		"d2v2> "
>  #elif defined(CONFIG_NET2BIG_V2)
>  #define CONFIG_SYS_PROMPT		"2big2> "
> -#else
> +#elif defined(CONFIG_NETSPACE_V2)
>  #define CONFIG_SYS_PROMPT		"ns2> "
> +#elif defined(CONFIG_INETSPACE_V2)
> +#define CONFIG_SYS_PROMPT		"is2> "
> +#elif defined(CONFIG_WIRELESS_SPACE)
> +#define CONFIG_SYS_PROMPT		"ws> "
> +#else
> +#define CONFIG_SYS_PROMPT		"lacie-kw> "

Maybe you may add here the prompts for the ns2mini and ns2lite boards.
Also, we could move all the prompts with the machine number definitions.
This would allow to remove a couple of ifdef statements.

>  #endif
>  
>  /*
> @@ -124,9 +140,22 @@
>   */
>  #ifdef CONFIG_CMD_NET
>  #define CONFIG_MISC_INIT_R /* Call misc_init_r() to initialize MAC address */
> +#if defined(CONFIG_WIRELESS_SPACE)
> +#define CONFIG_MVGBE_PORTS		{1, 1}	/* enable both ports */
> +#define CONFIG_EGIGA1_PHY		0x6	/* ONLY egiga1 has a PHY */
> +#define CONFIG_MVGBE_PHY_ADRS	{0xa, 0x6}
> +#define CONFIG_MII
> +#define CONFIG_SYS_FAULT_ECHO_LINK_DOWN
> +#else
>  #define CONFIG_MVGBE_PORTS		{1, 0} /* enable port 0 only */
> -#define CONFIG_NETCONSOLE
> +#if defined(CONFIG_NETSPACE_LITE_V2) || defined(CONFIG_NETSPACE_MINI_V2)
> +#define CONFIG_EGIGA0_PHY		0x0
> +#else
> +#define CONFIG_EGIGA0_PHY		0x8
>  #endif
> +#endif /* CONFIG_WIRELESS_SPACE */
> +#define CONFIG_NETCONSOLE
> +#endif /* CONFIG_CMD_NET */
>  
>  /*
>   * SATA Driver configuration
> @@ -186,11 +215,20 @@
>  /*
>   * Environment variables configurations
>   */
> +
> +#if defined(CONFIG_WIRELESS_SPACE)
> +#define CONFIG_ENV_IS_IN_NAND
> +#define CONFIG_ENV_SECT_SIZE		0x10000	/* 64KB */
> +#define CONFIG_ENV_SIZE			0x1000	/* 4KB */
> +#define CONFIG_ENV_ADDR			0x70000
> +#define CONFIG_ENV_OFFSET		0x70000	/* env starts here */
> +#else
>  #define CONFIG_ENV_IS_IN_SPI_FLASH
>  #define CONFIG_ENV_SECT_SIZE		0x10000	/* 64KB */
>  #define CONFIG_ENV_SIZE			0x1000	/* 4KB */
>  #define CONFIG_ENV_ADDR			0x70000
>  #define CONFIG_ENV_OFFSET		0x70000	/* env starts here */
> +#endif

There is some reason for the duplicate lines here ?

Regards,

Simon
Albert ARIBAUD - Oct. 27, 2012, 12:11 p.m.
Hi Simon,

On Sat, 20 Oct 2012 02:17:23 +0200, Simon Guinot
<simon.guinot@sequanux.org> wrote:

> I think you missed here a couple of 'defined()' for the boards ns2lite
> and ns2mini.

Correct. However:

> Moreover, don't you think that the Wireless Space could have his own
> board files ? I mean, there is almost no common hardware between ws and
> ns2 boards. I think it is confusing to have NETSPACE_V2_ macros to
> designate MPP and GPIO configuration for both ns2 and ws.

Well, I'd tried to keep as much in common as possible between
lacie_kw-based boards which seem to differ only in gpio and eth
settings, and in the type of FLASH they use. But I'm ok with
duplicating the few functions in netspace_v2.* if you prefer.

> > +#if defined(CONFIG_WIRELESS_SPACE)
> > +#define CONFIG_ENV_IS_IN_NAND
> > +#define CONFIG_ENV_SECT_SIZE		0x10000	/* 64KB */
> > +#define CONFIG_ENV_SIZE			0x1000	/* 4KB */
> > +#define CONFIG_ENV_ADDR			0x70000
> > +#define CONFIG_ENV_OFFSET		0x70000	/* env starts here */
> > +#else
> >  #define CONFIG_ENV_IS_IN_SPI_FLASH
> >  #define CONFIG_ENV_SECT_SIZE		0x10000	/* 64KB */
> >  #define CONFIG_ENV_SIZE			0x1000	/* 4KB */
> >  #define CONFIG_ENV_ADDR			0x70000
> >  #define CONFIG_ENV_OFFSET		0x70000	/* env starts here */
> > +#endif
> 
> There is some reason for the duplicate lines here ?

Yes: overlook. :)

But this, as well as the missed defined() cases above, does not matter
much, as I'll duplicate the config in V3 and the whole if/else
constructs are thus going away.

> Regards,
> 
> Simon

Thanks for your feedback!

Amicalement,

Patch

diff --git a/board/LaCie/netspace_v2/netspace_v2.c b/board/LaCie/netspace_v2/netspace_v2.c
index 101a80a..084f0cf 100644
--- a/board/LaCie/netspace_v2/netspace_v2.c
+++ b/board/LaCie/netspace_v2/netspace_v2.c
@@ -39,40 +39,7 @@  int board_early_init_f(void)
 			NETSPACE_V2_OE_LOW, NETSPACE_V2_OE_HIGH);
 
 	/* Multi-Purpose Pins Functionality configuration */
-	u32 kwmpp_config[] = {
-		MPP0_SPI_SCn,
-		MPP1_SPI_MOSI,
-		MPP2_SPI_SCK,
-		MPP3_SPI_MISO,
-		MPP4_NF_IO6,
-		MPP5_NF_IO7,
-		MPP6_SYSRST_OUTn,
-		MPP7_GPO,		/* Fan speed (bit 1) */
-		MPP8_TW_SDA,
-		MPP9_TW_SCK,
-		MPP10_UART0_TXD,
-		MPP11_UART0_RXD,
-		MPP12_GPO,		/* Red led */
-		MPP14_GPIO,		/* USB fuse */
-		MPP16_GPIO,		/* SATA 0 power */
-		MPP17_GPIO,		/* SATA 1 power */
-		MPP18_NF_IO0,
-		MPP19_NF_IO1,
-		MPP20_SATA1_ACTn,
-		MPP21_SATA0_ACTn,
-		MPP22_GPIO,		/* Fan speed (bit 0) */
-		MPP23_GPIO,		/* Fan power */
-		MPP24_GPIO,		/* USB mode select */
-		MPP25_GPIO,		/* Fan rotation fail */
-		MPP26_GPIO,		/* USB vbus-in detection */
-		MPP28_GPIO,		/* USB enable vbus-out */
-		MPP29_GPIO,		/* Blue led (slow register) */
-		MPP30_GPIO,		/* Blue led (command register) */
-		MPP31_GPIO,		/* Board power off */
-		MPP32_GPIO,		/* Button (0 = Released, 1 = Pushed) */
-		MPP33_GPIO,		/* Fan speed (bit 2) */
-		0
-	};
+	u32 kwmpp_config[] = NETSPACE_V2_MPP_CONFIG;
 	kirkwood_mpp_conf(kwmpp_config, NULL);
 
 	return 0;
@@ -107,10 +74,11 @@  int misc_init_r(void)
 /* Configure and initialize PHY */
 void reset_phy(void)
 {
-#if defined(CONFIG_NETSPACE_LITE_V2) || defined(CONFIG_NETSPACE_MINI_V2)
-	mv_phy_88e1318_init("egiga0", 0);
-#else
-	mv_phy_88e1116_init("egiga0", 8);
+#ifdef CONFIG_EGIGA0_PHY
+	mv_phy_88e1116_init("egiga0", CONFIG_EGIGA0_PHY);
+#endif
+#ifdef CONFIG_EGIGA1_PHY
+	mv_phy_88e1116_init("egiga1", CONFIG_EGIGA1_PHY);
 #endif
 }
 #endif
diff --git a/board/LaCie/netspace_v2/netspace_v2.h b/board/LaCie/netspace_v2/netspace_v2.h
index 34e492c..1f0eefd 100644
--- a/board/LaCie/netspace_v2/netspace_v2.h
+++ b/board/LaCie/netspace_v2/netspace_v2.h
@@ -24,11 +24,132 @@ 
 #define NETSPACE_V2_H
 
 /* GPIO configuration */
+
+/* Net Space V2, Net Space Max V2, Internet Space V2: */
+#if defined(CONFIG_NETSPACE_MAX_V2) \
+	|| defined(CONFIG_NETSPACE_V2) \
+	|| defined(CONFIG_NET2BIG_V2) \
+	|| defined(CONFIG_INETSPACE_V2)
+
 #define NETSPACE_V2_OE_LOW		0x06004000
 #define NETSPACE_V2_OE_HIGH		0x00000031
 #define NETSPACE_V2_OE_VAL_LOW		0x10030000
 #define NETSPACE_V2_OE_VAL_HIGH		0x00000000
 
+/* Wireless Space */
+
+#elif defined(CONFIG_WIRELESS_SPACE)
+
+#define NETSPACE_V2_OE_LOW		0xFF006808
+#define NETSPACE_V2_OE_HIGH		0x0000F989
+#define NETSPACE_V2_OE_VAL_LOW		0x00000000
+#define NETSPACE_V2_OE_VAL_HIGH		0x00000000
+
+#else
+
+#error Undefined or unsupported LaCie KW board variant
+
+#endif
+
 #define NETSPACE_V2_GPIO_BUTTON         32
 
+/* MPP configuration */
+
+/* Net Space V2, Net Space Max V2, Internet Space V2: */
+#if defined(CONFIG_NETSPACE_MAX_V2) \
+	|| defined(CONFIG_NETSPACE_V2) \
+	|| defined(CONFIG_NET2BIG_V2) \
+	|| defined(CONFIG_INETSPACE_V2)
+
+#define NETSPACE_V2_MPP_CONFIG	{ \
+	MPP0_SPI_SCn, \
+	MPP1_SPI_MOSI, \
+	MPP2_SPI_SCK, \
+	MPP3_SPI_MISO, \
+	MPP4_NF_IO6, \
+	MPP5_NF_IO7, \
+	MPP6_SYSRST_OUTn, \
+	MPP7_GPO,		/* Fan speed (bit 1) */ \
+	MPP8_TW_SDA, \
+	MPP9_TW_SCK, \
+	MPP10_UART0_TXD, \
+	MPP11_UART0_RXD, \
+	MPP12_GPO,		/* Red led */ \
+	MPP14_GPIO,		/* USB fuse */ \
+	MPP16_GPIO,		/* SATA 0 power */ \
+	MPP17_GPIO,		/* SATA 1 power */ \
+	MPP18_NF_IO0, \
+	MPP19_NF_IO1, \
+	MPP20_SATA1_ACTn, \
+	MPP21_SATA0_ACTn, \
+	MPP22_GPIO,		/* Fan speed (bit 0) */ \
+	MPP23_GPIO,		/* Fan power */ \
+	MPP24_GPIO,		/* USB mode select */ \
+	MPP25_GPIO,		/* Fan rotation fail */ \
+	MPP26_GPIO,		/* USB vbus-in detection */ \
+	MPP28_GPIO,		/* USB enable vbus-out */ \
+	MPP29_GPIO,		/* Blue led (slow register) */ \
+	MPP30_GPIO,		/* Blue led (command register) */ \
+	MPP31_GPIO,		/* Board power off */ \
+	MPP32_GPIO,		/* Button (0 = Released, 1 = Pushed) */ \
+	MPP33_GPIO,		/* Fan speed (bit 2) */ \
+	0 \
+	}
+
+#elif defined(CONFIG_WIRELESS_SPACE)
+
+#define NETSPACE_V2_MPP_CONFIG	{ \
+	MPP0_NF_IO2, \
+	MPP1_NF_IO3, \
+	MPP2_NF_IO4, \
+	MPP3_NF_IO5, \
+	MPP4_NF_IO6, \
+	MPP5_NF_IO7, \
+	MPP6_SYSRST_OUTn, \
+	MPP7_GPO,		/* Fan speed (bit 1) */ \
+	MPP8_TW_SDA, \
+	MPP9_TW_SCK, \
+	MPP10_UART0_TXD, \
+	MPP11_UART0_RXD, \
+	MPP13_GPIO,		/* Red led */ \
+	MPP14_GPIO,		/* USB fuse */ \
+	MPP15_SATA0_ACTn, \
+	MPP16_GPIO,		/* SATA 0 power */ \
+	MPP17_GPIO,		/* SATA 1 power */ \
+	MPP18_NF_IO0, \
+	MPP19_NF_IO1, \
+	MPP20_GE1_0,		/* Gigabit Ethernet 1 */ \
+	MPP21_GE1_1, \
+	MPP22_GE1_2, \
+	MPP23_GE1_3, \
+	MPP24_GE1_4, \
+	MPP25_GE1_5, \
+	MPP26_GE1_6, \
+	MPP27_GE1_7, \
+	MPP28_GE1_8, \
+	MPP29_GE1_9, \
+	MPP30_GE1_10, \
+	MPP31_GE1_11, \
+	MPP32_GE1_12, \
+	MPP33_GE1_13, \
+	MPP34_GE1_14, \
+	MPP35_GE1_15, \
+	MPP36_GPIO,		/* Fan speed (bit 2) */ \
+	MPP37_GPIO,		/* Fan speed (bit 0) */ \
+	MPP38_GPIO,		/* Fan power */ \
+	MPP39_GPIO,		/* Fan rotation fail */ \
+	MPP40_GPIO,		/* Ethernet switch link */ \
+	MPP41_GPIO,		/* USB enable host vbus */ \
+	MPP42_GPIO,		/* LED clock control */ \
+	MPP43_GPIO,		/* WPS button (0=Pushed, 1=Released) */ \
+	MPP44_GPIO,		/* Red LED on/off */ \
+	MPP45_GPIO,		/* Red LED timer blink (on=off=100ms) */ \
+	MPP46_GPIO,		/* Green LED on/off */ \
+	MPP47_GPIO,		/* LED (blue, green) SATA activity blink */ \
+	MPP48_GPIO,		/* Blue LED on/off */ \
+	0 \
+	}
+
+#endif
+
 #endif /* NETSPACE_V2_H */
diff --git a/boards.cfg b/boards.cfg
index d467f56..3f49b18 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -168,6 +168,7 @@  netspace_lite_v2             arm         arm926ejs   netspace_v2         LaCie
 netspace_max_v2              arm         arm926ejs   netspace_v2         LaCie          kirkwood	lacie_kw:NETSPACE_MAX_V2
 netspace_mini_v2             arm         arm926ejs   netspace_v2         LaCie          kirkwood	lacie_kw:NETSPACE_MINI_V2
 netspace_v2                  arm         arm926ejs   netspace_v2         LaCie          kirkwood	lacie_kw:NETSPACE_V2
+wireless_space               arm         arm926ejs   netspace_v2         LaCie          kirkwood	lacie_kw:WIRELESS_SPACE
 dreamplug                    arm         arm926ejs   -                   Marvell        kirkwood
 guruplug                     arm         arm926ejs   -                   Marvell        kirkwood
 mv88f6281gtw_ge              arm         arm926ejs   -                   Marvell        kirkwood
diff --git a/include/configs/lacie_kw.h b/include/configs/lacie_kw.h
index 09b5798..fdbc785 100644
--- a/include/configs/lacie_kw.h
+++ b/include/configs/lacie_kw.h
@@ -44,6 +44,10 @@ 
 #elif defined(CONFIG_NET2BIG_V2)
 #define CONFIG_MACH_TYPE		MACH_TYPE_NET2BIG_V2
 #define CONFIG_IDENT_STRING		" 2Big v2"
+#elif defined(CONFIG_WIRELESS_SPACE)
+#define MACH_TYPE_WIRELESS_SPACE	2500 /* is missing in mach-types.h */
+#define CONFIG_MACH_TYPE		MACH_TYPE_WIRELESS_SPACE
+#define CONFIG_IDENT_STRING		" Wireless Space"
 #else
 #error "Unknown board"
 #endif
@@ -96,6 +100,12 @@ 
 #define CONFIG_SYS_KWD_CONFIG $(SRCTREE)/$(CONFIG_BOARDDIR)/kwbimage-ns2l.cfg
 #endif
 
+#ifdef CONFIG_WIRELESS_SPACE
+/* No SPI but NAND */
+#undef CONFIG_CMD_SF
+#define CONFIG_CMD_NAND
+#endif
+
 /*
  * mv-common.h should be defined after CMD configs since it used them
  * to enable certain macros
@@ -115,8 +125,14 @@ 
 #define CONFIG_SYS_PROMPT		"d2v2> "
 #elif defined(CONFIG_NET2BIG_V2)
 #define CONFIG_SYS_PROMPT		"2big2> "
-#else
+#elif defined(CONFIG_NETSPACE_V2)
 #define CONFIG_SYS_PROMPT		"ns2> "
+#elif defined(CONFIG_INETSPACE_V2)
+#define CONFIG_SYS_PROMPT		"is2> "
+#elif defined(CONFIG_WIRELESS_SPACE)
+#define CONFIG_SYS_PROMPT		"ws> "
+#else
+#define CONFIG_SYS_PROMPT		"lacie-kw> "
 #endif
 
 /*
@@ -124,9 +140,22 @@ 
  */
 #ifdef CONFIG_CMD_NET
 #define CONFIG_MISC_INIT_R /* Call misc_init_r() to initialize MAC address */
+#if defined(CONFIG_WIRELESS_SPACE)
+#define CONFIG_MVGBE_PORTS		{1, 1}	/* enable both ports */
+#define CONFIG_EGIGA1_PHY		0x6	/* ONLY egiga1 has a PHY */
+#define CONFIG_MVGBE_PHY_ADRS	{0xa, 0x6}
+#define CONFIG_MII
+#define CONFIG_SYS_FAULT_ECHO_LINK_DOWN
+#else
 #define CONFIG_MVGBE_PORTS		{1, 0} /* enable port 0 only */
-#define CONFIG_NETCONSOLE
+#if defined(CONFIG_NETSPACE_LITE_V2) || defined(CONFIG_NETSPACE_MINI_V2)
+#define CONFIG_EGIGA0_PHY		0x0
+#else
+#define CONFIG_EGIGA0_PHY		0x8
 #endif
+#endif /* CONFIG_WIRELESS_SPACE */
+#define CONFIG_NETCONSOLE
+#endif /* CONFIG_CMD_NET */
 
 /*
  * SATA Driver configuration
@@ -186,11 +215,20 @@ 
 /*
  * Environment variables configurations
  */
+
+#if defined(CONFIG_WIRELESS_SPACE)
+#define CONFIG_ENV_IS_IN_NAND
+#define CONFIG_ENV_SECT_SIZE		0x10000	/* 64KB */
+#define CONFIG_ENV_SIZE			0x1000	/* 4KB */
+#define CONFIG_ENV_ADDR			0x70000
+#define CONFIG_ENV_OFFSET		0x70000	/* env starts here */
+#else
 #define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SECT_SIZE		0x10000	/* 64KB */
 #define CONFIG_ENV_SIZE			0x1000	/* 4KB */
 #define CONFIG_ENV_ADDR			0x70000
 #define CONFIG_ENV_OFFSET		0x70000	/* env starts here */
+#endif
 
 /*
  * Default environment variables