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.