Lines Matching +full:sc +full:- +full:resource
1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
50 #include <machine/resource.h>
54 static struct resource * isab_pci_alloc_resource(device_t dev,
58 struct resource *r);
82 struct resource *ip_res;
142 printf("PCI-ISA bridge with incorrect subclass 0x%x\n", in isab_pci_probe()
153 device_set_desc(dev, "PCI-ISA bridge"); in isab_pci_probe()
154 return(-10000); in isab_pci_probe()
167 static struct resource *
171 struct isab_pci_softc *sc; in isab_pci_alloc_resource() local
182 * For BARs, we cache the resource so that we only allocate it in isab_pci_alloc_resource()
188 sc = device_get_softc(dev); in isab_pci_alloc_resource()
189 if (sc->isab_pci_res[bar].ip_res == NULL) in isab_pci_alloc_resource()
190 sc->isab_pci_res[bar].ip_res = bus_alloc_resource(dev, type, in isab_pci_alloc_resource()
192 if (sc->isab_pci_res[bar].ip_res != NULL) in isab_pci_alloc_resource()
193 sc->isab_pci_res[bar].ip_refs++; in isab_pci_alloc_resource()
194 return (sc->isab_pci_res[bar].ip_res); in isab_pci_alloc_resource()
202 isab_pci_release_resource(device_t dev, device_t child, struct resource *r) in isab_pci_release_resource()
204 struct isab_pci_softc *sc; in isab_pci_release_resource() local
214 * For BARs, we release the resource from the PCI bus in isab_pci_release_resource()
220 sc = device_get_softc(dev); in isab_pci_release_resource()
221 if (sc->isab_pci_res[bar].ip_res == NULL) in isab_pci_release_resource()
223 KASSERT(sc->isab_pci_res[bar].ip_res == r, in isab_pci_release_resource()
224 ("isa_pci resource mismatch")); in isab_pci_release_resource()
225 if (sc->isab_pci_res[bar].ip_refs > 1) { in isab_pci_release_resource()
226 sc->isab_pci_res[bar].ip_refs--; in isab_pci_release_resource()
229 KASSERT(sc->isab_pci_res[bar].ip_refs > 0, in isab_pci_release_resource()
230 ("isa_pci resource reference count underflow")); in isab_pci_release_resource()
233 sc->isab_pci_res[bar].ip_res = NULL; in isab_pci_release_resource()
234 sc->isab_pci_res[bar].ip_refs = 0; in isab_pci_release_resource()