Lines Matching +full:erase +full:- +full:size
1 // SPDX-License-Identifier: GPL-2.0-or-later
42 * Don't return -ERESTARTSYS if we can't get a token, the MTD core
49 struct powernv_flash *info = (struct powernv_flash *)mtd->priv; in powernv_flash_async_op()
50 struct device *dev = &mtd->dev; in powernv_flash_async_op()
60 if (token != -ERESTARTSYS) in powernv_flash_async_op()
63 token = -EINTR; in powernv_flash_async_op()
69 rc = opal_flash_read(info->id, offset, __pa(buf), len, token); in powernv_flash_async_op()
72 rc = opal_flash_write(info->id, offset, __pa(buf), len, token); in powernv_flash_async_op()
75 rc = opal_flash_erase(info->id, offset, len, token); in powernv_flash_async_op()
80 return -EIO; in powernv_flash_async_op()
98 rc = -EINTR; in powernv_flash_async_op()
136 * Returns 0 if read successful, or -ERRNO if an error occurred
153 * Returns 0 if write successful, -ERRNO if error occurred
165 * @erase: the erase info
166 * Returns 0 if erase successful or -ERRNO if an error occurred
168 static int powernv_flash_erase(struct mtd_info *mtd, struct erase_info *erase) in powernv_flash_erase() argument
172 rc = powernv_flash_async_op(mtd, FLASH_OP_ERASE, erase->addr, in powernv_flash_erase()
173 erase->len, NULL, NULL); in powernv_flash_erase()
175 erase->fail_addr = erase->addr; in powernv_flash_erase()
181 * powernv_flash_set_driver_info - Fill the mtd_info structure and docg3
188 u64 size; in powernv_flash_set_driver_info() local
192 rc = of_property_read_u32(dev->of_node, "ibm,flash-block-size", in powernv_flash_set_driver_info()
195 dev_err(dev, "couldn't get resource block size information\n"); in powernv_flash_set_driver_info()
199 rc = of_property_read_u64(dev->of_node, "reg", &size); in powernv_flash_set_driver_info()
201 dev_err(dev, "couldn't get resource size information\n"); in powernv_flash_set_driver_info()
209 mtd->name = devm_kasprintf(dev, GFP_KERNEL, "%pOFP", dev->of_node); in powernv_flash_set_driver_info()
210 if (!mtd->name) in powernv_flash_set_driver_info()
211 return -ENOMEM; in powernv_flash_set_driver_info()
213 mtd->type = MTD_NORFLASH; in powernv_flash_set_driver_info()
214 mtd->flags = MTD_WRITEABLE; in powernv_flash_set_driver_info()
215 mtd->size = size; in powernv_flash_set_driver_info()
216 mtd->erasesize = erase_size; in powernv_flash_set_driver_info()
217 mtd->writebufsize = mtd->writesize = 1; in powernv_flash_set_driver_info()
218 mtd->owner = THIS_MODULE; in powernv_flash_set_driver_info()
219 mtd->_erase = powernv_flash_erase; in powernv_flash_set_driver_info()
220 mtd->_read = powernv_flash_read; in powernv_flash_set_driver_info()
221 mtd->_write = powernv_flash_write; in powernv_flash_set_driver_info()
222 mtd->dev.parent = dev; in powernv_flash_set_driver_info()
223 mtd_set_of_node(mtd, dev->of_node); in powernv_flash_set_driver_info()
231 * Returns 0 on success, -ENOMEM, -ENXIO on error
235 struct device *dev = &pdev->dev; in powernv_flash_probe()
241 return -ENOMEM; in powernv_flash_probe()
243 data->mtd.priv = data; in powernv_flash_probe()
245 ret = of_property_read_u32(dev->of_node, "ibm,opal-id", &(data->id)); in powernv_flash_probe()
247 dev_err(dev, "no device property 'ibm,opal-id'\n"); in powernv_flash_probe()
251 ret = powernv_flash_set_driver_info(dev, &data->mtd); in powernv_flash_probe()
262 return mtd_device_register(&data->mtd, NULL, 0); in powernv_flash_probe()
266 * op_release - Release the driver
273 struct powernv_flash *data = dev_get_drvdata(&(pdev->dev)); in powernv_flash_release()
276 WARN_ON(mtd_device_unregister(&data->mtd)); in powernv_flash_release()
280 { .compatible = "ibm,opal-flash" },