Module for C-Media CMI8338/8738/8768/8770 PCI sound cards.
- mpu_port - port address of MIDI interface:
+ mpu_port - port address of MIDI interface (8338 only):
0x300,0x310,0x320,0x330 = legacy port,
- 1 = integrated PCI port (8738 or later),
0 = disable (default)
fm_port - port address of OPL-3 FM synthesizer (8x38 only):
0x388 = legacy port,
MIDI CONTROLLER
---------------
-The MPU401-UART interface is disabled as default. You need to set
-module option "mpu_port" with a valid I/O port address to enable the
-MIDI support. The valid I/O ports are 0x300, 0x310, 0x320 and 0x330.
-Choose the value which doesn't conflict with other cards. With
-CMI8738 and newer chips, you can use "mpu_port=1" to use a PCI port
-address that does not conflict with any other card.
+With CMI8338 chips, the MPU401-UART interface is disabled as default.
+You need to set the module option "mpu_port" to a valid I/O port address
+to enable MIDI support. Valid I/O ports are 0x300, 0x310, 0x320 and
+0x330. Choose a value that doesn't conflict with other cards.
+
+With CMI8738 and newer chips, the MIDI interface is enabled by default
+and the driver automatically chooses a port address.
There is _no_ hardware wavetable function on this chip (except for
OPL3 synth below).
if (!fm_port)
goto disable_fm;
- if (cm->chip_version > 33) {
+ if (cm->chip_version >= 39) {
/* first try FM regs in PCI port range */
iosynth = cm->iobase + CM_REG_FM_PCI;
err = snd_opl3_create(cm->card, iosynth, iosynth + 2,
return err;
}
- val = 0;
- if (cm->chip_version > 33 && mpu_port[dev] == 1) {
+ if (cm->chip_version >= 39) {
val = snd_cmipci_read_b(cm, CM_REG_MPU_PCI + 1);
if (val != 0x00 && val != 0xff) {
iomidi = cm->iobase + CM_REG_MPU_PCI;
}
}
if (!integrated_midi) {
+ val = 0;
iomidi = mpu_port[dev];
switch (iomidi) {
case 0x320: val = CM_VMPU_320; break;