Lines Matching refs:chan
90 _isa_dmaunmask(struct isa_dma_state *ids, int chan)
92 int ochan = chan & 3;
94 ISA_DMA_MASK_CLR(ids, chan);
104 if ((chan & 4) == 0)
113 _isa_dmamask(struct isa_dma_state *ids, int chan)
115 int ochan = chan & 3;
117 ISA_DMA_MASK_SET(ids, chan);
126 if ((chan & 4) == 0) {
145 int chan;
190 for (chan = 0; chan < 8; chan++) {
191 if (ids->ids_maxsize[chan] == 0)
192 ids->ids_maxsize[chan] =
193 ISA_DMA_MAXSIZE_DEFAULT(chan);
230 _isa_dmacascade(struct isa_dma_state *ids, int chan)
232 int ochan = chan & 3;
234 if (chan < 0 || chan > 7) {
235 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan);
239 if (!ISA_DMA_DRQ_ISFREE(ids, chan)) {
241 chan);
245 ISA_DMA_DRQ_ALLOC(ids, chan);
248 if ((chan & 4) == 0)
255 _isa_dmaunmask(ids, chan);
264 _isa_dmacascade_stop(struct isa_dma_state *ids, int chan)
266 if (chan < 0 || chan > 7) {
267 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan);
271 if (ISA_DMA_DRQ_ISFREE(ids, chan))
274 _isa_dmamask(ids, chan);
276 ISA_DMA_DRQ_FREE(ids, chan);
282 _isa_drq_alloc(struct isa_dma_state *ids, int chan)
284 if (!ISA_DMA_DRQ_ISFREE(ids, chan))
286 ISA_DMA_DRQ_ALLOC(ids, chan);
291 _isa_drq_free(struct isa_dma_state *ids, int chan)
293 if (ISA_DMA_DRQ_ISFREE(ids, chan))
295 ISA_DMA_DRQ_FREE(ids, chan);
300 _isa_dmamaxsize(struct isa_dma_state *ids, int chan)
303 if (chan < 0 || chan > 7) {
304 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan);
308 return (ids->ids_maxsize[chan]);
312 _isa_dmamap_create(struct isa_dma_state *ids, int chan, bus_size_t size, int flags)
316 if (chan < 0 || chan > 7) {
317 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan);
321 if (size > ids->ids_maxsize[chan])
325 ids->ids_maxsize[chan], flags, &ids->ids_dmamaps[chan]);
331 _isa_dmamap_destroy(struct isa_dma_state *ids, int chan)
334 if (chan < 0 || chan > 7) {
335 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan);
339 bus_dmamap_destroy(ids->ids_dmat, ids->ids_dmamaps[chan]);
351 _isa_dmastart(struct isa_dma_state *ids, int chan, void *addr, bus_size_t nbytes, struct proc *p, int flags, int busdmaflags)
356 int ochan = chan & 3;
359 if (chan < 0 || chan > 7) {
360 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan);
367 chan, addr, (u_long)nbytes, p, flags, busdmaflags);
370 if (ISA_DMA_DRQ_ISFREE(ids, chan)) {
372 device_xname(ids->ids_dev), chan);
376 if (chan & 4) {
379 device_xname(ids->ids_dev), chan,
386 device_xname(ids->ids_dev), chan,
392 dmam = ids->ids_dmamaps[chan];
394 panic("_isa_dmastart: no DMA map for chan %d", chan);
409 ids->ids_dmareads |= (1 << chan);
413 ids->ids_dmareads &= ~(1 << chan);
424 ids->ids_dmalength[chan] = nbytes;
426 _isa_dmamask(ids, chan);
427 ids->ids_dmafinished &= ~(1 << chan);
429 if ((chan & 4) == 0) {
471 _isa_dmaunmask(ids, chan);
479 _isa_dmaabort(struct isa_dma_state *ids, int chan)
482 if (chan < 0 || chan > 7) {
483 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan);
487 _isa_dmamask(ids, chan);
488 bus_dmamap_unload(ids->ids_dmat, ids->ids_dmamaps[chan]);
489 ids->ids_dmareads &= ~(1 << chan);
493 _isa_dmacount(struct isa_dma_state *ids, int chan)
497 int ochan = chan & 3;
499 if (chan < 0 || chan > 7) {
500 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan);
504 _isa_dmamask(ids, chan);
514 if ((chan & 4) == 0) {
531 if (nbytes == ids->ids_dmalength[chan])
534 _isa_dmaunmask(ids, chan);
539 _isa_dmafinished(struct isa_dma_state *ids, int chan)
542 if (chan < 0 || chan > 7) {
543 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan);
548 if ((chan & 4) == 0)
555 return ((ids->ids_dmafinished & (1 << chan)) != 0);
559 _isa_dmadone(struct isa_dma_state *ids, int chan)
563 if (chan < 0 || chan > 7) {
564 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan);
568 dmam = ids->ids_dmamaps[chan];
570 _isa_dmamask(ids, chan);
572 if (_isa_dmafinished(ids, chan) == 0)
574 device_xname(ids->ids_dev), chan);
577 (ids->ids_dmareads & (1 << chan)) ? BUS_DMASYNC_POSTREAD :
581 ids->ids_dmareads &= ~(1 << chan);
627 _isa_dmamem_alloc(struct isa_dma_state *ids, int chan, bus_size_t size, bus_addr_t *addrp, int flags)
632 if (chan < 0 || chan > 7) {
633 chan);
637 boundary = (chan & 4) ? (1 << 17) : (1 << 16);
651 _isa_dmamem_free(struct isa_dma_state *ids, int chan, bus_addr_t addr, bus_size_t size)
655 if (chan < 0 || chan > 7) {
656 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan);
667 _isa_dmamem_map(struct isa_dma_state *ids, int chan, bus_addr_t addr, bus_size_t size, void **kvap, int flags)
671 if (chan < 0 || chan > 7) {
672 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan);
683 _isa_dmamem_unmap(struct isa_dma_state *ids, int chan, void *kva, size_t size)
686 if (chan < 0 || chan > 7) {
687 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan);
695 _isa_dmamem_mmap(struct isa_dma_state *ids, int chan, bus_addr_t addr, bus_size_t size, off_t off, int prot, int flags)
699 if (chan < 0 || chan > 7) {
700 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan);
714 _isa_drq_isfree(struct isa_dma_state *ids, int chan)
717 if (chan < 0 || chan > 7) {
718 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan);
722 return ISA_DMA_DRQ_ISFREE(ids, chan);
726 _isa_malloc(struct isa_dma_state *ids, int chan, size_t size, struct malloc_type *pool, int flags)
735 if (_isa_dmamem_alloc(ids, chan, size, &addr, bflags))
737 if (_isa_dmamem_map(ids, chan, addr, size, &kva, bflags)) {
738 _isa_dmamem_free(ids, chan, addr, size);
743 _isa_dmamem_unmap(ids, chan, kva, size);
744 _isa_dmamem_free(ids, chan, addr, size);
748 m->chan = chan;
772 _isa_dmamem_unmap(m->ids, m->chan, kva, m->size);
773 _isa_dmamem_free(m->ids, m->chan, m->addr, m->size);
788 return _isa_dmamem_mmap(m->ids, m->chan, m->addr,