Linux Sound subsystem development
 help / color / mirror / Atom feed
From: Charles Keepax <ckeepax@opensource.cirrus.com>
To: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>
Cc: broonie@kernel.org, rafael@kernel.org,
	yung-chuan.liao@linux.intel.com, peter.ujfalusi@linux.intel.com,
	shumingf@realtek.com, lgirdwood@gmail.com,
	linux-sound@vger.kernel.org, patches@opensource.cirrus.com
Subject: Re: [PATCH v2 12/19] ASoC: SDCA: Add UMP buffer helper functions
Date: Thu, 18 Sep 2025 13:22:34 +0100	[thread overview]
Message-ID: <aMv5io0wl5/S4Ow4@opensource.cirrus.com> (raw)
In-Reply-To: <b1d1d507-1a34-42b2-b154-5c4ba100cc83@linux.dev>

On Wed, Sep 17, 2025 at 09:49:29PM +0200, Pierre-Louis Bossart wrote:
> I am still missing the big picture on when/where the timeouts
> read from DisCo properties are used.
> I looked at patch 14 and I don't see any timeouts used except
> for the reset.

Apologies I should have called out in the cover-letter patch 17
adds the timeouts.

> > + * The caller should first call sdca_ump_get_owner_host() to ensure the host
> > + * currently owns the UMP buffer, and then this function can be used to
> > + * retrieve a message. It is the callers responsibility to free the
> > + * message once it is finished with it. Finally sdca_ump_set_owner_device()
> > + * should be called to return the buffer to the device.
> 
> Maybe I misunderstood something in the UMP spec, but I could
> see a different flow where the host does a set_owner_device()
> and later reads the buffer updated by the device once the
> ownership is given back to the host.
> 
> I think you're assuming that a read is always initiated
> by the device, but what if the host wants to read something
> (volume/acoustic levels, etc) without getting any notification?
> 
> IOW, will a read only happen when the device throws an
> interrupt on its own? The spec doesn't seem very clear on
> this...

Assuming the host is currently holding ownership of the buffer,
then your example would look like:

1) host calls set_owner_device()
1.1) host optionally calls schedule_timeout() if it wants
2) the device then fills the buffer
3) device passes the ownership back to the host
4) host receives an IRQ on the buffer
4.1) host calls cancel_timeout() since ownership returned
5) host calls read_message() to get the data

The device should still throw an IRQ when it passes the buffer
back which the host responds to. IMHO there is no real difference
between the two use-cases you are talking about here.

A read can happen any time the host has ownership of the buffer
but the UMP helpers don't make assumptions here, if someone
implements code that calls read_message() not in response to an
IRQ that is fine. As long as they ensured they have ownership
first.

We do make slightly more assumptions in the current FDL code,
primarily that the FDL buffer has an ownership IRQ. There
is the slight corner case of a device that wanted to do FDL
but not support IRQs. But I think its fine not to support
everything especially kinda esoteric stuff in the first version
of the code.

Thanks,
Charles

  reply	other threads:[~2025-09-18 12:22 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-12 10:34 [PATCH v2 00/20] Add SDCA UMP/FDL support Charles Keepax
2025-09-12 10:34 ` [PATCH v2 01/19] ASoC: SDCA: Rename SoundWire struct device variables Charles Keepax
2025-09-12 10:34 ` [PATCH v2 02/19] regmap: sdw-mbq: Don't assume the regmap device is the SoundWire slave Charles Keepax
2025-09-12 10:34 ` [PATCH v2 03/19] ASoC: SDCA: Add manual PM runtime gets to IRQ handlers Charles Keepax
2025-09-12 10:34 ` [PATCH v2 04/19] ASoC: SDCA: Pass SoundWire slave to HID Charles Keepax
2025-09-12 10:34 ` [PATCH v2 05/19] ASoC: SDCA: Pass device register map from IRQ alloc to handlers Charles Keepax
2025-09-12 10:34 ` [PATCH v2 06/19] ASoC: SDCA: Update externally_requested flag to cover all requests Charles Keepax
2025-09-12 10:34 ` [PATCH v2 07/19] ASoC: SDCA: Factor out a helper to find SDCA IRQ data Charles Keepax
2025-09-17 18:49   ` Pierre-Louis Bossart
2025-09-19 10:41     ` Charles Keepax
2025-09-12 10:34 ` [PATCH v2 08/19] ASoC: SDCA: Rely less on the ASoC component in IRQ handling Charles Keepax
2025-09-12 10:34 ` [PATCH v2 09/19] ASoC: SDCA: Force some SDCA Controls to be volatile Charles Keepax
2025-09-17 18:53   ` Pierre-Louis Bossart
2025-09-18 10:18     ` Charles Keepax
2025-09-12 10:34 ` [PATCH v2 10/19] ASoC: SDCA: Parse XU Entity properties Charles Keepax
2025-09-17 18:58   ` Pierre-Louis Bossart
2025-09-18 10:24     ` Charles Keepax
2025-09-12 10:34 ` [PATCH v2 11/19] ASoC: SDCA: Parse Function Reset max delay Charles Keepax
2025-09-12 10:34 ` [PATCH v2 12/19] ASoC: SDCA: Add UMP buffer helper functions Charles Keepax
2025-09-17 19:49   ` Pierre-Louis Bossart
2025-09-18 12:22     ` Charles Keepax [this message]
2025-09-12 10:34 ` [PATCH v2 13/19] ASoC: SDCA: Add SDCA FDL data parsing Charles Keepax
2025-09-16 13:38   ` Mark Brown
2025-09-16 13:45     ` Mark Brown
2025-09-16 13:51     ` Charles Keepax
2025-09-17 12:14       ` Mark Brown
2025-09-17 14:31         ` Charles Keepax
2025-09-18 20:25           ` Mark Brown
2025-09-19  8:06             ` Charles Keepax
2025-09-12 10:34 ` [PATCH v2 14/19] ASoC: SDCA: Add FDL library for XU entities Charles Keepax
2025-09-12 10:35 ` [PATCH v2 15/19] ASoC: SDCA: Add FDL-specific IRQ processing Charles Keepax
2025-09-12 10:35 ` [PATCH v2 16/19] ASoC: SDCA: Add completion for FDL start and stop Charles Keepax
2025-09-17 20:13   ` Pierre-Louis Bossart
2025-09-18 10:57     ` Charles Keepax
2025-09-12 10:35 ` [PATCH v2 17/19] ASoC: SDCA: Add UMP timeout handling for FDL Charles Keepax
2025-09-12 10:35 ` [PATCH v2 18/19] ASoC: SDCA: Add early IRQ handling Charles Keepax
2025-09-12 10:35 ` [PATCH v2 19/19] ASoC: SDCA: Add HID button IRQ Charles Keepax
2025-09-16  2:12 ` [PATCH v2 00/20] Add SDCA UMP/FDL support Liao, Bard
2025-09-17 20:20 ` Pierre-Louis Bossart
2025-10-29 22:02 ` Mark Brown

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=aMv5io0wl5/S4Ow4@opensource.cirrus.com \
    --to=ckeepax@opensource.cirrus.com \
    --cc=broonie@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-sound@vger.kernel.org \
    --cc=patches@opensource.cirrus.com \
    --cc=peter.ujfalusi@linux.intel.com \
    --cc=pierre-louis.bossart@linux.dev \
    --cc=rafael@kernel.org \
    --cc=shumingf@realtek.com \
    --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