> -----Original Message----- > From: Albert ARIBAUD [mailto:albert.u.b...@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.b...@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 <prafu...@marvell.com> Regards... Prafulla . . . _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot