[Bug 218544] not enough bandwidth, synaptics hi-res audio duplex audio

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



https://bugzilla.kernel.org/show_bug.cgi?id=218544

--- Comment #13 from Alan Stern (stern@xxxxxxxxxxxxxxxxxxx) ---
This raises an obvious question: What is the point of supporting 96 kHz
operation on the output channel but only going up to 48 kHz on the input
channel?  That's weird.

That maxpacket value for the output channel does look very strange.  To support
96 kHz operation, 16-bits should use 384 bytes and 24-bits should use 576. 
(You wrote 458 but that was obviously a typo, copying the number in the line
below.)  The 768 value just seems wrong.

I don't believe the device does 2-ms buffering.  And no, isochronous packets do
not have to use the full maxpacket size, but there's no reason to set the
maxpacket size larger than necessary.  I bet that 768 really ought to be 384,
and it's a mistake in the device's firmware.

I don't understand why unbinding fails to remove the HID's endpoint bandwidth
usage.  That might be a bug.

While I haven't looked at the details of microframe scheduling in a long time,
I don't think it would be valid to schedule the interrupt endpoint to start in
microframe 6.  Certainly if it were valid, it would require the use of FSTN
nodes, which the driver does not support.

Given that the device will require the entire 96 kHz output bandwidth even when
it's running at only 48 kHz, scheduling is bound to be difficult or impossible.
 Things would be easier if there were separate alternate settings for 48 kHz
and 96 kHz operation.

Part of the scheduling problem arises because it's generally better to put the
isochronous packets in the earlier microframes and the interrupt packets after
them.  However, the driver schedules each endpoint for the earliest feasible
position, and apparently the interrupt endpoint gets started first.  That's why
it ends up in its non-optimal position at the beginning of the frame.

In theory it's possible to change the 16-bit output maxpacket value in the
kernel, setting it to 384.  I don't know that this would be a good idea in
general, but you could try it for your own use.  It's not clear that you would
want to spend the time and effort to do this, however.

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are watching the assignee of the bug.




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux