• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/sound/oss/

Lines Matching refs:dmap

139 	struct dma_buffparms *dmap = audio_devs[dev]->dmap_out;
141 if (dmap->fragment_size <= 0)
143 dmap->flags |= DMA_POST;
147 if ((l = dmap->user_counter % dmap->fragment_size) > 0)
150 unsigned long offs = dmap->user_counter % dmap->bytes_in_use;
152 len = dmap->fragment_size - l;
153 memset(dmap->raw_buf + offs, dmap->neutral_byte, len);
161 p = dmap->qtail;
162 dmap->flags |= DMA_POST;
164 for (i = dmap->qlen + 1; i < dmap->nbufs; i++)
166 p = (p + 1) % dmap->nbufs;
167 if (((dmap->raw_buf + p * dmap->fragment_size) + dmap->fragment_size) >
168 (dmap->raw_buf + dmap->buffsize))
171 memset(dmap->raw_buf + p * dmap->fragment_size,
172 dmap->neutral_byte,
173 dmap->fragment_size);
176 dmap->flags |= DMA_DIRTY;
372 struct dma_buffparms *dmap;
499 dmap = audio_devs[dev]->dmap_out;
502 if (!(dmap->flags & DMA_ALLOC_DONE))
508 spin_lock_irqsave(&dmap->lock,flags);
510 count = DMAbuf_get_buffer_pointer (dev, dmap, DMODE_OUTPUT);
511 if (count < dmap->fragment_size && dmap->qhead != 0)
512 count += dmap->bytes_in_use; /* Pointer wrap not handled yet */
513 count += dmap->byte_counter;
516 count = dmap->user_counter - count;
519 spin_unlock_irqrestore(&dmap->lock,flags);
536 void reorganize_buffers(int dev, struct dma_buffparms *dmap, int recording)
552 dmap->neutral_byte = NEUTRAL8;
554 dmap->neutral_byte = NEUTRAL16;
567 dmap->data_rate = sz;
569 if (!dmap->needs_reorg)
571 dmap->needs_reorg = 0;
573 if (dmap->fragment_size == 0)
583 bsz = dmap->buffsize;
587 if (bsz == dmap->buffsize)
596 if (dmap->subdivision == 0) /* Not already set */
598 dmap->subdivision = 4; /* Init to the default value */
600 if ((bsz / dmap->subdivision) > 4096)
601 dmap->subdivision *= 2;
602 if ((bsz / dmap->subdivision) < 4096)
603 dmap->subdivision = 1;
605 bsz /= dmap->subdivision;
610 dmap->fragment_size = bsz;
618 if (dmap->fragment_size > (dmap->buffsize / 2))
619 dmap->fragment_size = (dmap->buffsize / 2);
620 bsz = dmap->fragment_size;
634 n = dmap->buffsize / bsz;
637 if (n > dmap->max_fragments)
638 n = dmap->max_fragments;
645 dmap->nbufs = n;
646 dmap->bytes_in_use = n * bsz;
647 dmap->fragment_size = bsz;
648 dmap->max_byte_counter = (dmap->data_rate * 60 * 60) +
649 dmap->bytes_in_use; /* Approximately one hour */
651 if (dmap->raw_buf)
653 memset(dmap->raw_buf, dmap->neutral_byte, dmap->bytes_in_use);
656 for (i = 0; i < dmap->nbufs; i++)
658 dmap->counts[i] = 0;
661 dmap->flags |= DMA_ALLOC_DONE | DMA_EMPTY;
664 static int dma_subdivide(int dev, struct dma_buffparms *dmap, int fact)
668 fact = dmap->subdivision;
673 if (dmap->subdivision != 0 || dmap->fragment_size) /* Too late to change */
682 dmap->subdivision = fact;
686 static int dma_set_fragment(int dev, struct dma_buffparms *dmap, int fact)
693 if (dmap->subdivision != 0 ||
694 dmap->fragment_size) /* Too late to change */
724 dmap->fragment_size = (1 << bytes);
725 dmap->max_fragments = count;
727 if (dmap->fragment_size > dmap->buffsize)
728 dmap->fragment_size = dmap->buffsize;
730 if (dmap->fragment_size == dmap->buffsize &&
732 dmap->fragment_size /= 2; /* Needs at least 2 buffers */
734 dmap->subdivision = 1; /* Disable SNDCTL_DSP_SUBDIVIDE */
742 struct dma_buffparms *dmap;
768 dmap = dmap_out;
774 dmap = dmap_in;
775 if (dmap->mapping_flags & DMA_MAP_MAPPED)
777 if (!(dmap->flags & DMA_ALLOC_DONE))
778 reorganize_buffers(dev, dmap, (cmd == SNDCTL_DSP_GETISPACE));
779 info.fragstotal = dmap->nbufs;
781 info.fragments = dmap->qlen;
802 else if (info.fragments > dmap->nbufs)
803 info.fragments = dmap->nbufs;
805 info.fragsize = dmap->fragment_size;
806 info.bytes = info.fragments * dmap->fragment_size;
808 if (cmd == SNDCTL_DSP_GETISPACE && dmap->qlen)
809 info.bytes -= dmap->counts[dmap->qhead];
812 info.fragments = info.bytes / dmap->fragment_size;
813 info.bytes -= dmap->user_counter % dmap->fragment_size;
943 dmap = dmap_out;
951 dmap = dmap_in;
952 ret = dmap->fragment_size;