Lines Matching refs:info
134 static void sa1100_destroy(struct sa_info *info, struct flash_platform_data *plat) in sa1100_destroy() argument
138 if (info->mtd) { in sa1100_destroy()
139 mtd_device_unregister(info->mtd); in sa1100_destroy()
140 if (info->mtd != info->subdev[0].mtd) in sa1100_destroy()
141 mtd_concat_destroy(info->mtd); in sa1100_destroy()
144 for (i = info->num_subdev - 1; i >= 0; i--) in sa1100_destroy()
145 sa1100_destroy_subdev(&info->subdev[i]); in sa1100_destroy()
146 kfree(info); in sa1100_destroy()
155 struct sa_info *info; in sa1100_setup_mtd() local
175 info = kzalloc(size, GFP_KERNEL); in sa1100_setup_mtd()
176 if (!info) { in sa1100_setup_mtd()
191 struct sa_subdev_info *subdev = &info->subdev[i]; in sa1100_setup_mtd()
207 info->num_subdev = i; in sa1100_setup_mtd()
212 if (ret != 0 && !(ret == -ENXIO && info->num_subdev > 0)) in sa1100_setup_mtd()
220 if (info->num_subdev == 1) { in sa1100_setup_mtd()
221 strcpy(info->subdev[0].name, plat->name); in sa1100_setup_mtd()
222 info->mtd = info->subdev[0].mtd; in sa1100_setup_mtd()
224 } else if (info->num_subdev > 1) { in sa1100_setup_mtd()
229 for (i = 0; i < info->num_subdev; i++) in sa1100_setup_mtd()
230 cdev[i] = info->subdev[i].mtd; in sa1100_setup_mtd()
232 info->mtd = mtd_concat_create(cdev, info->num_subdev, in sa1100_setup_mtd()
234 if (info->mtd == NULL) in sa1100_setup_mtd()
239 return info; in sa1100_setup_mtd()
242 sa1100_destroy(info, plat); in sa1100_setup_mtd()
252 struct sa_info *info; in sa1100_mtd_probe() local
258 info = sa1100_setup_mtd(pdev, plat); in sa1100_mtd_probe()
259 if (IS_ERR(info)) { in sa1100_mtd_probe()
260 err = PTR_ERR(info); in sa1100_mtd_probe()
267 mtd_device_parse_register(info->mtd, part_probes, NULL, plat->parts, in sa1100_mtd_probe()
270 platform_set_drvdata(pdev, info); in sa1100_mtd_probe()
279 struct sa_info *info = platform_get_drvdata(pdev); in sa1100_mtd_remove() local
282 sa1100_destroy(info, plat); in sa1100_mtd_remove()