Vedran Miletić wrote:
Hi guys,
There was "MIDI on ice1724" thread not-so-recently, and it had a patch attached. Changelog says that the patch was added to ALSA in 1.0.17.
So I took out my dusty TerraTec PHASE 22 out of the closet (and removed the dust, of course :-) ), but I can't get MIDI to work there. Regardless of ALSA version (1.0.15 - 1.0.17, even 1.0.18rc1), I get no MIDI ports at all: vedran@kalopsia:~$ amidi -l Dir Device Name vedran@kalopsia:~$
Why don't MIDI ports get created? I tried looking at the source, but I couldn't figure out how this "creation of midi ports" happens (or doesn't happen, as in this case).
See ice1724.c:snd_vt1724_probe line 2546:
if (! c->no_mpu401) { if (ice->eeprom.data[ICE_EEP2_SYSCONF] & VT1724_CFG_MPU401) { struct snd_rawmidi *rmidi;
err = snd_rawmidi_new(card, "MIDI", 0, 0, 1, &rmidi); ..................
The Phase cards in phase.c have no no_mpu401 defined BUT they do not have the VT1724_CFG_MPU401 bit defined in their ICE_EEP2_SYSCONF eeprom byte. As a result, the code creating midi device gets skipped.
Take a look at juli.c and prodigy192c code (juli_eeprom[], prodigy71_eeprom[]). They have the VT1724_CFG_MPU401 bit (0x20) set. You should fix that by:
--- a/pci/ice1712/phase.c +++ b/pci/ice1712/phase.c @@ -161,7 +161,8 @@ static int __devinit phase22_add_controls(struct snd_ice1712 }
static unsigned char phase22_eeprom[] __devinitdata = { - [ICE_EEP2_SYSCONF] = 0x00, /* 1xADC, 1xDACs */ + [ICE_EEP2_SYSCONF] = 0x00 | VT1724_CFG_MPU401, /* 1xADC, + 1xDACs, mpu401 */ [ICE_EEP2_ACLINK] = 0x80, /* I2S */ [ICE_EEP2_I2S] = 0xf8, /* vol, 96k, 24bit */ [ICE_EEP2_SPDIF] = 0xc3, /* out-en, out-int, spdif-in */
The same applies for phase28 if it offers midi.
Regards,
Pavel.