diff --git a/drivers/mtd/nand/denali.h b/drivers/mtd/nand/denali.h index 08db48843da357ee1ef0412e7a9e5a200b70c4c8..f796f0dad1188f571ebdec8ef6258feaec0779be 100644 --- a/drivers/mtd/nand/denali.h +++ b/drivers/mtd/nand/denali.h @@ -435,6 +435,7 @@ struct nand_buf { struct denali_nand_info { struct nand_chip nand; + unsigned long clk_x_rate; /* bus interface clock rate */ int flash_bank; /* currently selected chip */ int status; int platform; diff --git a/drivers/mtd/nand/denali_dt.c b/drivers/mtd/nand/denali_dt.c index 4afd679a04b2c9eeb559d3e22ed65b09513979ec..805c066b40569574346341e71876748da07ea4cf 100644 --- a/drivers/mtd/nand/denali_dt.c +++ b/drivers/mtd/nand/denali_dt.c @@ -6,6 +6,7 @@ */ #include <common.h> +#include <clk.h> #include <dm.h> #include <linux/io.h> #include <linux/ioport.h> @@ -52,6 +53,7 @@ static int denali_dt_probe(struct udevice *dev) { struct denali_nand_info *denali = dev_get_priv(dev); const struct denali_dt_data *data; + struct clk clk; struct resource res; int ret; @@ -73,6 +75,16 @@ static int denali_dt_probe(struct udevice *dev) denali->flash_mem = devm_ioremap(dev, res.start, resource_size(&res)); + ret = clk_get_by_index(dev, 0, &clk); + if (ret) + return ret; + + ret = clk_enable(&clk); + if (ret) + return ret; + + denali->clk_x_rate = clk_get_rate(&clk); + return denali_init(denali); }