-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This patch adds support for the RTE RSK+ 7201 board. Signed-off-by: Peter Griffin <pgriffin@mpc-data.co.uk> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
- Loading branch information
Peter Griffin
authored and
Paul Mundt
committed
Dec 22, 2008
1 parent
2825999
commit 6feb348
Showing
5 changed files
with
802 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
/* | ||
* Renesas Technology Europe RSK+ 7201 Support. | ||
* | ||
* Copyright (C) 2008 Peter Griffin <pgriffin@mpc-data.co.uk> | ||
* | ||
* This file is subject to the terms and conditions of the GNU General Public | ||
* License. See the file "COPYING" in the main directory of this archive | ||
* for more details. | ||
*/ | ||
#include <linux/init.h> | ||
#include <linux/types.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/interrupt.h> | ||
#include <linux/mtd/mtd.h> | ||
#include <linux/mtd/partitions.h> | ||
#include <linux/mtd/physmap.h> | ||
#include <linux/mtd/map.h> | ||
#include <asm/machvec.h> | ||
#include <asm/io.h> | ||
|
||
static const char *probes[] = { "cmdlinepart", NULL }; | ||
|
||
static struct mtd_partition *parsed_partitions; | ||
|
||
static struct mtd_partition rsk7201_partitions[] = { | ||
{ | ||
.name = "Bootloader", | ||
.offset = 0x00000000, | ||
.size = 0x00040000, | ||
.mask_flags = MTD_WRITEABLE, | ||
}, { | ||
.name = "Kernel", | ||
.offset = MTDPART_OFS_NXTBLK, | ||
.size = 0x001c0000, | ||
}, { | ||
.name = "Flash_FS", | ||
.offset = MTDPART_OFS_NXTBLK, | ||
.size = MTDPART_SIZ_FULL, | ||
} | ||
}; | ||
|
||
static struct physmap_flash_data flash_data = { | ||
.width = 2, | ||
}; | ||
|
||
static struct resource flash_resource = { | ||
.start = 0x20000000, | ||
.end = 0x20400000, | ||
.flags = IORESOURCE_MEM, | ||
}; | ||
|
||
static struct platform_device flash_device = { | ||
.name = "physmap-flash", | ||
.id = -1, | ||
.resource = &flash_resource, | ||
.num_resources = 1, | ||
.dev = { | ||
.platform_data = &flash_data, | ||
}, | ||
}; | ||
|
||
static struct mtd_info *flash_mtd; | ||
|
||
static struct map_info rsk7201_flash_map = { | ||
.name = "RSK+ Flash", | ||
.size = 0x400000, | ||
.bankwidth = 2, | ||
}; | ||
|
||
static void __init set_mtd_partitions(void) | ||
{ | ||
int nr_parts = 0; | ||
|
||
simple_map_init(&rsk7201_flash_map); | ||
flash_mtd = do_map_probe("cfi_probe", &rsk7201_flash_map); | ||
nr_parts = parse_mtd_partitions(flash_mtd, probes, | ||
&parsed_partitions, 0); | ||
/* If there is no partition table, used the hard coded table */ | ||
if (nr_parts <= 0) { | ||
flash_data.parts = rsk7201_partitions; | ||
flash_data.nr_parts = ARRAY_SIZE(rsk7201_partitions); | ||
} else { | ||
flash_data.nr_parts = nr_parts; | ||
flash_data.parts = parsed_partitions; | ||
} | ||
} | ||
|
||
static struct platform_device *rsk7201_devices[] __initdata = { | ||
&flash_device, | ||
}; | ||
|
||
static int __init rsk7201_devices_setup(void) | ||
{ | ||
set_mtd_partitions(); | ||
return platform_add_devices(rsk7201_devices, | ||
ARRAY_SIZE(rsk7201_devices)); | ||
} | ||
device_initcall(rsk7201_devices_setup); | ||
|
||
/* | ||
* The Machine Vector | ||
*/ | ||
static struct sh_machine_vector mv_rsk7201 __initmv = { | ||
.mv_name = "RSK+7201", | ||
}; |
Oops, something went wrong.