static int platram_remove(struct platform_device *pdev) { struct platram_info *info = to_platram_info(pdev); dev_dbg(&pdev->dev, "removing device\n"); if (info == NULL) return 0; if (info->mtd) { mtd_device_unregister(info->mtd); map_destroy(info->mtd); } /* ensure ram is left read-only */ platram_setrw(info, PLATRAM_RO); /* release resources */ if (info->area) { release_resource(info->area); kfree(info->area); } if (info->map.virt != NULL) iounmap(info->map.virt); kfree(info); return 0; }
static int platram_remove(struct platform_device *pdev) { struct platram_info *info = to_platram_info(pdev); platform_set_drvdata(pdev, NULL); dev_dbg(&pdev->dev, "removing device\n"); if (info == NULL) return 0; if (info->mtd) { #ifdef CONFIG_MTD_PARTITIONS if (info->partitions) { del_mtd_partitions(info->mtd); kfree(info->partitions); } #endif del_mtd_device(info->mtd); map_destroy(info->mtd); } /* ensure ram is left read-only */ platram_setrw(info, PLATRAM_RO); /* release resources */ if (info->area) { release_resource(info->area); kfree(info->area); } if (info->map.virt != NULL) iounmap(info->map.virt); kfree(info); return 0; }