On Fri, 19 Aug 2016 00:20:31 +0200, Andrej Krutak wrote:
The main reasons are different settings for USB low/high speed and possible different channel counts for in/out; required by POD X3.
This consists of two related parts:
Support for high-speed USB:
- USB_INTERVALS_PER_SECOND -> LOW/HIGH settings (high needs 8000, instead of 1000)
- LINE6_ISO_BUFFERS -> iso_buffers (count of iso buffers depends on USB speed, 2 is not enough for high speed)
Support for assymetrical in/out configurations:
- bytes_per_frame -> bytes_per_channel
- max_packet_size -> max_packet_size_in/out
It'd be better to split into a few more patches. The changes about making iso_buffers dynamic and others are basically independent.
So, as the first patch, just convert to the dynamic urbs allocation and adding line6->iso_buffers field, as a preliminary change. Then introduce the two speed modes and align iso_buffers in the next patch. And at last, convert bytes_per_frame and max_packet_size. They can be either one or two individual patches, too.
Also, just a nitpick:
- index = find_first_zero_bit(
&line6pcm->in.active_urbs, line6pcm->line6->iso_buffers);
This style (leaving the open parenthesis) isn't common in the kernel code.
thanks,
Takashi