summaryrefslogtreecommitdiff
path: root/drivers/mtd/spi-nor
diff options
context:
space:
mode:
authorYe.Li <B37916@freescale.com>2014-12-01 17:28:47 +0800
committerNitin Garg <nitin.garg@nxp.com>2016-01-14 11:02:36 -0600
commit186cc806907477447c47cfcd0ee9b0e606535a82 (patch)
tree88881ceaaa370ea5185bfa2c337e3da8fcf81d62 /drivers/mtd/spi-nor
parentbfc5afbb068101231b315eb86e4bd86249cded6a (diff)
MLK-9920 mtd: fsl-quadspi: Add ddrsmp parameter to device tree
Since QSPI internal DDR sample point is relevant with board layout, we can't use same value for all boards. Add ddrsmp parameter to device tree for different i.MX6SX board. Signed-off-by: Ye.Li <B37916@freescale.com> (cherry picked and merge from commit c9115cc22d836b5b980ca20932a005ea61b20082) (cherry picked from commit b0d9d9ce804247ccb2842bf53d2b32f14eed0309)
Diffstat (limited to 'drivers/mtd/spi-nor')
-rw-r--r--drivers/mtd/spi-nor/fsl-quadspi.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c
index f43dbb75ad4d..5ddb7e9438cf 100644
--- a/drivers/mtd/spi-nor/fsl-quadspi.c
+++ b/drivers/mtd/spi-nor/fsl-quadspi.c
@@ -281,6 +281,7 @@ struct fsl_qspi {
u32 clk_rate;
unsigned int chip_base_addr; /* We may support two chips. */
bool has_second_chip;
+ u32 ddr_smp;
struct mutex lock;
struct pm_qos_request pm_qos_req;
};
@@ -702,7 +703,8 @@ static void fsl_qspi_init_abh_read(struct fsl_qspi *q)
/* Set the Sampling Register for DDR */
reg2 = readl(q->iobase + QUADSPI_SMPR);
reg2 &= ~QUADSPI_SMPR_DDRSMP_MASK;
- reg2 |= (2 << QUADSPI_SMPR_DDRSMP_SHIFT);
+ reg2 |= ((q->ddr_smp << QUADSPI_SMPR_DDRSMP_SHIFT) &
+ QUADSPI_SMPR_DDRSMP_MASK);
writel(reg2, q->iobase + QUADSPI_SMPR);
/* Enable the module again (enable the DDR too) */
@@ -1028,6 +1030,12 @@ static int fsl_qspi_probe(struct platform_device *pdev)
if (IS_ERR(q->clk))
return PTR_ERR(q->clk);
+ /* find ddrsmp value */
+ ret = of_property_read_u32(dev->of_node, "ddrsmp",
+ &q->ddr_smp);
+ if (ret)
+ q->ddr_smp = 0;
+
ret = fsl_qspi_clk_prep_enable(q);
if (ret) {
dev_err(dev, "can not enable the clock\n");