[RFC PATCH v2 11/12] spi: cadence-quadspi: restrict PHY frequency to tuned operations
Santhosh Kumar K
s-k6 at ti.com
Mon Mar 30 12:56:01 PDT 2026
Hello Miquel,
On 17/03/26 20:47, Miquel Raynal wrote:
> Hi Santhosh,
>
> + Frieder and Eberhard
>
> On 13/02/2026 at 09:21:11 +01, Miquel Raynal <miquel.raynal at bootlin.com> wrote:
>
>> On 07/02/2026 at 00:57:04 +0530, Santhosh Kumar K <s-k6 at ti.com> wrote:
>>
>>> On 05/02/26 23:17, Miquel Raynal wrote:
>>>> Hi Santhosh,
>>>>
>>>>> + /*
>>>>> + * PHY tuning allows high-frequency operation only for calibrated
>>>>> + * commands. Uncalibrated operations use safe non-PHY frequency to
>>>>> + * avoid timing violations.
>>>>> + */
>>>>> + if (cqspi->ddata->execute_tuning && f_pdata->use_phy &&
>>>>> + (cqspi_op_matches_tuned(op, &f_pdata->phy_read_op) ||
>>>>> + cqspi_op_matches_tuned(op, &f_pdata->phy_write_op))) {
>>>>> + cqspi_configure(f_pdata, op->max_freq);
>>>>> + } else if (cqspi->ddata->execute_tuning) {
>>>>> + /* Use safe frequency for untuned operations */
>>>>> + cqspi_configure(f_pdata, f_pdata->non_phy_clk_rate);
>>>>> + } else {
>>>>> + /* No tuning support, always use requested frequency */
>>>>> + cqspi_configure(f_pdata, op->max_freq);
>>>>> + }
>>>> Shouldn't we handle this at the core level? We know what kind of
>>>> operation pattern we provided, so it is easy to set the correct
>>>> frequency in the operation structure.
>>>> Can you please make this happen? Perhaps you can return the operation
>>>> frequency once the calibration is successful (in the read and write op
>>>> templates maybe?) so this can be picked up by the core and used for the
>>>> following operations. This way the controller driver no longer needs to
>>>> check if the operation has been tuned or not, it can just look at the
>>>> frequency. When using the highest frequency, PHY tuning must be
>>>> used/enabled, otherwise not.
>>>
>>> No, Miquel, this may not be correct. There can be cases where an
>>> operation does not require tuning but still can run at maximum
>>> frequency (166 MHz, for instance).
>>
>> This is currently not the case. Currently you tune for one or two ops
>> (read/write) and you enable PHY tuning only on these. Do you plan on
>> adding such a feature? If not, I would not bother with this now.
>>
>>> In such scenarios, simply setting
>>> op->max_freq to the maximum frequency value and deciding whether to
>>> enable tuning based on an op->max_freq comparison would not be
>>> sufficient.
>>
>> If there are such cases, can they be listed? I am sorry but I fail to
>> see where this would not work. Any examples to share?
>
> I don't know if you got my feedback
Sorry for the late reply - I did see your feedback, just got caught up
with some critical work.
, but I would like to have all cases
> in mind to decide in which direction we must go. Especially, I would
> like to make the bridge with Frieder's work who is also "playing" with
> the maximum frequency.
Yes, I've gone through the series.
>
> We need to clarify our mental picture of the max_freq handling. How it
> should be derived, how autonomous shall the SPI controllers be wrt this
> value, shall we flag operations that can go faster and if yes, can we
> attach a meaningful value to these operations, etc etc.
>
> I feel like this is the part that needs extra thinking. The rest of the
> series is promising. I would like us to clarify the needs, maybe propose
> some kind of drawing/slides or even take half an hour to discuss in a
> call once we have all cases in mind.
I'll need a bit more time to gather some ideas and inputs, since I'm
switching back to this after a while. That said, we can still plan for a
call if there's already a proposal to discuss.
Regards,
Santhosh.
>
> Thanks,
> Miquèl
More information about the linux-mtd
mailing list