patch-2.0.1 linux/drivers/sound/sb.h
Next file: linux/drivers/sound/sb16_dsp.c
Previous file: linux/drivers/sound/pss.c
Back to the patch index
Back to the overall index
- Lines: 125
- Date:
Sun Jun 30 11:43:38 1996
- Orig file:
v2.0.0/linux/drivers/sound/sb.h
- Orig date:
Sun Mar 24 22:49:43 1996
diff -u --recursive --new-file v2.0.0/linux/drivers/sound/sb.h linux/drivers/sound/sb.h
@@ -1,15 +1,15 @@
-#define DSP_RESET (sbc_base + 0x6)
-#define DSP_READ (sbc_base + 0xA)
-#define DSP_WRITE (sbc_base + 0xC)
-#define DSP_COMMAND (sbc_base + 0xC)
-#define DSP_STATUS (sbc_base + 0xC)
-#define DSP_DATA_AVAIL (sbc_base + 0xE)
-#define DSP_DATA_AVL16 (sbc_base + 0xF)
-#define MIXER_ADDR (sbc_base + 0x4)
-#define MIXER_DATA (sbc_base + 0x5)
-#define OPL3_LEFT (sbc_base + 0x0)
-#define OPL3_RIGHT (sbc_base + 0x2)
-#define OPL3_BOTH (sbc_base + 0x8)
+#define DSP_RESET (devc->base + 0x6)
+#define DSP_READ (devc->base + 0xA)
+#define DSP_WRITE (devc->base + 0xC)
+#define DSP_COMMAND (devc->base + 0xC)
+#define DSP_STATUS (devc->base + 0xC)
+#define DSP_DATA_AVAIL (devc->base + 0xE)
+#define DSP_DATA_AVL16 (devc->base + 0xF)
+#define MIXER_ADDR (devc->base + 0x4)
+#define MIXER_DATA (devc->base + 0x5)
+#define OPL3_LEFT (devc->base + 0x0)
+#define OPL3_RIGHT (devc->base + 0x2)
+#define OPL3_BOTH (devc->base + 0x8)
/* DSP Commands */
#define DSP_CMD_SPKON 0xD1
@@ -26,3 +26,96 @@
#define NORMAL_MIDI 0
#define UART_MIDI 1
+
+/*
+ * Device models
+ */
+#define MDL_NONE 0
+#define MDL_SB1 1 /* SB1.0 or 1.5 */
+#define MDL_SB2 2 /* SB2.0 */
+#define MDL_SB201 3 /* SB2.01 */
+#define MDL_SBPRO 4 /* SB Pro */
+#define MDL_SB16 5 /* SB16/32/AWE */
+#define MDL_JAZZ 10 /* Media Vision Jazz16 */
+#define MDL_SMW 11 /* Logitech Soundman Wave (Jazz16) */
+#define MDL_ESS 12 /* ESS ES688 and ES1688 */
+#define MDL_AZTECH 13 /* Aztech Sound Galaxy family */
+
+/*
+ * Config flags
+ */
+#define SB_NO_MIDI 0x00000001
+#define SB_NO_MIXER 0x00000002
+#define SB_NO_AUDIO 0x00000004
+#define SB_NO_RECORDING 0x00000008 /* No audio recording */
+#define SB_MIDI_ONLY (SB_NO_AUDIO|SB_NO_MIXER)
+
+struct mixer_def {
+ unsigned int regno: 8;
+ unsigned int bitoffs:4;
+ unsigned int nbits:4;
+};
+
+typedef struct mixer_def mixer_tab[32][2];
+typedef struct mixer_def mixer_ent;
+
+typedef struct sb_devc {
+ int dev;
+
+ /* Hardware parameters */
+ int *osp;
+ int minor, major;
+ int type;
+ int model, submodel;
+ int caps;
+# define SBCAP_STEREO 0x00000001
+# define SBCAP_16BITS 0x00000002
+
+ /* Hardware resources */
+ int base;
+ int irq;
+ int dma8, dma16;
+
+ /* State variables */
+ int opened;
+ int speed, bits, channels;
+ volatile int irq_ok;
+ volatile int intr_active, irq_mode;
+
+ /* Mixer fields */
+ int levels[SOUND_MIXER_NRDEVICES];
+ mixer_tab *iomap;
+ int mixer_caps, recmask, supported_devices;
+ int supported_rec_devices;
+ int my_mixerdev;
+
+ /* Audio fields */
+ unsigned long trg_buf;
+ int trigger_bits;
+ int trg_bytes;
+ int trg_intrflag;
+ int trg_restart;
+ unsigned char tconst;
+ int my_dev;
+
+ /* MIDI fields */
+ int my_mididev;
+ int input_opened;
+ void (*midi_input_intr) (int dev, unsigned char data);
+ } sb_devc;
+
+int sb_dsp_command (sb_devc *devc, unsigned char val);
+int sb_dsp_get_byte (sb_devc *devc);
+int sb_dsp_reset (sb_devc *devc);
+void sb_setmixer (sb_devc *devc, unsigned int port, unsigned int value);
+unsigned int sb_getmixer (sb_devc *devc, unsigned int port);
+int sb_dsp_detect (struct address_info *hw_config);
+void sb_dsp_init (struct address_info *hw_config);
+void sb_dsp_unload(struct address_info *hw_config);
+int sb_mixer_init(sb_devc *devc);
+void smw_mixer_init(sb_devc *devc);
+void sb_dsp_midi_init (sb_devc *devc);
+void sb_audio_init (sb_devc *devc, char *name);
+void sb_midi_interrupt (sb_devc *devc);
+int ess_write (sb_devc *devc, unsigned char reg, unsigned char data);
+int ess_read (sb_devc *devc, unsigned char reg);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov