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-next>] [day] [month] [year] [list]
Date:	Tue, 24 May 2016 02:50:35 +0300
From:	Ruslan Bilovol <ruslan.bilovol@...il.com>
To:	Felipe Balbi <balbi@...nel.org>
Cc:	Daniel Mack <zonque@...il.com>,
	Jassi Brar <jassisinghbrar@...il.com>,
	linux-usb@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [RFC PATCH 0/5] USB Audio Gadget refactoring

I came to this patch series when wanted to do two things:
 - use UAC1 as virtual ALSA sound card on gadget side,
   just like UAC2 is used so it's possible to do rate
   resampling
 - have both playback/capture support in UAC1

Since I wanted to have same behavior for both UAC1/UAC2,
obviously I've got an utility part (u_audio.c) for
virtual ALSA sound card handling like we have
for ethernet(u_ether) or serial(u_serial) functions.
Function-specific parts (f_uac1/f_uac2) became almost 
as storage for class-specfic USB descriptors, some
boilerplate for configfs, binding and few USB
config request handling.

Major change to f_uac1 it that it can't do
direct play to existing ALSA sound card anymore,
representing audio on gadget side as virtual
ALSA sound card where audio streams are simply
sinked to and sourced from it, so it may break
current usecase for some people (and that's why
it's RFC).

Luckily, it's possible to use existing user-space
applications for audio routing between Audio Gadget
and real sound card. I personally use alsaloop tool
from alsautils and have ability to create PCM
loopback between two different ALSA cards using
rate resampling, which is not possible with previous
"direct play to ALSA card" approach in f_uac1. 

While here, also dropped redundant platform
driver/device creation in f_uac2 driver as well as
"never implemented" volume/mute functionality in f_uac1
that made this work even easier to do.

This series is tested with both legacy g_audio.ko and
modern configfs approaches under Ubuntu 14.04 (UAC1 and
UAC2) and under Windows7 x64 (UAC1 only) having
perfect results in all cases.

Some changes may have lack of good description that may
be obvious for me but not so clear for others, but I
hope to fix it in next versions.

Comments, testing are welcome.

Ruslan Bilovol (5):
  usb: gadget: f_uac2: remove platform driver/device creation
  usb: gadget: f_uac2: split out audio core
  usb: gadget: f_uac1: drop volume/mute functionality
  usb: gadget: f_uac1: switch to u_audio core utilities
  usb: gadget: f_uac1: add capture support

 drivers/usb/gadget/Kconfig            |  13 +-
 drivers/usb/gadget/function/Makefile  |   3 +-
 drivers/usb/gadget/function/f_uac1.c  | 842 +++++++++++++---------------------
 drivers/usb/gadget/function/f_uac2.c  | 778 ++++---------------------------
 drivers/usb/gadget/function/u_audio.c | 632 +++++++++++++++++++++++++
 drivers/usb/gadget/function/u_audio.h |  93 ++++
 drivers/usb/gadget/function/u_uac1.c  | 314 -------------
 drivers/usb/gadget/function/u_uac1.h  |  71 +--
 drivers/usb/gadget/legacy/Kconfig     |   1 +
 drivers/usb/gadget/legacy/audio.c     |  54 ++-
 10 files changed, 1208 insertions(+), 1593 deletions(-)
 create mode 100644 drivers/usb/gadget/function/u_audio.c
 create mode 100644 drivers/usb/gadget/function/u_audio.h
 delete mode 100644 drivers/usb/gadget/function/u_uac1.c

-- 
1.9.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ