From: Jorge Sanjuan <jorge.sanjuan@codethink.co.uk>
To: tiwai@suse.de
Cc: alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org
Subject: [PATCH v3 0/4] usb-audio: Add UAC3 Power Domains
Date: Tue, 31 Jul 2018 13:28:41 +0100 [thread overview]
Message-ID: <20180731122845.4859-1-jorge.sanjuan@codethink.co.uk> (raw)
In-Reply-To: <20180719112215.4219-1-jorge.sanjuan@codethink.co.uk>
This is what's new in this v3:
- Add proper SPDX identifier for new source file.
- Add delay unit in comment for BADD inferred recovery
times and specify the actual delay time for them.
- Suspend the usb stream *after* alsa has supended its stuff.
- Make sure Power State changes to D0 happen *before* stream
format is set.
- Try to set the Power State to D0 on .prepare callback too as
recovery from suspend state doesn't need .hw_params call.
This patchset adds support for UAC3 Power Domains. This feature
of the USB audio class 3 allows the host to notify the device
what it is making use of so power comsumption can be optimized.
This proposal implements this feature for Power Domains
that include an Input/Output Terminal associated to an
audio Streaming interface. This is the main usage of this
feature according to the spec. For that reason, the logic
for the Power Domain state change has been implemented
within the ALSA PCMs logic and the suspend/resume callbacks
of the usb_driver. The behaviour would be as follows:
* Power Domain State D0: A Power Domain will reach this state
only when the audio substream associated to that domain is
being used (i,e. Audio playback/capture is happening).
* Power Domain State D1: This is the Idle state where the driver
is going to always want to be in order to reduce power
consumption.
* Power Domain State D2: This state is only set when the usb driver
asumes the device is not going to be used anymore and hence, it
wont care about getting any interrupts from the device. This
will only happen when power level is set to "auto" in sysfs
so the usb driver gets suspended when the interfaces are not in use.
NOTE: The way this has been implemented will always try to put the
Power Domain in state D1 if the Power Domain exists. The patch
"ALSA: usb-audio: Operate UAC3 Power Domains in PCM callbacks"
puts the logic for doing so inside the PCM's logic. Something to
improve on that is to also tie up those D1<->D0 state changes
to runtime PM maybe.
Jorge Sanjuan (4):
ALSA: usb-audio: Initial Power Domain support
ALSA: usb-audio: AudioStreaming Power Domain parsing
ALSA: usb-audio: Add UAC3 Power Domains to suspend/resume
ALSA: usb-audio: Operate UAC3 Power Domains in PCM callbacks
include/linux/usb/audio-v3.h | 4 ++
sound/usb/Makefile | 1 +
sound/usb/card.c | 9 ++++
sound/usb/card.h | 2 +
sound/usb/pcm.c | 68 ++++++++++++++++++++++++++--
sound/usb/pcm.h | 2 +
sound/usb/power.c | 104 +++++++++++++++++++++++++++++++++++++++++++
sound/usb/power.h | 19 ++++++++
sound/usb/stream.c | 70 +++++++++++++++++++++++++----
9 files changed, 268 insertions(+), 11 deletions(-)
create mode 100644 sound/usb/power.c
--
2.11.0
next prev parent reply other threads:[~2018-07-31 12:28 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-19 11:22 [PATCH 0/4] usb-audio: Add UAC3 Power Domains Jorge Sanjuan
2018-07-19 11:22 ` [PATCH 1/4] ALSA: usb-audio: Initial Power Domain support Jorge Sanjuan
2018-07-19 16:24 ` kbuild test robot
2018-07-19 17:09 ` kbuild test robot
2018-07-19 11:22 ` [PATCH 2/4] ALSA: usb-audio: AudioStreaming Power Domain parsing Jorge Sanjuan
2018-07-19 17:48 ` kbuild test robot
2018-07-19 17:48 ` [RFC PATCH] ALSA: usb-audio: snd_usb_add_audio_stream_v3() can be static kbuild test robot
2018-07-19 11:22 ` [PATCH 3/4] ALSA: usb-audio: Operate UAC3 Power Domains in PCM callbacks Jorge Sanjuan
2018-07-19 11:22 ` [PATCH 4/4] ALSA: usb-audio: Add UAC3 Power Domains to suspend/resume Jorge Sanjuan
2018-07-19 11:56 ` [PATCH 0/4] usb-audio: Add UAC3 Power Domains Takashi Iwai
2018-07-20 9:08 ` Jorge
2018-07-27 10:44 ` [alsa-devel] " Jorge
2018-07-27 11:26 ` Takashi Iwai
2018-07-30 9:23 ` [PATCH v2 " Jorge Sanjuan
2018-07-30 9:23 ` [PATCH v2 1/4] ALSA: usb-audio: Initial Power Domain support Jorge Sanjuan
2018-07-30 13:01 ` Takashi Iwai
2018-07-30 13:03 ` Takashi Iwai
2018-07-30 16:05 ` Jorge
2018-07-30 16:10 ` Takashi Iwai
2018-07-30 9:23 ` [PATCH v2 2/4] ALSA: usb-audio: AudioStreaming Power Domain parsing Jorge Sanjuan
2018-07-30 9:23 ` [PATCH v2 3/4] ALSA: usb-audio: Add UAC3 Power Domains to suspend/resume Jorge Sanjuan
2018-07-30 13:07 ` Takashi Iwai
2018-07-30 9:23 ` [PATCH v2 4/4] ALSA: usb-audio: Operate UAC3 Power Domains in PCM callbacks Jorge Sanjuan
2018-07-30 13:13 ` Takashi Iwai
2018-07-30 16:09 ` Jorge
2018-07-30 16:12 ` Takashi Iwai
2018-07-30 16:48 ` Jorge
2018-07-31 12:28 ` Jorge Sanjuan [this message]
2018-07-31 12:28 ` [PATCH v3 1/4] ALSA: usb-audio: Initial Power Domain support Jorge Sanjuan
2018-07-31 12:28 ` [PATCH v3 2/4] ALSA: usb-audio: AudioStreaming Power Domain parsing Jorge Sanjuan
2018-07-31 12:28 ` [PATCH v3 3/4] ALSA: usb-audio: Add UAC3 Power Domains to suspend/resume Jorge Sanjuan
2018-07-31 12:28 ` [PATCH v3 4/4] ALSA: usb-audio: Operate UAC3 Power Domains in PCM callbacks Jorge Sanjuan
2018-07-31 13:12 ` [PATCH v3 0/4] usb-audio: Add UAC3 Power Domains Takashi Iwai
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=20180731122845.4859-1-jorge.sanjuan@codethink.co.uk \
--to=jorge.sanjuan@codethink.co.uk \
--cc=alsa-devel@alsa-project.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tiwai@suse.de \
/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;
as well as URLs for NNTP newsgroup(s).