lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 30 Jul 2018 10:23:32 +0100
From:   Jorge Sanjuan <jorge.sanjuan@...ethink.co.uk>
To:     tiwai@...e.de
Cc:     alsa-devel@...a-project.org, linux-kernel@...r.kernel.org
Subject: [PATCH v2 0/4] usb-audio: Add UAC3 Power Domains

This is what's new in this v2:
 - Fixes build error reported by kbuild for multiple configs 
   (missing include of linux/slab.h).
 - Makes function `snd_usb_add_audio_stream_v3` static for now
   as no one is using it outside sound/usb/stream.c (suggested
   by kbuild).
 - Re-organization of patches so the bit that is not tied up
   to usb's runtime PM (See patch: "ALSA: usb-audio: Operate
   UAC3 Power Domains in PCM callbacks") is the last patch of
   the series. This is likely to need feature improvements to
   tie it up to runtime PM.

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              |  64 +++++++++++++++++++++--
 sound/usb/pcm.h              |   2 +
 sound/usb/power.c            | 118 +++++++++++++++++++++++++++++++++++++++++++
 sound/usb/power.h            |  19 +++++++
 sound/usb/stream.c           |  70 ++++++++++++++++++++++---
 9 files changed, 278 insertions(+), 11 deletions(-)
 create mode 100644 sound/usb/power.c

-- 
2.11.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ