Efika MX platform support
[efikamx:linux-kernel.git] / arch / arm / mach-mx5 / mx51_efikamx_nor.c
1 /*
2  * Copyright 2009 Pegatron Corporation. All Rights Reserved.
3  * Copyright 2009-2010 Genesi USA, Inc. All Rights Reserved.
4  */
5
6 /*
7  * The code contained herein is licensed under the GNU General Public
8  * License. You may obtain a copy of the GNU General Public License
9  * Version 2 or later at the following locations:
10  *
11  * http://www.opensource.org/licenses/gpl-license.html
12  * http://www.gnu.org/copyleft/gpl.html
13  */
14
15 #include <linux/errno.h>
16 #include <linux/module.h>
17 #include <linux/platform_device.h>
18 #include <linux/delay.h>
19
20 #include <linux/mtd/mtd.h>
21 #include <linux/mtd/map.h>
22 #include <linux/mtd/partitions.h>
23
24 #include <linux/spi/spi.h>
25 #include <linux/spi/flash.h>
26
27 #include <mach/hardware.h>
28 #include <mach/gpio.h>
29
30 #include "devices.h"
31 #include "mx51_pins.h"
32 #include "iomux.h"
33
34 #include "mx51_efikamx.h"
35
36 static struct mtd_partition mx51_efikamx_spi_nor_partitions[] = {
37         {
38          .name = "u-boot",
39          .offset = 0x0,
40          .size = 0x00040000,    /* 256KB */
41         },
42         {
43           .name = "config",
44           .offset = 0x00040000,
45           .size = 0x00010000,   /* 64KB */
46         },
47 };
48
49 static struct flash_platform_data mx51_efikamx_spi_flash_data = {
50         .name           = "spi_nor_flash",
51         .parts          = mx51_efikamx_spi_nor_partitions,
52         .nr_parts       = ARRAY_SIZE(mx51_efikamx_spi_nor_partitions),
53         .type           = "sst25vf032b",        /* jedec id: 0xbf254a */
54 };
55
56 static struct spi_board_info mx51_efikamx_spi_board_info[] __initdata = {
57         {
58          .modalias = "sst25vf",
59          .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
60          .bus_num = 1,
61          .chip_select = 1,
62          .platform_data = &mx51_efikamx_spi_flash_data,
63         },
64 };
65
66 void mx51_efikamx_init_nor(void)
67 {
68         (void)spi_register_board_info(mx51_efikamx_spi_board_info, 
69                                                                 ARRAY_SIZE(mx51_efikamx_spi_board_info));
70 }