ALSA: scarlett2: Fix Scarlett 4th Gen 4i4 low-voltage detection
authorGeoffrey D. Bennett <g@b4.vu>
Sun, 10 Mar 2024 10:34:27 +0000 (21:04 +1030)
committerTakashi Iwai <tiwai@suse.de>
Mon, 11 Mar 2024 08:15:34 +0000 (09:15 +0100)
The value currently being read to determine the low-voltage state is
actually the front panel state. Fix the code to use the correct offset
for the low-voltage state.

Signed-off-by: Geoffrey D. Bennett <g@b4.vu>
Fixes: d7cfa2fdfc8a ("ALSA: scarlett2: Add power status control")
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Message-ID: <d97b7d87f43b0e54f37e1552394be2f3ae182704.1710047969.git.g@b4.vu>

sound/usb/mixer_scarlett2.c

index 6de605a601e5f89ff7a9c12b36db81eed6d876c3..bce69a78c5052682e1f8e9f437f5db238dee038e 100644 (file)
@@ -415,7 +415,7 @@ enum {
        SCARLETT2_CONFIG_INPUT_SELECT_SWITCH,
        SCARLETT2_CONFIG_INPUT_LINK_SWITCH,
        SCARLETT2_CONFIG_POWER_EXT,
-       SCARLETT2_CONFIG_POWER_STATUS,
+       SCARLETT2_CONFIG_POWER_LOW,
        SCARLETT2_CONFIG_PCM_INPUT_SWITCH,
        SCARLETT2_CONFIG_DIRECT_MONITOR_GAIN,
        SCARLETT2_CONFIG_COUNT
@@ -723,8 +723,8 @@ static const struct scarlett2_config_set scarlett2_config_set_gen4_4i4 = {
                [SCARLETT2_CONFIG_POWER_EXT] = {
                        .offset = 0x168 },
 
-               [SCARLETT2_CONFIG_POWER_STATUS] = {
-                       .offset = 0x66 }
+               [SCARLETT2_CONFIG_POWER_LOW] = {
+                       .offset = 0x16d }
        }
 };
 
@@ -6294,8 +6294,7 @@ static int scarlett2_update_power_status(struct usb_mixer_interface *mixer)
 {
        struct scarlett2_data *private = mixer->private_data;
        int err;
-       u8 power_ext;
-       u8 power_status;
+       u8 power_ext, power_low;
 
        private->power_status_updated = 0;
 
@@ -6304,12 +6303,12 @@ static int scarlett2_update_power_status(struct usb_mixer_interface *mixer)
        if (err < 0)
                return err;
 
-       err = scarlett2_usb_get_config(mixer, SCARLETT2_CONFIG_POWER_STATUS,
-                                      1, &power_status);
+       err = scarlett2_usb_get_config(mixer, SCARLETT2_CONFIG_POWER_LOW,
+                                      1, &power_low);
        if (err < 0)
                return err;
 
-       if (power_status > 1)
+       if (power_low)
                private->power_status = SCARLETT2_POWER_STATUS_FAIL;
        else if (power_ext)
                private->power_status = SCARLETT2_POWER_STATUS_EXT;