From: sashiko-bot@kernel.org
To: "Santhosh Kumar K" <s-k6@ti.com>
Cc: "Michael Walle" <mwalle@kernel.org>,
"Vignesh Raghavendra" <vigneshr@ti.com>,
devicetree@vger.kernel.org,
"Takahiro Kuwano" <takahiro.kuwano@infineon.com>,
"Richard Weinberger" <richard@nod.at>,
conor+dt@kernel.org, robh@kernel.org,
"Pratyush Yadav" <pratyush@kernel.org>,
"Miquel Raynal" <miquel.raynal@bootlin.com>
Subject: Re: [PATCH v6 13/17] spi: cadence-quadspi: reprogram CS timing on every chip-select switch
Date: Thu, 23 Jul 2026 11:49:00 +0000 [thread overview]
Message-ID: <20260723114901.BE5CE1F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260723110219.3180747-14-s-k6@ti.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] Hardware timing delays are silently truncated and can overflow, leading to near-zero delays and data corruption.
--
--- Patch [13]: [PATCH v6 13/17] spi: cadence-quadspi: reprogram CS timing on every chip-select switch ---
commit cfd5fbcbe64f53f00c899f4f86da36ebc0b596a7
Author: Santhosh Kumar K <s-k6@ti.com>
spi: cadence-quadspi: reprogram CS timing on every chip-select switch
This patch updates the cadence-quadspi driver to reprogram per-device CS
timing and read-capture registers on any chip-select switch, preventing
devices on the same frequency from using stale timing parameters.
> diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-quadspi.c
> index 542ad331ff167..8bf3a5a8bf43d 100644
> --- a/drivers/spi/spi-cadence-quadspi.c
> +++ b/drivers/spi/spi-cadence-quadspi.c
> @@ -1570,10 +1570,19 @@ static void cqspi_configure(struct cqspi_flash_pdata *f_pdata,
> cqspi_chipselect(f_pdata);
> }
>
> - /* Setup baudrate divisor and delays */
> + /* Update baudrate only on clock change. */
> if (switch_ck) {
> cqspi->sclk = sclk;
> cqspi_config_baudrate_div(cqspi);
> + }
> +
> + /*
> + * Reprogram per-device CS timing and non-PHY read capture on any
> + * chip-select or clock switch. Without this, two devices at the same
> + * frequency would each see the other's timing parameters after a CS
> + * switch, since the lazy clock-only check would never trigger.
> + */
> + if (switch_cs || switch_ck) {
> cqspi_delay(f_pdata);
[Severity: High]
This is a pre-existing issue, but I noticed a potential problem in the
hardware timing calculations when cqspi_delay() is called here.
If a large delay is specified in the device tree (like cdns,tshsl-ns) or
the system operates at a high reference clock, could the calculation in
calculate_ticks_for_ns() overflow a 32-bit integer?
drivers/spi/spi-cadence-quadspi.c:calculate_ticks_for_ns() {
...
ticks = ref_clk_hz / 1000;
ticks = DIV_ROUND_UP(ticks * ns_val, 1000000);
...
}
If the reference clock is high and the requested delay exceeds ~8.5
microseconds, the multiplication might overflow.
Additionally, in cqspi_delay(), the calculated ticks are masked rather
than clamped:
drivers/spi/spi-cadence-quadspi.c:cqspi_delay() {
...
reg = (tshsl & CQSPI_REG_DELAY_TSHSL_MASK)
<< CQSPI_REG_DELAY_TSHSL_LSB;
reg |= (tchsh & CQSPI_REG_DELAY_TCHSH_MASK)
<< CQSPI_REG_DELAY_TCHSH_LSB;
...
}
If the calculated tick count exceeds 255 (the mask limit), wouldn't the
masking cause the value to wrap around to a near-zero delay instead of
clamping to the maximum allowed 255 ticks? This might lead to inadequate
timing delays and silent data corruption.
> cqspi_readdata_capture(cqspi, !cqspi->rclk_en, false,
> f_pdata->read_delay);
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260723110219.3180747-1-s-k6@ti.com?part=13
next prev parent reply other threads:[~2026-07-23 11:49 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-23 11:02 [PATCH v6 00/17] spi: cadence-quadspi: add PHY tuning support Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 11:02 ` [PATCH v6 01/17] spi: dt-bindings: add spi-max-post-config-frequency-hz property Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 11:02 ` [PATCH v6 02/17] spi: dt-bindings: add spi-phy-pattern-partition property Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 11:02 ` [PATCH v6 03/17] spi: parse spi-max-post-config-frequency-hz into post_config_max_speed_hz Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 11:02 ` [PATCH v6 04/17] spi: spi-mem: teach spi_mem_adjust_op_freq() about post-config ops Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 11:34 ` sashiko-bot
2026-07-23 11:02 ` [PATCH v6 05/17] spi: spi-mem: add execute_tuning callback and spi_mem_execute_tuning() Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 11:30 ` sashiko-bot
2026-07-23 11:02 ` [PATCH v6 06/17] spi: cadence-quadspi: move cqspi_readdata_capture earlier Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 11:02 ` [PATCH v6 07/17] spi: cadence-quadspi: add DQS support to read data capture Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 11:28 ` sashiko-bot
2026-07-23 11:02 ` [PATCH v6 08/17] spi: cadence-quadspi: add PHY tuning support Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 11:33 ` sashiko-bot
2026-07-23 11:02 ` [PATCH v6 09/17] spi: cadence-quadspi: skip DDR PHY tuning for 2-byte-address ops (i2383) Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 11:48 ` sashiko-bot
2026-07-23 11:02 ` [PATCH v6 10/17] spi: cadence-quadspi: refactor direct read path for PHY support Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 11:41 ` sashiko-bot
2026-07-23 11:02 ` [PATCH v6 11/17] spi: cadence-quadspi: enable PHY for direct reads Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 11:48 ` sashiko-bot
2026-07-23 11:02 ` [PATCH v6 12/17] spi: cadence-quadspi: enable PHY for indirect writes Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 11:44 ` sashiko-bot
2026-07-23 11:02 ` [PATCH v6 13/17] spi: cadence-quadspi: reprogram CS timing on every chip-select switch Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 11:49 ` sashiko-bot [this message]
2026-07-23 11:02 ` [PATCH v6 14/17] mtd: spinand: extract variant ranking logic into spinand_op_find_best_variant() Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 11:02 ` [PATCH v6 15/17] mtd: spinand: negotiate optimal controller operating point before dirmap creation Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 12:02 ` sashiko-bot
2026-07-23 11:02 ` [PATCH v6 16/17] mtd: spi-nor: extract read op template construction into helper Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
2026-07-23 11:02 ` [PATCH v6 17/17] mtd: spi-nor: run controller optimization before dirmap creation Santhosh Kumar K
2026-07-23 11:02 ` Santhosh Kumar K
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=20260723114901.BE5CE1F00A3A@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=miquel.raynal@bootlin.com \
--cc=mwalle@kernel.org \
--cc=pratyush@kernel.org \
--cc=richard@nod.at \
--cc=robh@kernel.org \
--cc=s-k6@ti.com \
--cc=sashiko-reviews@lists.linux.dev \
--cc=takahiro.kuwano@infineon.com \
--cc=vigneshr@ti.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.