Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
board-sg.c
Go to the documentation of this file.
1 /*
2  * board-sg.c -- support for the SnapGear KS8695 based boards
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  */
8 
9 #include <linux/kernel.h>
10 #include <linux/types.h>
11 #include <linux/init.h>
12 #include <linux/platform_device.h>
13 #include <linux/mtd/mtd.h>
14 #include <linux/mtd/map.h>
15 #include <linux/mtd/physmap.h>
16 #include <linux/mtd/partitions.h>
17 #include <asm/mach-types.h>
18 #include <asm/mach/arch.h>
19 #include <mach/devices.h>
20 #include "generic.h"
21 
22 /*
23  * The SG310 machine type is fitted with a conventional 8MB Strataflash
24  * device. Define its partitioning.
25  */
26 #define FL_BASE 0x02000000
27 #define FL_SIZE SZ_8M
28 
29 static struct mtd_partition sg_mtd_partitions[] = {
30  [0] = {
31  .name = "SnapGear Boot Loader",
32  .size = SZ_128K,
33  },
34  [1] = {
35  .name = "SnapGear non-volatile configuration",
36  .size = SZ_512K,
37  .offset = SZ_256K,
38  },
39  [2] = {
40  .name = "SnapGear image",
41  .offset = SZ_512K + SZ_256K,
42  },
43  [3] = {
44  .name = "SnapGear StrataFlash",
45  },
46  [4] = {
47  .name = "SnapGear Boot Tags",
48  .size = SZ_128K,
49  .offset = SZ_128K,
50  },
51 };
52 
53 static struct physmap_flash_data sg_mtd_pdata = {
54  .width = 1,
55  .nr_parts = ARRAY_SIZE(sg_mtd_partitions),
56  .parts = sg_mtd_partitions,
57 };
58 
59 
60 static struct resource sg_mtd_resource[] = {
61  [0] = {
62  .start = FL_BASE,
63  .end = FL_BASE + FL_SIZE - 1,
64  .flags = IORESOURCE_MEM,
65  },
66 };
67 
68 static struct platform_device sg_mtd_device = {
69  .name = "physmap-flash",
70  .id = 0,
71  .num_resources = ARRAY_SIZE(sg_mtd_resource),
72  .resource = sg_mtd_resource,
73  .dev = {
74  .platform_data = &sg_mtd_pdata,
75  },
76 };
77 
78 static void __init sg_init(void)
79 {
82 
83  if (machine_is_sg310())
84  platform_device_register(&sg_mtd_device);
85 }
86 
87 #ifdef CONFIG_MACH_LITE300
88 MACHINE_START(LITE300, "SecureComputing/SG300")
89  /* SnapGear */
90  .atag_offset = 0x100,
91  .map_io = ks8695_map_io,
92  .init_irq = ks8695_init_irq,
93  .init_machine = sg_init,
94  .timer = &ks8695_timer,
95  .restart = ks8695_restart,
97 #endif
98 
99 #ifdef CONFIG_MACH_SG310
100 MACHINE_START(SG310, "McAfee/SG310")
101  /* SnapGear */
102  .atag_offset = 0x100,
103  .map_io = ks8695_map_io,
104  .init_irq = ks8695_init_irq,
105  .init_machine = sg_init,
106  .timer = &ks8695_timer,
107  .restart = ks8695_restart,
109 #endif
110 
111 #ifdef CONFIG_MACH_SE4200
112 MACHINE_START(SE4200, "SecureComputing/SE4200")
113  /* SnapGear */
114  .atag_offset = 0x100,
115  .map_io = ks8695_map_io,
116  .init_irq = ks8695_init_irq,
117  .init_machine = sg_init,
118  .timer = &ks8695_timer,
119  .restart = ks8695_restart,
121 #endif