Lines Matching +full:legacy +full:- +full:mode
1 // SPDX-License-Identifier: GPL-2.0-or-later
4 * Routines for control of MPU-401 in UART mode
17 /* MPU401 legacy support is only provided as a emergency fallback *
33 int temp, mode; in snd_vortex_midi() local
39 /* Enable Legacy MIDI Interface port. */ in snd_vortex_midi()
42 (hwread(vortex->mmio, VORTEX_CTRL) & ~CTRL_MIDI_PORT) | in snd_vortex_midi()
44 hwwrite(vortex->mmio, VORTEX_CTRL, temp); in snd_vortex_midi()
46 /* Disable Legacy MIDI Interface port. */ in snd_vortex_midi()
48 (hwread(vortex->mmio, VORTEX_CTRL) & ~CTRL_MIDI_PORT) & in snd_vortex_midi()
50 hwwrite(vortex->mmio, VORTEX_CTRL, temp); in snd_vortex_midi()
53 mode = 1; in snd_vortex_midi()
54 temp = hwread(vortex->mmio, VORTEX_CTRL2) & 0xffff00cf; in snd_vortex_midi()
55 temp |= (MIDI_CLOCK_DIV << 8) | ((mode >> 24) & 0xff) << 4; in snd_vortex_midi()
56 hwwrite(vortex->mmio, VORTEX_CTRL2, temp); in snd_vortex_midi()
57 hwwrite(vortex->mmio, VORTEX_MIDI_CMD, MPU401_RESET); in snd_vortex_midi()
60 temp = hwread(vortex->mmio, VORTEX_MIDI_DATA); in snd_vortex_midi()
62 dev_err(vortex->card->dev, "midi port doesn't acknowledge!\n"); in snd_vortex_midi()
63 return -ENODEV; in snd_vortex_midi()
66 hwwrite(vortex->mmio, VORTEX_IRQ_CTRL, in snd_vortex_midi()
67 hwread(vortex->mmio, VORTEX_IRQ_CTRL) | IRQ_MIDI); in snd_vortex_midi()
71 temp = snd_mpu401_uart_new(vortex->card, 0, MPU401_HW_MPU401, 0x330, in snd_vortex_midi()
72 MPU401_INFO_IRQ_HOOK, -1, &rmidi); in snd_vortex_midi()
74 hwwrite(vortex->mmio, VORTEX_CTRL, in snd_vortex_midi()
75 (hwread(vortex->mmio, VORTEX_CTRL) & in snd_vortex_midi()
80 port = (unsigned long)(vortex->mmio + VORTEX_MIDI_DATA); in snd_vortex_midi()
81 temp = snd_mpu401_uart_new(vortex->card, 0, MPU401_HW_AUREAL, port, in snd_vortex_midi()
83 MPU401_INFO_IRQ_HOOK, -1, &rmidi); in snd_vortex_midi()
85 hwwrite(vortex->mmio, VORTEX_CTRL, in snd_vortex_midi()
86 (hwread(vortex->mmio, VORTEX_CTRL) & in snd_vortex_midi()
90 mpu = rmidi->private_data; in snd_vortex_midi()
91 mpu->cport = (unsigned long)(vortex->mmio + VORTEX_MIDI_CMD); in snd_vortex_midi()
94 snprintf(rmidi->name, sizeof(rmidi->name), "%s MIDI %d", CARD_NAME_SHORT , vortex->card->number); in snd_vortex_midi()
96 vortex->rmidi = rmidi; in snd_vortex_midi()