summaryrefslogtreecommitdiffstats
path: root/sys/dev/trm/trm.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/trm/trm.c')
-rw-r--r--sys/dev/trm/trm.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/sys/dev/trm/trm.c b/sys/dev/trm/trm.c
index e7d5aad..765d5ea 100644
--- a/sys/dev/trm/trm.c
+++ b/sys/dev/trm/trm.c
@@ -3415,6 +3415,22 @@ trm_init(u_int16_t unit, device_t dev)
pACB->tag = rman_get_bustag(pACB->iores);
pACB->bsh = rman_get_bushandle(pACB->iores);
if (bus_dma_tag_create(
+ /*parent_dmat*/ bus_get_dma_tag(dev),
+ /*alignment*/ 1,
+ /*boundary*/ 0,
+ /*lowaddr*/ BUS_SPACE_MAXADDR,
+ /*highaddr*/ BUS_SPACE_MAXADDR,
+ /*filter*/ NULL,
+ /*filterarg*/ NULL,
+ /*maxsize*/ BUS_SPACE_MAXSIZE_32BIT,
+ /*nsegments*/ BUS_SPACE_UNRESTRICTED,
+ /*maxsegsz*/ BUS_SPACE_MAXSIZE_32BIT,
+ /*flags*/ 0,
+ /*lockfunc*/ NULL,
+ /*lockarg*/ NULL,
+ /* dmat */ &pACB->parent_dmat) != 0)
+ goto bad;
+ if (bus_dma_tag_create(
/*parent_dmat*/ pACB->parent_dmat,
/*alignment*/ 1,
/*boundary*/ 0,
@@ -3458,7 +3474,9 @@ trm_init(u_int16_t unit, device_t dev)
TRM_MAX_SRB_CNT * sizeof(TRM_SRB), trm_mapSRB, pACB,
/* flags */0);
/* Create, allocate, and map DMA buffers for autosense data */
- if (bus_dma_tag_create(/*parent_dmat*/NULL, /*alignment*/1,
+ if (bus_dma_tag_create(
+ /*parent_dmat*/pACB->parent_dmat,
+ /*alignment*/1,
/*boundary*/0,
/*lowaddr*/BUS_SPACE_MAXADDR_32BIT,
/*highaddr*/BUS_SPACE_MAXADDR,
@@ -3495,7 +3513,7 @@ trm_init(u_int16_t unit, device_t dev)
}
bzero(pACB->pFreeSRB, TRM_MAX_SRB_CNT * sizeof(TRM_SRB));
if (bus_dma_tag_create(
- /*parent_dmat*/NULL,
+ /*parent_dmat*/pACB->parent_dmat,
/*alignment*/ 1,
/*boundary*/ 0,
/*lowaddr*/ BUS_SPACE_MAXADDR,
@@ -3546,6 +3564,8 @@ bad:
bus_dma_tag_destroy(pACB->srb_dmat);
if (pACB->buffer_dmat)
bus_dma_tag_destroy(pACB->buffer_dmat);
+ if (pACB->parent_dmat)
+ bus_dma_tag_destroy(pACB->parent_dmat);
return (NULL);
}
OpenPOWER on IntegriCloud