From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Santhosh Kumar K <s-k6@ti.com>
Cc: <broonie@kernel.org>, <robh@kernel.org>, <krzk+dt@kernel.org>,
<conor+dt@kernel.org>, <richard@nod.at>, <vigneshr@ti.com>,
<pratyush@kernel.org>, <mwalle@kernel.org>,
<takahiro.kuwano@infineon.com>, <linux-spi@vger.kernel.org>,
<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<linux-mtd@lists.infradead.org>, <praneeth@ti.com>,
<u-kumar1@ti.com>, <a-dutta@ti.com>
Subject: Re: [PATCH v4 13/16] mtd: spinand: extract variant ranking logic into spinand_op_find_best()
Date: Thu, 02 Jul 2026 15:41:27 +0200 [thread overview]
Message-ID: <87v7axpkzc.fsf@bootlin.com> (raw)
In-Reply-To: <20260618073725.84733-14-s-k6@ti.com> (Santhosh Kumar K.'s message of "Thu, 18 Jun 2026 13:07:22 +0530")
On 18/06/2026 at 13:07:22 +0530, Santhosh Kumar K <s-k6@ti.com> wrote:
> spinand_select_op_variant() open-codes a loop that finds the fastest
> eligible op variant by transfer duration. Extract this into a shared
> helper spinand_op_find_best() that accepts a skip_mask bitmask of
> already-tried variant indices, enabling callers to iterate variants in
> ranked order while skipping previously attempted ones.
>
> spinand_select_op_variant() becomes a one-liner. No functional change.
>
> Signed-off-by: Santhosh Kumar K <s-k6@ti.com>
> ---
> drivers/mtd/nand/spi/core.c | 32 +++++++++++++++++++++++++++-----
> 1 file changed, 27 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/mtd/nand/spi/core.c b/drivers/mtd/nand/spi/core.c
> index f86786344d52..b678d0534297 100644
> --- a/drivers/mtd/nand/spi/core.c
> +++ b/drivers/mtd/nand/spi/core.c
> @@ -1541,9 +1541,22 @@ static int spinand_init_odtr_instruction_set(struct spinand_device *spinand)
> return 0;
> }
>
> +/*
> + * spinand_op_find_best() - Find the fastest eligible op variant.
Should definitely be named spinand_op_find_best_variant(). find_best is
way too wide.
> + * @spinand: SPI NAND device
> + * @variants: full variant list to search
> + * @odtr: true to consider ODTR ops, false for SSDR ops
> + * @skip_mask: bitmask of variant indices to skip (already tried)
The flag seems to be quite overlapping with the odtr flag. Shouldn't we
have a single way to filter operations?
Also, why are you switching from an interface enumeration to a boolean?
Some day we might need to support things like 4D-4D-4D. That is where an
enumeration is better than a boolean. If you want to drop the
enumeration, it shall be done everywhere else, but I don't think it is a
good approach.
> + * Iterates @variants, evaluates transfer duration for each eligible op, and
> + * returns a pointer to the fastest one not in @skip_mask. Returns NULL when
> + * no eligible variant remains. Used by both variant selection at init time
> + * (skip_mask == 0) and ranked PHY tuning iteration.
> + */
I haven't seen what is the use case of this mask yet, let's see in the
following patches.
Thanks,
Miquèl
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
WARNING: multiple messages have this Message-ID (diff)
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Santhosh Kumar K <s-k6@ti.com>
Cc: <broonie@kernel.org>, <robh@kernel.org>, <krzk+dt@kernel.org>,
<conor+dt@kernel.org>, <richard@nod.at>, <vigneshr@ti.com>,
<pratyush@kernel.org>, <mwalle@kernel.org>,
<takahiro.kuwano@infineon.com>, <linux-spi@vger.kernel.org>,
<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<linux-mtd@lists.infradead.org>, <praneeth@ti.com>,
<u-kumar1@ti.com>, <a-dutta@ti.com>
Subject: Re: [PATCH v4 13/16] mtd: spinand: extract variant ranking logic into spinand_op_find_best()
Date: Thu, 02 Jul 2026 15:41:27 +0200 [thread overview]
Message-ID: <87v7axpkzc.fsf@bootlin.com> (raw)
In-Reply-To: <20260618073725.84733-14-s-k6@ti.com> (Santhosh Kumar K.'s message of "Thu, 18 Jun 2026 13:07:22 +0530")
On 18/06/2026 at 13:07:22 +0530, Santhosh Kumar K <s-k6@ti.com> wrote:
> spinand_select_op_variant() open-codes a loop that finds the fastest
> eligible op variant by transfer duration. Extract this into a shared
> helper spinand_op_find_best() that accepts a skip_mask bitmask of
> already-tried variant indices, enabling callers to iterate variants in
> ranked order while skipping previously attempted ones.
>
> spinand_select_op_variant() becomes a one-liner. No functional change.
>
> Signed-off-by: Santhosh Kumar K <s-k6@ti.com>
> ---
> drivers/mtd/nand/spi/core.c | 32 +++++++++++++++++++++++++++-----
> 1 file changed, 27 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/mtd/nand/spi/core.c b/drivers/mtd/nand/spi/core.c
> index f86786344d52..b678d0534297 100644
> --- a/drivers/mtd/nand/spi/core.c
> +++ b/drivers/mtd/nand/spi/core.c
> @@ -1541,9 +1541,22 @@ static int spinand_init_odtr_instruction_set(struct spinand_device *spinand)
> return 0;
> }
>
> +/*
> + * spinand_op_find_best() - Find the fastest eligible op variant.
Should definitely be named spinand_op_find_best_variant(). find_best is
way too wide.
> + * @spinand: SPI NAND device
> + * @variants: full variant list to search
> + * @odtr: true to consider ODTR ops, false for SSDR ops
> + * @skip_mask: bitmask of variant indices to skip (already tried)
The flag seems to be quite overlapping with the odtr flag. Shouldn't we
have a single way to filter operations?
Also, why are you switching from an interface enumeration to a boolean?
Some day we might need to support things like 4D-4D-4D. That is where an
enumeration is better than a boolean. If you want to drop the
enumeration, it shall be done everywhere else, but I don't think it is a
good approach.
> + * Iterates @variants, evaluates transfer duration for each eligible op, and
> + * returns a pointer to the fastest one not in @skip_mask. Returns NULL when
> + * no eligible variant remains. Used by both variant selection at init time
> + * (skip_mask == 0) and ranked PHY tuning iteration.
> + */
I haven't seen what is the use case of this mask yet, let's see in the
following patches.
Thanks,
Miquèl
next prev parent reply other threads:[~2026-07-02 13:41 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-18 7:37 [PATCH v4 00/16] spi: cadence-quadspi: add PHY tuning support Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-06-18 7:37 ` [PATCH v4 01/16] spi: dt-bindings: add spi-max-post-config-frequency property Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-06-18 16:36 ` Conor Dooley
2026-06-18 16:36 ` Conor Dooley
2026-06-22 9:14 ` Krzysztof Kozlowski
2026-06-22 9:14 ` Krzysztof Kozlowski
2026-06-22 19:46 ` Conor Dooley
2026-06-22 19:46 ` Conor Dooley
2026-06-29 15:41 ` Miquel Raynal
2026-06-29 15:41 ` Miquel Raynal
2026-06-18 7:37 ` [PATCH v4 02/16] spi: dt-bindings: add spi-phy-pattern-partition property Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-06-18 7:50 ` sashiko-bot
2026-06-22 9:17 ` Krzysztof Kozlowski
2026-06-22 9:17 ` Krzysztof Kozlowski
2026-06-22 17:11 ` Miquel Raynal
2026-06-22 17:11 ` Miquel Raynal
2026-06-18 7:37 ` [PATCH v4 03/16] spi: parse spi-max-post-config-frequency into post_config_max_speed_hz Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-06-18 7:54 ` sashiko-bot
2026-06-29 15:43 ` Miquel Raynal
2026-06-29 15:43 ` Miquel Raynal
2026-06-18 7:37 ` [PATCH v4 04/16] spi: spi-mem: teach spi_mem_adjust_op_freq() about post-config ops Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-06-18 8:02 ` sashiko-bot
2026-07-02 13:32 ` Miquel Raynal
2026-07-02 13:32 ` Miquel Raynal
2026-06-18 7:37 ` [PATCH v4 05/16] spi: spi-mem: add execute_tuning callback and spi_mem_execute_tuning() Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-06-18 7:57 ` sashiko-bot
2026-06-18 7:37 ` [PATCH v4 06/16] spi: cadence-quadspi: move cqspi_readdata_capture earlier Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-06-18 7:48 ` sashiko-bot
2026-06-18 7:37 ` [PATCH v4 07/16] spi: cadence-quadspi: add DQS support to read data capture Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-06-18 7:37 ` [PATCH v4 08/16] spi: cadence-quadspi: add PHY tuning support Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-06-18 7:59 ` sashiko-bot
2026-06-19 17:33 ` Mark Brown
2026-06-19 17:33 ` Mark Brown
2026-06-18 7:37 ` [PATCH v4 09/16] spi: cadence-quadspi: skip DDR PHY tuning for 2-byte-address ops (i2383) Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-06-18 8:04 ` sashiko-bot
2026-07-02 13:35 ` Miquel Raynal
2026-07-02 13:35 ` Miquel Raynal
2026-06-18 7:37 ` [PATCH v4 10/16] spi: cadence-quadspi: refactor direct read path for PHY support Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-06-18 7:57 ` sashiko-bot
2026-06-18 7:37 ` [PATCH v4 11/16] spi: cadence-quadspi: enable PHY for direct reads Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-06-18 7:53 ` sashiko-bot
2026-06-18 7:37 ` [PATCH v4 12/16] spi: cadence-quadspi: enable PHY for indirect writes Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-06-18 7:53 ` sashiko-bot
2026-06-18 7:37 ` [PATCH v4 13/16] mtd: spinand: extract variant ranking logic into spinand_op_find_best() Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-07-02 13:41 ` Miquel Raynal [this message]
2026-07-02 13:41 ` Miquel Raynal
2026-06-18 7:37 ` [PATCH v4 14/16] mtd: spinand: negotiate optimal PHY operating point before dirmap creation Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-06-18 8:02 ` sashiko-bot
2026-07-02 15:08 ` Miquel Raynal
2026-07-02 15:08 ` Miquel Raynal
2026-06-18 7:37 ` [PATCH v4 15/16] mtd: spi-nor: extract read op template construction into helper Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-06-18 7:37 ` [PATCH v4 16/16] mtd: spi-nor: run PHY tuning after init and update dirmap frequency Santhosh Kumar K
2026-06-18 7:37 ` Santhosh Kumar K
2026-06-18 8:01 ` sashiko-bot
2026-06-22 4:30 ` [PATCH v4 00/16] spi: cadence-quadspi: add PHY tuning support Mahapatra, Amit Kumar
2026-06-22 4:30 ` Mahapatra, Amit Kumar
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=87v7axpkzc.fsf@bootlin.com \
--to=miquel.raynal@bootlin.com \
--cc=a-dutta@ti.com \
--cc=broonie@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-spi@vger.kernel.org \
--cc=mwalle@kernel.org \
--cc=praneeth@ti.com \
--cc=pratyush@kernel.org \
--cc=richard@nod.at \
--cc=robh@kernel.org \
--cc=s-k6@ti.com \
--cc=takahiro.kuwano@infineon.com \
--cc=u-kumar1@ti.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.