Patchwork [U-Boot,v4,3/4] kirkwood: make MPP arrays static const

login
register
mail settings
Submitter Albert ARIBAUD
Date Nov. 4, 2012, 11:32 p.m.
Message ID <1352071924-20268-3-git-send-email-albert.u.boot@aribaud.net>
Download mbox | patch
Permalink /patch/197117/
State Superseded
Delegated to: Prafulla Wadaskar
Headers show

Comments

Albert ARIBAUD - Nov. 4, 2012, 11:32 p.m.
This saves stack and code memory for local copy, and
consumes initialized data memory. For 22 of the 29
kirkwood-based boards, this results in a global saving
of about 30 bytes. For 7 of them, it results in an
increase of 6 to 14 bytes.

Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
---

 arch/arm/cpu/arm926ejs/kirkwood/mpp.c           |    2 +-
 arch/arm/include/asm/arch-kirkwood/mpp.h        |    2 +-
 board/LaCie/net2big_v2/net2big_v2.c             |    2 +-
 board/LaCie/netspace_v2/netspace_v2.c           |    2 +-
 board/Marvell/dreamplug/dreamplug.c             |    2 +-
 board/Marvell/guruplug/guruplug.c               |    2 +-
 board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c |    2 +-
 board/Marvell/openrd/openrd.c                   |    2 +-
 board/Marvell/rd6281a/rd6281a.c                 |    2 +-
 board/Marvell/sheevaplug/sheevaplug.c           |    2 +-
 board/Seagate/dockstar/dockstar.c               |    2 +-
 board/buffalo/lsxl/lsxl.c                       |    2 +-
 board/cloudengines/pogo_e02/pogo_e02.c          |    2 +-
 board/d-link/dns325/dns325.c                    |    2 +-
 board/iomega/iconnect/iconnect.c                |    2 +-
 board/karo/tk71/tk71.c                          |    2 +-
 board/keymile/km_arm/km_arm.c                   |    2 +-
 board/raidsonic/ib62x0/ib62x0.c                 |    2 +-
 drivers/spi/kirkwood_spi.c                      |   12 +++++-------
 19 files changed, 23 insertions(+), 25 deletions(-)
Prafulla Wadaskar - Nov. 10, 2012, 7:02 a.m.
> -----Original Message-----
> From: Albert ARIBAUD [mailto:albert.u.boot@aribaud.net]
> Sent: 05 November 2012 05:02
> To: U-Boot
> Cc: Prafulla Wadaskar; Simon Guinot; Albert ARIBAUD
> Subject: [PATCH v4 3/4] kirkwood: make MPP arrays static const
> 
> This saves stack and code memory for local copy, and
> consumes initialized data memory. For 22 of the 29
> kirkwood-based boards, this results in a global saving
> of about 30 bytes. For 7 of them, it results in an
> increase of 6 to 14 bytes.

First of all Thanks for this patch.

> 
> Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
> ---
> 
>  arch/arm/cpu/arm926ejs/kirkwood/mpp.c           |    2 +-
>  arch/arm/include/asm/arch-kirkwood/mpp.h        |    2 +-
>  board/LaCie/net2big_v2/net2big_v2.c             |    2 +-
>  board/LaCie/netspace_v2/netspace_v2.c           |    2 +-
>  board/Marvell/dreamplug/dreamplug.c             |    2 +-
>  board/Marvell/guruplug/guruplug.c               |    2 +-
>  board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c |    2 +-
>  board/Marvell/openrd/openrd.c                   |    2 +-
>  board/Marvell/rd6281a/rd6281a.c                 |    2 +-
>  board/Marvell/sheevaplug/sheevaplug.c           |    2 +-
>  board/Seagate/dockstar/dockstar.c               |    2 +-
>  board/buffalo/lsxl/lsxl.c                       |    2 +-
>  board/cloudengines/pogo_e02/pogo_e02.c          |    2 +-
>  board/d-link/dns325/dns325.c                    |    2 +-
>  board/iomega/iconnect/iconnect.c                |    2 +-
>  board/karo/tk71/tk71.c                          |    2 +-
>  board/keymile/km_arm/km_arm.c                   |    2 +-
>  board/raidsonic/ib62x0/ib62x0.c                 |    2 +-
>  drivers/spi/kirkwood_spi.c                      |   12 +++++-------
>  19 files changed, 23 insertions(+), 25 deletions(-)
> 
> diff --git a/arch/arm/cpu/arm926ejs/kirkwood/mpp.c
> b/arch/arm/cpu/arm926ejs/kirkwood/mpp.c
> index 03eb2de..0ba6f09 100644
> --- a/arch/arm/cpu/arm926ejs/kirkwood/mpp.c
> +++ b/arch/arm/cpu/arm926ejs/kirkwood/mpp.c
> @@ -31,7 +31,7 @@ static u32 kirkwood_variant(void)
>  #define MPP_CTRL(i)	(KW_MPP_BASE + (i* 4))
>  #define MPP_NR_REGS	(1 + MPP_MAX/8)
> 
> -void kirkwood_mpp_conf(u32 *mpp_list, u32 *mpp_save)
> +void kirkwood_mpp_conf(const u32 *mpp_list, u32 *mpp_save)
>  {
>  	u32 mpp_ctrl[MPP_NR_REGS];
>  	unsigned int variant_mask;
> diff --git a/arch/arm/include/asm/arch-kirkwood/mpp.h
> b/arch/arm/include/asm/arch-kirkwood/mpp.h
> index 8ceea7b..48d1477 100644
> --- a/arch/arm/include/asm/arch-kirkwood/mpp.h
> +++ b/arch/arm/include/asm/arch-kirkwood/mpp.h
> @@ -312,6 +312,6 @@
> 
>  #define MPP_MAX			49
> 
> -void kirkwood_mpp_conf(u32 *mpp_list, u32 *mpp_save);
> +void kirkwood_mpp_conf(const u32 *mpp_list, u32 *mpp_save);
> 
>  #endif
> diff --git a/board/LaCie/net2big_v2/net2big_v2.c
> b/board/LaCie/net2big_v2/net2big_v2.c
> index 0e06c29..e524f35 100644
> --- a/board/LaCie/net2big_v2/net2big_v2.c
> +++ b/board/LaCie/net2big_v2/net2big_v2.c
> @@ -39,7 +39,7 @@ int board_early_init_f(void)
>  			NET2BIG_V2_OE_LOW, NET2BIG_V2_OE_HIGH);
> 
>  	/* Multi-Purpose Pins Functionality configuration */
> -	u32 kwmpp_config[] = {
> +	static const u32 kwmpp_config[] = {
>  		MPP0_SPI_SCn,
>  		MPP1_SPI_MOSI,
>  		MPP2_SPI_SCK,
> diff --git a/board/LaCie/netspace_v2/netspace_v2.c
> b/board/LaCie/netspace_v2/netspace_v2.c
> index 101a80a..0aa5345 100644
> --- a/board/LaCie/netspace_v2/netspace_v2.c
> +++ b/board/LaCie/netspace_v2/netspace_v2.c
> @@ -39,7 +39,7 @@ int board_early_init_f(void)
>  			NETSPACE_V2_OE_LOW, NETSPACE_V2_OE_HIGH);
> 
>  	/* Multi-Purpose Pins Functionality configuration */
> -	u32 kwmpp_config[] = {
> +	static const u32 kwmpp_config[] = {
>  		MPP0_SPI_SCn,
>  		MPP1_SPI_MOSI,
>  		MPP2_SPI_SCK,
> diff --git a/board/Marvell/dreamplug/dreamplug.c
> b/board/Marvell/dreamplug/dreamplug.c
> index d6497aa..0caf34f 100644
> --- a/board/Marvell/dreamplug/dreamplug.c
> +++ b/board/Marvell/dreamplug/dreamplug.c
> @@ -46,7 +46,7 @@ int board_early_init_f(void)
>  			DREAMPLUG_OE_LOW, DREAMPLUG_OE_HIGH);
> 
>  	/* Multi-Purpose Pins Functionality configuration */
> -	u32 kwmpp_config[] = {
> +	static const u32 kwmpp_config[] = {
>  		MPP0_SPI_SCn,		/* SPI Flash */
>  		MPP1_SPI_MOSI,
>  		MPP2_SPI_SCK,
> diff --git a/board/Marvell/guruplug/guruplug.c
> b/board/Marvell/guruplug/guruplug.c
> index f5c1c3c..3a52ab2 100644
> --- a/board/Marvell/guruplug/guruplug.c
> +++ b/board/Marvell/guruplug/guruplug.c
> @@ -43,7 +43,7 @@ int board_early_init_f(void)
>  			GURUPLUG_OE_LOW, GURUPLUG_OE_HIGH);
> 
>  	/* Multi-Purpose Pins Functionality configuration */
> -	u32 kwmpp_config[] = {
> +	static const u32 kwmpp_config[] = {
>  		MPP0_NF_IO2,
>  		MPP1_NF_IO3,
>  		MPP2_NF_IO4,
> diff --git a/board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c
> b/board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c
> index 43852f6..fb57faa 100644
> --- a/board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c
> +++ b/board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c
> @@ -45,7 +45,7 @@ int board_early_init_f(void)
>  			MV88F6281GTW_GE_OE_LOW, MV88F6281GTW_GE_OE_HIGH);
> 
>  	/* Multi-Purpose Pins Functionality configuration */
> -	u32 kwmpp_config[] = {
> +	static const u32 kwmpp_config[] = {
>  		MPP0_SPI_SCn,
>  		MPP1_SPI_MOSI,
>  		MPP2_SPI_SCK,
> diff --git a/board/Marvell/openrd/openrd.c
> b/board/Marvell/openrd/openrd.c
> index d48f05a..c59a326 100644
> --- a/board/Marvell/openrd/openrd.c
> +++ b/board/Marvell/openrd/openrd.c
> @@ -48,7 +48,7 @@ int board_early_init_f(void)
>  			OPENRD_OE_LOW, OPENRD_OE_HIGH);
> 
>  	/* Multi-Purpose Pins Functionality configuration */
> -	u32 kwmpp_config[] = {
> +	static const u32 kwmpp_config[] = {
>  		MPP0_NF_IO2,
>  		MPP1_NF_IO3,
>  		MPP2_NF_IO4,
> diff --git a/board/Marvell/rd6281a/rd6281a.c
> b/board/Marvell/rd6281a/rd6281a.c
> index 1fd7677..adaa6a1 100644
> --- a/board/Marvell/rd6281a/rd6281a.c
> +++ b/board/Marvell/rd6281a/rd6281a.c
> @@ -44,7 +44,7 @@ int board_early_init_f(void)
>  			RD6281A_OE_LOW, RD6281A_OE_HIGH);
> 
>  	/* Multi-Purpose Pins Functionality configuration */
> -	u32 kwmpp_config[] = {
> +	static const u32 kwmpp_config[] = {
>  		MPP0_NF_IO2,
>  		MPP1_NF_IO3,
>  		MPP2_NF_IO4,
> diff --git a/board/Marvell/sheevaplug/sheevaplug.c
> b/board/Marvell/sheevaplug/sheevaplug.c
> index 688d308..16efe64 100644
> --- a/board/Marvell/sheevaplug/sheevaplug.c
> +++ b/board/Marvell/sheevaplug/sheevaplug.c
> @@ -43,7 +43,7 @@ int board_early_init_f(void)
>  			SHEEVAPLUG_OE_LOW, SHEEVAPLUG_OE_HIGH);
> 
>  	/* Multi-Purpose Pins Functionality configuration */
> -	u32 kwmpp_config[] = {
> +	static const u32 kwmpp_config[] = {
>  		MPP0_NF_IO2,
>  		MPP1_NF_IO3,
>  		MPP2_NF_IO4,
> diff --git a/board/Seagate/dockstar/dockstar.c
> b/board/Seagate/dockstar/dockstar.c
> index fc88520..4f1f899 100644
> --- a/board/Seagate/dockstar/dockstar.c
> +++ b/board/Seagate/dockstar/dockstar.c
> @@ -47,7 +47,7 @@ int board_early_init_f(void)
>  			DOCKSTAR_OE_LOW, DOCKSTAR_OE_HIGH);
> 
>  	/* Multi-Purpose Pins Functionality configuration */
> -	u32 kwmpp_config[] = {
> +	static const u32 kwmpp_config[] = {
>  		MPP0_NF_IO2,
>  		MPP1_NF_IO3,
>  		MPP2_NF_IO4,
> diff --git a/board/buffalo/lsxl/lsxl.c b/board/buffalo/lsxl/lsxl.c
> index 57776fb..f298020 100644
> --- a/board/buffalo/lsxl/lsxl.c
> +++ b/board/buffalo/lsxl/lsxl.c
> @@ -76,7 +76,7 @@ int board_early_init_f(void)
>  	 * Multi-Purpose Pins Functionality configuration
>  	 * These strappings are taken from the original vendor uboot port.
>  	 */
> -	u32 kwmpp_config[] = {
> +	static const u32 kwmpp_config[] = {
>  		MPP0_SPI_SCn,
>  		MPP1_SPI_MOSI,
>  		MPP2_SPI_SCK,
> diff --git a/board/cloudengines/pogo_e02/pogo_e02.c
> b/board/cloudengines/pogo_e02/pogo_e02.c
> index bac9ce5..3b1c8ec 100644
> --- a/board/cloudengines/pogo_e02/pogo_e02.c
> +++ b/board/cloudengines/pogo_e02/pogo_e02.c
> @@ -45,7 +45,7 @@ int board_early_init_f(void)
>  			POGO_E02_OE_LOW, POGO_E02_OE_HIGH);
> 
>  	/* Multi-Purpose Pins Functionality configuration */
> -	u32 kwmpp_config[] = {
> +	static const u32 kwmpp_config[] = {
>  		MPP0_NF_IO2,
>  		MPP1_NF_IO3,
>  		MPP2_NF_IO4,
> diff --git a/board/d-link/dns325/dns325.c b/board/d-
> link/dns325/dns325.c
> index 11260fe..4187901 100644
> --- a/board/d-link/dns325/dns325.c
> +++ b/board/d-link/dns325/dns325.c
> @@ -44,7 +44,7 @@ int board_early_init_f(void)
>  			DNS325_OE_LOW, DNS325_OE_HIGH);
> 
>  	/* Multi-Purpose Pins Functionality configuration */
> -	u32 kwmpp_config[] = {
> +	static const u32 kwmpp_config[] = {
>  		MPP0_NF_IO2,
>  		MPP1_NF_IO3,
>  		MPP2_NF_IO4,
> diff --git a/board/iomega/iconnect/iconnect.c
> b/board/iomega/iconnect/iconnect.c
> index 6ee2128..c253df5 100644
> --- a/board/iomega/iconnect/iconnect.c
> +++ b/board/iomega/iconnect/iconnect.c
> @@ -41,7 +41,7 @@ int board_early_init_f(void)
>  			ICONNECT_OE_LOW, ICONNECT_OE_HIGH);
> 
>  	/* Multi-Purpose Pins Functionality configuration */
> -	u32 kwmpp_config[] = {
> +	static const u32 kwmpp_config[] = {
>  		MPP0_NF_IO2,
>  		MPP1_NF_IO3,
>  		MPP2_NF_IO4,
> diff --git a/board/karo/tk71/tk71.c b/board/karo/tk71/tk71.c
> index 96410d7..7a4e7b3 100644
> --- a/board/karo/tk71/tk71.c
> +++ b/board/karo/tk71/tk71.c
> @@ -47,7 +47,7 @@ int board_early_init_f(void)
>  			TK71_OE_LOW, TK71_OE_HIGH);
> 
>  	/* Multi-Purpose Pins Functionality configuration */
> -	u32 kwmpp_config[] = {
> +	static const u32 kwmpp_config[] = {
>  		MPP0_NF_IO2,
>  		MPP1_NF_IO3,
>  		MPP2_NF_IO4,
> diff --git a/board/keymile/km_arm/km_arm.c
> b/board/keymile/km_arm/km_arm.c
> index 0c4dddc..5fc46e6 100644
> --- a/board/keymile/km_arm/km_arm.c
> +++ b/board/keymile/km_arm/km_arm.c
> @@ -54,7 +54,7 @@ DECLARE_GLOBAL_DATA_PTR;
>  #define MASK_RBI_DEFECT_16	0x01
> 
>  /* Multi-Purpose Pins Functionality configuration */
> -u32 kwmpp_config[] = {
> +static const u32 kwmpp_config[] = {
>  	MPP0_NF_IO2,
>  	MPP1_NF_IO3,
>  	MPP2_NF_IO4,
> diff --git a/board/raidsonic/ib62x0/ib62x0.c
> b/board/raidsonic/ib62x0/ib62x0.c
> index b7e6e41..1e89b55 100644
> --- a/board/raidsonic/ib62x0/ib62x0.c
> +++ b/board/raidsonic/ib62x0/ib62x0.c
> @@ -45,7 +45,7 @@ int board_early_init_f(void)
>  	/* Set SATA activity LEDs to default off */
>  	writel(MVSATAHC_LED_POLARITY_CTRL, MVSATAHC_LED_CONF_REG);
>  	/* Multi-Purpose Pins Functionality configuration */
> -	u32 kwmpp_config[] = {
> +	static const u32 kwmpp_config[] = {
>  		MPP0_NF_IO2,
>  		MPP1_NF_IO3,
>  		MPP2_NF_IO4,
> diff --git a/drivers/spi/kirkwood_spi.c b/drivers/spi/kirkwood_spi.c
> index a7cda75..de81064 100644
> --- a/drivers/spi/kirkwood_spi.c
> +++ b/drivers/spi/kirkwood_spi.c
> @@ -41,7 +41,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus,
> unsigned int cs,
>  {
>  	struct spi_slave *slave;
>  	u32 data;
> -	u32 kwspi_mpp_config[] = { 0, 0 };
> +	static const u32 kwspi_mpp_config[2][2] = {
> +		{ MPP0_SPI_SCn, 0 }, /* if cs == 0 */
> +		{ MPP7_SPI_SCn, 0 } /* if cs != 0 */
> +	};
> 
>  	if (!spi_cs_is_valid(bus, cs))
>  		return NULL;
> @@ -68,12 +71,7 @@ struct spi_slave *spi_setup_slave(unsigned int bus,
> unsigned int cs,
>  	writel(KWSPI_IRQMASK, &spireg->irq_mask);
> 
>  	/* program mpp registers to select  SPI_CSn */
> -	if (cs) {
> -		kwspi_mpp_config[0] = MPP7_SPI_SCn;
> -	} else {
> -		kwspi_mpp_config[0] = MPP0_SPI_SCn;
> -	}
> -	kirkwood_mpp_conf(kwspi_mpp_config, cs_spi_mpp_back);
> +	kirkwood_mpp_conf(kwspi_mpp_config[cs ? 1 : 0], cs_spi_mpp_back);
> 
>  	return slave;
>  }
> --

Acked-by: Prafulla Wadaskar <Prafulla@marvell.com>

Regards...
Prafulla . . .

Patch

diff --git a/arch/arm/cpu/arm926ejs/kirkwood/mpp.c b/arch/arm/cpu/arm926ejs/kirkwood/mpp.c
index 03eb2de..0ba6f09 100644
--- a/arch/arm/cpu/arm926ejs/kirkwood/mpp.c
+++ b/arch/arm/cpu/arm926ejs/kirkwood/mpp.c
@@ -31,7 +31,7 @@  static u32 kirkwood_variant(void)
 #define MPP_CTRL(i)	(KW_MPP_BASE + (i* 4))
 #define MPP_NR_REGS	(1 + MPP_MAX/8)
 
-void kirkwood_mpp_conf(u32 *mpp_list, u32 *mpp_save)
+void kirkwood_mpp_conf(const u32 *mpp_list, u32 *mpp_save)
 {
 	u32 mpp_ctrl[MPP_NR_REGS];
 	unsigned int variant_mask;
diff --git a/arch/arm/include/asm/arch-kirkwood/mpp.h b/arch/arm/include/asm/arch-kirkwood/mpp.h
index 8ceea7b..48d1477 100644
--- a/arch/arm/include/asm/arch-kirkwood/mpp.h
+++ b/arch/arm/include/asm/arch-kirkwood/mpp.h
@@ -312,6 +312,6 @@ 
 
 #define MPP_MAX			49
 
-void kirkwood_mpp_conf(u32 *mpp_list, u32 *mpp_save);
+void kirkwood_mpp_conf(const u32 *mpp_list, u32 *mpp_save);
 
 #endif
diff --git a/board/LaCie/net2big_v2/net2big_v2.c b/board/LaCie/net2big_v2/net2big_v2.c
index 0e06c29..e524f35 100644
--- a/board/LaCie/net2big_v2/net2big_v2.c
+++ b/board/LaCie/net2big_v2/net2big_v2.c
@@ -39,7 +39,7 @@  int board_early_init_f(void)
 			NET2BIG_V2_OE_LOW, NET2BIG_V2_OE_HIGH);
 
 	/* Multi-Purpose Pins Functionality configuration */
-	u32 kwmpp_config[] = {
+	static const u32 kwmpp_config[] = {
 		MPP0_SPI_SCn,
 		MPP1_SPI_MOSI,
 		MPP2_SPI_SCK,
diff --git a/board/LaCie/netspace_v2/netspace_v2.c b/board/LaCie/netspace_v2/netspace_v2.c
index 101a80a..0aa5345 100644
--- a/board/LaCie/netspace_v2/netspace_v2.c
+++ b/board/LaCie/netspace_v2/netspace_v2.c
@@ -39,7 +39,7 @@  int board_early_init_f(void)
 			NETSPACE_V2_OE_LOW, NETSPACE_V2_OE_HIGH);
 
 	/* Multi-Purpose Pins Functionality configuration */
-	u32 kwmpp_config[] = {
+	static const u32 kwmpp_config[] = {
 		MPP0_SPI_SCn,
 		MPP1_SPI_MOSI,
 		MPP2_SPI_SCK,
diff --git a/board/Marvell/dreamplug/dreamplug.c b/board/Marvell/dreamplug/dreamplug.c
index d6497aa..0caf34f 100644
--- a/board/Marvell/dreamplug/dreamplug.c
+++ b/board/Marvell/dreamplug/dreamplug.c
@@ -46,7 +46,7 @@  int board_early_init_f(void)
 			DREAMPLUG_OE_LOW, DREAMPLUG_OE_HIGH);
 
 	/* Multi-Purpose Pins Functionality configuration */
-	u32 kwmpp_config[] = {
+	static const u32 kwmpp_config[] = {
 		MPP0_SPI_SCn,		/* SPI Flash */
 		MPP1_SPI_MOSI,
 		MPP2_SPI_SCK,
diff --git a/board/Marvell/guruplug/guruplug.c b/board/Marvell/guruplug/guruplug.c
index f5c1c3c..3a52ab2 100644
--- a/board/Marvell/guruplug/guruplug.c
+++ b/board/Marvell/guruplug/guruplug.c
@@ -43,7 +43,7 @@  int board_early_init_f(void)
 			GURUPLUG_OE_LOW, GURUPLUG_OE_HIGH);
 
 	/* Multi-Purpose Pins Functionality configuration */
-	u32 kwmpp_config[] = {
+	static const u32 kwmpp_config[] = {
 		MPP0_NF_IO2,
 		MPP1_NF_IO3,
 		MPP2_NF_IO4,
diff --git a/board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c b/board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c
index 43852f6..fb57faa 100644
--- a/board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c
+++ b/board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c
@@ -45,7 +45,7 @@  int board_early_init_f(void)
 			MV88F6281GTW_GE_OE_LOW, MV88F6281GTW_GE_OE_HIGH);
 
 	/* Multi-Purpose Pins Functionality configuration */
-	u32 kwmpp_config[] = {
+	static const u32 kwmpp_config[] = {
 		MPP0_SPI_SCn,
 		MPP1_SPI_MOSI,
 		MPP2_SPI_SCK,
diff --git a/board/Marvell/openrd/openrd.c b/board/Marvell/openrd/openrd.c
index d48f05a..c59a326 100644
--- a/board/Marvell/openrd/openrd.c
+++ b/board/Marvell/openrd/openrd.c
@@ -48,7 +48,7 @@  int board_early_init_f(void)
 			OPENRD_OE_LOW, OPENRD_OE_HIGH);
 
 	/* Multi-Purpose Pins Functionality configuration */
-	u32 kwmpp_config[] = {
+	static const u32 kwmpp_config[] = {
 		MPP0_NF_IO2,
 		MPP1_NF_IO3,
 		MPP2_NF_IO4,
diff --git a/board/Marvell/rd6281a/rd6281a.c b/board/Marvell/rd6281a/rd6281a.c
index 1fd7677..adaa6a1 100644
--- a/board/Marvell/rd6281a/rd6281a.c
+++ b/board/Marvell/rd6281a/rd6281a.c
@@ -44,7 +44,7 @@  int board_early_init_f(void)
 			RD6281A_OE_LOW, RD6281A_OE_HIGH);
 
 	/* Multi-Purpose Pins Functionality configuration */
-	u32 kwmpp_config[] = {
+	static const u32 kwmpp_config[] = {
 		MPP0_NF_IO2,
 		MPP1_NF_IO3,
 		MPP2_NF_IO4,
diff --git a/board/Marvell/sheevaplug/sheevaplug.c b/board/Marvell/sheevaplug/sheevaplug.c
index 688d308..16efe64 100644
--- a/board/Marvell/sheevaplug/sheevaplug.c
+++ b/board/Marvell/sheevaplug/sheevaplug.c
@@ -43,7 +43,7 @@  int board_early_init_f(void)
 			SHEEVAPLUG_OE_LOW, SHEEVAPLUG_OE_HIGH);
 
 	/* Multi-Purpose Pins Functionality configuration */
-	u32 kwmpp_config[] = {
+	static const u32 kwmpp_config[] = {
 		MPP0_NF_IO2,
 		MPP1_NF_IO3,
 		MPP2_NF_IO4,
diff --git a/board/Seagate/dockstar/dockstar.c b/board/Seagate/dockstar/dockstar.c
index fc88520..4f1f899 100644
--- a/board/Seagate/dockstar/dockstar.c
+++ b/board/Seagate/dockstar/dockstar.c
@@ -47,7 +47,7 @@  int board_early_init_f(void)
 			DOCKSTAR_OE_LOW, DOCKSTAR_OE_HIGH);
 
 	/* Multi-Purpose Pins Functionality configuration */
-	u32 kwmpp_config[] = {
+	static const u32 kwmpp_config[] = {
 		MPP0_NF_IO2,
 		MPP1_NF_IO3,
 		MPP2_NF_IO4,
diff --git a/board/buffalo/lsxl/lsxl.c b/board/buffalo/lsxl/lsxl.c
index 57776fb..f298020 100644
--- a/board/buffalo/lsxl/lsxl.c
+++ b/board/buffalo/lsxl/lsxl.c
@@ -76,7 +76,7 @@  int board_early_init_f(void)
 	 * Multi-Purpose Pins Functionality configuration
 	 * These strappings are taken from the original vendor uboot port.
 	 */
-	u32 kwmpp_config[] = {
+	static const u32 kwmpp_config[] = {
 		MPP0_SPI_SCn,
 		MPP1_SPI_MOSI,
 		MPP2_SPI_SCK,
diff --git a/board/cloudengines/pogo_e02/pogo_e02.c b/board/cloudengines/pogo_e02/pogo_e02.c
index bac9ce5..3b1c8ec 100644
--- a/board/cloudengines/pogo_e02/pogo_e02.c
+++ b/board/cloudengines/pogo_e02/pogo_e02.c
@@ -45,7 +45,7 @@  int board_early_init_f(void)
 			POGO_E02_OE_LOW, POGO_E02_OE_HIGH);
 
 	/* Multi-Purpose Pins Functionality configuration */
-	u32 kwmpp_config[] = {
+	static const u32 kwmpp_config[] = {
 		MPP0_NF_IO2,
 		MPP1_NF_IO3,
 		MPP2_NF_IO4,
diff --git a/board/d-link/dns325/dns325.c b/board/d-link/dns325/dns325.c
index 11260fe..4187901 100644
--- a/board/d-link/dns325/dns325.c
+++ b/board/d-link/dns325/dns325.c
@@ -44,7 +44,7 @@  int board_early_init_f(void)
 			DNS325_OE_LOW, DNS325_OE_HIGH);
 
 	/* Multi-Purpose Pins Functionality configuration */
-	u32 kwmpp_config[] = {
+	static const u32 kwmpp_config[] = {
 		MPP0_NF_IO2,
 		MPP1_NF_IO3,
 		MPP2_NF_IO4,
diff --git a/board/iomega/iconnect/iconnect.c b/board/iomega/iconnect/iconnect.c
index 6ee2128..c253df5 100644
--- a/board/iomega/iconnect/iconnect.c
+++ b/board/iomega/iconnect/iconnect.c
@@ -41,7 +41,7 @@  int board_early_init_f(void)
 			ICONNECT_OE_LOW, ICONNECT_OE_HIGH);
 
 	/* Multi-Purpose Pins Functionality configuration */
-	u32 kwmpp_config[] = {
+	static const u32 kwmpp_config[] = {
 		MPP0_NF_IO2,
 		MPP1_NF_IO3,
 		MPP2_NF_IO4,
diff --git a/board/karo/tk71/tk71.c b/board/karo/tk71/tk71.c
index 96410d7..7a4e7b3 100644
--- a/board/karo/tk71/tk71.c
+++ b/board/karo/tk71/tk71.c
@@ -47,7 +47,7 @@  int board_early_init_f(void)
 			TK71_OE_LOW, TK71_OE_HIGH);
 
 	/* Multi-Purpose Pins Functionality configuration */
-	u32 kwmpp_config[] = {
+	static const u32 kwmpp_config[] = {
 		MPP0_NF_IO2,
 		MPP1_NF_IO3,
 		MPP2_NF_IO4,
diff --git a/board/keymile/km_arm/km_arm.c b/board/keymile/km_arm/km_arm.c
index 0c4dddc..5fc46e6 100644
--- a/board/keymile/km_arm/km_arm.c
+++ b/board/keymile/km_arm/km_arm.c
@@ -54,7 +54,7 @@  DECLARE_GLOBAL_DATA_PTR;
 #define MASK_RBI_DEFECT_16	0x01
 
 /* Multi-Purpose Pins Functionality configuration */
-u32 kwmpp_config[] = {
+static const u32 kwmpp_config[] = {
 	MPP0_NF_IO2,
 	MPP1_NF_IO3,
 	MPP2_NF_IO4,
diff --git a/board/raidsonic/ib62x0/ib62x0.c b/board/raidsonic/ib62x0/ib62x0.c
index b7e6e41..1e89b55 100644
--- a/board/raidsonic/ib62x0/ib62x0.c
+++ b/board/raidsonic/ib62x0/ib62x0.c
@@ -45,7 +45,7 @@  int board_early_init_f(void)
 	/* Set SATA activity LEDs to default off */
 	writel(MVSATAHC_LED_POLARITY_CTRL, MVSATAHC_LED_CONF_REG);
 	/* Multi-Purpose Pins Functionality configuration */
-	u32 kwmpp_config[] = {
+	static const u32 kwmpp_config[] = {
 		MPP0_NF_IO2,
 		MPP1_NF_IO3,
 		MPP2_NF_IO4,
diff --git a/drivers/spi/kirkwood_spi.c b/drivers/spi/kirkwood_spi.c
index a7cda75..de81064 100644
--- a/drivers/spi/kirkwood_spi.c
+++ b/drivers/spi/kirkwood_spi.c
@@ -41,7 +41,10 @@  struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
 {
 	struct spi_slave *slave;
 	u32 data;
-	u32 kwspi_mpp_config[] = { 0, 0 };
+	static const u32 kwspi_mpp_config[2][2] = {
+		{ MPP0_SPI_SCn, 0 }, /* if cs == 0 */
+		{ MPP7_SPI_SCn, 0 } /* if cs != 0 */
+	};
 
 	if (!spi_cs_is_valid(bus, cs))
 		return NULL;
@@ -68,12 +71,7 @@  struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
 	writel(KWSPI_IRQMASK, &spireg->irq_mask);
 
 	/* program mpp registers to select  SPI_CSn */
-	if (cs) {
-		kwspi_mpp_config[0] = MPP7_SPI_SCn;
-	} else {
-		kwspi_mpp_config[0] = MPP0_SPI_SCn;
-	}
-	kirkwood_mpp_conf(kwspi_mpp_config, cs_spi_mpp_back);
+	kirkwood_mpp_conf(kwspi_mpp_config[cs ? 1 : 0], cs_spi_mpp_back);
 
 	return slave;
 }