static int line_out_remap(struct scarlett2_data *private, int index)
 {
        const struct scarlett2_device_info *info = private->info;
+       const int (*port_count)[SCARLETT2_PORT_DIRNS] = info->port_count;
+       int line_out_count =
+               port_count[SCARLETT2_PORT_TYPE_ANALOGUE][SCARLETT2_PORT_OUT];
 
        if (!info->line_out_remap_enable)
                return index;
+
+       if (index >= line_out_count)
+               return index;
+
        return info->line_out_remap[index];
 }
 
        struct usb_mixer_elem_info *elem = kctl->private_data;
        struct usb_mixer_interface *mixer = elem->head.mixer;
        struct scarlett2_data *private = mixer->private_data;
-       const struct scarlett2_device_info *info = private->info;
-       const int (*port_count)[SCARLETT2_PORT_DIRNS] = info->port_count;
-       int line_out_count =
-               port_count[SCARLETT2_PORT_TYPE_ANALOGUE][SCARLETT2_PORT_OUT];
-       int index = elem->control;
-
-       if (index < line_out_count)
-               index = line_out_remap(private, index);
+       int index = line_out_remap(private, elem->control);
 
        mutex_lock(&private->data_mutex);
        if (private->mux_updated)
        struct usb_mixer_elem_info *elem = kctl->private_data;
        struct usb_mixer_interface *mixer = elem->head.mixer;
        struct scarlett2_data *private = mixer->private_data;
-       const struct scarlett2_device_info *info = private->info;
-       const int (*port_count)[SCARLETT2_PORT_DIRNS] = info->port_count;
-       int line_out_count =
-               port_count[SCARLETT2_PORT_TYPE_ANALOGUE][SCARLETT2_PORT_OUT];
-       int index = elem->control;
+       int index = line_out_remap(private, elem->control);
        int oval, val, err = 0;
 
-       if (index < line_out_count)
-               index = line_out_remap(private, index);
-
        mutex_lock(&private->data_mutex);
 
        oval = private->mux[index];