aboutsummaryrefslogtreecommitdiff
path: root/drivers/mtd/nand/raw/denali_dt.c
diff options
context:
space:
mode:
authorMasahiro Yamada <yamada.masahiro@socionext.com>2018-06-23 01:06:38 +0900
committerMiquel Raynal <miquel.raynal@bootlin.com>2018-07-18 09:24:14 +0200
commit1dfac31a5a63ac04a9b5fbc3f5105a586560f191 (patch)
treee186e6351b8f56d2f58ec0dbda6d4b0d9e43b1de /drivers/mtd/nand/raw/denali_dt.c
parent6f1fe97bec349a1fd6c5a8c7c5998d759fe721d5 (diff)
mtd: rawnand: denali: optimize timing parameters for data interface
This commit improves the ->setup_data_interface() hook. The denali_setup_data_interface() needs the frequency of clk_x and the ratio of clk_x / clk. The latter is currently hardcoded in the driver, like this: #define DENALI_CLK_X_MULT 6 The IP datasheet requires that clk_x / clk be 4, 5, or 6. I just chose 6 because it is the most defensive value, but it is not optimal. By getting the clock rate of both "clk" and "clk_x", the driver can compute the timing values more precisely. To not break the existing platforms, the fallback value, 50 MHz is provided. It is true for all upstreamed platforms. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Richard Weinberger <richard@nod.at> Tested-by: Richard Weinberger <richard@nod.at> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Diffstat (limited to 'drivers/mtd/nand/raw/denali_dt.c')
-rw-r--r--drivers/mtd/nand/raw/denali_dt.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/mtd/nand/raw/denali_dt.c b/drivers/mtd/nand/raw/denali_dt.c
index afaae378c624..0faaad032e5f 100644
--- a/drivers/mtd/nand/raw/denali_dt.c
+++ b/drivers/mtd/nand/raw/denali_dt.c
@@ -150,6 +150,7 @@ static int denali_dt_probe(struct platform_device *pdev)
goto out_disable_clk_x;
if (dt->clk_x) {
+ denali->clk_rate = clk_get_rate(dt->clk);
denali->clk_x_rate = clk_get_rate(dt->clk_x);
} else {
/*
@@ -158,6 +159,7 @@ static int denali_dt_probe(struct platform_device *pdev)
*/
dev_notice(dev,
"necessary clock is missing. default clock rates are used.\n");
+ denali->clk_rate = 50000000;
denali->clk_x_rate = 200000000;
}