Lines Matching refs:ids

90 _isa_dmaunmask(struct isa_dma_state *ids, int chan)  in _isa_dmaunmask()  argument
94 ISA_DMA_MASK_CLR(ids, chan); in _isa_dmaunmask()
100 if (ids->ids_frozen) in _isa_dmaunmask()
105 bus_space_write_1(ids->ids_bst, ids->ids_dma1h, in _isa_dmaunmask()
108 bus_space_write_1(ids->ids_bst, ids->ids_dma2h, in _isa_dmaunmask()
113 _isa_dmamask(struct isa_dma_state *ids, int chan) in _isa_dmamask() argument
117 ISA_DMA_MASK_SET(ids, chan); in _isa_dmamask()
127 bus_space_write_1(ids->ids_bst, ids->ids_dma1h, in _isa_dmamask()
129 bus_space_write_1(ids->ids_bst, ids->ids_dma1h, in _isa_dmamask()
132 bus_space_write_1(ids->ids_bst, ids->ids_dma2h, in _isa_dmamask()
134 bus_space_write_1(ids->ids_bst, ids->ids_dma2h, in _isa_dmamask()
143 _isa_dmainit(struct isa_dma_state *ids, bus_space_tag_t bst, bus_dma_tag_t dmat, device_t dev) in _isa_dmainit() argument
147 ids->ids_dev = dev; in _isa_dmainit()
149 if (ids->ids_initialized) { in _isa_dmainit()
160 if (!bus_space_is_equal(ids->ids_bst, bst) || in _isa_dmainit()
161 ids->ids_dmat != dmat) in _isa_dmainit()
164 ids->ids_bst = bst; in _isa_dmainit()
165 ids->ids_dmat = dmat; in _isa_dmainit()
170 if (bus_space_map(ids->ids_bst, IO_DMA1, DMA1_IOSIZE, 0, in _isa_dmainit()
171 &ids->ids_dma1h)) in _isa_dmainit()
173 if (bus_space_map(ids->ids_bst, IO_DMA2, DMA2_IOSIZE, 0, in _isa_dmainit()
174 &ids->ids_dma2h)) in _isa_dmainit()
176 if (bus_space_map(ids->ids_bst, IO_DMAPG, DMAPG_IOSIZE, 0, in _isa_dmainit()
177 &ids->ids_dmapgh)) in _isa_dmainit()
183 ids->ids_masked = 0xff; in _isa_dmainit()
191 if (ids->ids_maxsize[chan] == 0) in _isa_dmainit()
192 ids->ids_maxsize[chan] = in _isa_dmainit()
196 ids->ids_initialized = 1; in _isa_dmainit()
203 _isa_dmacascade(ids, 4); in _isa_dmainit()
208 _isa_dmadestroy(struct isa_dma_state *ids) in _isa_dmadestroy() argument
210 if (!ids->ids_initialized) in _isa_dmadestroy()
213 _isa_dmacascade_stop(ids, 4); in _isa_dmadestroy()
218 bus_space_unmap(ids->ids_bst, ids->ids_dmapgh, DMAPG_IOSIZE); in _isa_dmadestroy()
219 bus_space_unmap(ids->ids_bst, ids->ids_dma2h, DMA2_IOSIZE); in _isa_dmadestroy()
220 bus_space_unmap(ids->ids_bst, ids->ids_dma1h, DMA1_IOSIZE); in _isa_dmadestroy()
222 ids->ids_initialized = 0; in _isa_dmadestroy()
230 _isa_dmacascade(struct isa_dma_state *ids, int chan) in _isa_dmacascade() argument
235 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan); in _isa_dmacascade()
239 if (!ISA_DMA_DRQ_ISFREE(ids, chan)) { in _isa_dmacascade()
240 printf("%s: DRQ %d is not free\n", device_xname(ids->ids_dev), in _isa_dmacascade()
245 ISA_DMA_DRQ_ALLOC(ids, chan); in _isa_dmacascade()
249 bus_space_write_1(ids->ids_bst, ids->ids_dma1h, in _isa_dmacascade()
252 bus_space_write_1(ids->ids_bst, ids->ids_dma2h, in _isa_dmacascade()
255 _isa_dmaunmask(ids, chan); in _isa_dmacascade()
264 _isa_dmacascade_stop(struct isa_dma_state *ids, int chan) in _isa_dmacascade_stop() argument
267 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan); in _isa_dmacascade_stop()
271 if (ISA_DMA_DRQ_ISFREE(ids, chan)) in _isa_dmacascade_stop()
274 _isa_dmamask(ids, chan); in _isa_dmacascade_stop()
276 ISA_DMA_DRQ_FREE(ids, chan); in _isa_dmacascade_stop()
282 _isa_drq_alloc(struct isa_dma_state *ids, int chan) in _isa_drq_alloc() argument
284 if (!ISA_DMA_DRQ_ISFREE(ids, chan)) in _isa_drq_alloc()
286 ISA_DMA_DRQ_ALLOC(ids, chan); in _isa_drq_alloc()
291 _isa_drq_free(struct isa_dma_state *ids, int chan) in _isa_drq_free() argument
293 if (ISA_DMA_DRQ_ISFREE(ids, chan)) in _isa_drq_free()
295 ISA_DMA_DRQ_FREE(ids, chan); in _isa_drq_free()
300 _isa_dmamaxsize(struct isa_dma_state *ids, int chan) in _isa_dmamaxsize() argument
304 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan); in _isa_dmamaxsize()
308 return (ids->ids_maxsize[chan]); in _isa_dmamaxsize()
312 _isa_dmamap_create(struct isa_dma_state *ids, int chan, bus_size_t size, int flags) in _isa_dmamap_create() argument
317 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan); in _isa_dmamap_create()
321 if (size > ids->ids_maxsize[chan]) in _isa_dmamap_create()
324 error = bus_dmamap_create(ids->ids_dmat, size, 1, size, in _isa_dmamap_create()
325 ids->ids_maxsize[chan], flags, &ids->ids_dmamaps[chan]); in _isa_dmamap_create()
331 _isa_dmamap_destroy(struct isa_dma_state *ids, int chan) in _isa_dmamap_destroy() argument
335 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan); in _isa_dmamap_destroy()
339 bus_dmamap_destroy(ids->ids_dmat, ids->ids_dmamaps[chan]); in _isa_dmamap_destroy()
351 _isa_dmastart(struct isa_dma_state *ids, int chan, void *addr, bus_size_t nbytes, struct proc *p, i… in _isa_dmastart() argument
360 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan); in _isa_dmastart()
370 if (ISA_DMA_DRQ_ISFREE(ids, chan)) { in _isa_dmastart()
372 device_xname(ids->ids_dev), chan); in _isa_dmastart()
379 device_xname(ids->ids_dev), chan, in _isa_dmastart()
386 device_xname(ids->ids_dev), chan, in _isa_dmastart()
392 dmam = ids->ids_dmamaps[chan]; in _isa_dmastart()
396 error = bus_dmamap_load(ids->ids_dmat, dmam, addr, nbytes, in _isa_dmastart()
407 bus_dmamap_sync(ids->ids_dmat, dmam, 0, dmam->dm_mapsize, in _isa_dmastart()
409 ids->ids_dmareads |= (1 << chan); in _isa_dmastart()
411 bus_dmamap_sync(ids->ids_dmat, dmam, 0, dmam->dm_mapsize, in _isa_dmastart()
413 ids->ids_dmareads &= ~(1 << chan); in _isa_dmastart()
424 ids->ids_dmalength[chan] = nbytes; in _isa_dmastart()
426 _isa_dmamask(ids, chan); in _isa_dmastart()
427 ids->ids_dmafinished &= ~(1 << chan); in _isa_dmastart()
431 bus_space_write_1(ids->ids_bst, ids->ids_dma1h, DMA1_MODE, in _isa_dmastart()
436 bus_space_write_1(ids->ids_bst, ids->ids_dmapgh, in _isa_dmastart()
438 bus_space_write_1(ids->ids_bst, ids->ids_dma1h, waport, in _isa_dmastart()
440 bus_space_write_1(ids->ids_bst, ids->ids_dma1h, waport, in _isa_dmastart()
444 bus_space_write_1(ids->ids_bst, ids->ids_dma1h, waport + 1, in _isa_dmastart()
446 bus_space_write_1(ids->ids_bst, ids->ids_dma1h, waport + 1, in _isa_dmastart()
450 bus_space_write_1(ids->ids_bst, ids->ids_dma2h, DMA2_MODE, in _isa_dmastart()
455 bus_space_write_1(ids->ids_bst, ids->ids_dmapgh, in _isa_dmastart()
458 bus_space_write_1(ids->ids_bst, ids->ids_dma2h, waport, in _isa_dmastart()
460 bus_space_write_1(ids->ids_bst, ids->ids_dma2h, waport, in _isa_dmastart()
465 bus_space_write_1(ids->ids_bst, ids->ids_dma2h, waport + 2, in _isa_dmastart()
467 bus_space_write_1(ids->ids_bst, ids->ids_dma2h, waport + 2, in _isa_dmastart()
471 _isa_dmaunmask(ids, chan); in _isa_dmastart()
479 _isa_dmaabort(struct isa_dma_state *ids, int chan) in _isa_dmaabort() argument
483 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan); in _isa_dmaabort()
487 _isa_dmamask(ids, chan); in _isa_dmaabort()
488 bus_dmamap_unload(ids->ids_dmat, ids->ids_dmamaps[chan]); in _isa_dmaabort()
489 ids->ids_dmareads &= ~(1 << chan); in _isa_dmaabort()
493 _isa_dmacount(struct isa_dma_state *ids, int chan) in _isa_dmacount() argument
500 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan); in _isa_dmacount()
504 _isa_dmamask(ids, chan); in _isa_dmacount()
516 nbytes = bus_space_read_1(ids->ids_bst, ids->ids_dma1h, in _isa_dmacount()
518 nbytes += bus_space_read_1(ids->ids_bst, ids->ids_dma1h, in _isa_dmacount()
523 nbytes = bus_space_read_1(ids->ids_bst, ids->ids_dma2h, in _isa_dmacount()
525 nbytes += bus_space_read_1(ids->ids_bst, ids->ids_dma2h, in _isa_dmacount()
531 if (nbytes == ids->ids_dmalength[chan]) in _isa_dmacount()
534 _isa_dmaunmask(ids, chan); in _isa_dmacount()
539 _isa_dmafinished(struct isa_dma_state *ids, int chan) in _isa_dmafinished() argument
543 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan); in _isa_dmafinished()
549 ids->ids_dmafinished |= bus_space_read_1(ids->ids_bst, in _isa_dmafinished()
550 ids->ids_dma1h, DMA1_SR) & 0x0f; in _isa_dmafinished()
552 ids->ids_dmafinished |= (bus_space_read_1(ids->ids_bst, in _isa_dmafinished()
553 ids->ids_dma2h, DMA2_SR) & 0x0f) << 4; in _isa_dmafinished()
555 return ((ids->ids_dmafinished & (1 << chan)) != 0); in _isa_dmafinished()
559 _isa_dmadone(struct isa_dma_state *ids, int chan) in _isa_dmadone() argument
564 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan); in _isa_dmadone()
568 dmam = ids->ids_dmamaps[chan]; in _isa_dmadone()
570 _isa_dmamask(ids, chan); in _isa_dmadone()
572 if (_isa_dmafinished(ids, chan) == 0) in _isa_dmadone()
574 device_xname(ids->ids_dev), chan); in _isa_dmadone()
576 bus_dmamap_sync(ids->ids_dmat, dmam, 0, dmam->dm_mapsize, in _isa_dmadone()
577 (ids->ids_dmareads & (1 << chan)) ? BUS_DMASYNC_POSTREAD : in _isa_dmadone()
580 bus_dmamap_unload(ids->ids_dmat, dmam); in _isa_dmadone()
581 ids->ids_dmareads &= ~(1 << chan); in _isa_dmadone()
585 _isa_dmafreeze(struct isa_dma_state *ids) in _isa_dmafreeze() argument
591 if (ids->ids_frozen == 0) { in _isa_dmafreeze()
592 bus_space_write_1(ids->ids_bst, ids->ids_dma1h, in _isa_dmafreeze()
594 bus_space_write_1(ids->ids_bst, ids->ids_dma2h, in _isa_dmafreeze()
598 ids->ids_frozen++; in _isa_dmafreeze()
599 if (ids->ids_frozen < 1) in _isa_dmafreeze()
606 _isa_dmathaw(struct isa_dma_state *ids) in _isa_dmathaw() argument
612 ids->ids_frozen--; in _isa_dmathaw()
613 if (ids->ids_frozen < 0) in _isa_dmathaw()
616 if (ids->ids_frozen == 0) { in _isa_dmathaw()
617 bus_space_write_1(ids->ids_bst, ids->ids_dma1h, in _isa_dmathaw()
618 DMA1_MASK, ids->ids_masked & 0x0f); in _isa_dmathaw()
619 bus_space_write_1(ids->ids_bst, ids->ids_dma2h, in _isa_dmathaw()
620 DMA2_MASK, (ids->ids_masked >> 4) & 0x0f); in _isa_dmathaw()
627 _isa_dmamem_alloc(struct isa_dma_state *ids, int chan, bus_size_t size, bus_addr_t *addrp, int flag… in _isa_dmamem_alloc() argument
633 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan); in _isa_dmamem_alloc()
641 error = bus_dmamem_alloc(ids->ids_dmat, size, PAGE_SIZE, boundary, in _isa_dmamem_alloc()
651 _isa_dmamem_free(struct isa_dma_state *ids, int chan, bus_addr_t addr, bus_size_t size) in _isa_dmamem_free() argument
656 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan); in _isa_dmamem_free()
663 bus_dmamem_free(ids->ids_dmat, &seg, 1); in _isa_dmamem_free()
667 _isa_dmamem_map(struct isa_dma_state *ids, int chan, bus_addr_t addr, bus_size_t size, void **kvap,… in _isa_dmamem_map() argument
672 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan); in _isa_dmamem_map()
679 return (bus_dmamem_map(ids->ids_dmat, &seg, 1, size, kvap, flags)); in _isa_dmamem_map()
683 _isa_dmamem_unmap(struct isa_dma_state *ids, int chan, void *kva, size_t size) in _isa_dmamem_unmap() argument
687 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan); in _isa_dmamem_unmap()
691 bus_dmamem_unmap(ids->ids_dmat, kva, size); in _isa_dmamem_unmap()
695 _isa_dmamem_mmap(struct isa_dma_state *ids, int chan, bus_addr_t addr, bus_size_t size, off_t off, … in _isa_dmamem_mmap() argument
700 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan); in _isa_dmamem_mmap()
710 return (bus_dmamem_mmap(ids->ids_dmat, &seg, 1, off, prot, flags)); in _isa_dmamem_mmap()
714 _isa_drq_isfree(struct isa_dma_state *ids, int chan) in _isa_drq_isfree() argument
718 printf("%s: bogus drq %d\n", device_xname(ids->ids_dev), chan); in _isa_drq_isfree()
722 return ISA_DMA_DRQ_ISFREE(ids, chan); in _isa_drq_isfree()
726 _isa_malloc(struct isa_dma_state *ids, int chan, size_t size, struct malloc_type *pool, int flags) in _isa_malloc() argument
735 if (_isa_dmamem_alloc(ids, chan, size, &addr, bflags)) in _isa_malloc()
737 if (_isa_dmamem_map(ids, chan, addr, size, &kva, bflags)) { in _isa_malloc()
738 _isa_dmamem_free(ids, chan, addr, size); in _isa_malloc()
743 _isa_dmamem_unmap(ids, chan, kva, size); in _isa_malloc()
744 _isa_dmamem_free(ids, chan, addr, size); in _isa_malloc()
747 m->ids = ids; in _isa_malloc()
772 _isa_dmamem_unmap(m->ids, m->chan, kva, m->size); in _isa_free()
773 _isa_dmamem_free(m->ids, m->chan, m->addr, m->size); in _isa_free()
788 return _isa_dmamem_mmap(m->ids, m->chan, m->addr, in _isa_mappage()