Lines Matching refs:gdm
546 gfe_dmamem_alloc(struct gfe_softc *sc, struct gfe_dmamem *gdm, int maxsegs,
552 KASSERT(gdm->gdm_kva == NULL);
553 gdm->gdm_size = size;
554 gdm->gdm_maxsegs = maxsegs;
556 error = bus_dmamem_alloc(sc->sc_dmat, gdm->gdm_size, PAGE_SIZE,
557 gdm->gdm_size, gdm->gdm_segs, gdm->gdm_maxsegs, &gdm->gdm_nsegs,
562 error = bus_dmamem_map(sc->sc_dmat, gdm->gdm_segs, gdm->gdm_nsegs,
563 gdm->gdm_size, &gdm->gdm_kva, flags | BUS_DMA_NOWAIT);
567 error = bus_dmamap_create(sc->sc_dmat, gdm->gdm_size, gdm->gdm_nsegs,
568 gdmgdm->gdm_map);
572 error = bus_dmamap_load(sc->sc_dmat, gdm->gdm_map, gdm->gdm_kva,
573 gdm->gdm_size, NULL, BUS_DMA_NOWAIT);
578 bus_dmamap_sync(sc->sc_dmat, gdm->gdm_map, 0, gdm->gdm_size,
582 gfe_dmamem_free(sc, gdm);
586 gdm->gdm_kva, gdm->gdm_size, gdm->gdm_map, gdm->gdm_map->dm_nsegs,
587 gdm->gdm_map->dm_segs->ds_addr, gdm->gdm_map->dm_segs->ds_len));
593 gfe_dmamem_free(struct gfe_softc *sc, struct gfe_dmamem *gdm)
596 if (gdm->gdm_map)
597 bus_dmamap_destroy(sc->sc_dmat, gdm->gdm_map);
598 if (gdm->gdm_kva)
599 bus_dmamem_unmap(sc->sc_dmat, gdm->gdm_kva, gdm->gdm_size);
600 if (gdm->gdm_nsegs > 0)
601 bus_dmamem_free(sc->sc_dmat, gdm->gdm_segs, gdm->gdm_nsegs);
602 gdm->gdm_map = NULL;
603 gdm->gdm_kva = NULL;
604 gdm->gdm_nsegs = 0;