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@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