Message ID | 49721219f45b7e175e729b0d9d9c142fd8f4342a.1624379707.git.g@b4.vu (mailing list archive) |
---|---|
State | Accepted |
Commit | 785b6f29a795f109685f286b91e0250c206fbffb |
Headers | show |
Series | Add Scarlett Gen 3 support | expand |
On Tue, 22 Jun 2021 19:00:49 +0200, Geoffrey D. Bennett wrote: > > From: Takashi Iwai <tiwai@suse.de> > > The current way of the scarlett2 mixer code managing the > usb_mixer_elem_info object is wrong in two ways: it passes its > internal index to the head.id field, and the val_type field is > uninitialized. This ended up with the wrong execution at the resume > because a bogus unit id is passed wrongly. Also, in the later code > extensions, we'll have more mixer elements, and passing the index will > overflow the unit id size (of 256). > > This patch corrects those issues. It introduces a new value type, > USB_MIXER_BESPOKEN, which indicates a non-standard mixer element, and > use this type for all scarlett2 mixer elements, as well as > initializing the fixed unit id 0 for avoiding the overflow. > > Tested-by: Geoffrey D. Bennett <g@b4.vu> > Cc: <stable@vger.kernel.org> > Signed-off-by: Takashi Iwai <tiwai@suse.de> When submitting a patch, you have to your Signed-off-by line even if you are no author. Could you give it? Just reply with a proper SOB, then I'll fix manually. thanks, Takashi
On Tue, Jun 22, 2021 at 09:42:10PM +0200, Takashi Iwai wrote: > On Tue, 22 Jun 2021 19:00:49 +0200, > Geoffrey D. Bennett wrote: > > > > From: Takashi Iwai <tiwai@suse.de> > > > > The current way of the scarlett2 mixer code managing the > > usb_mixer_elem_info object is wrong in two ways: it passes its > > internal index to the head.id field, and the val_type field is > > uninitialized. This ended up with the wrong execution at the resume > > because a bogus unit id is passed wrongly. Also, in the later code > > extensions, we'll have more mixer elements, and passing the index will > > overflow the unit id size (of 256). > > > > This patch corrects those issues. It introduces a new value type, > > USB_MIXER_BESPOKEN, which indicates a non-standard mixer element, and > > use this type for all scarlett2 mixer elements, as well as > > initializing the fixed unit id 0 for avoiding the overflow. > > > > Tested-by: Geoffrey D. Bennett <g@b4.vu> > > Cc: <stable@vger.kernel.org> > > Signed-off-by: Takashi Iwai <tiwai@suse.de> > > When submitting a patch, you have to your Signed-off-by line even if > you are no author. Could you give it? Just reply with a proper SOB, > then I'll fix manually. Of course. You know how many times I've read Documentation/process/submitting-patches.rst ? Not enough for it to sink in, apparently :). Please append my SOB: Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Thanks, Geoffrey.
On Wed, 23 Jun 2021 03:03:27 +0200, Geoffrey D. Bennett wrote: > > On Tue, Jun 22, 2021 at 09:42:10PM +0200, Takashi Iwai wrote: > > On Tue, 22 Jun 2021 19:00:49 +0200, > > Geoffrey D. Bennett wrote: > > > > > > From: Takashi Iwai <tiwai@suse.de> > > > > > > The current way of the scarlett2 mixer code managing the > > > usb_mixer_elem_info object is wrong in two ways: it passes its > > > internal index to the head.id field, and the val_type field is > > > uninitialized. This ended up with the wrong execution at the resume > > > because a bogus unit id is passed wrongly. Also, in the later code > > > extensions, we'll have more mixer elements, and passing the index will > > > overflow the unit id size (of 256). > > > > > > This patch corrects those issues. It introduces a new value type, > > > USB_MIXER_BESPOKEN, which indicates a non-standard mixer element, and > > > use this type for all scarlett2 mixer elements, as well as > > > initializing the fixed unit id 0 for avoiding the overflow. > > > > > > Tested-by: Geoffrey D. Bennett <g@b4.vu> > > > Cc: <stable@vger.kernel.org> > > > Signed-off-by: Takashi Iwai <tiwai@suse.de> > > > > When submitting a patch, you have to your Signed-off-by line even if > > you are no author. Could you give it? Just reply with a proper SOB, > > then I'll fix manually. > > Of course. You know how many times I've read > Documentation/process/submitting-patches.rst ? Not enough for it to > sink in, apparently :). Please append my SOB: > > Signed-off-by: Geoffrey D. Bennett <g@b4.vu> OK, now all patches have been merged. Thanks! Takashi
On Wednesday, 23 June 2021, 07:39:48 BST, Takashi Iwai <tiwai@suse.de> wrote: > > Of course. You know how many times I've read > > Documentation/process/submitting-patches.rst ? Not enough for it to > > sink in, apparently :). Please append my SOB: > > > > Signed-off-by: Geoffrey D. Bennett <g@b4.vu> > OK, now all patches have been merged. To avoid this kind of problems, many years ago, I have had (see 'man git-config' for details): git config format.signoff true set in my local kernel dev repo clone. This way "git format-patch ..." would automatically add my sign-off for anything I "git format-patch" of . It is easier to remove the line if not needed, or just ignore the line if irrelevant, than to add the line every time. I did that to a few repos which explicitly requires signoff's. (wine is another one). Back to this series of patches, I think it is appropriate to add Acked-by: Hin-Tak <htl10@users.sourceforge.net> or 'Cc: ' as I was involved in packaging and adapting the patch series as for dkms / out-of-tree build for testing, so that I get e-mails, etc if it gets moved about / back-ported, though I was not involved in actually testing /using the patch series. Regards, Hin-Tak
diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c index 428d581f988f..0f578dabd094 100644 --- a/sound/usb/mixer.c +++ b/sound/usb/mixer.c @@ -3605,6 +3605,9 @@ static int restore_mixer_value(struct usb_mixer_elem_list *list) struct usb_mixer_elem_info *cval = mixer_elem_list_to_info(list); int c, err, idx; + if (cval->val_type == USB_MIXER_BESPOKEN) + return 0; + if (cval->cmask) { idx = 0; for (c = 0; c < MAX_CHANNELS; c++) { diff --git a/sound/usb/mixer.h b/sound/usb/mixer.h index e5a01f17bf3c..ea41e7a1f7bf 100644 --- a/sound/usb/mixer.h +++ b/sound/usb/mixer.h @@ -55,6 +55,7 @@ enum { USB_MIXER_U16, USB_MIXER_S32, USB_MIXER_U32, + USB_MIXER_BESPOKEN, /* non-standard type */ }; typedef void (*usb_mixer_elem_dump_func_t)(struct snd_info_buffer *buffer, diff --git a/sound/usb/mixer_scarlett_gen2.c b/sound/usb/mixer_scarlett_gen2.c index dde008ea21d7..c4689c401d6e 100644 --- a/sound/usb/mixer_scarlett_gen2.c +++ b/sound/usb/mixer_scarlett_gen2.c @@ -1136,10 +1136,15 @@ static int scarlett2_add_new_ctl(struct usb_mixer_interface *mixer, if (!elem) return -ENOMEM; + /* We set USB_MIXER_BESPOKEN type, so that the core USB mixer code + * ignores them for resume and other operations. + * Also, the head.id field is set to 0, as we don't use this field. + */ elem->head.mixer = mixer; elem->control = index; - elem->head.id = index; + elem->head.id = 0; elem->channels = channels; + elem->val_type = USB_MIXER_BESPOKEN; kctl = snd_ctl_new1(ncontrol, elem); if (!kctl) {