/
usr
/
src
/
linux-headers-5.15.0-190
/
include
/
sound
/
/usr/src/linux-headers-5.15.0-190/include/sound
mkdir
upload
Name
Size
Mode
Actions
ac97/
-
0755
rm
sof/
-
0755
rm
ac97_codec.h
16044
0644
edit
dl
rm
aci.h
2458
0644
edit
dl
rm
ad1816a.h
4843
0644
edit
dl
rm
ad1843.h
1516
0644
edit
dl
rm
adau1373.h
706
0644
edit
dl
rm
ak4xxx-adda.h
2724
0644
edit
dl
rm
ak4113.h
10461
0644
edit
dl
rm
ak4114.h
9773
0644
edit
dl
rm
ak4117.h
8542
0644
edit
dl
rm
ak4531_codec.h
2478
0644
edit
dl
rm
ak4641.h
476
0644
edit
dl
rm
alc5623.h
536
0644
edit
dl
rm
asequencer.h
2975
0644
edit
dl
rm
asound.h
590
0644
edit
dl
rm
asoundef.h
16403
0644
edit
dl
rm
compress_driver.h
7986
0644
edit
dl
rm
control.h
9958
0644
edit
dl
rm
core.h
15895
0644
edit
dl
rm
cs35l33.h
888
0644
edit
dl
rm
cs35l34.h
741
0644
edit
dl
rm
cs35l35.h
2267
0644
edit
dl
rm
cs35l36.h
772
0644
edit
dl
rm
cs35l41.h
30889
0644
edit
dl
rm
cs42l42.h
35149
0644
edit
dl
rm
cs42l52.h
592
0644
edit
dl
rm
cs42l56.h
1046
0644
edit
dl
rm
cs42l73.h
361
0644
edit
dl
rm
cs4231-regs.h
7785
0644
edit
dl
rm
cs4271.h
961
0644
edit
dl
rm
cs8403.h
8138
0644
edit
dl
rm
cs8427.h
9954
0644
edit
dl
rm
da7213.h
1032
0644
edit
dl
rm
da7218.h
2468
0644
edit
dl
rm
da7219-aad.h
2263
0644
edit
dl
rm
da7219.h
998
0644
edit
dl
rm
da9055.h
707
0644
edit
dl
rm
designware_i2s.h
1631
0644
edit
dl
rm
dmaengine_pcm.h
6913
0644
edit
dl
rm
emu10k1.h
90722
0644
edit
dl
rm
emu10k1_synth.h
693
0644
edit
dl
rm
emu8000.h
3333
0644
edit
dl
rm
emu8000_reg.h
9767
0644
edit
dl
rm
emux_legacy.h
4811
0644
edit
dl
rm
emux_synth.h
6948
0644
edit
dl
rm
es1688.h
2923
0644
edit
dl
rm
graph_card.h
271
0644
edit
dl
rm
gus.h
20119
0644
edit
dl
rm
hdaudio.h
21538
0644
edit
dl
rm
hdaudio_ext.h
5680
0644
edit
dl
rm
hda_chmap.h
2660
0644
edit
dl
rm
hda_codec.h
17669
0644
edit
dl
rm
hda_component.h
2085
0644
edit
dl
rm
hda_hwdep.h
736
0644
edit
dl
rm
hda_i915.h
589
0644
edit
dl
rm
hda_register.h
10655
0644
edit
dl
rm
hda_regmap.h
6934
0644
edit
dl
rm
hda_verbs.h
17296
0644
edit
dl
rm
hdmi-codec.h
3011
0644
edit
dl
rm
hwdep.h
1925
0644
edit
dl
rm
i2c.h
2857
0644
edit
dl
rm
info.h
8053
0644
edit
dl
rm
initval.h
2484
0644
edit
dl
rm
intel-dsp-config.h
869
0644
edit
dl
rm
intel-nhlt.h
2851
0644
edit
dl
rm
jack.h
3172
0644
edit
dl
rm
l3.h
524
0644
edit
dl
rm
madera-pdata.h
1996
0644
edit
dl
rm
max9768.h
729
0644
edit
dl
rm
max98088.h
1074
0644
edit
dl
rm
max98090.h
534
0644
edit
dl
rm
max98095.h
1357
0644
edit
dl
rm
memalloc.h
2642
0644
edit
dl
rm
minors.h
3738
0644
edit
dl
rm
mixer_oss.h
1773
0644
edit
dl
rm
mpu401.h
3905
0644
edit
dl
rm
omap-hdmi-audio.h
971
0644
edit
dl
rm
opl3.h
11909
0644
edit
dl
rm
opl4.h
459
0644
edit
dl
rm
pcm-indirect.h
5159
0644
edit
dl
rm
pcm.h
53684
0644
edit
dl
rm
pcm_drm_eld.h
183
0644
edit
dl
rm
pcm_iec958.h
597
0644
edit
dl
rm
pcm_oss.h
2063
0644
edit
dl
rm
pcm_params.h
8864
0644
edit
dl
rm
pt2258.h
513
0644
edit
dl
rm
pxa2xx-lib.h
2190
0644
edit
dl
rm
rawmidi.h
5881
0644
edit
dl
rm
rt286.h
314
0644
edit
dl
rm
rt298.h
373
0644
edit
dl
rm
rt1015.h
283
0644
edit
dl
rm
rt5514.h
399
0644
edit
dl
rm
rt5659.h
880
0644
edit
dl
rm
rt5660.h
578
0644
edit
dl
rm
rt5663.h
476
0644
edit
dl
rm
rt5665.h
761
0644
edit
dl
rm
rt5668.h
646
0644
edit
dl
rm
rt5682.h
901
0644
edit
dl
rm
s3c24xx_uda134x.h
229
0644
edit
dl
rm
sb.h
10550
0644
edit
dl
rm
sb16_csp.h
2100
0644
edit
dl
rm
seq_device.h
2165
0644
edit
dl
rm
seq_kernel.h
3378
0644
edit
dl
rm
seq_midi_emul.h
6757
0644
edit
dl
rm
seq_midi_event.h
1356
0644
edit
dl
rm
seq_oss.h
2264
0644
edit
dl
rm
seq_oss_legacy.h
360
0644
edit
dl
rm
seq_virmidi.h
2123
0644
edit
dl
rm
sh_dac_audio.h
441
0644
edit
dl
rm
sh_fsi.h
693
0644
edit
dl
rm
simple_card.h
529
0644
edit
dl
rm
simple_card_utils.h
8351
0644
edit
dl
rm
snd_wavefront.h
5620
0644
edit
dl
rm
soc-acpi-intel-match.h
2074
0644
edit
dl
rm
soc-acpi.h
5637
0644
edit
dl
rm
soc-card.h
2944
0644
edit
dl
rm
soc-component.h
19387
0644
edit
dl
rm
soc-dai.h
19957
0644
edit
dl
rm
soc-dapm.h
32957
0644
edit
dl
rm
soc-dpcm.h
5523
0644
edit
dl
rm
soc-jack.h
3822
0644
edit
dl
rm
soc-link.h
1172
0644
edit
dl
rm
soc-topology.h
5835
0644
edit
dl
rm
soc.h
47919
0644
edit
dl
rm
sof.h
2596
0644
edit
dl
rm
soundfont.h
3903
0644
edit
dl
rm
spear_dma.h
350
0644
edit
dl
rm
spear_spdif.h
345
0644
edit
dl
rm
sta32x.h
1015
0644
edit
dl
rm
sta350.h
1474
0644
edit
dl
rm
tas2552-plat.h
283
0644
edit
dl
rm
tas5086.h
210
0644
edit
dl
rm
tea6330t.h
468
0644
edit
dl
rm
timer.h
5109
0644
edit
dl
rm
tlv.h
1627
0644
edit
dl
rm
tlv320aic3x.h
1777
0644
edit
dl
rm
tlv320aic32x4.h
1320
0644
edit
dl
rm
tlv320dac33-plat.h
574
0644
edit
dl
rm
tpa6130a2-plat.h
291
0644
edit
dl
rm
uda134x.h
451
0644
edit
dl
rm
uda1380.h
335
0644
edit
dl
rm
util_mem.h
1623
0644
edit
dl
rm
vx_core.h
15055
0644
edit
dl
rm
wavefront.h
18518
0644
edit
dl
rm
wm0010.h
466
0644
edit
dl
rm
wm1250-ev1.h
510
0644
edit
dl
rm
wm2000.h
479
0644
edit
dl
rm
wm2200.h
1353
0644
edit
dl
rm
wm5100.h
1129
0644
edit
dl
rm
wm8903.h
15377
0644
edit
dl
rm
wm8904.h
7389
0644
edit
dl
rm
wm8955.h
442
0644
edit
dl
rm
wm8960.h
888
0644
edit
dl
rm
wm8962.h
1694
0644
edit
dl
rm
wm8993.h
1076
0644
edit
dl
rm
wm8996.h
1289
0644
edit
dl
rm
wm9081.h
515
0644
edit
dl
rm
wm9090.h
634
0644
edit
dl
rm
wss.h
7949
0644
edit
dl
rm
Edit:
/usr/src/linux-headers-5.15.0-190/include/sound/gus.h
(20119B)
/* SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef __SOUND_GUS_H #define __SOUND_GUS_H /* * Global structures used for GUS part of ALSA driver * Copyright (c) by Jaroslav Kysela <perex@perex.cz> */ #include <sound/pcm.h> #include <sound/rawmidi.h> #include <sound/timer.h> #include <sound/seq_midi_emul.h> #include <sound/seq_device.h> #include <linux/io.h> /* IO ports */ #define GUSP(gus, x) ((gus)->gf1.port + SNDRV_g_u_s_##x) #define SNDRV_g_u_s_MIDICTRL (0x320-0x220) #define SNDRV_g_u_s_MIDISTAT (0x320-0x220) #define SNDRV_g_u_s_MIDIDATA (0x321-0x220) #define SNDRV_g_u_s_GF1PAGE (0x322-0x220) #define SNDRV_g_u_s_GF1REGSEL (0x323-0x220) #define SNDRV_g_u_s_GF1DATALOW (0x324-0x220) #define SNDRV_g_u_s_GF1DATAHIGH (0x325-0x220) #define SNDRV_g_u_s_IRQSTAT (0x226-0x220) #define SNDRV_g_u_s_TIMERCNTRL (0x228-0x220) #define SNDRV_g_u_s_TIMERDATA (0x229-0x220) #define SNDRV_g_u_s_DRAM (0x327-0x220) #define SNDRV_g_u_s_MIXCNTRLREG (0x220-0x220) #define SNDRV_g_u_s_IRQDMACNTRLREG (0x22b-0x220) #define SNDRV_g_u_s_REGCNTRLS (0x22f-0x220) #define SNDRV_g_u_s_BOARDVERSION (0x726-0x220) #define SNDRV_g_u_s_MIXCNTRLPORT (0x726-0x220) #define SNDRV_g_u_s_IVER (0x325-0x220) #define SNDRV_g_u_s_MIXDATAPORT (0x326-0x220) #define SNDRV_g_u_s_MAXCNTRLPORT (0x326-0x220) /* GF1 registers */ /* global registers */ #define SNDRV_GF1_GB_ACTIVE_VOICES 0x0e #define SNDRV_GF1_GB_VOICES_IRQ 0x0f #define SNDRV_GF1_GB_GLOBAL_MODE 0x19 #define SNDRV_GF1_GW_LFO_BASE 0x1a #define SNDRV_GF1_GB_VOICES_IRQ_READ 0x1f #define SNDRV_GF1_GB_DRAM_DMA_CONTROL 0x41 #define SNDRV_GF1_GW_DRAM_DMA_LOW 0x42 #define SNDRV_GF1_GW_DRAM_IO_LOW 0x43 #define SNDRV_GF1_GB_DRAM_IO_HIGH 0x44 #define SNDRV_GF1_GB_SOUND_BLASTER_CONTROL 0x45 #define SNDRV_GF1_GB_ADLIB_TIMER_1 0x46 #define SNDRV_GF1_GB_ADLIB_TIMER_2 0x47 #define SNDRV_GF1_GB_RECORD_RATE 0x48 #define SNDRV_GF1_GB_REC_DMA_CONTROL 0x49 #define SNDRV_GF1_GB_JOYSTICK_DAC_LEVEL 0x4b #define SNDRV_GF1_GB_RESET 0x4c #define SNDRV_GF1_GB_DRAM_DMA_HIGH 0x50 #define SNDRV_GF1_GW_DRAM_IO16 0x51 #define SNDRV_GF1_GW_MEMORY_CONFIG 0x52 #define SNDRV_GF1_GB_MEMORY_CONTROL 0x53 #define SNDRV_GF1_GW_FIFO_RECORD_BASE_ADDR 0x54 #define SNDRV_GF1_GW_FIFO_PLAY_BASE_ADDR 0x55 #define SNDRV_GF1_GW_FIFO_SIZE 0x56 #define SNDRV_GF1_GW_INTERLEAVE 0x57 #define SNDRV_GF1_GB_COMPATIBILITY 0x59 #define SNDRV_GF1_GB_DECODE_CONTROL 0x5a #define SNDRV_GF1_GB_VERSION_NUMBER 0x5b #define SNDRV_GF1_GB_MPU401_CONTROL_A 0x5c #define SNDRV_GF1_GB_MPU401_CONTROL_B 0x5d #define SNDRV_GF1_GB_EMULATION_IRQ 0x60 /* voice specific registers */ #define SNDRV_GF1_VB_ADDRESS_CONTROL 0x00 #define SNDRV_GF1_VW_FREQUENCY 0x01 #define SNDRV_GF1_VW_START_HIGH 0x02 #define SNDRV_GF1_VW_START_LOW 0x03 #define SNDRV_GF1_VA_START SNDRV_GF1_VW_START_HIGH #define SNDRV_GF1_VW_END_HIGH 0x04 #define SNDRV_GF1_VW_END_LOW 0x05 #define SNDRV_GF1_VA_END SNDRV_GF1_VW_END_HIGH #define SNDRV_GF1_VB_VOLUME_RATE 0x06 #define SNDRV_GF1_VB_VOLUME_START 0x07 #define SNDRV_GF1_VB_VOLUME_END 0x08 #define SNDRV_GF1_VW_VOLUME 0x09 #define SNDRV_GF1_VW_CURRENT_HIGH 0x0a #define SNDRV_GF1_VW_CURRENT_LOW 0x0b #define SNDRV_GF1_VA_CURRENT SNDRV_GF1_VW_CURRENT_HIGH #define SNDRV_GF1_VB_PAN 0x0c #define SNDRV_GF1_VW_OFFSET_RIGHT 0x0c #define SNDRV_GF1_VB_VOLUME_CONTROL 0x0d #define SNDRV_GF1_VB_UPPER_ADDRESS 0x10 #define SNDRV_GF1_VW_EFFECT_HIGH 0x11 #define SNDRV_GF1_VW_EFFECT_LOW 0x12 #define SNDRV_GF1_VA_EFFECT SNDRV_GF1_VW_EFFECT_HIGH #define SNDRV_GF1_VW_OFFSET_LEFT 0x13 #define SNDRV_GF1_VB_ACCUMULATOR 0x14 #define SNDRV_GF1_VB_MODE 0x15 #define SNDRV_GF1_VW_EFFECT_VOLUME 0x16 #define SNDRV_GF1_VB_FREQUENCY_LFO 0x17 #define SNDRV_GF1_VB_VOLUME_LFO 0x18 #define SNDRV_GF1_VW_OFFSET_RIGHT_FINAL 0x1b #define SNDRV_GF1_VW_OFFSET_LEFT_FINAL 0x1c #define SNDRV_GF1_VW_EFFECT_VOLUME_FINAL 0x1d /* ICS registers */ #define SNDRV_ICS_MIC_DEV 0 #define SNDRV_ICS_LINE_DEV 1 #define SNDRV_ICS_CD_DEV 2 #define SNDRV_ICS_GF1_DEV 3 #define SNDRV_ICS_NONE_DEV 4 #define SNDRV_ICS_MASTER_DEV 5 /* LFO */ #define SNDRV_LFO_TREMOLO 0 #define SNDRV_LFO_VIBRATO 1 /* misc */ #define SNDRV_GF1_DMA_UNSIGNED 0x80 #define SNDRV_GF1_DMA_16BIT 0x40 #define SNDRV_GF1_DMA_IRQ 0x20 #define SNDRV_GF1_DMA_WIDTH16 0x04 #define SNDRV_GF1_DMA_READ 0x02 /* read from GUS's DRAM */ #define SNDRV_GF1_DMA_ENABLE 0x01 /* ramp ranges */ #define SNDRV_GF1_ATTEN(x) (snd_gf1_atten_table[x]) #define SNDRV_GF1_MIN_VOLUME 1800 #define SNDRV_GF1_MAX_VOLUME 4095 #define SNDRV_GF1_MIN_OFFSET (SNDRV_GF1_MIN_VOLUME>>4) #define SNDRV_GF1_MAX_OFFSET 255 #define SNDRV_GF1_MAX_TDEPTH 90 /* defines for memory manager */ #define SNDRV_GF1_MEM_BLOCK_16BIT 0x0001 #define SNDRV_GF1_MEM_OWNER_DRIVER 0x0001 #define SNDRV_GF1_MEM_OWNER_WAVE_SIMPLE 0x0002 #define SNDRV_GF1_MEM_OWNER_WAVE_GF1 0x0003 #define SNDRV_GF1_MEM_OWNER_WAVE_IWFFFF 0x0004 /* constants for interrupt handlers */ #define SNDRV_GF1_HANDLER_MIDI_OUT 0x00010000 #define SNDRV_GF1_HANDLER_MIDI_IN 0x00020000 #define SNDRV_GF1_HANDLER_TIMER1 0x00040000 #define SNDRV_GF1_HANDLER_TIMER2 0x00080000 #define SNDRV_GF1_HANDLER_VOICE 0x00100000 #define SNDRV_GF1_HANDLER_DMA_WRITE 0x00200000 #define SNDRV_GF1_HANDLER_DMA_READ 0x00400000 #define SNDRV_GF1_HANDLER_ALL (0xffff0000&~SNDRV_GF1_HANDLER_VOICE) /* constants for DMA flags */ #define SNDRV_GF1_DMA_TRIGGER 1 /* --- */ struct snd_gus_card; /* GF1 specific structure */ struct snd_gf1_bank_info { unsigned int address; unsigned int size; }; struct snd_gf1_mem_block { unsigned short flags; /* flags - SNDRV_GF1_MEM_BLOCK_XXXX */ unsigned short owner; /* owner - SNDRV_GF1_MEM_OWNER_XXXX */ unsigned int share; /* share count */ unsigned int share_id[4]; /* share ID */ unsigned int ptr; unsigned int size; char *name; struct snd_gf1_mem_block *next; struct snd_gf1_mem_block *prev; }; struct snd_gf1_mem { struct snd_gf1_bank_info banks_8[4]; struct snd_gf1_bank_info banks_16[4]; struct snd_gf1_mem_block *first; struct snd_gf1_mem_block *last; struct mutex memory_mutex; }; struct snd_gf1_dma_block { void *buffer; /* buffer in computer's RAM */ unsigned long buf_addr; /* buffer address */ unsigned int addr; /* address in onboard memory */ unsigned int count; /* count in bytes */ unsigned int cmd; /* DMA command (format) */ void (*ack)(struct snd_gus_card * gus, void *private_data); void *private_data; struct snd_gf1_dma_block *next; }; struct snd_gus_port { struct snd_midi_channel_set * chset; struct snd_gus_card * gus; int mode; /* operation mode */ int client; /* sequencer client number */ int port; /* sequencer port number */ unsigned int midi_has_voices: 1; }; struct snd_gus_voice; #define SNDRV_GF1_VOICE_TYPE_PCM 0 #define SNDRV_GF1_VOICE_TYPE_SYNTH 1 #define SNDRV_GF1_VOICE_TYPE_MIDI 2 #define SNDRV_GF1_VFLG_RUNNING (1<<0) #define SNDRV_GF1_VFLG_EFFECT_TIMER1 (1<<1) #define SNDRV_GF1_VFLG_PAN (1<<2) enum snd_gus_volume_state { VENV_BEFORE, VENV_ATTACK, VENV_SUSTAIN, VENV_RELEASE, VENV_DONE, VENV_VOLUME }; struct snd_gus_voice { int number; unsigned int use: 1, pcm: 1, synth:1, midi: 1; unsigned int flags; unsigned char client; unsigned char port; unsigned char index; unsigned char pad; #ifdef CONFIG_SND_DEBUG unsigned int interrupt_stat_wave; unsigned int interrupt_stat_volume; #endif void (*handler_wave) (struct snd_gus_card * gus, struct snd_gus_voice * voice); void (*handler_volume) (struct snd_gus_card * gus, struct snd_gus_voice * voice); void (*handler_effect) (struct snd_gus_card * gus, struct snd_gus_voice * voice); void (*volume_change) (struct snd_gus_card * gus); struct snd_gus_sample_ops *sample_ops; /* running status / registers */ unsigned short fc_register; unsigned short fc_lfo; unsigned short gf1_volume; unsigned char control; unsigned char mode; unsigned char gf1_pan; unsigned char effect_accumulator; unsigned char volume_control; unsigned char venv_value_next; enum snd_gus_volume_state venv_state; enum snd_gus_volume_state venv_state_prev; unsigned short vlo; unsigned short vro; unsigned short gf1_effect_volume; /* --- */ void *private_data; void (*private_free)(struct snd_gus_voice *voice); }; struct snd_gf1 { unsigned int enh_mode:1, /* enhanced mode (GFA1) */ hw_lfo:1, /* use hardware LFO */ sw_lfo:1, /* use software LFO */ effect:1; /* use effect voices */ unsigned long port; /* port of GF1 chip */ struct resource *res_port1; struct resource *res_port2; int irq; /* IRQ number */ int dma1; /* DMA1 number */ int dma2; /* DMA2 number */ unsigned int memory; /* GUS's DRAM size in bytes */ unsigned int rom_memory; /* GUS's ROM size in bytes */ unsigned int rom_present; /* bitmask */ unsigned int rom_banks; /* GUS's ROM banks */ struct snd_gf1_mem mem_alloc; /* registers */ unsigned short reg_page; unsigned short reg_regsel; unsigned short reg_data8; unsigned short reg_data16; unsigned short reg_irqstat; unsigned short reg_dram; unsigned short reg_timerctrl; unsigned short reg_timerdata; unsigned char ics_regs[6][2]; /* --------- */ unsigned char active_voices; /* active voices */ unsigned char active_voice; /* selected voice (GF1PAGE register) */ struct snd_gus_voice voices[32]; /* GF1 voices */ unsigned int default_voice_address; unsigned short playback_freq; /* GF1 playback (mixing) frequency */ unsigned short mode; /* see to SNDRV_GF1_MODE_XXXX */ unsigned char volume_ramp; unsigned char smooth_pan; unsigned char full_range_pan; unsigned char pad0; unsigned char *lfos; /* interrupt handlers */ void (*interrupt_handler_midi_out) (struct snd_gus_card * gus); void (*interrupt_handler_midi_in) (struct snd_gus_card * gus); void (*interrupt_handler_timer1) (struct snd_gus_card * gus); void (*interrupt_handler_timer2) (struct snd_gus_card * gus); void (*interrupt_handler_dma_write) (struct snd_gus_card * gus); void (*interrupt_handler_dma_read) (struct snd_gus_card * gus); #ifdef CONFIG_SND_DEBUG unsigned int interrupt_stat_midi_out; unsigned int interrupt_stat_midi_in; unsigned int interrupt_stat_timer1; unsigned int interrupt_stat_timer2; unsigned int interrupt_stat_dma_write; unsigned int interrupt_stat_dma_read; unsigned int interrupt_stat_voice_lost; #endif /* synthesizer */ int seq_client; struct snd_gus_port seq_ports[4]; /* timer */ unsigned short timer_enabled; struct snd_timer *timer1; struct snd_timer *timer2; /* midi */ unsigned short uart_cmd; unsigned int uart_framing; unsigned int uart_overrun; /* dma operations */ unsigned int dma_flags; unsigned int dma_shared; struct snd_gf1_dma_block *dma_data_pcm; struct snd_gf1_dma_block *dma_data_pcm_last; struct snd_gf1_dma_block *dma_data_synth; struct snd_gf1_dma_block *dma_data_synth_last; void (*dma_ack)(struct snd_gus_card * gus, void *private_data); void *dma_private_data; /* pcm */ int pcm_channels; int pcm_alloc_voices; unsigned short pcm_volume_level_left; unsigned short pcm_volume_level_right; unsigned short pcm_volume_level_left1; unsigned short pcm_volume_level_right1; unsigned char pcm_rcntrl_reg; unsigned char pad_end; }; /* main structure for GUS card */ struct snd_gus_card { struct snd_card *card; unsigned int initialized: 1, /* resources were initialized */ equal_irq:1, /* GF1 and CODEC shares IRQ (GUS MAX only) */ equal_dma:1, /* if dma channels are equal (not valid for daughter board) */ ics_flag:1, /* have we ICS mixer chip */ ics_flipped:1, /* ICS mixer have flipped some channels? */ codec_flag:1, /* have we CODEC chip? */ max_flag:1, /* have we GUS MAX card? */ max_ctrl_flag:1, /* have we original GUS MAX card? */ daughter_flag:1, /* have we daughter board? */ interwave:1, /* hey - we have InterWave card */ ess_flag:1, /* ESS chip found... GUS Extreme */ ace_flag:1, /* GUS ACE detected */ uart_enable:1; /* enable MIDI UART */ unsigned short revision; /* revision of chip */ unsigned short max_cntrl_val; /* GUS MAX control value */ unsigned short mix_cntrl_reg; /* mixer control register */ unsigned short joystick_dac; /* joystick DAC level */ int timer_dev; /* timer device */ struct snd_gf1 gf1; /* gf1 specific variables */ struct snd_pcm *pcm; struct snd_pcm_substream *pcm_cap_substream; unsigned int c_dma_size; unsigned int c_period_size; unsigned int c_pos; struct snd_rawmidi *midi_uart; struct snd_rawmidi_substream *midi_substream_output; struct snd_rawmidi_substream *midi_substream_input; spinlock_t reg_lock; spinlock_t voice_alloc; spinlock_t active_voice_lock; spinlock_t event_lock; spinlock_t dma_lock; spinlock_t pcm_volume_level_lock; spinlock_t uart_cmd_lock; struct mutex dma_mutex; struct mutex register_mutex; }; /* I/O functions for GF1/InterWave chip - gus_io.c */ static inline void snd_gf1_select_voice(struct snd_gus_card * gus, int voice) { unsigned long flags; spin_lock_irqsave(&gus->active_voice_lock, flags); if (voice != gus->gf1.active_voice) { gus->gf1.active_voice = voice; outb(voice, GUSP(gus, GF1PAGE)); } spin_unlock_irqrestore(&gus->active_voice_lock, flags); } static inline void snd_gf1_uart_cmd(struct snd_gus_card * gus, unsigned char b) { outb(gus->gf1.uart_cmd = b, GUSP(gus, MIDICTRL)); } static inline unsigned char snd_gf1_uart_stat(struct snd_gus_card * gus) { return inb(GUSP(gus, MIDISTAT)); } static inline void snd_gf1_uart_put(struct snd_gus_card * gus, unsigned char b) { outb(b, GUSP(gus, MIDIDATA)); } static inline unsigned char snd_gf1_uart_get(struct snd_gus_card * gus) { return inb(GUSP(gus, MIDIDATA)); } extern void snd_gf1_delay(struct snd_gus_card * gus); extern void snd_gf1_ctrl_stop(struct snd_gus_card * gus, unsigned char reg); extern void snd_gf1_write8(struct snd_gus_card * gus, unsigned char reg, unsigned char data); extern unsigned char snd_gf1_look8(struct snd_gus_card * gus, unsigned char reg); static inline unsigned char snd_gf1_read8(struct snd_gus_card * gus, unsigned char reg) { return snd_gf1_look8(gus, reg | 0x80); } extern void snd_gf1_write16(struct snd_gus_card * gus, unsigned char reg, unsigned int data); extern unsigned short snd_gf1_look16(struct snd_gus_card * gus, unsigned char reg); static inline unsigned short snd_gf1_read16(struct snd_gus_card * gus, unsigned char reg) { return snd_gf1_look16(gus, reg | 0x80); } extern void snd_gf1_adlib_write(struct snd_gus_card * gus, unsigned char reg, unsigned char data); extern void snd_gf1_dram_addr(struct snd_gus_card * gus, unsigned int addr); extern void snd_gf1_poke(struct snd_gus_card * gus, unsigned int addr, unsigned char data); extern unsigned char snd_gf1_peek(struct snd_gus_card * gus, unsigned int addr); extern void snd_gf1_write_addr(struct snd_gus_card * gus, unsigned char reg, unsigned int addr, short w_16bit); extern unsigned int snd_gf1_read_addr(struct snd_gus_card * gus, unsigned char reg, short w_16bit); extern void snd_gf1_i_ctrl_stop(struct snd_gus_card * gus, unsigned char reg); extern void snd_gf1_i_write8(struct snd_gus_card * gus, unsigned char reg, unsigned char data); extern unsigned char snd_gf1_i_look8(struct snd_gus_card * gus, unsigned char reg); extern void snd_gf1_i_write16(struct snd_gus_card * gus, unsigned char reg, unsigned int data); static inline unsigned char snd_gf1_i_read8(struct snd_gus_card * gus, unsigned char reg) { return snd_gf1_i_look8(gus, reg | 0x80); } extern unsigned short snd_gf1_i_look16(struct snd_gus_card * gus, unsigned char reg); static inline unsigned short snd_gf1_i_read16(struct snd_gus_card * gus, unsigned char reg) { return snd_gf1_i_look16(gus, reg | 0x80); } extern void snd_gf1_select_active_voices(struct snd_gus_card * gus); /* gus_lfo.c */ struct _SND_IW_LFO_PROGRAM { unsigned short freq_and_control; unsigned char depth_final; unsigned char depth_inc; unsigned short twave; unsigned short depth; }; #if 0 extern irqreturn_t snd_gf1_lfo_effect_interrupt(struct snd_gus_card * gus, snd_gf1_voice_t * voice); #endif extern void snd_gf1_lfo_init(struct snd_gus_card * gus); extern void snd_gf1_lfo_done(struct snd_gus_card * gus); extern void snd_gf1_lfo_program(struct snd_gus_card * gus, int voice, int lfo_type, struct _SND_IW_LFO_PROGRAM *program); extern void snd_gf1_lfo_enable(struct snd_gus_card * gus, int voice, int lfo_type); extern void snd_gf1_lfo_disable(struct snd_gus_card * gus, int voice, int lfo_type); extern void snd_gf1_lfo_change_freq(struct snd_gus_card * gus, int voice, int lfo_type, int freq); extern void snd_gf1_lfo_change_depth(struct snd_gus_card * gus, int voice, int lfo_type, int depth); extern void snd_gf1_lfo_setup(struct snd_gus_card * gus, int voice, int lfo_type, int freq, int current_depth, int depth, int sweep, int shape); extern void snd_gf1_lfo_shutdown(struct snd_gus_card * gus, int voice, int lfo_type); #if 0 extern void snd_gf1_lfo_command(struct snd_gus_card * gus, int voice, unsigned char *command); #endif /* gus_mem.c */ void snd_gf1_mem_lock(struct snd_gf1_mem * alloc, int xup); int snd_gf1_mem_xfree(struct snd_gf1_mem * alloc, struct snd_gf1_mem_block * block); struct snd_gf1_mem_block *snd_gf1_mem_alloc(struct snd_gf1_mem * alloc, int owner, char *name, int size, int w_16, int align, unsigned int *share_id); int snd_gf1_mem_free(struct snd_gf1_mem * alloc, unsigned int address); int snd_gf1_mem_free_owner(struct snd_gf1_mem * alloc, int owner); int snd_gf1_mem_init(struct snd_gus_card * gus); int snd_gf1_mem_done(struct snd_gus_card * gus); /* gus_mem_proc.c */ int snd_gf1_mem_proc_init(struct snd_gus_card * gus); /* gus_dma.c */ int snd_gf1_dma_init(struct snd_gus_card * gus); int snd_gf1_dma_done(struct snd_gus_card * gus); int snd_gf1_dma_transfer_block(struct snd_gus_card * gus, struct snd_gf1_dma_block * block, int atomic, int synth); /* gus_volume.c */ unsigned short snd_gf1_lvol_to_gvol_raw(unsigned int vol); unsigned short snd_gf1_translate_freq(struct snd_gus_card * gus, unsigned int freq2); /* gus_reset.c */ void snd_gf1_set_default_handlers(struct snd_gus_card * gus, unsigned int what); void snd_gf1_smart_stop_voice(struct snd_gus_card * gus, unsigned short voice); void snd_gf1_stop_voice(struct snd_gus_card * gus, unsigned short voice); void snd_gf1_stop_voices(struct snd_gus_card * gus, unsigned short v_min, unsigned short v_max); struct snd_gus_voice *snd_gf1_alloc_voice(struct snd_gus_card * gus, int type, int client, int port); void snd_gf1_free_voice(struct snd_gus_card * gus, struct snd_gus_voice *voice); int snd_gf1_start(struct snd_gus_card * gus); int snd_gf1_stop(struct snd_gus_card * gus); /* gus_mixer.c */ int snd_gf1_new_mixer(struct snd_gus_card * gus); /* gus_pcm.c */ int snd_gf1_pcm_new(struct snd_gus_card *gus, int pcm_dev, int control_index); #ifdef CONFIG_SND_DEBUG extern void snd_gf1_print_voice_registers(struct snd_gus_card * gus); #endif /* gus.c */ int snd_gus_use_inc(struct snd_gus_card * gus); void snd_gus_use_dec(struct snd_gus_card * gus); int snd_gus_create(struct snd_card *card, unsigned long port, int irq, int dma1, int dma2, int timer_dev, int voices, int pcm_channels, int effect, struct snd_gus_card ** rgus); int snd_gus_initialize(struct snd_gus_card * gus); /* gus_irq.c */ irqreturn_t snd_gus_interrupt(int irq, void *dev_id); #ifdef CONFIG_SND_DEBUG void snd_gus_irq_profile_init(struct snd_gus_card *gus); #endif /* gus_uart.c */ int snd_gf1_rawmidi_new(struct snd_gus_card *gus, int device); /* gus_dram.c */ int snd_gus_dram_write(struct snd_gus_card *gus, char __user *ptr, unsigned int addr, unsigned int size); int snd_gus_dram_read(struct snd_gus_card *gus, char __user *ptr, unsigned int addr, unsigned int size, int rom); /* gus_timer.c */ void snd_gf1_timers_init(struct snd_gus_card *gus); void snd_gf1_timers_done(struct snd_gus_card *gus); #endif /* __SOUND_GUS_H */
Save
cmd:
run