📄 sb.h
字号:
#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#define DSP_CMD_SPKOFF 0xD3#define DSP_CMD_DMAON 0xD0#define DSP_CMD_DMAOFF 0xD4#define IMODE_NONE 0#define IMODE_OUTPUT PCM_ENABLE_OUTPUT#define IMODE_INPUT PCM_ENABLE_INPUT#define IMODE_INIT 3#define IMODE_MIDI 4#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_SBPNP 6 /* SB16/32/AWE PnP */#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 */#define MDL_ES1868MIDI 14 /* MIDI port of ESS1868 */#define MDL_AEDSP 15 /* Audio Excel DSP 16 */#define MDL_ESSPCI 16 /* ESS PCI card */#define MDL_YMPCI 17 /* Yamaha PCI sb in emulation */#define SUBMDL_ALS007 42 /* ALS-007 differs from SB16 only in mixer */ /* register assignment */#define SUBMDL_ALS100 43 /* ALS-100 allows sampling rates of up */ /* to 48kHz */ /* * 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)#define SB_PCI_IRQ 0x00000010 /* PCI shared IRQ */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;struct sb_module_options{ int esstype; /* ESS chip type */ int acer; /* Do acer notebook init? */ int sm_games; /* Logitech soundman games? */};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; int pcibase; /* For ESS Maestro etc */ /* State variables */ int opened; /* new audio fields for full duplex support */ int fullduplex; int duplex; int speed, bits, channels; volatile int irq_ok; volatile int intr_active, irq_mode; /* duplicate audio fields for full duplex support */ volatile int intr_active_16, irq_mode_16; /* Mixer fields */ int *levels; mixer_tab *iomap; int mixer_caps, recmask, outmask, supported_devices; int supported_rec_devices, supported_out_devices; int my_mixerdev; int sbmixnum; /* Audio fields */ unsigned long trg_buf; int trigger_bits; int trg_bytes; int trg_intrflag; int trg_restart; /* duplicate audio fields for full duplex support */ unsigned long trg_buf_16; int trigger_bits_16; int trg_bytes_16; int trg_intrflag_16; int trg_restart_16; unsigned char tconst; /* MIDI fields */ int my_mididev; int input_opened; int midi_broken; void (*midi_input_intr) (int dev, unsigned char data); void *midi_irq_cookie; /* IRQ cookie for the midi */ spinlock_t lock; struct sb_module_options sbmo; /* Module options */ } sb_devc; /* * PCI card types */#define SB_PCI_ESSMAESTRO 1 /* ESS Maestro Legacy */#define SB_PCI_YAMAHA 2 /* Yamaha Legacy *//* * Functions */ 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, int pci, int pciio, struct sb_module_options *sbmo);int sb_dsp_init (struct address_info *hw_config, struct module *owner);void sb_dsp_unload(struct address_info *hw_config, int sbmpu);int sb_mixer_init(sb_devc *devc, struct module *owner);void sb_mixer_unload(sb_devc *devc);void sb_mixer_set_stereo (sb_devc *devc, int mode);void smw_mixer_init(sb_devc *devc);void sb_dsp_midi_init (sb_devc *devc, struct module *owner);void sb_audio_init (sb_devc *devc, char *name, struct module *owner);void sb_midi_interrupt (sb_devc *devc);void sb_chgmixer (sb_devc * devc, unsigned int reg, unsigned int mask, unsigned int val);int sb_common_mixer_set(sb_devc * devc, int dev, int left, int right);int sb_audio_open(int dev, int mode);void sb_audio_close(int dev);extern sb_devc *last_sb;/* From sb_common.c */void sb_dsp_disable_midi(int port);void sb_dsp_disable_recording(int port);int probe_sbmpu (struct address_info *hw_config, struct module *owner);void unload_sbmpu (struct address_info *hw_config);void unload_sb16(struct address_info *hw_info);void unload_sb16midi(struct address_info *hw_info);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -