4e57b68178
I recently picked up my older work to remove unnecessary #includes of sched.h, starting from a patch by Dave Jones to not include sched.h from module.h. This reduces the number of indirect includes of sched.h by ~300. Another ~400 pointless direct includes can be removed after this disentangling (patch to follow later). However, quite a few indirect includes need to be fixed up for this. In order to feed the patches through -mm with as little disturbance as possible, I've split out the fixes I accumulated up to now (complete for i386 and x86_64, more archs to follow later) and post them before the real patch. This way this large part of the patch is kept simple with only adding #includes, and all hunks are independent of each other. So if any hunk rejects or gets in the way of other patches, just drop it. My scripts will pick it up again in the next round. Signed-off-by: Tim Schmielau <tim@physik3.uni-rostock.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
138 lines
3.1 KiB
C
138 lines
3.1 KiB
C
/*
|
|
* NOR Flash memory access on TI Toto board
|
|
*
|
|
* jzhang@ti.com (C) 2003 Texas Instruments.
|
|
*
|
|
* (C) 2002 MontVista Software, Inc.
|
|
*
|
|
* $Id: omap-toto-flash.c,v 1.3 2004/09/16 23:27:13 gleixner Exp $
|
|
*/
|
|
|
|
#include <linux/config.h>
|
|
#include <linux/module.h>
|
|
#include <linux/types.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/errno.h>
|
|
#include <linux/init.h>
|
|
#include <linux/slab.h>
|
|
|
|
#include <linux/mtd/mtd.h>
|
|
#include <linux/mtd/map.h>
|
|
#include <linux/mtd/partitions.h>
|
|
|
|
#include <asm/hardware.h>
|
|
#include <asm/io.h>
|
|
|
|
|
|
#ifndef CONFIG_ARCH_OMAP
|
|
#error This is for OMAP architecture only
|
|
#endif
|
|
|
|
//these lines need be moved to a hardware header file
|
|
#define OMAP_TOTO_FLASH_BASE 0xd8000000
|
|
#define OMAP_TOTO_FLASH_SIZE 0x80000
|
|
|
|
static struct map_info omap_toto_map_flash = {
|
|
.name = "OMAP Toto flash",
|
|
.bankwidth = 2,
|
|
.virt = (void __iomem *)OMAP_TOTO_FLASH_BASE,
|
|
};
|
|
|
|
|
|
static struct mtd_partition toto_flash_partitions[] = {
|
|
{
|
|
.name = "BootLoader",
|
|
.size = 0x00040000, /* hopefully u-boot will stay 128k + 128*/
|
|
.offset = 0,
|
|
.mask_flags = MTD_WRITEABLE, /* force read-only */
|
|
}, {
|
|
.name = "ReservedSpace",
|
|
.size = 0x00030000,
|
|
.offset = MTDPART_OFS_APPEND,
|
|
//mask_flags: MTD_WRITEABLE, /* force read-only */
|
|
}, {
|
|
.name = "EnvArea", /* bottom 64KiB for env vars */
|
|
.size = MTDPART_SIZ_FULL,
|
|
.offset = MTDPART_OFS_APPEND,
|
|
}
|
|
};
|
|
|
|
static struct mtd_partition *parsed_parts;
|
|
|
|
static struct mtd_info *flash_mtd;
|
|
|
|
static int __init init_flash (void)
|
|
{
|
|
|
|
struct mtd_partition *parts;
|
|
int nb_parts = 0;
|
|
int parsed_nr_parts = 0;
|
|
const char *part_type;
|
|
|
|
/*
|
|
* Static partition definition selection
|
|
*/
|
|
part_type = "static";
|
|
|
|
parts = toto_flash_partitions;
|
|
nb_parts = ARRAY_SIZE(toto_flash_partitions);
|
|
omap_toto_map_flash.size = OMAP_TOTO_FLASH_SIZE;
|
|
omap_toto_map_flash.phys = virt_to_phys(OMAP_TOTO_FLASH_BASE);
|
|
|
|
simple_map_init(&omap_toto_map_flash);
|
|
/*
|
|
* Now let's probe for the actual flash. Do it here since
|
|
* specific machine settings might have been set above.
|
|
*/
|
|
printk(KERN_NOTICE "OMAP toto flash: probing %d-bit flash bus\n",
|
|
omap_toto_map_flash.bankwidth*8);
|
|
flash_mtd = do_map_probe("jedec_probe", &omap_toto_map_flash);
|
|
if (!flash_mtd)
|
|
return -ENXIO;
|
|
|
|
if (parsed_nr_parts > 0) {
|
|
parts = parsed_parts;
|
|
nb_parts = parsed_nr_parts;
|
|
}
|
|
|
|
if (nb_parts == 0) {
|
|
printk(KERN_NOTICE "OMAP toto flash: no partition info available,"
|
|
"registering whole flash at once\n");
|
|
if (add_mtd_device(flash_mtd)){
|
|
return -ENXIO;
|
|
}
|
|
} else {
|
|
printk(KERN_NOTICE "Using %s partition definition\n",
|
|
part_type);
|
|
return add_mtd_partitions(flash_mtd, parts, nb_parts);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int __init omap_toto_mtd_init(void)
|
|
{
|
|
int status;
|
|
|
|
if (status = init_flash()) {
|
|
printk(KERN_ERR "OMAP Toto Flash: unable to init map for toto flash\n");
|
|
}
|
|
return status;
|
|
}
|
|
|
|
static void __exit omap_toto_mtd_cleanup(void)
|
|
{
|
|
if (flash_mtd) {
|
|
del_mtd_partitions(flash_mtd);
|
|
map_destroy(flash_mtd);
|
|
if (parsed_parts)
|
|
kfree(parsed_parts);
|
|
}
|
|
}
|
|
|
|
module_init(omap_toto_mtd_init);
|
|
module_exit(omap_toto_mtd_cleanup);
|
|
|
|
MODULE_AUTHOR("Jian Zhang");
|
|
MODULE_DESCRIPTION("OMAP Toto board map driver");
|
|
MODULE_LICENSE("GPL");
|