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;