|
@@ -986,16 +986,18 @@ void pci_resource_to_user(const struct pci_dev *pdev, int bar,
|
|
const struct resource *rp, resource_size_t *start,
|
|
const struct resource *rp, resource_size_t *start,
|
|
resource_size_t *end)
|
|
resource_size_t *end)
|
|
{
|
|
{
|
|
- struct pci_pbm_info *pbm = pdev->dev.archdata.host_controller;
|
|
|
|
- unsigned long offset;
|
|
|
|
-
|
|
|
|
- if (rp->flags & IORESOURCE_IO)
|
|
|
|
- offset = pbm->io_space.start;
|
|
|
|
- else
|
|
|
|
- offset = pbm->mem_space.start;
|
|
|
|
|
|
+ struct pci_bus_region region;
|
|
|
|
|
|
- *start = rp->start - offset;
|
|
|
|
- *end = rp->end - offset;
|
|
|
|
|
|
+ /*
|
|
|
|
+ * "User" addresses are shown in /sys/devices/pci.../.../resource
|
|
|
|
+ * and /proc/bus/pci/devices and used as mmap offsets for
|
|
|
|
+ * /proc/bus/pci/BB/DD.F files (see proc_bus_pci_mmap()).
|
|
|
|
+ *
|
|
|
|
+ * On sparc, these are PCI bus addresses, i.e., raw BAR values.
|
|
|
|
+ */
|
|
|
|
+ pcibios_resource_to_bus(pdev->bus, ®ion, (struct resource *) rp);
|
|
|
|
+ *start = region.start;
|
|
|
|
+ *end = region.end;
|
|
}
|
|
}
|
|
|
|
|
|
void pcibios_set_master(struct pci_dev *dev)
|
|
void pcibios_set_master(struct pci_dev *dev)
|