| /* | |
| * pnc2000.c - mapper for Photron PNC-2000 board. | |
| * | |
| * Copyright (C) 2000 Crossnet Co. <info@crossnet.co.jp> | |
| * | |
| * This code is GPL | |
| * | |
| * $Id: pnc2000.c,v 1.18 2005/11/07 11:14:28 gleixner Exp $ | |
| */ | |
| #include <linux/module.h> | |
| #include <linux/types.h> | |
| #include <linux/kernel.h> | |
| #include <linux/init.h> | |
| #include <linux/mtd/mtd.h> | |
| #include <linux/mtd/map.h> | |
| #include <linux/mtd/partitions.h> | |
| #define WINDOW_ADDR 0xbf000000 | |
| #define WINDOW_SIZE 0x00400000 | |
| /* | |
| * MAP DRIVER STUFF | |
| */ | |
| static struct map_info pnc_map = { | |
| .name = "PNC-2000", | |
| .size = WINDOW_SIZE, | |
| .bankwidth = 4, | |
| .phys = 0xFFFFFFFF, | |
| .virt = (void __iomem *)WINDOW_ADDR, | |
| }; | |
| /* | |
| * MTD 'PARTITIONING' STUFF | |
| */ | |
| static struct mtd_partition pnc_partitions[3] = { | |
| { | |
| .name = "PNC-2000 boot firmware", | |
| .size = 0x20000, | |
| .offset = 0 | |
| }, | |
| { | |
| .name = "PNC-2000 kernel", | |
| .size = 0x1a0000, | |
| .offset = 0x20000 | |
| }, | |
| { | |
| .name = "PNC-2000 filesystem", | |
| .size = 0x240000, | |
| .offset = 0x1c0000 | |
| } | |
| }; | |
| /* | |
| * This is the master MTD device for which all the others are just | |
| * auto-relocating aliases. | |
| */ | |
| static struct mtd_info *mymtd; | |
| static int __init init_pnc2000(void) | |
| { | |
| printk(KERN_NOTICE "Photron PNC-2000 flash mapping: %x at %x\n", WINDOW_SIZE, WINDOW_ADDR); | |
| simple_map_init(&pnc_map); | |
| mymtd = do_map_probe("cfi_probe", &pnc_map); | |
| if (mymtd) { | |
| mymtd->owner = THIS_MODULE; | |
| return add_mtd_partitions(mymtd, pnc_partitions, 3); | |
| } | |
| return -ENXIO; | |
| } | |
| static void __exit cleanup_pnc2000(void) | |
| { | |
| if (mymtd) { | |
| del_mtd_partitions(mymtd); | |
| map_destroy(mymtd); | |
| } | |
| } | |
| module_init(init_pnc2000); | |
| module_exit(cleanup_pnc2000); | |
| MODULE_LICENSE("GPL"); | |
| MODULE_AUTHOR("Crossnet Co. <info@crossnet.co.jp>"); | |
| MODULE_DESCRIPTION("MTD map driver for Photron PNC-2000 board"); |