[alsa-devel] [PATCH 1/2] ALSA: firewire-lib: remove rx_blocks_for_midi quirk
Takashi Iwai
tiwai at suse.de
Wed Nov 26 09:43:33 CET 2014
At Tue, 25 Nov 2014 22:52:24 +0100,
Clemens Ladisch wrote:
>
> There are several devices that expect to receive MIDI data only in the
> first eight data blocks of a packet. If the driver restricts the data
> rate to the allowed rate (as mandated by the specification, but not yet
> implemented by this driver), this happens naturally. Therefore, there
> is no reason to ever try to use more data packets with any device.
>
> Signed-off-by: Clemens Ladisch <clemens at ladisch.de>
To which branch is the patch applied?
Takashi
> ---
> sound/firewire/amdtp.c | 10 +++++++---
> sound/firewire/amdtp.h | 3 ---
> sound/firewire/bebob/bebob_stream.c | 7 -------
> sound/firewire/fireworks/fireworks_stream.c | 5 -----
> 4 files changed, 7 insertions(+), 18 deletions(-)
>
> diff --git a/sound/firewire/amdtp.c b/sound/firewire/amdtp.c
> index 3badc70..17548d8 100644
> --- a/sound/firewire/amdtp.c
> +++ b/sound/firewire/amdtp.c
> @@ -21,6 +21,12 @@
> #define CYCLES_PER_SECOND 8000
> #define TICKS_PER_SECOND (TICKS_PER_CYCLE * CYCLES_PER_SECOND)
>
> +/*
> + * Several devices look only at the first eight data blocks.
> + * In any case, this is more than enough for the MIDI data rate.
> + */
> +#define MAX_MIDI_RX_BLOCKS 8
> +
> #define TRANSFER_DELAY_TICKS 0x2e00 /* 479.17 µs */
>
> /* isochronous header parameters */
> @@ -78,8 +84,6 @@ int amdtp_stream_init(struct amdtp_stream *s, struct fw_unit *unit,
> s->callbacked = false;
> s->sync_slave = NULL;
>
> - s->rx_blocks_for_midi = UINT_MAX;
> -
> return 0;
> }
> EXPORT_SYMBOL(amdtp_stream_init);
> @@ -474,7 +478,7 @@ static void amdtp_fill_midi(struct amdtp_stream *s,
> b = (u8 *)&buffer[s->midi_position];
>
> port = (s->data_block_counter + f) % 8;
> - if ((f >= s->rx_blocks_for_midi) ||
> + if ((f >= MAX_MIDI_RX_BLOCKS) ||
> (s->midi[port] == NULL) ||
> (snd_rawmidi_transmit(s->midi[port], b + 1, 1) <= 0))
> b[0] = 0x80;
> diff --git a/sound/firewire/amdtp.h b/sound/firewire/amdtp.h
> index e6e8926..cd4c4df 100644
> --- a/sound/firewire/amdtp.h
> +++ b/sound/firewire/amdtp.h
> @@ -152,9 +152,6 @@ struct amdtp_stream {
> /* quirk: fixed interval of dbc between previos/current packets. */
> unsigned int tx_dbc_interval;
>
> - /* quirk: the first count of data blocks in an rx packet for MIDI */
> - unsigned int rx_blocks_for_midi;
> -
> bool callbacked;
> wait_queue_head_t callback_wait;
> struct amdtp_stream *sync_slave;
> diff --git a/sound/firewire/bebob/bebob_stream.c b/sound/firewire/bebob/bebob_stream.c
> index 1aab0a32..0ebcabf 100644
> --- a/sound/firewire/bebob/bebob_stream.c
> +++ b/sound/firewire/bebob/bebob_stream.c
> @@ -484,13 +484,6 @@ int snd_bebob_stream_init_duplex(struct snd_bebob *bebob)
> amdtp_stream_destroy(&bebob->rx_stream);
> destroy_both_connections(bebob);
> }
> - /*
> - * The firmware for these devices ignore MIDI messages in more than
> - * first 8 data blocks of an received AMDTP packet.
> - */
> - if (bebob->spec == &maudio_fw410_spec ||
> - bebob->spec == &maudio_special_spec)
> - bebob->rx_stream.rx_blocks_for_midi = 8;
> end:
> return err;
> }
> diff --git a/sound/firewire/fireworks/fireworks_stream.c b/sound/firewire/fireworks/fireworks_stream.c
> index b985fc5..4f440e1 100644
> --- a/sound/firewire/fireworks/fireworks_stream.c
> +++ b/sound/firewire/fireworks/fireworks_stream.c
> @@ -179,11 +179,6 @@ int snd_efw_stream_init_duplex(struct snd_efw *efw)
> destroy_stream(efw, &efw->tx_stream);
> goto end;
> }
> - /*
> - * Fireworks ignores MIDI messages in more than first 8 data
> - * blocks of an received AMDTP packet.
> - */
> - efw->rx_stream.rx_blocks_for_midi = 8;
>
> /* set IEC61883 compliant mode (actually not fully compliant...) */
> err = snd_efw_command_set_tx_mode(efw, SND_EFW_TRANSPORT_MODE_IEC61883);
>
More information about the Alsa-devel
mailing list