static int of_flash_remove(struct of_device *dev) { struct of_flash *info; info = dev_get_drvdata(&dev->dev); if (!info) return 0; dev_set_drvdata(&dev->dev, NULL); if (info->mtd) { if (OF_FLASH_PARTS(info)) { del_mtd_partitions(info->mtd); kfree(OF_FLASH_PARTS(info)); } else { del_mtd_device(info->mtd); } map_destroy(info->mtd); } if (info->map.virt) iounmap(info->map.virt); if (info->res) { release_resource(info->res); kfree(info->res); } 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); #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 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 != info->list[0].mtd) { mtd_device_unregister(info->cmtd); mtd_concat_destroy(info->cmtd); } if (info->cmtd) { if (OF_FLASH_PARTS(info)) kfree(OF_FLASH_PARTS(info)); mtd_device_unregister(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; }