[alsa-devel] [PATCH 1/2] ALSA: firewire-lib: remove rx_blocks_for_midi quirk
Clemens Ladisch
clemens at ladisch.de
Wed Nov 26 10:17:19 CET 2014
Takashi Iwai wrote:
> 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?
Sorry; this is intended for 3.19.
Regards,
Clemens
>
>
> 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