From: Pratyush Yadav <p.yadav@ti.com>
To: u-boot@lists.denx.de
Subject: [PATCH v9 05/28] spi: cadence-qspi: Do not calibrate when device tree sets read delay
Date: Wed, 5 May 2021 15:11:15 +0530 [thread overview]
Message-ID: <20210505094138.30805-6-p.yadav@ti.com> (raw)
In-Reply-To: <20210505094138.30805-1-p.yadav@ti.com>
If the device tree provides a read delay value, use that directly and do
not perform the calibration procedure.
This allows the device tree to over-ride the read delay value in cases
where the read delay value obtained via calibration is incorrect. One
such example is the Cypress Semper flash. It needs a read delay of 4 in
octal DTR mode. But since the calibration procedure is run before the
flash is switched in octal DTR mode, it yields a read delay of 2. A
value of 4 works for both octal DTR and legacy modes.
Signed-off-by: Pratyush Yadav <p.yadav@ti.com>
---
drivers/spi/cadence_qspi.c | 26 +++++++++++++++++++++-----
drivers/spi/cadence_qspi.h | 1 +
2 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c
index 67980431ba..de7628de27 100644
--- a/drivers/spi/cadence_qspi.c
+++ b/drivers/spi/cadence_qspi.c
@@ -141,12 +141,20 @@ static int cadence_spi_set_speed(struct udevice *bus, uint hz)
cadence_qspi_apb_controller_disable(priv->regbase);
/*
- * Calibration required for different current SCLK speed, requested
- * SCLK speed or chip select
+ * If the device tree already provides a read delay value, use that
+ * instead of calibrating.
*/
- if (priv->previous_hz != hz ||
- priv->qspi_calibrated_hz != hz ||
- priv->qspi_calibrated_cs != spi_chip_select(bus)) {
+ if (plat->read_delay >= 0) {
+ cadence_spi_write_speed(bus, hz);
+ cadence_qspi_apb_readdata_capture(priv->regbase, 1,
+ plat->read_delay);
+ } else if (priv->previous_hz != hz ||
+ priv->qspi_calibrated_hz != hz ||
+ priv->qspi_calibrated_cs != spi_chip_select(bus)) {
+ /*
+ * Calibration required for different current SCLK speed,
+ * requested SCLK speed or chip select
+ */
err = spi_calibration(bus, hz);
if (err)
return err;
@@ -320,6 +328,14 @@ static int cadence_spi_of_to_plat(struct udevice *bus)
255);
plat->tchsh_ns = ofnode_read_u32_default(subnode, "cdns,tchsh-ns", 20);
plat->tslch_ns = ofnode_read_u32_default(subnode, "cdns,tslch-ns", 20);
+ /*
+ * Read delay should be an unsigned value but we use a signed integer
+ * so that negative values can indicate that the device tree did not
+ * specify any signed values and we need to perform the calibration
+ * sequence to find it out.
+ */
+ plat->read_delay = ofnode_read_s32_default(subnode, "cdns,read-delay",
+ -1);
debug("%s: regbase=%p ahbbase=%p max-frequency=%d page-size=%d\n",
__func__, plat->regbase, plat->ahbbase, plat->max_hz,
diff --git a/drivers/spi/cadence_qspi.h b/drivers/spi/cadence_qspi.h
index 64c5867609..b06d7750e2 100644
--- a/drivers/spi/cadence_qspi.h
+++ b/drivers/spi/cadence_qspi.h
@@ -26,6 +26,7 @@ struct cadence_spi_plat {
u32 trigger_address;
fdt_addr_t ahbsize;
bool use_dac_mode;
+ int read_delay;
/* Flash parameters */
u32 page_size;
--
2.30.0
next prev parent reply other threads:[~2021-05-05 9:41 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-05 9:41 [PATCH v9 00/28] mtd: spi-nor-core: add xSPI Octal DTR support Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 01/28] spi: spi-mem: allow specifying whether an op is DTR or not Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 02/28] spi: spi-mem: allow specifying a command's extension Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 03/28] spi: spi-mem: export spi_mem_default_supports_op() Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 04/28] spi: spi-mem: add spi_mem_dtr_supports_op() Pratyush Yadav
2021-05-05 9:41 ` Pratyush Yadav [this message]
2021-05-05 9:41 ` [PATCH v9 06/28] spi: cadence-qspi: Add a small delay before indirect writes Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 07/28] spi: cadence-qspi: Add support for octal DTR flashes Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 08/28] arm: mvebu: x530: Use tiny SPI NOR Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 09/28] mtd: spi-nor-core: Fix address width on flash chips > 16MB Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 10/28] mtd: spi-nor-core: Add a ->setup() hook Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 11/28] mtd: spi-nor-core: Move SFDP related declarations to top Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 12/28] mtd: spi-nor-core: Introduce flash-specific fixup hooks Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 13/28] mtd: spi-nor-core: Rework hwcaps selection Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 14/28] mtd: spi-nor-core: Do not set data direction when there is no data Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 15/28] mtd: spi-nor-core: Add support for DTR protocol Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 16/28] mtd: spi-nor-core: prepare BFPT parsing for JESD216 rev D Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 17/28] mtd: spi-nor-core: Get command opcode extension type from BFPT Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 18/28] mtd: spi-nor-core: Parse xSPI Profile 1.0 table Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 19/28] mtd: spi-nor-core: Prepare Read SR and FSR for Octal DTR mode Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 20/28] mtd: spi-nor-core: Enable octal DTR mode when possible Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 21/28] mtd: spi-nor-core: Do not make invalid quad enable fatal Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 22/28] mtd: spi-nor-core: Detect Soft Reset sequence support from BFPT Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 23/28] mtd: spi-nor-core: Perform a Soft Reset on shutdown Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 24/28] mtd: spi-nor-core: Perform a Soft Reset on boot Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 25/28] mtd: spi-nor-core: allow truncated erases Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 26/28] mtd: spi-nor-core: Add non-uniform erase for Spansion/Cypress Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 27/28] mtd: spi-nor-core: Add support for Cypress Semper flash Pratyush Yadav
2021-05-05 9:41 ` [PATCH v9 28/28] mtd: spi-nor-core: Allow using Micron mt35xu512aba in Octal DTR mode Pratyush Yadav
2021-05-10 13:20 ` [PATCH v9 00/28] mtd: spi-nor-core: add xSPI Octal DTR support Pratyush Yadav
2021-05-26 17:05 ` Jagan Teki
2021-05-27 16:23 ` Pratyush Yadav
2021-06-14 15:10 ` Pratyush Yadav
2021-06-23 12:02 ` Jagan Teki
2021-06-24 11:13 ` Pratyush Yadav
2021-06-25 15:32 ` Jagan Teki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210505094138.30805-6-p.yadav@ti.com \
--to=p.yadav@ti.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).