You've already forked linux-rockchip
mirror of
https://github.com/armbian/linux-rockchip.git
synced 2026-01-06 11:08:10 -08:00
UPSTREAM: usb: gadget: f_uac1: add volume and mute support
This adds bi-directional (host->device, device->host)
volume/mute support to the f_uac1 driver by adding
Feature Units and interrupt endpoint.
Currently only master channel is supported.
Volume and mute are configurable through configfs,
by default volume has -100..0 dB range with 1 dB step.
Similar to existing flexible endpoints configuration,
Feature Unit won't be added to the topology if both
mute and volume are not enabled, also interrupt endpoint
isn't added to the device if no feature unit is present
Signed-off-by: Ruslan Bilovol <ruslan.bilovol@gmail.com>
Signed-off-by: Pavel Hofman <pavel.hofman@ivitera.com>
Link: https://lore.kernel.org/r/20210712125529.76070-5-pavel.hofman@ivitera.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Bug: 235196743
(cherry picked from commit 0356e6283c)
Change-Id: If37a2696bd3cfd0ab9ad1022e804b5e355fdfb64
Signed-off-by: Luiz Matheus <luizmmat@motorola.com>
This commit is contained in:
committed by
Treehugger Robot
parent
e2c0816af2
commit
a380b466e0
@@ -8,9 +8,19 @@ Description:
|
||||
c_chmask capture channel mask
|
||||
c_srate capture sampling rate
|
||||
c_ssize capture sample size (bytes)
|
||||
c_mute_present capture mute control enable
|
||||
c_volume_present capture volume control enable
|
||||
c_volume_min capture volume control min value (in 1/256 dB)
|
||||
c_volume_max capture volume control max value (in 1/256 dB)
|
||||
c_volume_res capture volume control resolution (in 1/256 dB)
|
||||
p_chmask playback channel mask
|
||||
p_srate playback sampling rate
|
||||
p_ssize playback sample size (bytes)
|
||||
p_mute_present playback mute control enable
|
||||
p_volume_present playback volume control enable
|
||||
p_volume_min playback volume control min value (in 1/256 dB)
|
||||
p_volume_max playback volume control max value (in 1/256 dB)
|
||||
p_volume_res playback volume control resolution (in 1/256 dB)
|
||||
req_number the number of pre-allocated request
|
||||
for both capture and playback
|
||||
========== ===================================
|
||||
|
||||
@@ -916,14 +916,24 @@ The function name to use when creating the function directory is "uac1".
|
||||
The uac1 function provides these attributes in its function directory:
|
||||
|
||||
========== ====================================================
|
||||
c_chmask capture channel mask
|
||||
c_srate capture sampling rate
|
||||
c_ssize capture sample size (bytes)
|
||||
p_chmask playback channel mask
|
||||
p_srate playback sampling rate
|
||||
p_ssize playback sample size (bytes)
|
||||
req_number the number of pre-allocated request for both capture
|
||||
and playback
|
||||
c_chmask capture channel mask
|
||||
c_srate capture sampling rate
|
||||
c_ssize capture sample size (bytes)
|
||||
c_mute_present capture mute control enable
|
||||
c_volume_present capture volume control enable
|
||||
c_volume_min capture volume control min value (in 1/256 dB)
|
||||
c_volume_max capture volume control max value (in 1/256 dB)
|
||||
c_volume_res capture volume control resolution (in 1/256 dB)
|
||||
p_chmask playback channel mask
|
||||
p_srate playback sampling rate
|
||||
p_ssize playback sample size (bytes)
|
||||
p_mute_present playback mute control enable
|
||||
p_volume_present playback volume control enable
|
||||
p_volume_min playback volume control min value (in 1/256 dB)
|
||||
p_volume_max playback volume control max value (in 1/256 dB)
|
||||
p_volume_res playback volume control resolution (in 1/256 dB)
|
||||
req_number the number of pre-allocated request for both capture
|
||||
and playback
|
||||
========== ====================================================
|
||||
|
||||
The attributes have sane default values.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -18,6 +18,13 @@
|
||||
#define UAC1_DEF_PSRATE 48000
|
||||
#define UAC1_DEF_PSSIZE 2
|
||||
#define UAC1_DEF_REQ_NUM 2
|
||||
#define UAC1_DEF_INT_REQ_NUM 10
|
||||
|
||||
#define UAC1_DEF_MUTE_PRESENT 1
|
||||
#define UAC1_DEF_VOLUME_PRESENT 1
|
||||
#define UAC1_DEF_MIN_DB (-100*256) /* -100 dB */
|
||||
#define UAC1_DEF_MAX_DB 0 /* 0 dB */
|
||||
#define UAC1_DEF_RES_DB (1*256) /* 1 dB */
|
||||
|
||||
|
||||
struct f_uac1_opts {
|
||||
@@ -28,6 +35,19 @@ struct f_uac1_opts {
|
||||
int p_chmask;
|
||||
int p_srate;
|
||||
int p_ssize;
|
||||
|
||||
bool p_mute_present;
|
||||
bool p_volume_present;
|
||||
s16 p_volume_min;
|
||||
s16 p_volume_max;
|
||||
s16 p_volume_res;
|
||||
|
||||
bool c_mute_present;
|
||||
bool c_volume_present;
|
||||
s16 c_volume_min;
|
||||
s16 c_volume_max;
|
||||
s16 c_volume_res;
|
||||
|
||||
int req_number;
|
||||
unsigned bound:1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user