Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 36a66cd6 authored by Bjorn Helgaas's avatar Bjorn Helgaas
Browse files

PCI: add generic pcibios_resource_to_bus()



This replaces the generic versions of pcibios_resource_to_bus() and
pcibios_bus_to_resource() in asm-generic/pci.h with versions that use
pci_resource_to_bus() and pci_bus_to_resource().

The replacements are equivalent except that they can apply host
bridge window offsets when the arch has supplied them by using
pci_add_resource_offset().

Each arch can convert to using pci_add_resource_offset() individually by
removing its device resource fixups from pcibios_fixup_bus() and supplying
ARCH_HAS_GENERIC_PCI_OFFSETS.  ARCH_HAS_GENERIC_PCI_OFFSETS can be removed
after all have converted.

Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
parent 5bfa14ed
Loading
Loading
Loading
Loading
+16 −0
Original line number Original line Diff line number Diff line
@@ -118,6 +118,22 @@ void pci_bus_to_resource(struct pci_dev *dev, struct resource *res,
	res->end = region->end + offset;
	res->end = region->end + offset;
}
}


#ifdef ARCH_HAS_GENERIC_PCI_OFFSETS
void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
			     struct resource *res)
{
	pci_resource_to_bus(dev, region, res);
}
EXPORT_SYMBOL(pcibios_resource_to_bus);

void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
			     struct pci_bus_region *region)
{
	pci_bus_to_resource(dev, res, region);
}
EXPORT_SYMBOL(pcibios_bus_to_resource);
#endif

/*
/*
 * PCI Bus Class
 * PCI Bus Class
 */
 */
+1 −23
Original line number Original line Diff line number Diff line
@@ -6,29 +6,7 @@
#ifndef _ASM_GENERIC_PCI_H
#ifndef _ASM_GENERIC_PCI_H
#define _ASM_GENERIC_PCI_H
#define _ASM_GENERIC_PCI_H


/**
#define ARCH_HAS_GENERIC_PCI_OFFSETS
 * pcibios_resource_to_bus - convert resource to PCI bus address
 * @dev: device which owns this resource
 * @region: converted bus-centric region (start,end)
 * @res: resource to convert
 *
 * Convert a resource to a PCI device bus address or bus window.
 */
static inline void
pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
			 struct resource *res)
{
	region->start = res->start;
	region->end = res->end;
}

static inline void
pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
			struct pci_bus_region *region)
{
	res->start = region->start;
	res->end = region->end;
}


static inline struct resource *
static inline struct resource *
pcibios_select_root(struct pci_dev *pdev, struct resource *res)
pcibios_select_root(struct pci_dev *pdev, struct resource *res)
+4 −0
Original line number Original line Diff line number Diff line
@@ -648,6 +648,10 @@ void pci_fixup_cardbus(struct pci_bus *);


/* Generic PCI functions used internally */
/* Generic PCI functions used internally */


void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
			     struct resource *res);
void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
			     struct pci_bus_region *region);
void pcibios_scan_specific_bus(int busn);
void pcibios_scan_specific_bus(int busn);
extern struct pci_bus *pci_find_bus(int domain, int busnr);
extern struct pci_bus *pci_find_bus(int domain, int busnr);
void pci_bus_add_devices(const struct pci_bus *bus);
void pci_bus_add_devices(const struct pci_bus *bus);