diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-22 12:49:18 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-22 12:49:18 -0700 |
commit | a48178a2fa17beee17d7e6aeaa6ed2db5813552d (patch) | |
tree | 74579777d047478b3d62fcc3349a903b53515770 /drivers/mtd/maps/cstm_mips_ixx.c | |
parent | 14d1adfc59ba66932ef167fdff62983e7c2b0197 (diff) | |
parent | 734a56285dbeedc6cc10aef6f700eeab7c65ea9f (diff) | |
download | kernel_samsung_crespo-a48178a2fa17beee17d7e6aeaa6ed2db5813552d.zip kernel_samsung_crespo-a48178a2fa17beee17d7e6aeaa6ed2db5813552d.tar.gz kernel_samsung_crespo-a48178a2fa17beee17d7e6aeaa6ed2db5813552d.tar.bz2 |
Merge git://git.infradead.org/mtd-2.6
* git://git.infradead.org/mtd-2.6:
Remove accidentally-added include/linux/utsrelease.h
Revert "[MTD] blkdev helper code: fix printk format warning"
[MTD] Add SSFDC (SmartMedia) read-only translation layer
[MTD] pmc551 pci cleanup
[MTD] pmc551 use kzalloc
[MTD] pmc551 whitespace cleanup
[MTD] Remove iq80310 map driver
[MTD NAND] Fix in typo ndfc.c causing wrong ECC layout
[MTD] physmap: add power management support
ioremap balanced with iounmap for drivers/mtd subsystem
[MTD] Switch to pci_get_device and do ref counting
[MTD] blkdev helper code: fix printk format warning
[MTD] Fix ixp4xx partition parsing.
[JFFS2] Remove unneeded ifdefs from jffs2_fs_i.h
[MTD NAND] Remove old code in au1550nd.c
[MTD] Unlock NOR flash automatically where necessary
Diffstat (limited to 'drivers/mtd/maps/cstm_mips_ixx.c')
-rw-r--r-- | drivers/mtd/maps/cstm_mips_ixx.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/mtd/maps/cstm_mips_ixx.c b/drivers/mtd/maps/cstm_mips_ixx.c index aa56def..d6bef10 100644 --- a/drivers/mtd/maps/cstm_mips_ixx.c +++ b/drivers/mtd/maps/cstm_mips_ixx.c @@ -171,7 +171,14 @@ int __init init_cstm_mips_ixx(void) cstm_mips_ixx_map[i].phys = cstm_mips_ixx_board_desc[i].window_addr; cstm_mips_ixx_map[i].virt = ioremap(cstm_mips_ixx_board_desc[i].window_addr, cstm_mips_ixx_board_desc[i].window_size); if (!cstm_mips_ixx_map[i].virt) { + int j = 0; printk(KERN_WARNING "Failed to ioremap\n"); + for (j = 0; j < i; j++) { + if (cstm_mips_ixx_map[j].virt) { + iounmap((void *)cstm_mips_ixx_map[j].virt); + cstm_mips_ixx_map[j].virt = 0; + } + } return -EIO; } cstm_mips_ixx_map[i].name = cstm_mips_ixx_board_desc[i].name; @@ -204,8 +211,15 @@ int __init init_cstm_mips_ixx(void) cstm_mips_ixx_map[i].map_priv_2 = (unsigned long)mymtd; add_mtd_partitions(mymtd, parts, cstm_mips_ixx_board_desc[i].num_partitions); } - else - return -ENXIO; + else { + for (i = 0; i < PHYSMAP_NUMBER; i++) { + if (cstm_mips_ixx_map[i].virt) { + iounmap((void *)cstm_mips_ixx_map[i].virt); + cstm_mips_ixx_map[i].virt = 0; + } + } + return -ENXIO; + } } return 0; } |