mtd: rawnand: Make ->select_chip() optional when ->exec_op() is implemented
authorBoris Brezillon <boris.brezillon@bootlin.com>
Sun, 11 Nov 2018 07:55:16 +0000 (08:55 +0100)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Fri, 7 Dec 2018 09:38:25 +0000 (10:38 +0100)
Now that the CS to be selected on a nand_operation is passed in
nand_operation->cs we can make the ->select_chip() hook optional for
drivers implementing ->exec_op().

When not implemented, the core is assuming the CS line is automatically
asserted/deasserted by the driver ->exec_op() implementation.

Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
Tested-by: Janusz Krzysztofik <jmkrzyszt@gmail.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/mtd/nand/raw/nand_base.c

index 7aa661f7689151f1b9d5d14ca15a23404160614e..93a19f5517966658f52b2dc6d7514e484386125e 100644 (file)
@@ -247,7 +247,9 @@ void nand_select_target(struct nand_chip *chip, unsigned int cs)
                return;
 
        chip->cur_cs = cs;
-       chip->select_chip(chip, cs);
+
+       if (chip->select_chip)
+               chip->select_chip(chip, cs);
 }
 EXPORT_SYMBOL_GPL(nand_select_target);
 
@@ -260,7 +262,9 @@ EXPORT_SYMBOL_GPL(nand_select_target);
  */
 void nand_deselect_target(struct nand_chip *chip)
 {
-       chip->select_chip(chip, -1);
+       if (chip->select_chip)
+               chip->select_chip(chip, -1);
+
        chip->cur_cs = -1;
 }
 EXPORT_SYMBOL_GPL(nand_deselect_target);
@@ -5021,11 +5025,6 @@ static int nand_scan_ident(struct nand_chip *chip, unsigned int maxchips,
        if (!mtd->name && mtd->dev.parent)
                mtd->name = dev_name(mtd->dev.parent);
 
-       if (chip->exec_op && !chip->select_chip) {
-               pr_err("->select_chip() is mandatory when implementing ->exec_op()\n");
-               return -EINVAL;
-       }
-
        ret = nand_legacy_check_hooks(chip);
        if (ret)
                return ret;