[PATCH 3/3] ARM: mx28evk: Add SPI NOR flash support

Fabio Estevam festevam at gmail.com
Tue Apr 3 15:20:07 EDT 2012


Add SPI NOR flash support.

By default, the mx28evk board does not come with a SPI NOR flash populated.

Soldered a sst25vf016b and tested it using mtd-utils.

Signed-off-by: Fabio Estevam <fabio.estevam at freescale.com>
---
I will submit the spi-mxs driver in a day or so.

 arch/arm/mach-mxs/Kconfig        |    1 +
 arch/arm/mach-mxs/mach-mx28evk.c |   20 ++++++++++++++++++++
 2 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-mxs/Kconfig b/arch/arm/mach-mxs/Kconfig
index c57f996..8078fbe 100644
--- a/arch/arm/mach-mxs/Kconfig
+++ b/arch/arm/mach-mxs/Kconfig
@@ -52,6 +52,7 @@ config MACH_MX28EVK
 	select MXS_HAVE_PLATFORM_MXSFB
 	select MXS_HAVE_PLATFORM_MXS_SAIF
 	select MXS_HAVE_PLATFORM_MXS_I2C
+	select MXS_HAVE_PLATFORM_MXS_SPI
 	select MXS_HAVE_PLATFORM_RTC_STMP3XXX
 	select MXS_OCOTP
 	help
diff --git a/arch/arm/mach-mxs/mach-mx28evk.c b/arch/arm/mach-mxs/mach-mx28evk.c
index e386c14..f3bca27 100644
--- a/arch/arm/mach-mxs/mach-mx28evk.c
+++ b/arch/arm/mach-mxs/mach-mx28evk.c
@@ -20,6 +20,7 @@
 #include <linux/i2c.h>
 #include <linux/regulator/machine.h>
 #include <linux/regulator/fixed.h>
+#include <linux/spi/spi.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -204,6 +205,12 @@ static const iomux_cfg_t mx28evk_pads[] __initconst = {
 		(MXS_PAD_12MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
 	MX28_PAD_SAIF1_SDATA0__SAIF1_SDATA0 |
 		(MXS_PAD_12MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
+	/* SPI2 */
+	MX28_PAD_SSP2_SCK__SSP2_SCK,
+	MX28_PAD_SSP2_MOSI__SSP2_CMD,
+	MX28_PAD_SSP2_MISO__SSP2_D0,
+	MX28_PAD_SSP2_SS0__SSP2_D3 |
+		(MXS_PAD_3V3 | MXS_PAD_8MA | MXS_PAD_PULLUP),
 };
 
 /* led */
@@ -409,6 +416,15 @@ static const struct mxs_saif_platform_data
 	},
 };
 
+static struct spi_board_info mx28evk_spi_nor_device[] = {
+	{
+	 .modalias = "sst25vf016b",
+	 .max_speed_hz = 25000000,	/* max spi clock (SCK) speed in HZ */
+	 .bus_num = 2,
+	 .chip_select = 0,
+	},
+};
+
 static void __init mx28evk_init(void)
 {
 	int ret;
@@ -454,6 +470,10 @@ static void __init mx28evk_init(void)
 	mx28_add_rtc_stmp3xxx();
 
 	gpio_led_register_device(0, &mx28evk_led_data);
+
+	mx28_add_mxs_spi(2);
+	spi_register_board_info(mx28evk_spi_nor_device,
+				ARRAY_SIZE(mx28evk_spi_nor_device));
 }
 
 static void __init mx28evk_timer_init(void)
-- 
1.7.1




More information about the linux-arm-kernel mailing list