#define MODEL_MAUDIO_AUDIOPHILE_BOTH 0x00010060
#define MODEL_MAUDIO_FW1814 0x00010071
#define MODEL_MAUDIO_PROJECTMIX 0x00010091
+#define MODEL_MAUDIO_PROFIRELIGHTBRIDGE 0x000100a1
static int
name_device(struct snd_bebob *bebob)
if (err < 0)
goto error;
+ // M-Audio ProFire Lightbridge has a quirk to transfer packets with discontinuous cycle or
+ // data block counter in early stage of packet streaming. The cycle span from the first
+ // packet with event is variable.
+ if (bebob->entry->vendor_id == VEN_MAUDIO1 &&
+ bebob->entry->model_id == MODEL_MAUDIO_PROFIRELIGHTBRIDGE)
+ bebob->discontinuity_quirk = true;
+
err = snd_bebob_stream_init_duplex(bebob);
if (err < 0)
goto error;
/* M-Audio NRV10 */
SND_BEBOB_DEV_ENTRY(VEN_MAUDIO1, 0x00010081, &maudio_nrv10_spec),
/* M-Audio, ProFireLightbridge */
- SND_BEBOB_DEV_ENTRY(VEN_MAUDIO1, 0x000100a1, &spec_normal),
+ SND_BEBOB_DEV_ENTRY(VEN_MAUDIO1, MODEL_MAUDIO_PROFIRELIGHTBRIDGE, &spec_normal),
/* Firewire 1814 */
SND_BEBOB_DEV_ENTRY(VEN_MAUDIO1, 0x00010070, NULL), /* bootloader */
SND_BEBOB_DEV_ENTRY(VEN_MAUDIO1, MODEL_MAUDIO_FW1814,
#include "./bebob.h"
-#define READY_TIMEOUT_MS 2500
+#define READY_TIMEOUT_MS 4000
/*
* NOTE;
if (err < 0)
goto error;
- // Some devices transfer isoc packets with discontinuous counter in the beginning
- // of packet streaming.
- if (bebob->version < 2)
- tx_init_skip_cycles = 3200;
+ if (!bebob->discontinuity_quirk)
+ tx_init_skip_cycles = 0;
else
tx_init_skip_cycles = 16000;
+
+ // MEMO: In the early stage of packet streaming, the device transfers NODATA packets.
+ // After several hundred cycles, it begins to multiplex event into the packet with
+ // syt information.
err = amdtp_domain_start(&bebob->domain, tx_init_skip_cycles);
if (err < 0)
goto error;