mtd: lpc32xx_slc: Make wp gpio optional
authorAlexandre Pereira da Silva <aletes.xgr@gmail.com>
Wed, 27 Jun 2012 15:51:13 +0000 (17:51 +0200)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Fri, 6 Jul 2012 17:24:56 +0000 (18:24 +0100)
This patch supports missing wp gpio.

Signed-off-by: Alexandre Pereira da Silva <aletes.xgr@gmail.com>
Signed-off-by: Roland Stigge <stigge@antcom.de>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
drivers/mtd/nand/lpc32xx_slc.c

index 1d837b92ac797c328a86062dc3d5919422d0528f..1577a9b0d0c2e526dcb66b37af83ed886f76af50 100644 (file)
@@ -192,7 +192,7 @@ struct lpc32xx_nand_cfg_slc {
        uint32_t rhold;
        uint32_t rsetup;
        bool use_bbt;
-       unsigned wp_gpio;
+       int wp_gpio;
        struct mtd_partition *parts;
        unsigned num_parts;
 };
@@ -295,7 +295,8 @@ static int lpc32xx_nand_device_ready(struct mtd_info *mtd)
  */
 static void lpc32xx_wp_enable(struct lpc32xx_nand_host *host)
 {
-       gpio_set_value(host->ncfg->wp_gpio, 0);
+       if (gpio_is_valid(host->ncfg->wp_gpio))
+               gpio_set_value(host->ncfg->wp_gpio, 0);
 }
 
 /*
@@ -303,7 +304,8 @@ static void lpc32xx_wp_enable(struct lpc32xx_nand_host *host)
  */
 static void lpc32xx_wp_disable(struct lpc32xx_nand_host *host)
 {
-       gpio_set_value(host->ncfg->wp_gpio, 1);
+       if (gpio_is_valid(host->ncfg->wp_gpio))
+               gpio_set_value(host->ncfg->wp_gpio, 1);
 }
 
 /*
@@ -819,7 +821,8 @@ static int __devinit lpc32xx_nand_probe(struct platform_device *pdev)
                dev_err(&pdev->dev, "Missing platform data\n");
                return -ENOENT;
        }
-       if (gpio_request(host->ncfg->wp_gpio, "NAND WP")) {
+       if (gpio_is_valid(host->ncfg->wp_gpio) &&
+                       gpio_request(host->ncfg->wp_gpio, "NAND WP")) {
                dev_err(&pdev->dev, "GPIO not available\n");
                return -EBUSY;
        }