freebsd-skq/sys/dev/bhnd
Adrian Chadd f4a3eb0297 [bhnd] Implement pass-through resource management for ChipCommon.
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
2016-05-24 01:12:19 +00:00
..
bcma [bhnd] Add support for querying the attachment type of the bhnd bus. 2016-05-23 03:47:44 +00:00
bhndb [bhnd] Implement pass-through resource management for ChipCommon. 2016-05-24 01:12:19 +00:00
cores [bhnd] Implement pass-through resource management for ChipCommon. 2016-05-24 01:12:19 +00:00
nvram [bhnd] Implement pass-through resource management for ChipCommon. 2016-05-24 01:12:19 +00:00
siba [bhnd] Implement pass-through resource management for ChipCommon. 2016-05-24 01:12:19 +00:00
soc [bhnd] Add support for querying the attachment type of the bhnd bus. 2016-05-23 03:47:44 +00:00
tools [bhnd] Add remaining bus_(read|write|set)_(1|2|4) APIs 2016-05-20 00:45:16 +00:00
bhnd_bus_if.m [bhnd] Add support for querying the attachment type of the bhnd bus. 2016-05-23 03:47:44 +00:00
bhnd_core.h
bhnd_debug.h [bhnd] Add logging macros to BHND. 2016-05-16 23:40:32 +00:00
bhnd_ids.h [bhnd] Finish bhnd(4) PCI/PCIe-G1 hostb support. 2016-05-17 06:52:53 +00:00
bhnd_subr.c [bhnd] Implement pass-through resource management for ChipCommon. 2016-05-24 01:12:19 +00:00
bhnd_types.h [bhnd] Add support for querying the attachment type of the bhnd bus. 2016-05-23 03:47:44 +00:00
bhnd.c [bhnd] Add remaining bus_(read|write|set)_(1|2|4) APIs 2016-05-20 00:45:16 +00:00
bhnd.h [bhnd] Add support for querying the attachment type of the bhnd bus. 2016-05-23 03:47:44 +00:00
bhndreg.h
bhndvar.h [bhnd] Clean up bhnd resource handling and inherited bus methods 2016-04-19 15:53:57 +00:00