Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/pci/pci_host_generic.c
Show First 20 Lines • Show All 305 Lines • ▼ Show 20 Lines | pci_host_generic_core_release_resource(device_t dev, device_t child, int type, | ||||
int rid, struct resource *res) | int rid, struct resource *res) | ||||
{ | { | ||||
struct generic_pcie_core_softc *sc; | struct generic_pcie_core_softc *sc; | ||||
struct rman *rm; | struct rman *rm; | ||||
int error; | int error; | ||||
sc = device_get_softc(dev); | sc = device_get_softc(dev); | ||||
#if defined(PCI_RES_BUS) | |||||
if (type == PCI_RES_BUS) { | if (type == PCI_RES_BUS) { | ||||
return (pci_domain_release_bus(sc->ecam, child, rid, res)); | return (pci_domain_release_bus(sc->ecam, child, rid, res)); | ||||
} | } | ||||
#endif | |||||
rm = generic_pcie_rman(sc, type, rman_get_flags(res)); | rm = generic_pcie_rman(sc, type, rman_get_flags(res)); | ||||
if (rm != NULL) { | if (rm != NULL) { | ||||
KASSERT(rman_is_region_manager(res, rm), ("rman mismatch")); | KASSERT(rman_is_region_manager(res, rm), ("rman mismatch")); | ||||
if (rman_get_flags(res) & RF_ACTIVE) { | if (rman_get_flags(res) & RF_ACTIVE) { | ||||
error = bus_deactivate_resource(child, type, rid, res); | error = bus_deactivate_resource(child, type, rid, res); | ||||
if (error) | if (error) | ||||
return (error); | return (error); | ||||
▲ Show 20 Lines • Show All 77 Lines • ▼ Show 20 Lines | |||||
{ | { | ||||
struct generic_pcie_core_softc *sc; | struct generic_pcie_core_softc *sc; | ||||
struct resource *res; | struct resource *res; | ||||
struct rman *rm; | struct rman *rm; | ||||
rman_res_t phys_start, phys_end; | rman_res_t phys_start, phys_end; | ||||
sc = device_get_softc(dev); | sc = device_get_softc(dev); | ||||
#if defined(PCI_RES_BUS) | |||||
if (type == PCI_RES_BUS) { | if (type == PCI_RES_BUS) { | ||||
return (pci_domain_alloc_bus(sc->ecam, child, rid, start, end, | return (pci_domain_alloc_bus(sc->ecam, child, rid, start, end, | ||||
count, flags)); | count, flags)); | ||||
} | } | ||||
#endif | |||||
rm = generic_pcie_rman(sc, type, flags); | rm = generic_pcie_rman(sc, type, flags); | ||||
if (rm == NULL) | if (rm == NULL) | ||||
return (BUS_ALLOC_RESOURCE(device_get_parent(dev), child, | return (BUS_ALLOC_RESOURCE(device_get_parent(dev), child, | ||||
type, rid, start, end, count, flags)); | type, rid, start, end, count, flags)); | ||||
/* Translate the address from a PCI address to a physical address */ | /* Translate the address from a PCI address to a physical address */ | ||||
if (!generic_pcie_translate_resource_common(dev, type, start, end, &phys_start, | if (!generic_pcie_translate_resource_common(dev, type, start, end, &phys_start, | ||||
▲ Show 20 Lines • Show All 84 Lines • ▼ Show 20 Lines | |||||
static int | static int | ||||
generic_pcie_adjust_resource(device_t dev, device_t child, int type, | generic_pcie_adjust_resource(device_t dev, device_t child, int type, | ||||
struct resource *res, rman_res_t start, rman_res_t end) | struct resource *res, rman_res_t start, rman_res_t end) | ||||
{ | { | ||||
struct generic_pcie_core_softc *sc; | struct generic_pcie_core_softc *sc; | ||||
struct rman *rm; | struct rman *rm; | ||||
sc = device_get_softc(dev); | sc = device_get_softc(dev); | ||||
#if defined(PCI_RES_BUS) | |||||
if (type == PCI_RES_BUS) | if (type == PCI_RES_BUS) | ||||
return (pci_domain_adjust_bus(sc->ecam, child, res, start, | return (pci_domain_adjust_bus(sc->ecam, child, res, start, | ||||
end)); | end)); | ||||
#endif | |||||
rm = generic_pcie_rman(sc, type, rman_get_flags(res)); | rm = generic_pcie_rman(sc, type, rman_get_flags(res)); | ||||
if (rm != NULL) | if (rm != NULL) | ||||
return (rman_adjust_resource(res, start, end)); | return (rman_adjust_resource(res, start, end)); | ||||
return (bus_generic_adjust_resource(dev, child, type, res, start, end)); | return (bus_generic_adjust_resource(dev, child, type, res, start, end)); | ||||
} | } | ||||
static bus_dma_tag_t | static bus_dma_tag_t | ||||
Show All 33 Lines |