diff options
| author | Jeff Garzik <jeff@garzik.org> | 2006-09-24 01:52:47 -0400 |
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2006-09-24 01:52:47 -0400 |
| commit | 23930fa1cebfea6f79881c588ccd1b0781e49e3f (patch) | |
| tree | 36d29e3f83661c4f5f45b6f74ac0d5f9886867a8 /drivers/mtd/maps/cstm_mips_ixx.c | |
| parent | 36b35a5be0e4b406acd816e2122d153e875105be (diff) | |
| parent | 4f5537de7c1531398e84e18a24f667e49cc94208 (diff) | |
Merge branch 'master' into upstream
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 aa56defb94c8..d6bef100d69a 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; } |
