[alsa-devel] Solved Hercules RMX2
Daniel Mack
zonque at gmail.com
Tue Apr 16 21:23:19 CEST 2013
Hi Daniel,
On 16.04.2013 21:14, Daniel Schürmann wrote:
> Thank you for the suggestion. If there is no other solution than
> increasing the timeout, IMHO the code is simpler if we just increase the
> timeout for all devices. This way we will automatically fix all other
> devices based on the same hardware.
How many are there? Can you come up with a list of VID/PID? I never
heard of problems of that kind really.
OTOH, I can't think of any obvious reason how a longer timeout should
cause any problem for other devices, but as a general concern, we like
to keep quirks as specific to the device as possible.
> The long timeout is only quired by the first write command and 1 s is
> already quite long. Do you have another idea how to fix this?
Fix the firmware :) I can't think of anything that take a full second
inside such a device.
> Do you have a Idea what the remaining error messages are about? I cannot
> see a misbehavior anyway.
Also firmware problems. You can ignore them for now.
> Just read:
> https://www.kernel.org/doc/Documentation/SubmittingPatches
> Is the patch fine to send out?
Which one? Also, before sending it, run scripts/checkpatch.pl on it,
which will point out obvious style issues.
> Against which Kernel should I patch?
https://git.kernel.org/cgit/linux/kernel/git/broonie/sound.git/log/?h=for-next
> Where should I send it?
To the alsa-devel ML, and take Takashi and Clemens in Cc: (both copied
in this mail).
Thanks,
Daniel
>
>
> 2013/4/16 Daniel Mack <zonque at gmail.com <mailto:zonque at gmail.com>>
>
> On 16.04.2013 17:35, Gabriel M. Beddingfield wrote:
> > On 04/16/2013 08:12 AM, Daniel Schürmann wrote:
> >> Hi Gabriel,
> >>
> >> Thank you for your quick response.
> >> The patch against the alsa-kernel is also attached at
> >> https://bugs.launchpad.net/mixxx/+bug/1096687 and here:
> >
> > OK, I see now. FYI, most maintainers prefer that you submit patches
> > according to the guidelines in Documentation/SubmittingPatches. (I'm
> > not a maintainer, BTW...)
> >
> >>
> >> diff --git a/sound/usb/helper.c b/sound/usb/helper.c
> >> index c1db28f..e044804 100644
> >> --- a/sound/usb/helper.c
> >> +++ b/sound/usb/helper.c
> >> @@ -23,6 +23,9 @@
> >> #include "helper.h"
> >> #include "quirks.h"
> >>
> >> +/* Hercules RMX2 needs 1240 ms for setting the sample rate the
> first time */
> >> +#define USB_MSG_TIMEOUT 1500
> >> +
> >> /*
> >> * combine bytes and get an integer value
> >> */
> >> @@ -93,7 +96,7 @@ int snd_usb_ctl_msg(struct usb_device *dev,
> unsigned int pipe, __u8 request,
> >> return -ENOMEM;
> >> }
> >> err = usb_control_msg(dev, pipe, request, requesttype,
> >> - value, index, buf, size, 1000);
> >> + value, index, buf, size, USB_MSG_TIMEOUT);
> >> if (size > 0) {
> >> memcpy(data, buf, size);
> >> kfree(buf);
> >
> > This changes the value for every USB audio device... not just the
> RMX2.
> > Daniel, is there a better way to do this?
>
> Yes, you can store an integer in struct snd_usb_audio (call it
> usb_msg_timeout or s.th.), initialize it to 1000 from
> snd_usb_audio_probe() and add a quirk to override that value in
> snd_usb_apply_boot_quirk().
>
>
> Thanks,
> Daniel
>
>
More information about the Alsa-devel
mailing list