Exynos uses the usb audio offloading functions to save power consumption in the usb audio device. The audio control interface is processed in the existing usb path, and the audio stream interface is processed in the audio path.
Through communication between AP usb and audio usb f/w, usb audio device connection information, xhci memory information, etc. are notified to usb audio f/w so that the abox directly controls xhci transmission.
Vendor's hooking interface is required for this functions. Throught this interface, information such as usb audio device connection information, pcm interface information, sample rate setting, xhci memory, full descriptor of connected device, and setting point can be transmitted to usb audio f/w.
the usb audio f/w can set up and interface, transmit audio data, etc. through the received information.
This patchset includes the following for using usb audio offloading: - vendor's hooking interface - vendor's hooking interface calling point - user using vendor's hooking interface
Oh Eomji (3): sound: usb: Add vendor's hooking interface sound: usb: Calling vendor's call-back function within usb audio operation. sound: usb: Exynos usb audio offloading driver
sound/usb/Kconfig | 9 + sound/usb/Makefile | 2 + sound/usb/card.c | 119 +++++++++ sound/usb/card.h | 20 ++ sound/usb/exynos_usb_audio.c | 560 +++++++++++++++++++++++++++++++++++++++++++ sound/usb/exynos_usb_audio.h | 150 ++++++++++++ sound/usb/pcm.c | 37 +++ sound/usb/stream.c | 2 + sound/usb/usbaudio.h | 45 ++++ 9 files changed, 944 insertions(+) create mode 100644 sound/usb/exynos_usb_audio.c create mode 100644 sound/usb/exynos_usb_audio.h