Support for PIO window-relative and absolute HW resource ranges.
The goal of this merge is to allow bus drivers to pass resources with IO
and memory ranges to the child drivers either in the PIO window-relative
form or system bus absolute form. Using the PIO window and the
relative/absolute attribute of a range, each driver can now reconstruct
both forms. Helper functions are provided to automate these
transformations as much as possible.
Changes in this merge in a greater detail:
- Support for PIO_WINDOW_DEV_IFACE in isa so that it can provide the PIO
window to its children.
- Add 'relative' member to both hw_resource_t.res.mem_range and
hw_resource_t.res.io_range so that the drivers can actually tell
whether a range is absolute (eg. it was absolutized by its parent).
- Add pio_enable_resource() to allow drivers to enable PIO without the
need to actually care about what kind of range the resource contains.
This is used by pci now.
- Automate things even more for drivers that use
hw_res_get_list_parsed(). The parsed HW resources compute both forms
(relative/absolute) and offer it to the driver which is using them.
Such a driver then uses whatever form is more fit for it and its
purposes.
- Drivers using the parsed resources can use pio_enable_range() to
enable PIO and RNGABS*()/RNGREL()/RNGSZ courtesy macros for easier
access to the actual range address/size are provided.
- Device drivers affected by these API changes were converted.
- uhcirh now requires uhci to provide PIO_WINDOW_DEV_IFACE; however, the
uhcirh driver is removed in the feature USB branch so there was no
point in implementing this feature and UHCI USB is thus temporarily
broken.