• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/sound/isa/gus/

Lines Matching defs:gus

25 #include <sound/gus.h>
27 static void snd_gf1_dma_ack(struct snd_gus_card * gus)
31 spin_lock_irqsave(&gus->reg_lock, flags);
32 snd_gf1_write8(gus, SNDRV_GF1_GB_DRAM_DMA_CONTROL, 0x00);
33 snd_gf1_look8(gus, SNDRV_GF1_GB_DRAM_DMA_CONTROL);
34 spin_unlock_irqrestore(&gus->reg_lock, flags);
37 static void snd_gf1_dma_program(struct snd_gus_card * gus,
51 if (gus->gf1.dma1 > 3) {
52 if (gus->gf1.enh_mode) {
70 if (gus->gf1.dma1 > 3) {
75 snd_gf1_dma_ack(gus);
76 snd_dma_program(gus->gf1.dma1, buf_addr, count, dma_cmd & SNDRV_GF1_DMA_READ ? DMA_MODE_READ : DMA_MODE_WRITE);
77 spin_lock_irqsave(&gus->reg_lock, flags);
78 if (gus->gf1.enh_mode) {
80 snd_gf1_write16(gus, SNDRV_GF1_GW_DRAM_DMA_LOW, (unsigned short) (address >> 4));
81 snd_gf1_write8(gus, SNDRV_GF1_GB_DRAM_DMA_HIGH, (unsigned char) address_high);
83 snd_gf1_write16(gus, SNDRV_GF1_GW_DRAM_DMA_LOW, (unsigned short) (address >> 4));
84 snd_gf1_write8(gus, SNDRV_GF1_GB_DRAM_DMA_CONTROL, dma_cmd);
85 spin_unlock_irqrestore(&gus->reg_lock, flags);
88 static struct snd_gf1_dma_block *snd_gf1_dma_next_block(struct snd_gus_card * gus)
93 if (gus->gf1.dma_data_pcm) {
94 block = gus->gf1.dma_data_pcm;
95 if (gus->gf1.dma_data_pcm_last == block) {
96 gus->gf1.dma_data_pcm =
97 gus->gf1.dma_data_pcm_last = NULL;
99 gus->gf1.dma_data_pcm = block->next;
101 } else if (gus->gf1.dma_data_synth) {
102 block = gus->gf1.dma_data_synth;
103 if (gus->gf1.dma_data_synth_last == block) {
104 gus->gf1.dma_data_synth =
105 gus->gf1.dma_data_synth_last = NULL;
107 gus->gf1.dma_data_synth = block->next;
113 gus->gf1.dma_ack = block->ack;
114 gus->gf1.dma_private_data = block->private_data;
120 static void snd_gf1_dma_interrupt(struct snd_gus_card * gus)
124 snd_gf1_dma_ack(gus);
125 if (gus->gf1.dma_ack)
126 gus->gf1.dma_ack(gus, gus->gf1.dma_private_data);
127 spin_lock(&gus->dma_lock);
128 if (gus->gf1.dma_data_pcm == NULL &&
129 gus->gf1.dma_data_synth == NULL) {
130 gus->gf1.dma_ack = NULL;
131 gus->gf1.dma_flags &= ~SNDRV_GF1_DMA_TRIGGER;
132 spin_unlock(&gus->dma_lock);
135 block = snd_gf1_dma_next_block(gus);
136 spin_unlock(&gus->dma_lock);
137 snd_gf1_dma_program(gus, block->addr, block->buf_addr, block->count, (unsigned short) block->cmd);
141 int snd_gf1_dma_init(struct snd_gus_card * gus)
143 mutex_lock(&gus->dma_mutex);
144 gus->gf1.dma_shared++;
145 if (gus->gf1.dma_shared > 1) {
146 mutex_unlock(&gus->dma_mutex);
149 gus->gf1.interrupt_handler_dma_write = snd_gf1_dma_interrupt;
150 gus->gf1.dma_data_pcm =
151 gus->gf1.dma_data_pcm_last =
152 gus->gf1.dma_data_synth =
153 gus->gf1.dma_data_synth_last = NULL;
154 mutex_unlock(&gus->dma_mutex);
158 int snd_gf1_dma_done(struct snd_gus_card * gus)
162 mutex_lock(&gus->dma_mutex);
163 gus->gf1.dma_shared--;
164 if (!gus->gf1.dma_shared) {
165 snd_dma_disable(gus->gf1.dma1);
166 snd_gf1_set_default_handlers(gus, SNDRV_GF1_HANDLER_DMA_WRITE);
167 snd_gf1_dma_ack(gus);
168 while ((block = gus->gf1.dma_data_pcm)) {
169 gus->gf1.dma_data_pcm = block->next;
172 while ((block = gus->gf1.dma_data_synth)) {
173 gus->gf1.dma_data_synth = block->next;
176 gus->gf1.dma_data_pcm_last =
177 gus->gf1.dma_data_synth_last = NULL;
179 mutex_unlock(&gus->dma_mutex);
183 int snd_gf1_dma_transfer_block(struct snd_gus_card * gus,
203 snd_printdd("gus->gf1.dma_data_pcm_last = 0x%lx\n",
204 (long)gus->gf1.dma_data_pcm_last);
205 snd_printdd("gus->gf1.dma_data_pcm = 0x%lx\n",
206 (long)gus->gf1.dma_data_pcm);
208 spin_lock_irqsave(&gus->dma_lock, flags);
210 if (gus->gf1.dma_data_synth_last) {
211 gus->gf1.dma_data_synth_last->next = block;
212 gus->gf1.dma_data_synth_last = block;
214 gus->gf1.dma_data_synth =
215 gus->gf1.dma_data_synth_last = block;
218 if (gus->gf1.dma_data_pcm_last) {
219 gus->gf1.dma_data_pcm_last->next = block;
220 gus->gf1.dma_data_pcm_last = block;
222 gus->gf1.dma_data_pcm =
223 gus->gf1.dma_data_pcm_last = block;
226 if (!(gus->gf1.dma_flags & SNDRV_GF1_DMA_TRIGGER)) {
227 gus->gf1.dma_flags |= SNDRV_GF1_DMA_TRIGGER;
228 block = snd_gf1_dma_next_block(gus);
229 spin_unlock_irqrestore(&gus->dma_lock, flags);
232 snd_gf1_dma_program(gus, block->addr, block->buf_addr, block->count, (unsigned short) block->cmd);
236 spin_unlock_irqrestore(&gus->dma_lock, flags);