|
@@ -277,6 +277,7 @@ int __init nettel_init(void)
|
|
|
nettel_amd_map.virt = ioremap_nocache(amdaddr, maxsize);
|
|
|
if (!nettel_amd_map.virt) {
|
|
|
printk("SNAPGEAR: failed to ioremap() BOOTCS\n");
|
|
|
+ iounmap(nettel_mmcrp);
|
|
|
return(-EIO);
|
|
|
}
|
|
|
simple_map_init(&nettel_amd_map);
|
|
@@ -337,7 +338,8 @@ int __init nettel_init(void)
|
|
|
nettel_amd_map.virt = NULL;
|
|
|
#else
|
|
|
/* Only AMD flash supported */
|
|
|
- return(-ENXIO);
|
|
|
+ rc = -ENXIO;
|
|
|
+ goto out_unmap2;
|
|
|
#endif
|
|
|
}
|
|
|
|
|
@@ -361,14 +363,15 @@ int __init nettel_init(void)
|
|
|
nettel_intel_map.virt = ioremap_nocache(intel0addr, maxsize);
|
|
|
if (!nettel_intel_map.virt) {
|
|
|
printk("SNAPGEAR: failed to ioremap() ROMCS1\n");
|
|
|
- return(-EIO);
|
|
|
+ rc = -EIO;
|
|
|
+ goto out_unmap2;
|
|
|
}
|
|
|
simple_map_init(&nettel_intel_map);
|
|
|
|
|
|
intel_mtd = do_map_probe("cfi_probe", &nettel_intel_map);
|
|
|
if (!intel_mtd) {
|
|
|
- iounmap(nettel_intel_map.virt);
|
|
|
- return(-ENXIO);
|
|
|
+ rc = -ENXIO;
|
|
|
+ goto out_unmap1;
|
|
|
}
|
|
|
|
|
|
/* Set PAR to the detected size */
|
|
@@ -394,13 +397,14 @@ int __init nettel_init(void)
|
|
|
nettel_intel_map.virt = ioremap_nocache(intel0addr, maxsize);
|
|
|
if (!nettel_intel_map.virt) {
|
|
|
printk("SNAPGEAR: failed to ioremap() ROMCS1/2\n");
|
|
|
- return(-EIO);
|
|
|
+ rc = -EIO;
|
|
|
+ goto out_unmap2;
|
|
|
}
|
|
|
|
|
|
intel_mtd = do_map_probe("cfi_probe", &nettel_intel_map);
|
|
|
if (! intel_mtd) {
|
|
|
- iounmap((void *) nettel_intel_map.virt);
|
|
|
- return(-ENXIO);
|
|
|
+ rc = -ENXIO;
|
|
|
+ goto out_unmap1;
|
|
|
}
|
|
|
|
|
|
intel1size = intel_mtd->size - intel0size;
|
|
@@ -456,6 +460,18 @@ int __init nettel_init(void)
|
|
|
#endif
|
|
|
|
|
|
return(rc);
|
|
|
+
|
|
|
+#ifdef CONFIG_MTD_CFI_INTELEXT
|
|
|
+out_unmap1:
|
|
|
+ iounmap((void *) nettel_intel_map.virt);
|
|
|
+#endif
|
|
|
+
|
|
|
+out_unmap2:
|
|
|
+ iounmap(nettel_mmcrp);
|
|
|
+ iounmap(nettel_amd_map.virt);
|
|
|
+
|
|
|
+ return(rc);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/****************************************************************************/
|
|
@@ -469,6 +485,10 @@ void __exit nettel_cleanup(void)
|
|
|
del_mtd_partitions(amd_mtd);
|
|
|
map_destroy(amd_mtd);
|
|
|
}
|
|
|
+ if (nettel_mmcrp) {
|
|
|
+ iounmap(nettel_mmcrp);
|
|
|
+ nettel_mmcrp = NULL;
|
|
|
+ }
|
|
|
if (nettel_amd_map.virt) {
|
|
|
iounmap(nettel_amd_map.virt);
|
|
|
nettel_amd_map.virt = NULL;
|