diff options
author | Takashi Sakamoto <o-takashi@sakamocchi.jp> | 2019-10-18 08:19:10 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2019-10-19 09:18:26 +0200 |
commit | 60dd49298ec5803ca423836d5a724c3fe402cc3f (patch) | |
tree | 9361fec225f058003eab5a1a3c5f496a8bee08d8 /sound/firewire/amdtp-stream.h | |
parent | ALSA: firewire-lib: cancel flushing isoc context in the laste step to process... (diff) | |
download | linux-60dd49298ec5803ca423836d5a724c3fe402cc3f.tar.xz linux-60dd49298ec5803ca423836d5a724c3fe402cc3f.zip |
ALSA: firewire-lib: handle several AMDTP streams in callback handler of IRQ target
This commit changes AMDTP domain to run on an IT context of 1394 OHCI as
IRQ target. No hardware interrupt is scheduled for the other isoc
contexts. All of the isoc context are processed in a callback for an isoc
context of IRQ target.
The IRQ target is automatically selected from a list of AMDTP streams,
thus users of AMDTP domain should add an AMDTP stream for IT context
at least.
The reason to select IT context as IRQ target is that the IT context
runs on local 1394 OHCI controller and it can be used as reliable,
constant IRQ generator. On the other hand, IR context can include skip
cycle according to isoc packet transferred by device.
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20191018061911.24909-6-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/firewire/amdtp-stream.h')
-rw-r--r-- | sound/firewire/amdtp-stream.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sound/firewire/amdtp-stream.h b/sound/firewire/amdtp-stream.h index 470e77ca0061..c4bde69c2d4f 100644 --- a/sound/firewire/amdtp-stream.h +++ b/sound/firewire/amdtp-stream.h @@ -143,11 +143,12 @@ struct amdtp_stream { // To generate CIP header. unsigned int fdf; int syt_override; + + // To generate constant hardware IRQ. + unsigned int event_count; + unsigned int events_per_period; } rx; } ctx_data; - unsigned int event_count; - unsigned int events_per_period; - unsigned int idle_irq_interval; /* For CIP headers. */ unsigned int source_node_id_field; |