taglinefilesource code
dmap500drivers/sound/dev_table.hint sound_alloc_dmap (int dev, struct dma_buffparms *dmap, int chan);
dmap501drivers/sound/dev_table.hvoid sound_free_dmap (int dev, struct dma_buffparms *dmap);
dmap502drivers/sound/dev_table.hextern int soud_map_buffer (int dev, struct dma_buffparms *dmap, buffmem_desc *info);
dmap507drivers/sound/dev_table.hint sound_start_dma (  int dev, struct dma_buffparms *dmap, int chan,
dmap510drivers/sound/dev_table.hvoid sound_dma_intr (int dev, struct dma_buffparms *dmap, int chan);
dmap65drivers/sound/dmabuf.creorganize_buffers (int dev, struct dma_buffparms *dmap)
dmap76drivers/sound/dmabuf.cif (dmap->fragment_size == 0)
dmap84drivers/sound/dmabuf.cdmap->neutral_byte = 0x80;
dmap86drivers/sound/dmabuf.cdmap->neutral_byte = 0x00;
dmap114drivers/sound/dmabuf.cif (dmap->subdivision == 0)  /* Not already set */
dmap115drivers/sound/dmabuf.cdmap->subdivision = 1;  /* Init to default value */
dmap117drivers/sound/dmabuf.cbsz /= dmap->subdivision;
dmap122drivers/sound/dmabuf.cdmap->fragment_size = bsz;
dmap130drivers/sound/dmabuf.cif (dmap->fragment_size > (audio_devs[dev]->buffsize / 2))
dmap131drivers/sound/dmabuf.cdmap->fragment_size = (audio_devs[dev]->buffsize / 2);
dmap132drivers/sound/dmabuf.cbsz = dmap->fragment_size;
dmap140drivers/sound/dmabuf.cif (n > dmap->max_fragments)
dmap141drivers/sound/dmabuf.cn = dmap->max_fragments;
dmap142drivers/sound/dmabuf.cdmap->nbufs = n;
dmap143drivers/sound/dmabuf.cdmap->bytes_in_use = n * bsz;
dmap145drivers/sound/dmabuf.cfor (i = 0; i < dmap->nbufs; i++)
dmap147drivers/sound/dmabuf.cdmap->counts[i] = 0;
dmap150drivers/sound/dmabuf.cdmap->flags |= DMA_ALLOC_DONE;
dmap154drivers/sound/dmabuf.cdma_init_buffers (int dev, struct dma_buffparms *dmap)
dmap156drivers/sound/dmabuf.cif (dmap == audio_devs[dev]->dmap_out)
dmap163drivers/sound/dmabuf.cdmap->flags = DMA_BUSY;  /* Other flags off */
dmap164drivers/sound/dmabuf.cdmap->qlen = dmap->qhead = dmap->qtail = 0;
dmap165drivers/sound/dmabuf.cdmap->nbufs = 1;
dmap166drivers/sound/dmabuf.cdmap->bytes_in_use = audio_devs[dev]->buffsize;
dmap168drivers/sound/dmabuf.cdmap->dma_mode = DMODE_NONE;
dmap169drivers/sound/dmabuf.cdmap->mapping_flags = 0;
dmap170drivers/sound/dmabuf.cdmap->neutral_byte = 0x00;
dmap174drivers/sound/dmabuf.copen_dmap (int dev, int mode, struct dma_buffparms *dmap, int chan)
dmap176drivers/sound/dmabuf.cif (dmap->flags & DMA_BUSY)
dmap182drivers/sound/dmabuf.cif ((err = sound_alloc_dmap (dev, dmap, chan)) < 0)
dmap186drivers/sound/dmabuf.cif (dmap->raw_buf == NULL)
dmap195drivers/sound/dmabuf.cdmap->open_mode = mode;
dmap196drivers/sound/dmabuf.cdmap->subdivision = dmap->underrun_count = 0;
dmap197drivers/sound/dmabuf.cdmap->fragment_size = 0;
dmap198drivers/sound/dmabuf.cdmap->max_fragments = 65536;  /* Just a large value */
dmap199drivers/sound/dmabuf.cdmap->byte_counter = 0;
dmap201drivers/sound/dmabuf.cdma_init_buffers (dev, dmap);
dmap207drivers/sound/dmabuf.cclose_dmap (int dev, struct dma_buffparms *dmap, int chan)
dmap211drivers/sound/dmabuf.cif (dmap->flags & DMA_BUSY)
dmap212drivers/sound/dmabuf.cdmap->dma_mode = DMODE_NONE;
dmap213drivers/sound/dmabuf.cdmap->flags &= ~DMA_BUSY;
dmap215drivers/sound/dmabuf.csound_free_dmap (dev, dmap);
dmap431drivers/sound/dmabuf.cactivate_recording (int dev, struct dma_buffparms *dmap)
dmap436drivers/sound/dmabuf.cif (dmap->flags & DMA_RESTART)
dmap439drivers/sound/dmabuf.cdmap->flags &= ~DMA_RESTART;
dmap442drivers/sound/dmabuf.cif (dmap->dma_mode == DMODE_OUTPUT)  /* Direction change */
dmap446drivers/sound/dmabuf.cdmap->dma_mode = DMODE_NONE;
dmap449drivers/sound/dmabuf.cif (!(dmap->flags & DMA_ALLOC_DONE))
dmap450drivers/sound/dmabuf.creorganize_buffers (dev, dmap);
dmap452drivers/sound/dmabuf.cif (!dmap->dma_mode)
dmap457drivers/sound/dmabuf.cdmap->fragment_size, dmap->nbufs)) < 0)
dmap461drivers/sound/dmabuf.cdmap->dma_mode = DMODE_INPUT;
dmap464drivers/sound/dmabuf.cif (!(dmap->flags & DMA_ACTIVE))
dmap466drivers/sound/dmabuf.caudio_devs[dev]->start_input (dev, dmap->raw_buf_phys +
dmap467drivers/sound/dmabuf.cdmap->qtail * dmap->fragment_size,
dmap468drivers/sound/dmabuf.cdmap->fragment_size, 0,
dmap470drivers/sound/dmabuf.c!(dmap->flags & DMA_STARTED));
dmap471drivers/sound/dmabuf.cdmap->flags |= DMA_ACTIVE | DMA_STARTED;
dmap484drivers/sound/dmabuf.cstruct dma_buffparms *dmap = audio_devs[dev]->dmap_in;
dmap488drivers/sound/dmabuf.cif (!dmap->qlen)
dmap492drivers/sound/dmabuf.cif ((err = activate_recording (dev, dmap)) < 0)
dmap546drivers/sound/dmabuf.cif (!dmap->qlen)
dmap549drivers/sound/dmabuf.c*buf = &dmap->raw_buf[dmap->qhead * dmap->fragment_size + dmap->counts[dmap->qhead]];
dmap550drivers/sound/dmabuf.c*len = dmap->fragment_size - dmap->counts[dmap->qhead];
dmap552drivers/sound/dmabuf.creturn dmap->qhead;
dmap558drivers/sound/dmabuf.cstruct dma_buffparms *dmap = audio_devs[dev]->dmap_in;
dmap560drivers/sound/dmabuf.cint             p = dmap->counts[dmap->qhead] + c;
dmap562drivers/sound/dmabuf.cif (p >= dmap->fragment_size)
dmap564drivers/sound/dmabuf.cdmap->counts[dmap->qhead] = 0;
dmap565drivers/sound/dmabuf.cif (dmap->qlen <= 0 || dmap->qlen > dmap->nbufs)
dmap567drivers/sound/dmabuf.cdev, dmap->qlen, dmap->nbufs);
dmap568drivers/sound/dmabuf.cdmap->qlen--;
dmap569drivers/sound/dmabuf.cdmap->qhead = (dmap->qhead + 1) % dmap->nbufs;
dmap572drivers/sound/dmabuf.cdmap->counts[dmap->qhead] = p;
dmap578drivers/sound/dmabuf.cdma_subdivide (int dev, struct dma_buffparms *dmap, ioctl_arg arg, int fact)
dmap582drivers/sound/dmabuf.cfact = dmap->subdivision;
dmap588drivers/sound/dmabuf.cif (dmap->subdivision != 0 ||
dmap589drivers/sound/dmabuf.cdmap->fragment_size)  /* Loo late to change */
dmap598drivers/sound/dmabuf.cdmap->subdivision = fact;
dmap603drivers/sound/dmabuf.cdma_set_fragment (int dev, struct dma_buffparms *dmap, ioctl_arg arg, int fact)
dmap610drivers/sound/dmabuf.cif (dmap->subdivision != 0 ||
dmap611drivers/sound/dmabuf.cdmap->fragment_size)  /* Loo late to change */
dmap626drivers/sound/dmabuf.cdmap->fragment_size = (1 << bytes);
dmap627drivers/sound/dmabuf.cdmap->max_fragments = count;
dmap629drivers/sound/dmabuf.cif (dmap->fragment_size > audio_devs[dev]->buffsize)
dmap630drivers/sound/dmabuf.cdmap->fragment_size = audio_devs[dev]->buffsize;
dmap632drivers/sound/dmabuf.cif (dmap->fragment_size == audio_devs[dev]->buffsize &&
dmap634drivers/sound/dmabuf.cdmap->fragment_size /= 2;  /* Needs at least 2 buffers */
dmap636drivers/sound/dmabuf.cdmap->subdivision = 1;  /* Disable SNDCTL_DSP_SUBDIVIDE */
dmap641drivers/sound/dmabuf.cget_buffer_pointer (int dev, int chan, struct dma_buffparms *dmap)
dmap648drivers/sound/dmabuf.cif (!(dmap->flags & DMA_ACTIVE))
dmap661drivers/sound/dmabuf.creturn dmap->bytes_in_use - pos;
dmap664drivers/sound/dmabuf.cpos = dmap->fragment_size - pos;
dmap735drivers/sound/dmabuf.cstruct dma_buffparms *dmap = dmap_out;
dmap740drivers/sound/dmabuf.cdmap = dmap_in;
dmap743drivers/sound/dmabuf.cif (!(dmap->flags & DMA_ALLOC_DONE))
dmap744drivers/sound/dmabuf.creorganize_buffers (dev, dmap);
dmap746drivers/sound/dmabuf.cinfo->fragstotal = dmap->nbufs;
dmap749drivers/sound/dmabuf.cinfo->fragments = dmap->qlen;
dmap756drivers/sound/dmabuf.cinfo->fragments = dmap->nbufs - dmap->qlen;
dmap772drivers/sound/dmabuf.celse if (info->fragments > dmap->nbufs)
dmap773drivers/sound/dmabuf.cinfo->fragments = dmap->nbufs;
dmap775drivers/sound/dmabuf.cinfo->fragsize = dmap->fragment_size;
dmap776drivers/sound/dmabuf.cinfo->bytes = info->fragments * dmap->fragment_size;
dmap778drivers/sound/dmabuf.cif (cmd == SNDCTL_DSP_GETISPACE && dmap->qlen)
dmap779drivers/sound/dmabuf.cinfo->bytes -= dmap->counts[dmap->qhead];
dmap889drivers/sound/dmabuf.cstruct dma_buffparms *dmap = audio_devs[dev]->dmap_out;
dmap891drivers/sound/dmabuf.cif (dmap->qlen >= dmap->nbufs)  /* No space at all */
dmap899drivers/sound/dmabuf.cmax = dmap->max_fragments;
dmap900drivers/sound/dmabuf.clen = dmap->qlen;
dmap922drivers/sound/dmabuf.cstruct dma_buffparms *dmap = audio_devs[dev]->dmap_out;
dmap925drivers/sound/dmabuf.cif (dmap->dma_mode == DMODE_INPUT)  /* Direction change */
dmap928drivers/sound/dmabuf.cdmap->dma_mode = DMODE_NONE;
dmap930drivers/sound/dmabuf.celse if (dmap->flags & DMA_RESTART)  /* Restart buffering */
dmap936drivers/sound/dmabuf.cdmap->flags &= ~DMA_RESTART;
dmap938drivers/sound/dmabuf.cif (!(dmap->flags & DMA_ALLOC_DONE))
dmap939drivers/sound/dmabuf.creorganize_buffers (dev, dmap);
dmap941drivers/sound/dmabuf.cif (!dmap->dma_mode)
dmap945drivers/sound/dmabuf.cdmap->dma_mode = DMODE_OUTPUT;
dmap947drivers/sound/dmabuf.cdmap->fragment_size, dmap->nbufs)) < 0)
dmap1018drivers/sound/dmabuf.c*buf = dmap->raw_buf + dmap->qtail * dmap->fragment_size;
dmap1019drivers/sound/dmabuf.c*size = dmap->fragment_size;
dmap1020drivers/sound/dmabuf.cdmap->counts[dmap->qtail] = 0;
dmap1022drivers/sound/dmabuf.creturn dmap->qtail;
dmap1028drivers/sound/dmabuf.cstruct dma_buffparms *dmap = audio_devs[dev]->dmap_out;
dmap1034drivers/sound/dmabuf.cif (dmap != NULL)
dmap1037drivers/sound/dmabuf.cif (buff_no != dmap->qtail)
dmap1038drivers/sound/dmabuf.cprintk ("Sound warning: DMA buffers out of sync %d != %d\n", buff_no, dmap->qtail);
dmap1040drivers/sound/dmabuf.cdmap->qlen++;
dmap1041drivers/sound/dmabuf.cif (dmap->qlen <= 0 || dmap->qlen > dmap->nbufs)
dmap1043drivers/sound/dmabuf.cdev, dmap->qlen, dmap->nbufs);
dmap1045drivers/sound/dmabuf.cdmap->counts[dmap->qtail] = l;
dmap1047drivers/sound/dmabuf.cif ((l != dmap->fragment_size) &&
dmap1050drivers/sound/dmabuf.cdmap->flags |= DMA_RESTART;
dmap1052drivers/sound/dmabuf.cdmap->flags &= ~DMA_RESTART;
dmap1054drivers/sound/dmabuf.cdmap->qtail = (dmap->qtail + 1) % dmap->nbufs;
dmap1057drivers/sound/dmabuf.cif (!(dmap->flags & DMA_ACTIVE))
dmap1059drivers/sound/dmabuf.cdmap->flags |= DMA_ACTIVE;
dmap1060drivers/sound/dmabuf.caudio_devs[dev]->output_block (dev, dmap->raw_buf_phys +
dmap1061drivers/sound/dmabuf.cdmap->qhead * dmap->fragment_size,
dmap1062drivers/sound/dmabuf.cdmap->counts[dmap->qhead], 0,
dmap1064drivers/sound/dmabuf.c!(dmap->flags & DMA_STARTED));
dmap1065drivers/sound/dmabuf.cdmap->flags |= DMA_STARTED;
dmap1078drivers/sound/dmabuf.cstruct dma_buffparms *dmap;
dmap1084drivers/sound/dmabuf.cdmap = audio_devs[dev]->dmap_out;
dmap1089drivers/sound/dmabuf.cdmap = audio_devs[dev]->dmap_in;
dmap1107drivers/sound/dmabuf.cset_dma_addr (chan, dmap->raw_buf_phys);
dmap1108drivers/sound/dmabuf.cset_dma_count (chan, dmap->bytes_in_use);
dmap1166drivers/sound/dmabuf.cstruct dma_buffparms *dmap = audio_devs[dev]->dmap_out;
dmap1168drivers/sound/dmabuf.cdmap->byte_counter += dmap->counts[dmap->qhead];
dmap1176drivers/sound/dmabuf.cif (dmap->qlen <= 0 || dmap->qlen > dmap->nbufs)
dmap1179drivers/sound/dmabuf.cdev, dmap->qlen, dmap->nbufs);
dmap1183drivers/sound/dmabuf.cdmap->qlen--;
dmap1184drivers/sound/dmabuf.cdmap->qhead = (dmap->qhead + 1) % dmap->nbufs;
dmap1185drivers/sound/dmabuf.cdmap->flags &= ~DMA_ACTIVE;
dmap1187drivers/sound/dmabuf.cif (dmap->qlen)
dmap1191drivers/sound/dmabuf.caudio_devs[dev]->output_block (dev, dmap->raw_buf_phys +
dmap1192drivers/sound/dmabuf.cdmap->qhead * dmap->fragment_size,
dmap1193drivers/sound/dmabuf.cdmap->counts[dmap->qhead], 1,
dmap1199drivers/sound/dmabuf.cdmap->flags |= DMA_ACTIVE;
dmap1203drivers/sound/dmabuf.cdmap->underrun_count++;
dmap1212drivers/sound/dmabuf.cdmap->flags |= DMA_RESTART;
dmap1214drivers/sound/dmabuf.cdmap->flags &= ~DMA_RESTART;
dmap1234drivers/sound/dmabuf.cstruct dma_buffparms *dmap = audio_devs[dev]->dmap_in;
dmap1236drivers/sound/dmabuf.cdmap->byte_counter += dmap->fragment_size;
dmap1242drivers/sound/dmabuf.cif (dmap->qlen == (dmap->nbufs - 1))
dmap1245drivers/sound/dmabuf.cdmap->underrun_count++;
dmap1252drivers/sound/dmabuf.cdmap->flags &= ~DMA_ACTIVE;
dmap1254drivers/sound/dmabuf.cdmap->flags |= DMA_RESTART;
dmap1256drivers/sound/dmabuf.cdmap->flags &= ~DMA_RESTART;
dmap1260drivers/sound/dmabuf.cdmap->qlen++;
dmap1261drivers/sound/dmabuf.cif (dmap->qlen <= 0 || dmap->qlen > dmap->nbufs)
dmap1263drivers/sound/dmabuf.cdev, dmap->qlen, dmap->nbufs);
dmap1264drivers/sound/dmabuf.cdmap->qtail = (dmap->qtail + 1) % dmap->nbufs;
dmap1268drivers/sound/dmabuf.caudio_devs[dev]->start_input (dev, dmap->raw_buf_phys +
dmap1269drivers/sound/dmabuf.cdmap->qtail * dmap->fragment_size,
dmap1270drivers/sound/dmabuf.cdmap->fragment_size, 1,
dmap1277drivers/sound/dmabuf.cdmap->flags |= DMA_ACTIVE;
dmap1357drivers/sound/dmabuf.cstruct dma_buffparms *dmap;
dmap1363drivers/sound/dmabuf.cdmap = audio_devs[dev]->dmap_in;
dmap1366drivers/sound/dmabuf.cif (dmap->dma_mode != DMODE_INPUT)
dmap1368drivers/sound/dmabuf.cif ((audio_devs[dev]->flags & DMA_DUPLEX) && !dmap->qlen &&
dmap1376drivers/sound/dmabuf.cactivate_recording (dev, dmap);
dmap1382drivers/sound/dmabuf.cif (!dmap->qlen)
dmap1395drivers/sound/dmabuf.cdmap = audio_devs[dev]->dmap_out;
dmap1398drivers/sound/dmabuf.cif (dmap->dma_mode == DMODE_INPUT)
dmap1403drivers/sound/dmabuf.cif (dmap->dma_mode == DMODE_NONE)
dmap534drivers/sound/soundcard.csound_alloc_dmap (int dev, struct dma_buffparms *dmap, int chan)
dmap539drivers/sound/soundcard.cif (dmap->raw_buf != NULL)
dmap550drivers/sound/soundcard.cdmap->raw_buf = NULL;
dmap608drivers/sound/soundcard.cdmap->raw_buf = start_addr;
dmap609drivers/sound/soundcard.cdmap->raw_buf_phys = virt_to_bus (start_addr);
dmap611drivers/sound/soundcard.cmemset (dmap->raw_buf, 0x00, audio_devs[dev]->buffsize);
dmap622drivers/sound/soundcard.csound_free_dmap (int dev, struct dma_buffparms *dmap)
dmap624drivers/sound/soundcard.cif (dmap->raw_buf == NULL)
dmap634drivers/sound/soundcard.cstart_addr = (unsigned long) dmap->raw_buf;
dmap642drivers/sound/soundcard.cfree_pages ((unsigned long) dmap->raw_buf, sz);
dmap644drivers/sound/soundcard.cdmap->raw_buf = NULL;
dmap648drivers/sound/soundcard.csoud_map_buffer (int dev, struct dma_buffparms *dmap, buffmem_desc * info)