mtd: fsmc_nand.c: Use default timings if none are provided in the dts
authorStefan Roese <sr@denx.de>
Thu, 19 Mar 2015 13:34:29 +0000 (14:34 +0100)
committerBrian Norris <computersforpeace@gmail.com>
Tue, 31 Mar 2015 00:49:07 +0000 (17:49 -0700)
Without this patch the timings are all set to 0 if not specified in the dts.
With this patch the driver falls back to use the defaults that are already
present in the driver and are known to work okay for some (older) boards.

Tested on a custom SPEAr600 based board.

Signed-off-by: Stefan Roese <sr@denx.de>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Cc: Viresh Kumar <viresh.linux@gmail.com>
Cc: Mian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/nand/fsmc_nand.c

index edfaa21b1817b533f1272e99708592d98daaa719..e58af4bfa8c81d1752151adc8a8b86175351057e 100644 (file)
@@ -873,6 +873,7 @@ static int fsmc_nand_probe_config_dt(struct platform_device *pdev,
 {
        struct fsmc_nand_platform_data *pdata = dev_get_platdata(&pdev->dev);
        u32 val;
+       int ret;
 
        /* Set default NAND width to 8 bits */
        pdata->width = 8;
@@ -891,8 +892,12 @@ static int fsmc_nand_probe_config_dt(struct platform_device *pdev,
                                sizeof(*pdata->nand_timings), GFP_KERNEL);
        if (!pdata->nand_timings)
                return -ENOMEM;
-       of_property_read_u8_array(np, "timings", (u8 *)pdata->nand_timings,
+       ret = of_property_read_u8_array(np, "timings", (u8 *)pdata->nand_timings,
                                                sizeof(*pdata->nand_timings));
+       if (ret) {
+               dev_info(&pdev->dev, "No timings in dts specified, using default timings!\n");
+               pdata->nand_timings = NULL;
+       }
 
        /* Set default NAND bank to 0 */
        pdata->bank = 0;