f4a3eb0297
This patchset adds support to bhnd_chipc for sharing SYS_RES_MEMORY resources with its children, allowing us to hang devices off of bhnd_chipc that rely on access to a subset of the device register space that bhnd_chipc itself must also allocate. We could avoid most of this heavy lifting if RF_SHAREABLE+SYS_RES_MEMORY wasn't limited to use with allocations at the same size/offset. As a work-around, I implemented something similar to vga_pci.c, which implements similar reference counting of of PCI BAR resources for its children. With these changes, chipc will use reference counting of SYS_RES_MEMORY allocation/activation requests, to decide when to allocate/activate/ deactivate/release resources from the parent bhnd(4) bus. The requesting child device is allocated a new resource from chipc's rman, pointing to (possibly a subregion of) the refcounted bhnd resources allocated by chipc. Other resource types are just passed directly to the parent bhnd bus; RF_SHAREABLE works just fine with IRQs. I also lifted the SPROM device code out into a common driver, since this now allows me to hang simple subclasses off of a common driver off of both bhndb_pci and bhnd_chipc. Tested: * (landonf) Tested against BCM4331 and BCM4312, confirmed that SPROM still attaches and can be queried. Submitted by: Landon Fuller <landonf@landonf.org> Reviewed by: mizkha@gmail.com Differential Revision: https://reviews.freebsd.org/D6471
28 lines
479 B
Makefile
28 lines
479 B
Makefile
# $FreeBSD$
|
|
|
|
.PATH: ${.CURDIR}/../../dev/bhnd
|
|
.PATH: ${.CURDIR}/../../dev/bhnd/nvram
|
|
|
|
KMOD= bhnd
|
|
SRCS= bhnd.c bhnd_subr.c \
|
|
bhnd_sprom.c bhnd_sprom_subr.c \
|
|
nvram_subr.c \
|
|
bhnd_nvram_map.h bhnd_nvram_map_data.h
|
|
|
|
SRCS+= bhnd_bus_if.c bhnd_bus_if.h \
|
|
bhnd_chipc_if.c bhnd_chipc_if.h \
|
|
bhnd_nvram_if.c bhnd_nvram_if.h
|
|
|
|
SRCS+= device_if.h bus_if.h
|
|
|
|
SUBDIR= bcma \
|
|
bcma_bhndb \
|
|
bhndb \
|
|
bhndb_pci \
|
|
cores \
|
|
siba \
|
|
siba_bhndb
|
|
|
|
.include <bsd.kmod.mk>
|
|
.include <bsd.subdir.mk>
|