On efikamx, uboot is stored on a nor spi flash. Add support for it Signed-off-by: Arnaud Patard Index: linux-2.6/arch/arm/mach-mx5/board-mx51_efikamx.c =================================================================== --- linux-2.6.orig/arch/arm/mach-mx5/board-mx51_efikamx.c 2010-10-16 14:21:24.000000000 +0200 +++ linux-2.6/arch/arm/mach-mx5/board-mx51_efikamx.c 2010-10-16 15:34:12.000000000 +0200 @@ -24,6 +24,8 @@ #include #include #include +#include +#include #include #include @@ -52,6 +54,9 @@ #define EFIKAMX_POWER_KEY (1*32+31) +#define EFIKAMX_SPI_CS0 (3*32+24) +#define EFIKAMX_SPI_CS1 (3*32+25) + /* the pci ids pin have pull up. they're driven low according to board id */ #define MX51_PAD_PCBID0 IOMUX_PAD(0x518, 0x130, 3, 0x0, 0, PAD_CTL_PUS_100K_UP) #define MX51_PAD_PCBID1 IOMUX_PAD(0x51C, 0x134, 3, 0x0, 0, PAD_CTL_PUS_100K_UP) @@ -99,6 +104,14 @@ /* power key */ MX51_PAD_PWRKEY, + + /* spi */ + MX51_PAD_CSPI1_MOSI__ECSPI1_MOSI, + MX51_PAD_CSPI1_MISO__ECSPI1_MISO, + MX51_PAD_CSPI1_SS0__GPIO_4_24, + MX51_PAD_CSPI1_SS1__GPIO_4_25, + MX51_PAD_CSPI1_RDY__ECSPI1_RDY, + MX51_PAD_CSPI1_SCLK__ECSPI1_SCLK, }; /* Serial ports */ @@ -252,6 +265,47 @@ }, }; +static struct mtd_partition mx51_efikamx_spi_nor_partitions[] = { + { + .name = "u-boot", + .offset = 0, + .size = SZ_256K, + }, + { + .name = "config", + .offset = MTDPART_OFS_APPEND, + .size = SZ_64K, + }, +}; + +static struct flash_platform_data mx51_efikamx_spi_flash_data = { + .name = "spi_flash", + .parts = mx51_efikamx_spi_nor_partitions, + .nr_parts = ARRAY_SIZE(mx51_efikamx_spi_nor_partitions), + .type = "sst25vf032b", +}; + +static struct spi_board_info mx51_efikamx_spi_board_info[] __initdata = { + { + .modalias = "m25p80", + .max_speed_hz = 25000000, + .bus_num = 0, + .chip_select = 1, + .platform_data = &mx51_efikamx_spi_flash_data, + .irq = -1, + }, +}; + +static int mx51_efikamx_spi_cs[] = { + EFIKAMX_SPI_CS0, + EFIKAMX_SPI_CS1, +}; + +static const struct spi_imx_master mx51_efikamx_spi_pdata __initconst = { + .chipselect = mx51_efikamx_spi_cs, + .num_chipselect = ARRAY_SIZE(mx51_efikamx_spi_cs), +}; + static void __init mxc_board_init(void) { mxc_iomux_v3_setup_multiple_pads(mx51efikamx_pads, @@ -269,6 +323,10 @@ platform_device_register(&mx51_efikamx_leds_device); platform_device_register(&mx51_efikamx_powerkey_device); + + spi_register_board_info(mx51_efikamx_spi_board_info, + ARRAY_SIZE(mx51_efikamx_spi_board_info)); + imx51_add_ecspi(0, &mx51_efikamx_spi_pdata); } static void __init mx51_efikamx_timer_init(void) Index: linux-2.6/arch/arm/mach-mx5/Kconfig =================================================================== --- linux-2.6.orig/arch/arm/mach-mx5/Kconfig 2010-10-16 14:21:24.000000000 +0200 +++ linux-2.6/arch/arm/mach-mx5/Kconfig 2010-10-16 14:21:28.000000000 +0200 @@ -81,6 +81,7 @@ bool "Support MX51 Genesi Efika MX nettop" select IMX_HAVE_PLATFORM_IMX_UART select IMX_HAVE_PLATFORM_ESDHC + select IMX_HAVE_PLATFORM_SPI_IMX help Include support for Genesi Efika MX nettop. This includes specific configurations for the board and its peripherals.