static int physmap_flash_remove(struct platform_device *dev) { struct physmap_flash_info *info; struct physmap_flash_data *physmap_data; int i; info = platform_get_drvdata(dev); if (info == NULL) return 0; platform_set_drvdata(dev, NULL); physmap_data = dev->dev.platform_data; if (info->cmtd) { mtd_device_unregister(info->cmtd); if (info->nr_parts) kfree(info->parts); if (info->cmtd != info->mtd[0]) mtd_concat_destroy(info->cmtd); } for (i = 0; i < MAX_RESOURCES; i++) { if (info->mtd[i] != NULL) map_destroy(info->mtd[i]); } if (physmap_data->exit) physmap_data->exit(dev); return 0; }
static int of_flash_remove(struct platform_device *dev) { struct of_flash *info; int i; info = dev_get_drvdata(&dev->dev); if (!info) return 0; dev_set_drvdata(&dev->dev, NULL); if (info->cmtd) { mtd_device_unregister(info->cmtd); if (info->cmtd != info->list[0].mtd) mtd_concat_destroy(info->cmtd); } for (i = 0; i < info->list_size; i++) { if (info->list[i].mtd) map_destroy(info->list[i].mtd); if (info->list[i].map.virt) iounmap(info->list[i].map.virt); if (info->list[i].res) { release_resource(info->list[i].res); kfree(info->list[i].res); } } return 0; }
static int physmap_flash_remove(struct platform_device *dev) { struct physmap_flash_info *info; struct physmap_flash_data *physmap_data; int i; info = platform_get_drvdata(dev); if (info == NULL) return 0; platform_set_drvdata(dev, NULL); physmap_data = dev->dev.platform_data; #ifdef CONFIG_MTD_CONCAT if (info->cmtd != info->mtd[0]) { del_mtd_device(info->cmtd); mtd_concat_destroy(info->cmtd); } #endif for (i = 0; i < MAX_RESOURCES; i++) { if (info->mtd[i] != NULL) { #ifdef CONFIG_MTD_PARTITIONS if (info->nr_parts) { del_mtd_partitions(info->mtd[i]); kfree(info->parts); } else if (physmap_data->nr_parts) { del_mtd_partitions(info->mtd[i]); } else { del_mtd_device(info->mtd[i]); } #else del_mtd_device(info->mtd[i]); #endif map_destroy(info->mtd[i]); } if (info->map[i].virt != NULL) iounmap(info->map[i].virt); } if (info->res != NULL) { release_resource(info->res); kfree(info->res); } return 0; }
static void __exit cleanup_dnpc(void) { if(merged_mtd) { del_mtd_partitions(merged_mtd); mtd_concat_destroy(merged_mtd); } if (mymtd) { del_mtd_partitions(mymtd); map_destroy(mymtd); } if (dnpc_map.virt) { iounmap(dnpc_map.virt); dnpc_unmap_flash(); dnpc_map.virt = NULL; } }
static void __exit cleanup_ppmc280(void) { int i; if (chunk) { del_mtd_device(chunk); mtd_concat_destroy(chunk); } for (i = 0; i < NUM_FLASH_BANKS; i++) { if (flash[i]) map_destroy(flash[i]); if (ppmc280_map[i].virt) { iounmap((void *)ppmc280_map[i].virt); ppmc280_map[i].virt = 0; } } }
static int of_flash_remove(struct platform_device *dev) { struct of_flash *info; int i; info = dev_get_drvdata(&dev->dev); if (!info) return 0; dev_set_drvdata(&dev->dev, NULL); #ifdef CONFIG_MTD_CONCAT if (info->cmtd != info->list[0].mtd) { del_mtd_device(info->cmtd); mtd_concat_destroy(info->cmtd); } #endif if (info->cmtd) { if (OF_FLASH_PARTS(info)) { del_mtd_partitions(info->cmtd); kfree(OF_FLASH_PARTS(info)); } else { del_mtd_device(info->cmtd); } } for (i = 0; i < info->list_size; i++) { if (info->list[i].mtd) map_destroy(info->list[i].mtd); if (info->list[i].map.virt) iounmap(info->list[i].map.virt); if (info->list[i].res) { release_resource(info->list[i].res); kfree(info->list[i].res); } } kfree(info); return 0; }
static void __exit cleanup_sc520cdp(void) { int i; if (merged_mtd) { del_mtd_device(merged_mtd); mtd_concat_destroy(merged_mtd); } if (mymtd[2]) del_mtd_device(mymtd[2]); for (i = 0; i < NUM_FLASH_BANKS; i++) { if (mymtd[i]) map_destroy(mymtd[i]); if (sc520cdp_map[i].virt) { iounmap((void *)sc520cdp_map[i].virt); sc520cdp_map[i].virt = 0; } } }
static void __exit cleanup_sc520cdp(void) { int i; if (merged_mtd) { mtd_device_unregister(merged_mtd); mtd_concat_destroy(merged_mtd); } if (mymtd[2]) mtd_device_unregister(mymtd[2]); for (i = 0; i < NUM_FLASH_BANKS; i++) { if (mymtd[i]) map_destroy(mymtd[i]); if (sc520cdp_map[i].virt) { iounmap(sc520cdp_map[i].virt); sc520cdp_map[i].virt = NULL; } } }
static int physmap_flash_remove(struct platform_device *dev) { struct physmap_flash_info *info; struct physmap_flash_data *physmap_data; int i; info = platform_get_drvdata(dev); if (info == NULL) return 0; platform_set_drvdata(dev, NULL); physmap_data = dev->dev.platform_data; if (info->cmtd) { #ifdef CONFIG_MTD_PARTITIONS if (info->nr_parts || physmap_data->nr_parts) del_mtd_partitions(info->cmtd); else del_mtd_device(info->cmtd); #else del_mtd_device(info->cmtd); #endif } #ifdef CONFIG_MTD_PARTITIONS if (info->nr_parts) kfree(info->parts); #endif #ifdef CONFIG_MTD_CONCAT if (info->cmtd != info->mtd[0]) mtd_concat_destroy(info->cmtd); #endif for (i = 0; i < MAX_RESOURCES; i++) { if (info->mtd[i] != NULL) map_destroy(info->mtd[i]); } return 0; }