Lines Matching refs:ac

38 		struct tw686x_audio_channel *ac = &dev->audio_channels[ch];
45 spin_lock_irqsave(&ac->lock, flags);
48 if (!ac->ss || !ac->curr_bufs[0] || !ac->curr_bufs[1]) {
49 spin_unlock_irqrestore(&ac->lock, flags);
53 if (!list_empty(&ac->buf_list)) {
54 next = list_first_entry(&ac->buf_list,
56 list_move_tail(&next->list, &ac->buf_list);
57 done = ac->curr_bufs[!pb];
58 ac->curr_bufs[pb] = next;
60 spin_unlock_irqrestore(&ac->lock, flags);
68 desc = &ac->dma_descs[pb];
76 ac->ptr = done->dma - ac->buf[0].dma;
77 snd_pcm_period_elapsed(ac->ss);
107 struct tw686x_audio_channel *ac = &dev->audio_channels[ss->number];
111 ac->ss = ss;
124 struct tw686x_audio_channel *ac = &dev->audio_channels[ss->number];
126 ac->ss = NULL;
133 struct tw686x_audio_channel *ac = &dev->audio_channels[ss->number];
149 tw686x_disable_channel(dev, AUDIO_CHANNEL_OFFSET + ac->ch);
177 spin_lock_irqsave(&ac->lock, flags);
178 INIT_LIST_HEAD(&ac->buf_list);
181 ac->buf[i].dma = rt->dma_addr + period_size * i;
182 ac->buf[i].virt = rt->dma_area + period_size * i;
183 INIT_LIST_HEAD(&ac->buf[i].list);
184 list_add_tail(&ac->buf[i].list, &ac->buf_list);
187 p_buf = list_first_entry(&ac->buf_list, struct tw686x_audio_buf, list);
188 list_move_tail(&p_buf->list, &ac->buf_list);
190 b_buf = list_first_entry(&ac->buf_list, struct tw686x_audio_buf, list);
191 list_move_tail(&b_buf->list, &ac->buf_list);
193 ac->curr_bufs[0] = p_buf;
194 ac->curr_bufs[1] = b_buf;
195 ac->ptr = 0;
198 reg_write(dev, ADMA_P_ADDR[ac->ch], p_buf->dma);
199 reg_write(dev, ADMA_B_ADDR[ac->ch], b_buf->dma);
202 spin_unlock_irqrestore(&ac->lock, flags);
214 struct tw686x_audio_channel *ac = &dev->audio_channels[ss->number];
220 if (ac->curr_bufs[0] && ac->curr_bufs[1]) {
224 AUDIO_CHANNEL_OFFSET + ac->ch);
236 tw686x_disable_channel(dev, AUDIO_CHANNEL_OFFSET + ac->ch);
239 spin_lock_irqsave(&ac->lock, flags);
240 ac->curr_bufs[0] = NULL;
241 ac->curr_bufs[1] = NULL;
242 spin_unlock_irqrestore(&ac->lock, flags);
253 struct tw686x_audio_channel *ac = &dev->audio_channels[ss->number];
255 return bytes_to_frames(ss->runtime, ac->ptr);
296 struct tw686x_audio_channel *ac)
301 if (!ac->dma_descs[pb].virt)
303 dma_free_coherent(&dev->pci_dev->dev, ac->dma_descs[pb].size,
304 ac->dma_descs[pb].virt,
305 ac->dma_descs[pb].phys);
306 ac->dma_descs[pb].virt = NULL;
311 struct tw686x_audio_channel *ac)
324 u32 reg = pb ? ADMA_B_ADDR[ac->ch] : ADMA_P_ADDR[ac->ch];
329 &ac->dma_descs[pb].phys, GFP_KERNEL);
333 ac->ch, pb ? "B" : "P");
336 ac->dma_descs[pb].virt = virt;
337 ac->dma_descs[pb].size = AUDIO_DMA_SIZE_MAX;
338 reg_write(dev, reg, ac->dma_descs[pb].phys);
384 struct tw686x_audio_channel *ac;
386 ac = &dev->audio_channels[ch];
387 spin_lock_init(&ac->lock);
388 ac->dev = dev;
389 ac->ch = ch;
391 err = tw686x_audio_dma_alloc(dev, ac);