[POWERPC] Merge pcibios_resource_to_bus/bus_to_resource
This merges the PowerPC 32 and 64 bits version of pcibios_resource_to_bus and pcibios_bus_to_resource(). Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Родитель
fa462f2d75
Коммит
fe2d338cdc
|
@ -655,3 +655,39 @@ int pci_proc_domain(struct pci_bus *bus)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
|
||||||
|
struct resource *res)
|
||||||
|
{
|
||||||
|
resource_size_t offset = 0, mask = (resource_size_t)-1;
|
||||||
|
struct pci_controller *hose = pci_bus_to_host(dev->bus);
|
||||||
|
|
||||||
|
if (!hose)
|
||||||
|
return;
|
||||||
|
if (res->flags & IORESOURCE_IO) {
|
||||||
|
offset = (unsigned long)hose->io_base_virt - _IO_BASE;
|
||||||
|
mask = 0xffffffffu;
|
||||||
|
} else if (res->flags & IORESOURCE_MEM)
|
||||||
|
offset = hose->pci_mem_offset;
|
||||||
|
|
||||||
|
region->start = (res->start - offset) & mask;
|
||||||
|
region->end = (res->end - offset) & mask;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(pcibios_resource_to_bus);
|
||||||
|
|
||||||
|
void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
|
||||||
|
struct pci_bus_region *region)
|
||||||
|
{
|
||||||
|
resource_size_t offset = 0, mask = (resource_size_t)-1;
|
||||||
|
struct pci_controller *hose = pci_bus_to_host(dev->bus);
|
||||||
|
|
||||||
|
if (!hose)
|
||||||
|
return;
|
||||||
|
if (res->flags & IORESOURCE_IO) {
|
||||||
|
offset = (unsigned long)hose->io_base_virt - _IO_BASE;
|
||||||
|
mask = 0xffffffffu;
|
||||||
|
} else if (res->flags & IORESOURCE_MEM)
|
||||||
|
offset = hose->pci_mem_offset;
|
||||||
|
res->start = (region->start + offset) & mask;
|
||||||
|
res->end = (region->end + offset) & mask;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(pcibios_bus_to_resource);
|
||||||
|
|
|
@ -145,38 +145,6 @@ pcibios_fixup_resources(struct pci_dev *dev)
|
||||||
}
|
}
|
||||||
DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pcibios_fixup_resources);
|
DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pcibios_fixup_resources);
|
||||||
|
|
||||||
void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
|
|
||||||
struct resource *res)
|
|
||||||
{
|
|
||||||
resource_size_t offset = 0, mask = (resource_size_t)-1;
|
|
||||||
struct pci_controller *hose = dev->sysdata;
|
|
||||||
|
|
||||||
if (hose && res->flags & IORESOURCE_IO) {
|
|
||||||
offset = (unsigned long)hose->io_base_virt - isa_io_base;
|
|
||||||
mask = 0xffffffffu;
|
|
||||||
} else if (hose && res->flags & IORESOURCE_MEM)
|
|
||||||
offset = hose->pci_mem_offset;
|
|
||||||
region->start = (res->start - offset) & mask;
|
|
||||||
region->end = (res->end - offset) & mask;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(pcibios_resource_to_bus);
|
|
||||||
|
|
||||||
void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
|
|
||||||
struct pci_bus_region *region)
|
|
||||||
{
|
|
||||||
resource_size_t offset = 0, mask = (resource_size_t)-1;
|
|
||||||
struct pci_controller *hose = dev->sysdata;
|
|
||||||
|
|
||||||
if (hose && res->flags & IORESOURCE_IO) {
|
|
||||||
offset = (unsigned long)hose->io_base_virt - isa_io_base;
|
|
||||||
mask = 0xffffffffu;
|
|
||||||
} else if (hose && res->flags & IORESOURCE_MEM)
|
|
||||||
offset = hose->pci_mem_offset;
|
|
||||||
res->start = (region->start + offset) & mask;
|
|
||||||
res->end = (region->end + offset) & mask;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(pcibios_bus_to_resource);
|
|
||||||
|
|
||||||
static int skip_isa_ioresource_align(struct pci_dev *dev)
|
static int skip_isa_ioresource_align(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
if ((ppc_pci_flags & PPC_PCI_CAN_SKIP_ISA_ALIGN) &&
|
if ((ppc_pci_flags & PPC_PCI_CAN_SKIP_ISA_ALIGN) &&
|
||||||
|
|
|
@ -93,48 +93,6 @@ static void fixup_broken_pcnet32(struct pci_dev* dev)
|
||||||
}
|
}
|
||||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TRIDENT, PCI_ANY_ID, fixup_broken_pcnet32);
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TRIDENT, PCI_ANY_ID, fixup_broken_pcnet32);
|
||||||
|
|
||||||
void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
|
|
||||||
struct resource *res)
|
|
||||||
{
|
|
||||||
unsigned long offset = 0;
|
|
||||||
struct pci_controller *hose = pci_bus_to_host(dev->bus);
|
|
||||||
|
|
||||||
if (!hose)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (res->flags & IORESOURCE_IO)
|
|
||||||
offset = (unsigned long)hose->io_base_virt - _IO_BASE;
|
|
||||||
|
|
||||||
if (res->flags & IORESOURCE_MEM)
|
|
||||||
offset = hose->pci_mem_offset;
|
|
||||||
|
|
||||||
region->start = res->start - offset;
|
|
||||||
region->end = res->end - offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
|
|
||||||
struct pci_bus_region *region)
|
|
||||||
{
|
|
||||||
unsigned long offset = 0;
|
|
||||||
struct pci_controller *hose = pci_bus_to_host(dev->bus);
|
|
||||||
|
|
||||||
if (!hose)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (res->flags & IORESOURCE_IO)
|
|
||||||
offset = (unsigned long)hose->io_base_virt - _IO_BASE;
|
|
||||||
|
|
||||||
if (res->flags & IORESOURCE_MEM)
|
|
||||||
offset = hose->pci_mem_offset;
|
|
||||||
|
|
||||||
res->start = region->start + offset;
|
|
||||||
res->end = region->end + offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_HOTPLUG
|
|
||||||
EXPORT_SYMBOL(pcibios_resource_to_bus);
|
|
||||||
EXPORT_SYMBOL(pcibios_bus_to_resource);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We need to avoid collisions with `mirrored' VGA ports
|
* We need to avoid collisions with `mirrored' VGA ports
|
||||||
|
|
Загрузка…
Ссылка в новой задаче