Lines Matching refs:br

563 bhndb_free_resources(struct bhndb_resources *br)  in bhndb_free_resources()  argument
575 if (!bhndb_dw_all_free(br)) { in bhndb_free_resources()
576 for (int i = 0; i < br->dwa_count; i++) { in bhndb_free_resources()
577 dwa = &br->dw_alloc[i]; in bhndb_free_resources()
580 if (bhndb_dw_is_free(br, dwa)) in bhndb_free_resources()
583 device_printf(br->dev, in bhndb_free_resources()
590 STAILQ_FOREACH(ih, &br->bus_intrs, ih_link) { in bhndb_free_resources()
591 device_printf(br->dev, "interrupt handler leaked %p\n", in bhndb_free_resources()
601 if (br->res != NULL) in bhndb_free_resources()
602 bhndb_release_host_resources(br->res); in bhndb_free_resources()
605 for (size_t i = 0; i < br->dwa_count; i++) { in bhndb_free_resources()
606 dwa = &br->dw_alloc[i]; in bhndb_free_resources()
615 STAILQ_FOREACH_SAFE(region, &br->bus_regions, link, r_next) { in bhndb_free_resources()
616 STAILQ_REMOVE(&br->bus_regions, region, bhndb_region, link); in bhndb_free_resources()
621 rman_fini(&br->ht_mem_rman); in bhndb_free_resources()
622 rman_fini(&br->br_mem_rman); in bhndb_free_resources()
623 rman_fini(&br->br_irq_rman); in bhndb_free_resources()
625 free(br->dw_alloc, M_BHND); in bhndb_free_resources()
626 free(br->dwa_freelist, M_BHND); in bhndb_free_resources()
628 mtx_destroy(&br->dw_steal_mtx); in bhndb_free_resources()
630 free(br, M_BHND); in bhndb_free_resources()
931 bhndb_register_intr_handler(struct bhndb_resources *br, in bhndb_register_intr_handler() argument
939 STAILQ_INSERT_HEAD(&br->bus_intrs, ih, ih_link); in bhndb_register_intr_handler()
949 bhndb_deregister_intr_handler(struct bhndb_resources *br, in bhndb_deregister_intr_handler() argument
955 KASSERT(bhndb_find_intr_handler(br, ih) == ih, in bhndb_deregister_intr_handler()
958 STAILQ_REMOVE(&br->bus_intrs, ih, bhndb_intr_handler, ih_link); in bhndb_deregister_intr_handler()
970 bhndb_find_intr_handler(struct bhndb_resources *br, void *cookiep) in bhndb_find_intr_handler() argument
974 STAILQ_FOREACH(ih, &br->bus_intrs, ih_link) { in bhndb_find_intr_handler()
998 bhndb_find_resource_limits(struct bhndb_resources *br, in bhndb_find_resource_limits() argument
1008 STAILQ_FOREACH(ih, &br->bus_intrs, ih_link) { in bhndb_find_resource_limits()
1023 if ((dynamic = bhndb_dw_find_resource(br, r))) { in bhndb_find_resource_limits()
1030 sregion = bhndb_find_resource_region(br, rman_get_start(r), in bhndb_find_resource_limits()
1044 device_printf(br->dev, "unknown resource type: %d\n", in bhndb_find_resource_limits()
1066 bhndb_add_resource_region(struct bhndb_resources *br, bhnd_addr_t addr, in bhndb_add_resource_region() argument
1085 STAILQ_INSERT_HEAD(&br->bus_regions, reg, link); in bhndb_add_resource_region()
1099 bhndb_has_static_region_mapping(struct bhndb_resources *br, in bhndb_has_static_region_mapping() argument
1106 while ((region = bhndb_find_resource_region(br, r_addr, 1)) != NULL) { in bhndb_has_static_region_mapping()
1134 bhndb_find_resource_region(struct bhndb_resources *br, bhnd_addr_t addr, in bhndb_find_resource_region() argument
1139 STAILQ_FOREACH(region, &br->bus_regions, link) { in bhndb_find_resource_region()
1194 bhndb_dw_find_resource(struct bhndb_resources *br, struct resource *r) in bhndb_dw_find_resource() argument
1198 for (size_t i = 0; i < br->dwa_count; i++) { in bhndb_dw_find_resource()
1199 dwa = &br->dw_alloc[i]; in bhndb_dw_find_resource()
1202 if (bhndb_dw_is_free(br, dwa)) in bhndb_dw_find_resource()
1226 bhndb_dw_find_mapping(struct bhndb_resources *br, bhnd_addr_t addr, in bhndb_dw_find_mapping() argument
1233 for (size_t i = 0; i < br->dwa_count; i++) { in bhndb_dw_find_mapping()
1234 dwr = &br->dw_alloc[i]; in bhndb_dw_find_mapping()
1263 bhndb_dw_retain(struct bhndb_resources *br, struct bhndb_dw_alloc *dwa, in bhndb_dw_retain() argument
1281 bit_set(br->dwa_freelist, dwa->rnid); in bhndb_dw_retain()
1296 bhndb_dw_release(struct bhndb_resources *br, struct bhndb_dw_alloc *dwa, in bhndb_dw_release() argument
1310 bit_clear(br->dwa_freelist, dwa->rnid); in bhndb_dw_release()
1331 bhndb_dw_set_addr(device_t dev, struct bhndb_resources *br, in bhndb_dw_set_addr() argument
1340 KASSERT(bhndb_dw_is_free(br, dwa) || mtx_owned(&br->dw_steal_mtx), in bhndb_dw_set_addr()
1379 bhndb_dw_steal(struct bhndb_resources *br, bus_addr_t *saved) in bhndb_dw_steal() argument
1383 KASSERT(bhndb_dw_next_free(br) == NULL, in bhndb_dw_steal()
1387 if (br->dwa_count == 0) in bhndb_dw_steal()
1397 mtx_lock_spin(&br->dw_steal_mtx); in bhndb_dw_steal()
1399 dw_stolen = &br->dw_alloc[0]; in bhndb_dw_steal()
1413 bhndb_dw_return_stolen(device_t dev, struct bhndb_resources *br, in bhndb_dw_return_stolen() argument
1418 mtx_assert(&br->dw_steal_mtx, MA_OWNED); in bhndb_dw_return_stolen()
1420 error = bhndb_dw_set_addr(dev, br, dwa, saved, 0); in bhndb_dw_return_stolen()
1426 mtx_unlock_spin(&br->dw_steal_mtx); in bhndb_dw_return_stolen()