On efikamx, uboot is stored on a nor spi flash. Add support for it Signed-off-by: Arnaud Patard Index: linux-2.6-submit/arch/arm/mach-mx5/board-mx51_efikamx.c =================================================================== --- linux-2.6-submit.orig/arch/arm/mach-mx5/board-mx51_efikamx.c 2010-10-27 11:39:54.000000000 +0200 +++ linux-2.6-submit/arch/arm/mach-mx5/board-mx51_efikamx.c 2010-10-27 11:43:11.000000000 +0200 @@ -23,6 +23,8 @@ #include #include #include +#include +#include #include #include @@ -51,6 +53,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) @@ -98,6 +103,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 */ @@ -243,6 +256,47 @@ .nbuttons = ARRAY_SIZE(mx51_efikamx_powerkey), }; +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, @@ -260,6 +314,10 @@ platform_device_register(&mx51_efikamx_leds_device); imx51_add_gpio_keys(&mx51_efikamx_powerkey_data); + + 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-submit/arch/arm/mach-mx5/Kconfig =================================================================== --- linux-2.6-submit.orig/arch/arm/mach-mx5/Kconfig 2010-10-27 11:39:39.000000000 +0200 +++ linux-2.6-submit/arch/arm/mach-mx5/Kconfig 2010-10-27 11:43:44.000000000 +0200 @@ -83,6 +83,7 @@ bool "Support MX51 Genesi Efika MX nettop" select IMX_HAVE_PLATFORM_ESDHC select IMX_HAVE_PLATFORM_IMX_UART + select IMX_HAVE_PLATFORM_SPI_IMX help Include support for Genesi Efika MX nettop. This includes specific configurations for the board and its peripherals.