patch-2.1.94 linux/drivers/sound/vidc_synth.c

Next file: linux/drivers/video/cyberfb.c
Previous file: linux/drivers/sound/vidc_mixer.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.93/linux/drivers/sound/vidc_synth.c linux/drivers/sound/vidc_synth.c
@@ -0,0 +1,90 @@
+/*
+ * drivers/sound/vidc_synth.c
+ *
+ * Synthesizer routines for the VIDC
+ *
+ * Copyright (C) 1997 Russell King <rmk@arm.uk.linux.org>
+ */
+#include <linux/config.h>
+#include "sound_config.h"
+
+#include "vidc.h"
+
+static struct synth_info vidc_info =
+{
+	"VIDCsound",		/* name                 */
+	0,			/* device               */
+	SYNTH_TYPE_SAMPLE,	/* synth_type           */
+	0,			/* synth_subtype        */
+	0,			/* perc_mode            */
+	16,			/* nr_voices            */
+	0,			/* nr_drums             */
+	0,			/* instr_bank_size      */
+	0,			/* capabilities         */
+};
+
+int             vidc_sdev;
+int             vidc_synth_volume;
+
+static int vidc_synth_open(int dev, int mode)
+{
+	if (vidc_busy)
+		return -EBUSY;
+
+	vidc_busy = 1;
+	return 0;
+}
+
+static void vidc_synth_close(int dev)
+{
+	vidc_busy = 0;
+}
+
+
+static struct synth_operations vidc_synth_operations =
+{
+	&vidc_info,		/* info                 */
+	0,			/* midi_dev             */
+	SYNTH_TYPE_SAMPLE,	/* synth_type           */
+				/*SAMPLE_TYPE_XXX */ 0,
+				/* SAMPLE_TYPE GUS *//* synth_subtype                */
+	vidc_synth_open,	/* open                 */
+	vidc_synth_close,	/* close                */
+	NULL,			/* ioctl                */
+	NULL,			/* kill_note            */
+	NULL,			/* start_note           */
+	NULL,			/* set_instr            */
+	NULL,			/* reset                */
+	NULL,			/* hw_control           */
+	NULL,			/* load_patch           */
+	NULL,			/* aftertouch           */
+	NULL,			/* controller           */
+	NULL,			/* panning              */
+	NULL,			/* volume_method        */
+	NULL,			/* patchmgr             */
+	NULL,			/* bender               */
+	NULL,			/* alloc                */
+	NULL,			/* setup_voice          */
+	NULL,			/* send_sysex           */
+				/* alloc                */
+				/* chn_info[16]         */
+};
+
+int  vidc_synth_get_volume(void)
+{
+	return vidc_synth_volume;
+}
+
+int vidc_synth_set_volume(int newvol)
+{
+	return vidc_synth_volume = newvol;
+}
+
+void vidc_synth_init(struct address_info *hw_config)
+{
+	vidc_synth_volume = 100 | (100 << 8);
+	if ((vidc_sdev=sound_alloc_synthdev())!=-1)
+		synth_devs[vidc_sdev] = &vidc_synth_operations;
+	else
+		printk(KERN_ERR "VIDCsound: Too many synthesizers\n");
+}

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov