[alsa-devel] [MINUTES] Linux Plumbers Audio Mini Conference - Santa Fe 2016

Liam Girdwood liam.r.girdwood at linux.intel.com
Thu Nov 3 23:51:18 CET 2016


Minutes below. Comments, corrections and omissions welcomed.

We are missing some links to some of the slides presented. Please reply with a link 
if you have one.

Audio Mini Conference Minutes - Santa Fe 2016 
=============================================

Present: Mark, Rakesh, Liam, Vinod, Mengdong, Pierre, Patrick, Takashi S,
Javilars, Takashi I, Eric, Dylan, Mauro, Shuah, Charles, Matthew, Lars, Sagar
and others.


Android USB Audio - Eric
========================

USB audio is becoming more important as analog jack can be removed. USB stack
is difficult to optimise for low power/latency audio (too many wake ups with
USB 1ms tick). Aim to add no_irq (no IRQ for each period) and mmap support in
USB 3.0 stack to improve power and latency.

USB playback and capture with synchronised start API is missing from stack/ALSA.
Some patches were posted for synchronised endpoint but never made it to the
list, Pierre is going to resend.

USB currently defines simple audio endpoints. Support is needed to define more
complex USB audio endpoints rather than just "playback" and "capture".

Sub 10ms latency (round trip ?) is difficult to achieve on USB due to stack and
drivers. Mmap may help reduce latency by removing buffer copies.


Inter Device Dependencies
=========================

Kernel Summit joined for this discussion. There is complexity between devices,
more than just a parent/child relationship for some devices making it difficult
to order probing and PM ops.

Rafael, has created patch set to solve dependences for PM ops in Gregs tree, 
the patches could also be used for probing. The patches add an API to allow
device relationships to be established as a graph. This API supports non
parent/child relationships to and allows PM ops to run in a deterministic
sequence. Relationship dependency discovery needs to come from DT/ACPI and
will need standardised bindings.

Mark described the current audio workarounds where the machine driver specifies
relationships and deferred probe is used to manage the probing sequence.
Some people do not like the high number deferred probe messages in dmesg.

Relation graphs must be ordered so that cycles to do not exist.

Next steps are to use Rafaels patches for probe ordering.


AV Sync - Eric
===============

A few frame counters are 32 bit (compressed API) and should be 64 bit.
Vinod will update compressed API to 64 bit.

Timers should also consider boot time and suspend/resume time as it's currently 
difficult to keep AV syn over suspend/resume cycles.

AV sync on TV's hacky atm, we need AV sync API in ALSA. Takashi noted this was
long time problem that needs solution. Some options for AV sync were pseudo
transport streams (like existing mpeg format) but these were difficult for
mmap(). Other devices had used runtime PLL updating with patches sent in the
past ?

Compressed API could be used to send transport stream for AV sync.


HDMI/DP glue to GFX - Vinod
===========================

Currently several interlaces exist to pass DP/HDMI events and information
between audio and GFX stacks/drivers.  ARM devices using pdata interface, 
i915 has another solution, BYT uses another interface. Needs to be consistent
for user space ELD notification, jack detection/mapping. Currently HDA drivers
have hack to assist userspace (PCM5).

There are also difficulties mapping PCMs, channels and jacks to multiple
HDMI/DP devices.

Tikashi and Vinod to investigate best solutions.


DP-MST - Vinod
===============

Jack notifications more difficult with MST (extra complexity). How do we map
multiple jacks from multiple monitors, disable unused pins when not rendering ?
The 5.1 use case for gaming has to split channels to multiple monitors.
Decision is that new devices would export topology to userpace so that userspace
know the jack, channel mappings. 


Soundwire Support - Rakesh and Pierre
===================================== 

Soundwire new hardware interface for audio devices. Needs new subsystem support
for soundwire master and slave devices. Hardik has posted initial RFC to the 
list for review.

Rakesh presented slides . Link to the slides ?

Some people had reviewed the RFC. Some changes to strct device/driver usage 
required to make it more like other subsystems upstream. There is also need
to deal with devices that can power off after or before enumeration. Some
confusion over the terminology used too, compared to other bus systems like I2C.
Master should be device and not driver. Top level feedback is that it does not
look like bus code.

There is also a need to consider objects in DT/ACPI. AR Vinod, to look at STIO. 


Topology and UCM file deployment - Vinod, Mengdong, Liam
========================================================

Difficult to release and deploy topology/ucm updates with alsa-lib cadence.
Distros to be contacted for best deployment where cadence can be faster than
alsa-lib. Liam and Vinod to contact distro package maintainers.


UCM - Liam, Mengdong
====================

Which driver card name string to change, there are 3 - long, short and driver.
CRAS uses the string in the []. Not sure about PA.

Liam to create patch that includes machine name in card name string.

Mengdong has added #include and #define like support to topology. Mengdong
will port this to UCM too so that a library of codecs can be built up and 
included by the machine ucm files. e.g.

Asus T100 UCM would include rt5640 codec and baytrail DSP UCM configs.


Tracepoint for audio - Lars, Takashi S
======================================

Lars and Takashi S have similar patchsets. Easy to make tooling for parsing
traceout. This could replace printk and snd_printk, but builds bigger binary.
Option to disable can be added to reduce size. Uses ftrace output and timestamp.
Used in the PCM operations. Patches are still WiP and will be posted as RFC when
ready.


Dropping Dice Driver - Takashi S
================================

Dice hardware has serious problems making it unusable. Takashi S to discuss with
Clemens regarding any potential work around for HW issue. If no work around is
found then it could be marked as broken or moved to staging ?


Sound Open Firmware - Liam
==========================

Liam introduced SOF and took QA. Liam is also working on an ELF executable
firmware image that can run on the developers host PC.

http://alsa-project.org/main/index.php/Firmware


Paravirtualisation of Audio Drivers - Rakesh
============================================

Safety critical systems have requirements to play safety critcal sounds (like
alarms, warnings) and regular non safety critical sound like media. Rakesh 
proposed a Xen hypervisor method to guarantee the safety critical audio would
always take precedence over the non safety critical audio.

Xen would run a privileged OS (for safety critical) and unprivileged OS (for
non safety critical audio). A para virtualised audio driver would allow the
Unprivileged OS to play audio on the privileged OS.

Lars suggested Libvirt and KVM may make this task far easier and less restricted
than using Xen. Rakesh to investigate further.


Userspace driver for Firewire - Takashi S
=========================================

Need to represent mixers for some USB and FW devices in userspace. Why ?.
Possibility of using topology for userspace. Nobody keen on exposing kernel APIs
as userspavce ABIs. Possibility of looking at libvirt interfaces for userspace
drivers many similarities. Kernel component, already use FW sound card.

Mixer API not suitable, many bus so use control API.


ALSA Stream Configuration Domains - Lars
========================================

ALSA has powerful but complex system to configure and constrain stream
configurations at runtime but it does not scale well on modern ASoC based
sound devices with multiple components and DAIs.

Lars presented a solution that can break complex sound cards down to simple
domains where configuration can be set by userspace to exactly match each
use case. Userspace would also be able to read the configuration in each domain.
New APIs calls would be needed in alsa-lib to achieve this.

Lars also requested that ASoC become a first class citizen with ALSA since
most new sound cards are ASoC based. Proposal was accepted.



More information about the Alsa-devel mailing list