On May 30 Takashi Iwai wrote:
At Fri, 25 Apr 2014 22:45:30 +0900, Takashi Sakamoto wrote:
In post commit, a quirk of this firmware about transactions is reported. This commit apply a workaround for this quirk.
They often fail transactions due to gap_count mismatch. This state is changed by generating bus reset.
The fw_schedule_bus_reset() is an exported symbol in firewire-core. But there are no header for public. This commit moves its prototype from drivers/firewire/core.h to include/linux/firewire.h.
This mismatch still affects bus management before generating this bus reset. It still takes a time to call driver's probe() because transactions are still often failed.
Signed-off-by: Takashi Sakamoto o-takashi@sakamocchi.jp
Hrm, I should have taken a deeper review. This change was slipped to my tree without Stefan's ack. Stefan, is it OK to keep this change as is?
Yes, the implementation of this patch and its routing through the ALSA tree is OK with me. I should have sent Acked-by: Stefan Richter stefanr@s5r6.in-berlin.de right away when this revision of the patch series showed up on the list. (I think I only sent an informal agreement a time ago for an earlier revision.)
Longer term we should look into improving this workaround to address 1. the above mentioned transaction failures which happen before the bebob driver's .probe is called (which are merely transient recoverable failures, apparently), 2. the theoretical possibility of the very same problem occurring with other IEEE 1394 devices. If we indeed come up with such a more general solution, its implementation will of course move out of the bebob driver into firewire-core. But this is really longer term since we need to be careful with that, and I might want to recreate an environment which reproduces the issue before I attempt such generalization or before I take a respective patch from somebody else. --- So in short, let's proceed with this patch through ALSA git.
thanks,
Takashi
drivers/firewire/core.h | 1 - include/linux/firewire.h | 3 +++ sound/firewire/bebob/bebob.c | 32 ++++++++++++++++++++++++++++---- sound/firewire/bebob/bebob.h | 1 + 4 files changed, 32 insertions(+), 5 deletions(-)
[...]