summaryrefslogtreecommitdiffstats
path: root/drivers/mtd/nand/raw/cadence-nand-controller.c
diff options
context:
space:
mode:
authorBoris Brezillon <boris.brezillon@collabora.com>2020-04-18 21:42:17 +0200
committerMiquel Raynal <miquel.raynal@bootlin.com>2020-05-10 21:16:01 +0200
commitce446b4b2d803cf62de2e74b1fbda8758e4835bd (patch)
tree4c78cb5fcbf2b2fee6dc4a124bb4d73a38311c5e /drivers/mtd/nand/raw/cadence-nand-controller.c
parent4ba246d7a365b8049892d852ab00d8bd707dc0e6 (diff)
downloadlinux-ce446b4b2d803cf62de2e74b1fbda8758e4835bd.tar.bz2
mtd: rawnand: Take check_only into account
->exec_op() is passed a check_only argument that encodes when the controller should just check whether the operation is supported or not without executing it. Some controllers simply ignore this arguments, others don't but keep modifying some of the registers before returning. Let's fix all those drivers. Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Link: https://lore.kernel.org/linux-mtd/20200418194217.1016060-1-boris.brezillon@collabora.com
Diffstat (limited to 'drivers/mtd/nand/raw/cadence-nand-controller.c')
-rw-r--r--drivers/mtd/nand/raw/cadence-nand-controller.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/mtd/nand/raw/cadence-nand-controller.c b/drivers/mtd/nand/raw/cadence-nand-controller.c
index acc0a24e5816..e7abb15c7253 100644
--- a/drivers/mtd/nand/raw/cadence-nand-controller.c
+++ b/drivers/mtd/nand/raw/cadence-nand-controller.c
@@ -2223,10 +2223,12 @@ static int cadence_nand_exec_op(struct nand_chip *chip,
const struct nand_operation *op,
bool check_only)
{
- int status = cadence_nand_select_target(chip);
+ if (!check_only) {
+ int status = cadence_nand_select_target(chip);
- if (status)
- return status;
+ if (status)
+ return status;
+ }
return nand_op_parser_exec_op(chip, &cadence_nand_op_parser, op,
check_only);