]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - sound/usb/mixer_scarlett.c
Merge tag 'riscv/for-v5.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv...
[linux.git] / sound / usb / mixer_scarlett.c
index 83715fd8dfd6478fa27e199acd6f4c0b5ad2c891..9d10cbf1b5ed574aee4f8ea19eb6c24f73295993 100644 (file)
@@ -142,6 +142,7 @@ enum {
        SCARLETT_OUTPUTS,
        SCARLETT_SWITCH_IMPEDANCE,
        SCARLETT_SWITCH_PAD,
+       SCARLETT_SWITCH_GAIN,
 };
 
 enum {
@@ -192,6 +193,15 @@ static const struct scarlett_mixer_elem_enum_info opt_pad = {
        }
 };
 
+static const struct scarlett_mixer_elem_enum_info opt_gain = {
+       .start = 0,
+       .len = 2,
+       .offsets = {},
+       .names = (char const * const []){
+               "Lo", "Hi"
+       }
+};
+
 static const struct scarlett_mixer_elem_enum_info opt_impedance = {
        .start = 0,
        .len = 2,
@@ -652,8 +662,8 @@ static struct scarlett_device_info s6i6_info = {
                { .num = 1, .type = SCARLETT_SWITCH_PAD, .name = NULL},
                { .num = 2, .type = SCARLETT_SWITCH_IMPEDANCE, .name = NULL},
                { .num = 2, .type = SCARLETT_SWITCH_PAD, .name = NULL},
-               { .num = 3, .type = SCARLETT_SWITCH_PAD, .name = NULL},
-               { .num = 4, .type = SCARLETT_SWITCH_PAD, .name = NULL},
+               { .num = 3, .type = SCARLETT_SWITCH_GAIN, .name = NULL},
+               { .num = 4, .type = SCARLETT_SWITCH_GAIN, .name = NULL},
        },
 
        .matrix_mux_init = {
@@ -883,6 +893,15 @@ static int scarlett_controls_create_generic(struct usb_mixer_interface *mixer,
                        if (err < 0)
                                return err;
                        break;
+               case SCARLETT_SWITCH_GAIN:
+                       sprintf(mx, "Input %d Gain Switch", ctl->num);
+                       err = add_new_ctl(mixer, &usb_scarlett_ctl_enum,
+                                         scarlett_ctl_enum_resume, 0x01,
+                                         0x08, ctl->num, USB_MIXER_S16, 1, mx,
+                                         &opt_gain, &elem);
+                       if (err < 0)
+                               return err;
+                       break;
                }
        }