mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 01:11:14 +00:00
fa4dc86e98
MEMREAD is a new ioctl for MTD character devices that was first included in Linux 6.1. It allows userspace applications to use the Linux kernel's OOB autoplacement mechanism while reading data from NAND devices. The Yafut tool needs this ioctl to do its job. Signed-off-by: Michał Kępień <openwrt@kempniu.pl>
51 lines
1.7 KiB
Diff
51 lines
1.7 KiB
Diff
From 94ef3c35b935a63f6c156957c92f6cf33c9a8dae Mon Sep 17 00:00:00 2001
|
|
From: Miquel Raynal <miquel.raynal@bootlin.com>
|
|
Date: Thu, 27 Jan 2022 10:18:02 +0100
|
|
Subject: [PATCH 08/15] mtd: spinand: Delay a little bit the dirmap creation
|
|
|
|
As we will soon tweak the dirmap creation to act a little bit
|
|
differently depending on the picked ECC engine, we need to initialize
|
|
dirmaps after ECC engines. This should not have any effect as dirmaps
|
|
are not yet used at this point.
|
|
|
|
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
|
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
|
|
Link: https://lore.kernel.org/linux-mtd/20220127091808.1043392-8-miquel.raynal@bootlin.com
|
|
(cherry picked from commit dc4c2cbf0be2d4a8e2a65013ea2815bb2c8ba949)
|
|
---
|
|
drivers/mtd/nand/spi/core.c | 16 ++++++++--------
|
|
1 file changed, 8 insertions(+), 8 deletions(-)
|
|
|
|
--- a/drivers/mtd/nand/spi/core.c
|
|
+++ b/drivers/mtd/nand/spi/core.c
|
|
@@ -1221,14 +1221,6 @@ static int spinand_init(struct spinand_d
|
|
if (ret)
|
|
goto err_free_bufs;
|
|
|
|
- ret = spinand_create_dirmaps(spinand);
|
|
- if (ret) {
|
|
- dev_err(dev,
|
|
- "Failed to create direct mappings for read/write operations (err = %d)\n",
|
|
- ret);
|
|
- goto err_manuf_cleanup;
|
|
- }
|
|
-
|
|
ret = nanddev_init(nand, &spinand_ops, THIS_MODULE);
|
|
if (ret)
|
|
goto err_manuf_cleanup;
|
|
@@ -1263,6 +1255,14 @@ static int spinand_init(struct spinand_d
|
|
mtd->ecc_strength = nanddev_get_ecc_conf(nand)->strength;
|
|
mtd->ecc_step_size = nanddev_get_ecc_conf(nand)->step_size;
|
|
|
|
+ ret = spinand_create_dirmaps(spinand);
|
|
+ if (ret) {
|
|
+ dev_err(dev,
|
|
+ "Failed to create direct mappings for read/write operations (err = %d)\n",
|
|
+ ret);
|
|
+ goto err_cleanup_ecc_engine;
|
|
+ }
|
|
+
|
|
return 0;
|
|
|
|
err_cleanup_ecc_engine:
|