[alsa-devel] MIDI on ice1724 - long delays
Takashi Iwai
tiwai at suse.de
Fri Apr 25 08:22:40 CEST 2008
At Thu, 24 Apr 2008 22:47:54 +0200,
Pavel Hofman wrote:
>
> Takashi Iwai wrote:
> > At Wed, 23 Apr 2008 22:19:04 +0200, Pavel Hofman wrote:
> >> Pavel Hofman wrote:
> >>> Takashi Iwai wrote:
> >>>> At Tue, 22 Apr 2008 22:23:55 +0200, Pavel Hofman wrote:
> >>>>> Hi,
> >>>>>
> >>> ...........
> >>>>> After the playback stops, the interrupts are gone too. It
> >>>>> seems as if the playback interrupt initiates the MPU TX
> >>>>> interrupt.
> >>>>>
> >>>>> If we could avoid generating the MPU TX interrupt during
> >>>>> regular playback, I believe the major problem would be
> >>>>> resolved.
> >>>>>
> >>>>> Even if I mask the interrupts (CCS01) and do not explicitly
> >>>>> unmask them (according to proc ice1724 the CCS01 register
> >>>>> stays at 0xa0), the interrupt gets generated.
> >>>> OK, then the simplest way would be to just ignore the TX bit at
> >>>> the second or later check.
> >>>>
> >>>> How about the patch below?
> >>> Takashi, thanks for the hack idea. The overhead is just one more
> >>> loop which is nothing. I will test it and post details of further
> >>> problems (there is a bunch of them :) )
> >>>
> >> Hi,
> >>
> >> The hack works fine, I am finally getting no CPU burning during
> >> playback and MIDI input/output.
> >
> > Thanks for checking. The fixed patches are on HG tree now. Please
> > sync your tree.
>
> Takashi, the patch you put into HG was not the one I sent you, but sort
> of the original one that I said did not work.
>
> pavel at nahore:~$ amidi -p hw:0 -d
> ALSA lib rawmidi_hw.c:233:(snd_rawmidi_hw_open) open /dev/snd/midiC0D0
> failed: Input/output error
> cannot open port "hw:0": Input/output error
>
> amidi -p hw:0 -S
> F0411042110C000000000074FF0411042110C000000000074F7F0411042110C000000000\
> 074F7F0411042110C0F0411042110C000000000074FF0411042110C000000000074F7F041\
> 1042110C000000000074F7F0411042110C0
> ALSA lib rawmidi_hw.c:233:(snd_rawmidi_hw_open) open /dev/snd/midiC0D0
> failed: Input/output error
> cannot open port "hw:0": Input/output error
>
> I do not know the reason for MPU401_INFO_NO_ACK. You removed it from the
> original patch, but without it I always get the input/output error.
Ah, thanks, I overlooked it.
Fixed now.
> >> ................
>
> > So, now it's a problem of MIDI "input", if I understand correctly?
> > What we need to check at first is whether the MPU_RX irq is issued at
> > the correct timing. If not, check whether MPU watermarks
> > (MPU_FIFO_WM, CCS0E). According to the datasheet, the values are 0
> > for both RX and TX.
>
> MPU_RX irq did not get fired at all, even though the IRQ mask register
> CCS01 was 0x00, i.e. all interrupts enabled. I enabled the watermarks
> and that did the trick :) MPU_RX gets fired now, the delays are gone and
> Qsynth plays find with MIDI from USB or ice1724 input.
Great, fixed on HG as well.
> It still feels as
> if midi from ice1724 has a little bit higher latency but I do not think
> we can do anything about it (plus it may just be my subjective feeling).
This might be the difference between the transport ways.
USB can be faster.
> I am enclosing a patch to current HG which does not produce errors and
> puts HG to the functionality I have now. MIDI input works correctly.
> MIDI output is not physically tested, I only checked that
> snd_vt1724_mpu401_write gets called with reasonable data.
That should be enough. Thanks for your testing!
Takashi
More information about the Alsa-devel
mailing list