| // SPDX-License-Identifier: GPL-2.0-only |
| /* |
| * board-sg.c -- support for the SnapGear KS8695 based boards |
| */ |
| |
| #include <linux/kernel.h> |
| #include <linux/types.h> |
| #include <linux/init.h> |
| #include <linux/platform_device.h> |
| #include <linux/mtd/mtd.h> |
| #include <linux/mtd/map.h> |
| #include <linux/mtd/physmap.h> |
| #include <linux/mtd/partitions.h> |
| #include <asm/mach-types.h> |
| #include <asm/mach/arch.h> |
| #include "devices.h" |
| #include "generic.h" |
| |
| /* |
| * The SG310 machine type is fitted with a conventional 8MB Strataflash |
| * device. Define its partitioning. |
| */ |
| #define FL_BASE 0x02000000 |
| #define FL_SIZE SZ_8M |
| |
| static struct mtd_partition sg_mtd_partitions[] = { |
| [0] = { |
| .name = "SnapGear Boot Loader", |
| .size = SZ_128K, |
| }, |
| [1] = { |
| .name = "SnapGear non-volatile configuration", |
| .size = SZ_512K, |
| .offset = SZ_256K, |
| }, |
| [2] = { |
| .name = "SnapGear image", |
| .offset = SZ_512K + SZ_256K, |
| }, |
| [3] = { |
| .name = "SnapGear StrataFlash", |
| }, |
| [4] = { |
| .name = "SnapGear Boot Tags", |
| .size = SZ_128K, |
| .offset = SZ_128K, |
| }, |
| }; |
| |
| static struct physmap_flash_data sg_mtd_pdata = { |
| .width = 1, |
| .nr_parts = ARRAY_SIZE(sg_mtd_partitions), |
| .parts = sg_mtd_partitions, |
| }; |
| |
| |
| static struct resource sg_mtd_resource[] = { |
| [0] = { |
| .start = FL_BASE, |
| .end = FL_BASE + FL_SIZE - 1, |
| .flags = IORESOURCE_MEM, |
| }, |
| }; |
| |
| static struct platform_device sg_mtd_device = { |
| .name = "physmap-flash", |
| .id = 0, |
| .num_resources = ARRAY_SIZE(sg_mtd_resource), |
| .resource = sg_mtd_resource, |
| .dev = { |
| .platform_data = &sg_mtd_pdata, |
| }, |
| }; |
| |
| static void __init sg_init(void) |
| { |
| ks8695_add_device_lan(); |
| ks8695_add_device_wan(); |
| |
| if (machine_is_sg310()) |
| platform_device_register(&sg_mtd_device); |
| } |
| |
| #ifdef CONFIG_MACH_LITE300 |
| MACHINE_START(LITE300, "SecureComputing/SG300") |
| /* SnapGear */ |
| .atag_offset = 0x100, |
| .map_io = ks8695_map_io, |
| .init_irq = ks8695_init_irq, |
| .init_machine = sg_init, |
| .init_time = ks8695_timer_init, |
| .restart = ks8695_restart, |
| MACHINE_END |
| #endif |
| |
| #ifdef CONFIG_MACH_SG310 |
| MACHINE_START(SG310, "McAfee/SG310") |
| /* SnapGear */ |
| .atag_offset = 0x100, |
| .map_io = ks8695_map_io, |
| .init_irq = ks8695_init_irq, |
| .init_machine = sg_init, |
| .init_time = ks8695_timer_init, |
| .restart = ks8695_restart, |
| MACHINE_END |
| #endif |
| |
| #ifdef CONFIG_MACH_SE4200 |
| MACHINE_START(SE4200, "SecureComputing/SE4200") |
| /* SnapGear */ |
| .atag_offset = 0x100, |
| .map_io = ks8695_map_io, |
| .init_irq = ks8695_init_irq, |
| .init_machine = sg_init, |
| .init_time = ks8695_timer_init, |
| .restart = ks8695_restart, |
| MACHINE_END |
| #endif |