This patch adds feature unit descriptor for f_uac1 and f_uac2, and supports volume control and mute control for capture and playback. By default, the volume and mute feature unit descriptors are NOT add in the UAC descriptor. The user can define whether the UAC1/ UAC2 shall support volume and mute functionality via the attributes c_feature_unit/p_feature_unit in the UAC function directory. For example, user can add the volume and mute feature unit descriptors for UAC1 capture and playback: echo 1 > /config/usb-gadget/gadget/functions/uac1.name/c_feature_unit echo 1 > /config/usb-gadget/gadget/functions/uac1.name/p_feature_unit This patch also adds uevents for volume and mute functionality. The user can complete the real volume and mute control functionality in the user space depends on these new uevents (like the uac_app in the RV1126/RV1109 SDK). Change-Id: I76d447a19fd69e038851040cd73e6c7d420f467d Signed-off-by: William Wu <william.wu@rock-chips.com> Signed-off-by: Ren Jianing <jianing.ren@rock-chips.com> Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
47 lines
1.2 KiB
C
47 lines
1.2 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* <linux/usb/audio.h> -- USB Audio definitions.
|
|
*
|
|
* Copyright (C) 2006 Thumtronics Pty Ltd.
|
|
* Developed for Thumtronics by Grey Innovation
|
|
* Ben Williamson <ben.williamson@greyinnovation.com>
|
|
*
|
|
* This software is distributed under the terms of the GNU General Public
|
|
* License ("GPL") version 2, as published by the Free Software Foundation.
|
|
*
|
|
* This file holds USB constants and structures defined
|
|
* by the USB Device Class Definition for Audio Devices.
|
|
* Comments below reference relevant sections of that document:
|
|
*
|
|
* http://www.usb.org/developers/devclass_docs/audio10.pdf
|
|
*
|
|
* Types and defines in this file are either specific to version 1.0 of
|
|
* this standard or common for newer versions.
|
|
*/
|
|
#ifndef __LINUX_USB_AUDIO_H
|
|
#define __LINUX_USB_AUDIO_H
|
|
|
|
#include <uapi/linux/usb/audio.h>
|
|
|
|
|
|
struct usb_audio_control {
|
|
struct list_head list;
|
|
const char *name;
|
|
u8 type;
|
|
int data[5];
|
|
int (*set)(struct usb_audio_control *con, u8 cmd, int value);
|
|
int (*get)(struct usb_audio_control *con, u8 cmd);
|
|
void *context;
|
|
};
|
|
|
|
struct usb_audio_control_selector {
|
|
struct list_head list;
|
|
struct list_head control;
|
|
u8 id;
|
|
const char *name;
|
|
u8 type;
|
|
struct usb_descriptor_header *desc;
|
|
};
|
|
|
|
#endif /* __LINUX_USB_AUDIO_H */
|