mtd: rawnand: ams-delta: Make read pulses optional
authorJanusz Krzysztofik <jmkrzyszt@gmail.com>
Wed, 12 Feb 2020 00:39:23 +0000 (01:39 +0100)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Mon, 9 Mar 2020 13:51:02 +0000 (14:51 +0100)
Allow platforms to omit NRE pin from device configuration by requesting
that pin as optional.  In that case, also don't apply read pulse width
from chip SDR timings.  There should be no need for further code
adjustments as gpiolib can handle NULL GPIO descriptor pointers.

Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20200212003929.6682-9-jmkrzyszt@gmail.com
drivers/mtd/nand/raw/ams-delta.c

index 1168921..c481d73 100644 (file)
@@ -202,8 +202,10 @@ static int ams_delta_setup_data_interface(struct nand_chip *this, int csline,
        if (csline == NAND_DATA_IFACE_CHECK_ONLY)
                return 0;
 
-       priv->tRP = DIV_ROUND_UP(sdr->tRP_min, 1000);
-       dev_dbg(dev, "using %u ns read pulse width\n", priv->tRP);
+       if (priv->gpiod_nre) {
+               priv->tRP = DIV_ROUND_UP(sdr->tRP_min, 1000);
+               dev_dbg(dev, "using %u ns read pulse width\n", priv->tRP);
+       }
 
        priv->tWP = DIV_ROUND_UP(sdr->tWP_min, 1000);
        dev_dbg(dev, "using %u ns write pulse width\n", priv->tWP);
@@ -276,7 +278,8 @@ static int ams_delta_init(struct platform_device *pdev)
                return err;
        }
 
-       priv->gpiod_nre = devm_gpiod_get(&pdev->dev, "nre", GPIOD_OUT_LOW);
+       priv->gpiod_nre = devm_gpiod_get_optional(&pdev->dev, "nre",
+                                                 GPIOD_OUT_LOW);
        if (IS_ERR(priv->gpiod_nre)) {
                err = PTR_ERR(priv->gpiod_nre);
                dev_err(&pdev->dev, "NRE GPIO request failed (%d)\n", err);