Changeset View
Changeset View
Standalone View
Standalone View
sys/arm/arm/busdma_machdep-v4.c
Show First 20 Lines • Show All 1,419 Lines • ▼ Show 20 Lines | alloc_bounce_zone(bus_dma_tag_t dmat) | ||||
busdma_zonecount++; | busdma_zonecount++; | ||||
snprintf(bz->lowaddrid, 18, "%#jx", (uintmax_t)bz->lowaddr); | snprintf(bz->lowaddrid, 18, "%#jx", (uintmax_t)bz->lowaddr); | ||||
STAILQ_INSERT_TAIL(&bounce_zone_list, bz, links); | STAILQ_INSERT_TAIL(&bounce_zone_list, bz, links); | ||||
dmat->bounce_zone = bz; | dmat->bounce_zone = bz; | ||||
sysctl_ctx_init(&bz->sysctl_tree); | sysctl_ctx_init(&bz->sysctl_tree); | ||||
bz->sysctl_tree_top = SYSCTL_ADD_NODE(&bz->sysctl_tree, | bz->sysctl_tree_top = SYSCTL_ADD_NODE(&bz->sysctl_tree, | ||||
SYSCTL_STATIC_CHILDREN(_hw_busdma), OID_AUTO, bz->zoneid, | SYSCTL_STATIC_CHILDREN(_hw_busdma), OID_AUTO, bz->zoneid, | ||||
CTLFLAG_RD, 0, ""); | CTLFLAG_RD, 0, | ||||
"Busdma zone parameters"); | |||||
if (bz->sysctl_tree_top == NULL) { | if (bz->sysctl_tree_top == NULL) { | ||||
sysctl_ctx_free(&bz->sysctl_tree); | sysctl_ctx_free(&bz->sysctl_tree); | ||||
return (0); /* XXX error code? */ | return (0); /* XXX error code? */ | ||||
} | } | ||||
SYSCTL_ADD_INT(busdma_sysctl_tree(bz), | SYSCTL_ADD_INT(busdma_sysctl_tree(bz), | ||||
SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, | SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, | ||||
"total_bpages", CTLFLAG_RD, &bz->total_bpages, 0, | "total_bpages", CTLFLAG_RD, &bz->total_bpages, 0, | ||||
Show All 15 Lines | SYSCTL_ADD_INT(busdma_sysctl_tree(bz), | ||||
"total_bounced", CTLFLAG_RD, &bz->total_bounced, 0, | "total_bounced", CTLFLAG_RD, &bz->total_bounced, 0, | ||||
"Total bounce requests (pages bounced)"); | "Total bounce requests (pages bounced)"); | ||||
SYSCTL_ADD_INT(busdma_sysctl_tree(bz), | SYSCTL_ADD_INT(busdma_sysctl_tree(bz), | ||||
SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, | SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, | ||||
"total_deferred", CTLFLAG_RD, &bz->total_deferred, 0, | "total_deferred", CTLFLAG_RD, &bz->total_deferred, 0, | ||||
"Total bounce requests that were deferred"); | "Total bounce requests that were deferred"); | ||||
SYSCTL_ADD_STRING(busdma_sysctl_tree(bz), | SYSCTL_ADD_STRING(busdma_sysctl_tree(bz), | ||||
SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, | SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, | ||||
"lowaddr", CTLFLAG_RD, bz->lowaddrid, 0, ""); | "lowaddr", CTLFLAG_RD, bz->lowaddrid, 0, | ||||
"Bounce zone lower address value"); | |||||
SYSCTL_ADD_ULONG(busdma_sysctl_tree(bz), | SYSCTL_ADD_ULONG(busdma_sysctl_tree(bz), | ||||
SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, | SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, | ||||
"alignment", CTLFLAG_RD, &bz->alignment, ""); | "alignment", CTLFLAG_RD, &bz->alignment, | ||||
"Bounce zone alignment in bytes"); | |||||
return (0); | return (0); | ||||
} | } | ||||
static int | static int | ||||
alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages) | alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages) | ||||
{ | { | ||||
struct bounce_zone *bz; | struct bounce_zone *bz; | ||||
▲ Show 20 Lines • Show All 147 Lines • Show Last 20 Lines |