From 50cf60d056480fce6036e5941e9b15e0836cb075 Mon Sep 17 00:00:00 2001 From: Terry Lv Date: Thu, 16 Jun 2011 18:16:20 +0800 Subject: [PATCH] ENGR00141259: MX53_SMD: SPI: Use community spi_imx for spi nor Use community spi_imx for spi nor. m25p80 is now supported with spi_imx. Signed-off-by: Terry Lv --- arch/arm/mach-mx5/board-mx53_smd.c | 71 ++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/arch/arm/mach-mx5/board-mx53_smd.c b/arch/arm/mach-mx5/board-mx53_smd.c index afb8db647341..bde6a3e5df27 100755 --- a/arch/arm/mach-mx5/board-mx53_smd.c +++ b/arch/arm/mach-mx5/board-mx53_smd.c @@ -32,6 +32,12 @@ #include #include #include +#include +#include + +#include +#include +#include #include #include @@ -72,6 +78,8 @@ #define MX53_SMD_BT_RESET IMX_GPIO_NR(3, 28) #define MX53_SMD_CSI0_RST IMX_GPIO_NR(6, 9) #define MX53_SMD_CSI0_PWN IMX_GPIO_NR(6, 10) +#define MX53_SMD_ECSPI1_CS0 IMX_GPIO_NR(2, 30) +#define MX53_SMD_ECSPI1_CS1 IMX_GPIO_NR(3, 19) extern int mx53_smd_init_da9052(void); @@ -96,6 +104,15 @@ static iomux_v3_cfg_t mx53_smd_pads[] = { MX53_PAD_GPIO_3__I2C3_SCL, MX53_PAD_GPIO_6__I2C3_SDA, + /* CSPI1 */ + MX53_PAD_EIM_EB2__ECSPI1_SS0, + MX53_PAD_EIM_D16__ECSPI1_SCLK, + MX53_PAD_EIM_D17__ECSPI1_MISO, + MX53_PAD_EIM_D18__ECSPI1_MOSI, + MX53_PAD_EIM_D19__ECSPI1_SS1, + MX53_PAD_EIM_EB2__GPIO2_30, + MX53_PAD_EIM_D19__GPIO3_19, + /* SD1 */ MX53_PAD_SD1_CMD__ESDHC1_CMD, MX53_PAD_SD1_CLK__ESDHC1_CLK, @@ -372,6 +389,57 @@ static struct i2c_board_info mxc_i2c1_board_info[] __initdata = { }, }; +static int mx53_smd_spi_cs[] = { + MX53_SMD_ECSPI1_CS0, + MX53_SMD_ECSPI1_CS1, +}; + +static struct spi_imx_master mx53_smd_spi_data = { + .chipselect = mx53_smd_spi_cs, + .num_chipselect = ARRAY_SIZE(mx53_smd_spi_cs), +}; + +#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) +static struct mtd_partition m25p32_partitions[] = { + { + .name = "bootloader", + .offset = 0, + .size = 0x00040000, + }, + { + .name = "kernel", + .offset = MTDPART_OFS_APPEND, + .size = MTDPART_SIZ_FULL, + }, +}; + +static struct flash_platform_data m25p32_spi_flash_data = { + .name = "m25p32", + .parts = m25p32_partitions, + .nr_parts = ARRAY_SIZE(m25p32_partitions), + .type = "m25p32", +}; +#endif + +static struct spi_board_info m25p32_spi0_board_info[] __initdata = { +#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) + { + /* The modalias must be the same as spi device driver name */ + .modalias = "m25p80", + .max_speed_hz = 20000000, + .bus_num = 0, + .chip_select = 1, + .platform_data = &m25p32_spi_flash_data, + } +#endif +}; + +static void spi_device_init(void) +{ + spi_register_board_info(m25p32_spi0_board_info, + ARRAY_SIZE(m25p32_spi0_board_info)); +} + static void mxc_iim_enable_fuse(void) { u32 reg; @@ -750,6 +818,7 @@ static void __init mx53_smd_board_init(void) imx53_add_imx_i2c(0, &mx53_smd_i2c_data); imx53_add_imx_i2c(1, &mx53_smd_i2c_data); imx53_add_imx_i2c(2, &mx53_smd_i2c_data); + imx53_add_ecspi(0, &mx53_smd_spi_data); imx53_add_ipuv3(&ipu_data); imx53_add_vpu(); @@ -779,6 +848,8 @@ static void __init mx53_smd_board_init(void) msleep(1); gpio_set_value(MX53_SMD_CSI0_PWN, 0); + spi_device_init(); + i2c_register_board_info(0, mxc_i2c0_board_info, ARRAY_SIZE(mxc_i2c0_board_info)); i2c_register_board_info(1, mxc_i2c1_board_info, -- 2.39.5