Cc: Thomas Huth <thuth@xxxxxxxxxx> Cc: Andrew Jones <drjones@xxxxxxxxxx> Signed-off-by: Alexander Gordeev <agordeev@xxxxxxxxxx> --- arm/Makefile.common | 6 +++++- arm/pci-test.c | 21 +++++++++++++++++++++ lib/arm/asm/pci.h | 26 ++++++++++++++++++++++++++ lib/arm64/asm/pci.h | 1 + 4 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 arm/pci-test.c create mode 100644 lib/arm/asm/pci.h create mode 100644 lib/arm64/asm/pci.h diff --git a/arm/Makefile.common b/arm/Makefile.common index a786fcf94154..e27a3fd276ff 100644 --- a/arm/Makefile.common +++ b/arm/Makefile.common @@ -11,7 +11,8 @@ endif tests-common = \ $(TEST_DIR)/selftest.flat \ - $(TEST_DIR)/spinlock-test.flat + $(TEST_DIR)/spinlock-test.flat \ + $(TEST_DIR)/pci-test.flat all: test_cases @@ -33,6 +34,8 @@ include scripts/asm-offsets.mak cflatobjs += lib/util.o cflatobjs += lib/alloc.o cflatobjs += lib/devicetree.o +cflatobjs += lib/pci.o +cflatobjs += lib/pci-host-generic.o cflatobjs += lib/virtio.o cflatobjs += lib/virtio-mmio.o cflatobjs += lib/chr-testdev.o @@ -73,3 +76,4 @@ generated_files = $(asm-offsets) test_cases: $(generated_files) $(tests-common) $(tests) $(TEST_DIR)/selftest.o $(cstart.o): $(asm-offsets) +$(TEST_DIR)/pci-test.elf: $(cstart.o) $(TEST_DIR)/pci-test.o diff --git a/arm/pci-test.c b/arm/pci-test.c new file mode 100644 index 000000000000..fde5495dd626 --- /dev/null +++ b/arm/pci-test.c @@ -0,0 +1,21 @@ +/* + * PCI bus operation test + * + * Copyright (C) 2016, Red Hat Inc, Alexander Gordeev <agordeev@xxxxxxxxxx> + * + * This work is licensed under the terms of the GNU LGPL, version 2. + */ +#include <libcflat.h> +#include <pci.h> + +int main(void) +{ + int ret = pci_probe(); + + report("PCI bus probing", ret); + + if (ret) + pci_print(); + + return report_summary(); +} diff --git a/lib/arm/asm/pci.h b/lib/arm/asm/pci.h new file mode 100644 index 000000000000..8263821ad511 --- /dev/null +++ b/lib/arm/asm/pci.h @@ -0,0 +1,26 @@ +#ifndef _ASMARM_PCI_H_ +#define _ASMARM_PCI_H_ +/* + * Copyright (C) 2016, Red Hat Inc, Alexander Gordeev <agordeev@xxxxxxxxxx> + * + * This work is licensed under the terms of the GNU LGPL, version 2. + */ +#include "libcflat.h" + +phys_addr_t pci_host_bridge_get_paddr(uint64_t addr); + +static inline +phys_addr_t pci_translate_addr(pcidevaddr_t __unused dev, uint64_t addr) +{ + /* + * Assume we only have single PCI host bridge in a system. + */ + return pci_host_bridge_get_paddr(addr); +} + +uint8_t pci_config_readb(pcidevaddr_t dev, uint8_t reg); +uint16_t pci_config_readw(pcidevaddr_t dev, uint8_t reg); +uint32_t pci_config_readl(pcidevaddr_t dev, uint8_t reg); +void pci_config_writel(pcidevaddr_t dev, uint8_t reg, uint32_t val); + +#endif diff --git a/lib/arm64/asm/pci.h b/lib/arm64/asm/pci.h new file mode 100644 index 000000000000..f70ef560e2ab --- /dev/null +++ b/lib/arm64/asm/pci.h @@ -0,0 +1 @@ +#include "../../arm/asm/pci.h" -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html