a7b85b6062
The usual model for PCI IO with libqos is to use qpci_iomap() to map a specific BAR for a PCI device, then perform IOs within that BAR using qpci_io_{read,write}*(). However, certain devices also have legacy PCI IO. In this case, instead of (or as well as) being accessed via PCI BARs, the device can be accessed via certain well-known, fixed addresses in PCI IO space. Two existing tests use legacy PCI IO, and take different flawed approaches to it: * tco-test manually constructs a tco_io_base value instead of calling qpci_iomap(), which assumes internal knowledge of the structure of the value it shouldn't have * ide-test uses direct in*() and out*() calls instead of using qpci_io_*() accessors, meaning it's not portable to non-x86 machine types. This patch implements a new qpci_iomap_legacy() interface which gets a handle in the same format as qpci_iomap() but refers to a region in the legacy PIO space. For a device which has the same registers available both in a BAR and in legacy space (quite common), this allows the same test code to test both options with just a different iomap() at the beginning. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Laurent Vivier <lvivier@redhat.com> Reviewed-by: Greg Kurz <groug@kaod.org> |
||
---|---|---|
.. | ||
ahci.c | ||
ahci.h | ||
fw_cfg.c | ||
fw_cfg.h | ||
i2c-imx.c | ||
i2c-omap.c | ||
i2c.c | ||
i2c.h | ||
libqos-pc.c | ||
libqos-pc.h | ||
libqos-spapr.c | ||
libqos-spapr.h | ||
libqos.c | ||
libqos.h | ||
malloc-generic.c | ||
malloc-generic.h | ||
malloc-pc.c | ||
malloc-pc.h | ||
malloc-spapr.c | ||
malloc-spapr.h | ||
malloc.c | ||
malloc.h | ||
pci-pc.c | ||
pci-pc.h | ||
pci-spapr.c | ||
pci-spapr.h | ||
pci.c | ||
pci.h | ||
rtas.c | ||
rtas.h | ||
usb.c | ||
usb.h | ||
virtio-mmio.c | ||
virtio-mmio.h | ||
virtio-pci.c | ||
virtio-pci.h | ||
virtio.c | ||
virtio.h |