2005-09-18 11:46:45 +01:00
/*
* Flash memory access on 4 G Systems MTX - 1 boards
*
2005-11-07 11:15:40 +00:00
* $ Id : mtx - 1 _flash . c , v 1.2 2005 / 11 / 07 11 : 14 : 27 gleixner Exp $
2005-09-18 11:46:45 +01:00
*
* ( C ) 2005 Bruno Randolf < bruno . randolf @ 4 g - systems . biz >
2006-05-14 01:51:54 +01:00
* ( C ) 2005 Jörn Engel < joern @ wohnheim . fh - wedel . de >
2005-09-18 11:46:45 +01:00
*
*/
# include <linux/module.h>
# include <linux/types.h>
# include <linux/init.h>
# include <linux/kernel.h>
# include <linux/mtd/mtd.h>
# include <linux/mtd/map.h>
# include <linux/mtd/partitions.h>
# include <asm/io.h>
static struct map_info mtx1_map = {
. name = " MTX-1 flash " ,
. bankwidth = 4 ,
. size = 0x2000000 ,
. phys = 0x1E000000 ,
} ;
static struct mtd_partition mtx1_partitions [ ] = {
{
. name = " filesystem " ,
. size = 0x01C00000 ,
. offset = 0 ,
} , {
. name = " yamon " ,
. size = 0x00100000 ,
. offset = MTDPART_OFS_APPEND ,
. mask_flags = MTD_WRITEABLE ,
} , {
. name = " kernel " ,
. size = 0x002c0000 ,
. offset = MTDPART_OFS_APPEND ,
} , {
. name = " yamon env " ,
. size = 0x00040000 ,
. offset = MTDPART_OFS_APPEND ,
}
} ;
static struct mtd_info * mtx1_mtd ;
int __init mtx1_mtd_init ( void )
{
int ret = - ENXIO ;
simple_map_init ( & mtx1_map ) ;
mtx1_map . virt = ioremap ( mtx1_map . phys , mtx1_map . size ) ;
if ( ! mtx1_map . virt )
return - EIO ;
mtx1_mtd = do_map_probe ( " cfi_probe " , & mtx1_map ) ;
if ( ! mtx1_mtd )
goto err ;
mtx1_mtd - > owner = THIS_MODULE ;
2005-11-07 11:15:40 +00:00
ret = add_mtd_partitions ( mtx1_mtd , mtx1_partitions ,
2005-09-18 11:46:45 +01:00
ARRAY_SIZE ( mtx1_partitions ) ) ;
if ( ret )
goto err ;
return 0 ;
err :
iounmap ( mtx1_map . virt ) ;
return ret ;
}
static void __exit mtx1_mtd_cleanup ( void )
{
if ( mtx1_mtd ) {
del_mtd_partitions ( mtx1_mtd ) ;
map_destroy ( mtx1_mtd ) ;
}
if ( mtx1_map . virt )
iounmap ( mtx1_map . virt ) ;
}
module_init ( mtx1_mtd_init ) ;
module_exit ( mtx1_mtd_cleanup ) ;
MODULE_AUTHOR ( " Bruno Randolf <bruno.randolf@4g-systems.biz> " ) ;
MODULE_DESCRIPTION ( " MTX-1 flash map " ) ;
MODULE_LICENSE ( " GPL " ) ;