diff options
author | peter <peter@FreeBSD.org> | 2000-10-02 03:13:50 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 2000-10-02 03:13:50 +0000 |
commit | a4b042e9d1c54f668ce11e3192e99747882c3e09 (patch) | |
tree | 5ffbc89b8b348f514e1d9ac5e12ba2fe1e708f3a /sys/i386/isa/sound/maui.c | |
parent | e80d3292ca5091a1d04d9413e27abc3d3f8756eb (diff) | |
download | FreeBSD-src-a4b042e9d1c54f668ce11e3192e99747882c3e09.zip FreeBSD-src-a4b042e9d1c54f668ce11e3192e99747882c3e09.tar.gz |
Put on my nuclear-grade asbestos suit and cvs rm the old, broken, sound
drivers (again). These drivers have not compiled for 5-6 months.
Now that the new sound code supports MIDI, the major reason we had for
reviving it is gone. It is a far better investment polishing the new
midi code than trying to keep this on life support. Come 5.0-REL, if
there are major shortcomings in the pcm sound driver then maybe we can
rethink this, but until then we should focus on pcm.
Remember, these have not been compilable since ~April-May this year.
Diffstat (limited to 'sys/i386/isa/sound/maui.c')
-rw-r--r-- | sys/i386/isa/sound/maui.c | 225 |
1 files changed, 0 insertions, 225 deletions
diff --git a/sys/i386/isa/sound/maui.c b/sys/i386/isa/sound/maui.c deleted file mode 100644 index e92b48a..0000000 --- a/sys/i386/isa/sound/maui.c +++ /dev/null @@ -1,225 +0,0 @@ -/* - * sound/maui.c - * - * The low level driver for Turtle Beach Maui and Tropez. - * - * Copyright by Hannu Savolainen 1995 - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. 2. - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#define USE_SEQ_MACROS -#define USE_SIMPLE_MACROS - -#include <i386/isa/sound/sound_config.h> - - -#if defined(CONFIG_MAUI) - -static int maui_base = 0x330; - -static volatile int irq_ok = 0; -static sound_os_info *maui_osp; - -#define HOST_DATA_PORT (maui_base + 2) -#define HOST_STAT_PORT (maui_base + 3) -#define HOST_CTRL_PORT (maui_base + 3) - -#define STAT_TX_INTR 0x40 -#define STAT_TX_AVAIL 0x20 -#define STAT_TX_IENA 0x10 -#define STAT_RX_INTR 0x04 -#define STAT_RX_AVAIL 0x02 -#define STAT_RX_IENA 0x01 - -static int (*orig_load_patch) (int dev, int format, snd_rw_buf * addr, - int offs, int count, int pmgr_flag) = NULL; - -static int -maui_read(void) -{ - int timeout; - - for (timeout = 0; timeout < 1000000; timeout++) - if (inb(HOST_STAT_PORT) & STAT_RX_AVAIL) - return inb(HOST_DATA_PORT); - - printf("Maui: Receive timeout\n"); - - return -1; -} - -static int -maui_write(u_char data) -{ - int timeout; - - for (timeout = 0; timeout < 10000000; timeout++) { - if (inb(HOST_STAT_PORT) & STAT_TX_AVAIL) { - outb(HOST_DATA_PORT, data); - return 1; - } - } - - printf("Maui: Write timeout\n"); - - return 0; -} - -void -mauiintr(int irq) -{ - irq_ok = 1; -} - - -int -maui_load_patch(int dev, int format, snd_rw_buf * addr, - int offs, int count, int pmgr_flag) -{ - - struct sysex_info header; - u_long left, src_offs; - int hdr_size = (u_long) &header.data[0] - (u_long) &header; - int i; - - if (format == SYSEX_PATCH) /* Handled by midi_synth.c */ - return orig_load_patch(dev, format, addr, offs, count, pmgr_flag); - - if (format != MAUI_PATCH) { - printf("Maui: Unknown patch format\n"); - } - if (count < hdr_size) { - printf("Maui error: Patch header too short\n"); - return -(EINVAL); - } - count -= hdr_size; - - /* - * Copy the header from user space but ignore the first bytes which - * have been transferred already. - */ - - if (uiomove(&((char *) &header)[offs], hdr_size - offs, addr)) { - printf("sb: Bad copyin()!\n"); - }; - - if (count < header.len) { - printf("Maui warning: Host command record too short (%d<%d)\n", - count, (int) header.len); - header.len = count; - } - left = header.len; - src_offs = 0; - - for (i = 0; i < left; i++) { - u_char data; - uiomove((char *) &(data), 1, addr); - if (i == 0 && !(data & 0x80)) - return -(EINVAL); - - if (maui_write(data) == -1) - return -(EIO); - } - - if ((i = maui_read()) != 0x80) { - if (i != -1) - printf("Maui: Error status %02x\n", i); - - return -(EIO); - } - return 0; -} - -int -probe_maui(struct address_info * hw_config) -{ - int i; - int tmp1, tmp2; - - maui_base = hw_config->io_base; - maui_osp = hw_config->osp; - - if (snd_set_irq_handler(hw_config->irq, mauiintr, maui_osp) < 0) - return 0; - - if (!maui_write(0xCF)) {/* Report hardware version */ - /* snd_release_irq(hw_config->irq); */ - return 0; - } - if ((tmp1 = maui_read()) == -1 || (tmp2 = maui_read()) == -1) { - /* snd_release_irq(hw_config->irq); */ - return 0; - } - printf("WaveFront hardware version %d.%d\n", tmp1, tmp2); - - if (!maui_write(0x9F)) /* Report firmware version */ - return 0; - if ((tmp1 = maui_read()) == -1 || (tmp2 = maui_read()) == -1) - return 0; - printf("WaveFront firmware version %d.%d\n", tmp1, tmp2); - - if (!maui_write(0x85)) /* Report free DRAM */ - return 0; - tmp1 = 0; - for (i = 0; i < 4; i++) { - tmp1 |= maui_read() << (7 * i); - } - printf("Available DRAM %dk\n", tmp1 / 1024); - - for (i = 0; i < 1000; i++) - if (probe_mpu401(hw_config)) - break; - - return probe_mpu401(hw_config); -} - -void -attach_maui(struct address_info * hw_config) -{ - int this_dev = num_midis; - - conf_printf("Maui", hw_config); - - hw_config->irq *= -1; - attach_mpu401(hw_config); - - if (num_midis > this_dev) { /* The MPU401 driver installed itself */ - struct synth_operations *synth; - - /* - * Intercept patch loading calls so that they canbe handled - * by the Maui driver. - */ - - synth = midi_devs[this_dev]->converter; - - if (synth != NULL) { - orig_load_patch = synth->load_patch; - synth->load_patch = &maui_load_patch; - } else - printf("Maui: Can't install patch loader\n"); - } - return; -} - -#endif |