public inbox for linux-sound@vger.kernel.org
 help / color / mirror / Atom feed
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>
To: Richard Fitzgerald <rf@opensource.cirrus.com>,
	"Holalu Yogendra, Niranjan" <niranjan.hy@ti.com>
Cc: "broonie@kernel.org" <broonie@kernel.org>,
	"ckeepax@opensource.cirrus.com" <ckeepax@opensource.cirrus.com>,
	"shumingf@realtek.com" <shumingf@realtek.com>,
	"lgirdwood@gmail.com" <lgirdwood@gmail.com>,
	"ranjani.sridharan@linux.intel.com"
	<ranjani.sridharan@linux.intel.com>,
	"cezary.rojewski@intel.com" <cezary.rojewski@intel.com>,
	"peter.ujfalusi@linux.intel.com" <peter.ujfalusi@linux.intel.com>,
	"kai.vehmanen@linux.intel.com" <kai.vehmanen@linux.intel.com>,
	"vkoul@kernel.org" <vkoul@kernel.org>,
	"Ding, Shenghao" <shenghao-ding@ti.com>,
	"Xu, Baojun" <baojun.xu@ti.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Kasargod, Sandeep" <sandeepk@ti.com>,
	"linux-sound@vger.kernel.org" <linux-sound@vger.kernel.org>,
	"yung-chuan.liao@linux.intel.com"
	<yung-chuan.liao@linux.intel.com>
Subject: Re: [EXTERNAL] Re: [PATCH v1 RESEND] SoundWire: Allow Prepare command for Simplified_CP_SM
Date: Fri, 13 Feb 2026 15:56:40 +0100	[thread overview]
Message-ID: <f3a7b462-477d-459b-91ba-1ccf4bde5268@linux.dev> (raw)
In-Reply-To: <b1238db5-25ce-4046-9719-bd6fa8fbc82c@opensource.cirrus.com>


>>> Are you referring to the DPN_IntStat::PortReady bit? IOW do the errors during
>>> prepare happen because the interrupt is not generated?
>>> If that is the case, then you should be aware of the thread "soundwire:
>>> stream: Prepare ports in parallel to reduce stream start latency", where it was
>>> agreed that the use of the PortReady interrupt is broken. We do need to move
>>> to a different code where we have a polling loop on the
>>> DPN_PrepareStatus::NotFinished bits.
>>
>> Thanks for the info.
>>
>>> So is the problem in the interrupt generation, or is the problem with the 'Not
>>> Finished' bits?
>> Both, while using Full CP_SM on a simplified CP_SM device:
>> * First problem: the interrupt will not get generated on a simple CP_SM device.
>> * Second problem: even after timeout waiting for interrupt with huge delays,
>>    we can't rely on 'Not Finished' bits, causing timeout errors.
>>    In the current code for full CP_SM, 'Not Finished' = 0 is a good response even
>>    with timeout.
>>
> That's because it _IS_ a good response. If the part is reporting
> NotFinished=0, then it's good to go and we don't need to treat it as a
> timeout. The timeout is caused by the deadlock that Pierre mentioned.
> Full CP_SM will always timeout because that code is holding the bus
> lock, which blocks the interrupt handler.
> 
> Ignoring the timeout if NotFinished=0 was a workaround until I found
> time to fix the interrupt handling. Otherwise full CP_SM would never
> work.
> 
> We've now decided to replace that code with a polling loop instead of
> using interrupts.

IOW the suggestion would be to use Richard's patch and force the drive to use a regular state machine.
see https://github.com/thesofproject/linux/pull/5649

>>> If that works then an alternate solution to this patch would be to quirk all TI
>>> devices to use the regular state machine, and use the polling loop as
>>> suggested by Richard Fitzgerald.
>>> I think it's worth exploring what happens if the PortReady interrupt is not
>>> used. If that's broken as well, then your solution would work but needs
>>> more/better comments indeed.
>> Currently, we have one device which needs this workaround.
>> Initially, it looked like a generic solution to me. However, if it makes sense,
>> I can implement sdw_slave_ops->port_prep to make custom changes
>> for the required devices only, handle any errors and drop this patch.
>> Please suggest.

But if you want to keep following the CP_SM state machine, then you could indeed add the required write in a port_prep() routine.
That'd fine as well, you'd be relying on what the core SoundWire stream management provides - namely a means to do device-specific stuff before/after port setup.


  reply	other threads:[~2026-02-13 14:56 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-09  7:09 [PATCH v1 RESEND] SoundWire: Allow Prepare command for Simplified_CP_SM Niranjan H Y
2026-02-09 14:43 ` Pierre-Louis Bossart
2026-02-10 11:08   ` Holalu Yogendra, Niranjan
2026-02-10 17:04     ` Pierre-Louis Bossart
2026-02-10 17:29       ` Richard Fitzgerald
2026-02-10 20:28         ` Pierre-Louis Bossart
2026-02-11 10:41           ` Richard Fitzgerald
2026-02-12 16:17             ` [EXTERNAL] " Holalu Yogendra, Niranjan
2026-02-12 16:28               ` Richard Fitzgerald
2026-02-13 14:56                 ` Pierre-Louis Bossart [this message]
2026-02-14 16:42                   ` Holalu Yogendra, Niranjan

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=f3a7b462-477d-459b-91ba-1ccf4bde5268@linux.dev \
    --to=pierre-louis.bossart@linux.dev \
    --cc=baojun.xu@ti.com \
    --cc=broonie@kernel.org \
    --cc=cezary.rojewski@intel.com \
    --cc=ckeepax@opensource.cirrus.com \
    --cc=kai.vehmanen@linux.intel.com \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=niranjan.hy@ti.com \
    --cc=peter.ujfalusi@linux.intel.com \
    --cc=ranjani.sridharan@linux.intel.com \
    --cc=rf@opensource.cirrus.com \
    --cc=sandeepk@ti.com \
    --cc=shenghao-ding@ti.com \
    --cc=shumingf@realtek.com \
    --cc=vkoul@kernel.org \
    --cc=yung-chuan.liao@linux.intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox