| // SPDX-License-Identifier: GPL-2.0-only |
| /* |
| * Code borrowed from powerpc/kernel/pci-common.c |
| * |
| * Copyright (C) 2003 Anton Blanchard <anton@au.ibm.com>, IBM |
| * Copyright (C) 2014 ARM Ltd. |
| */ |
| |
| #include <linux/pci.h> |
| |
| /* |
| * raw_pci_read/write - Platform-specific PCI config space access. |
| */ |
| int raw_pci_read(unsigned int domain, unsigned int bus, |
| unsigned int devfn, int reg, int len, u32 *val) |
| { |
| struct pci_bus *b = pci_find_bus(domain, bus); |
| |
| if (!b) |
| return PCIBIOS_DEVICE_NOT_FOUND; |
| return b->ops->read(b, devfn, reg, len, val); |
| } |
| |
| int raw_pci_write(unsigned int domain, unsigned int bus, |
| unsigned int devfn, int reg, int len, u32 val) |
| { |
| struct pci_bus *b = pci_find_bus(domain, bus); |
| |
| if (!b) |
| return PCIBIOS_DEVICE_NOT_FOUND; |
| return b->ops->write(b, devfn, reg, len, val); |
| } |
| |
| #ifdef CONFIG_NUMA |
| |
| int pcibus_to_node(struct pci_bus *bus) |
| { |
| return dev_to_node(&bus->dev); |
| } |
| EXPORT_SYMBOL(pcibus_to_node); |
| |
| #endif |