浏览代码

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
  [SPARC64]: Implement pci_resource_to_user()
Linus Torvalds 17 年之前
父节点
当前提交
b50fd73b9d
共有 2 个文件被更改,包括 20 次插入0 次删除
  1. 16 0
      arch/sparc64/kernel/pci.c
  2. 4 0
      include/asm-sparc64/pci.h

+ 16 - 0
arch/sparc64/kernel/pci.c

@@ -1275,4 +1275,20 @@ int pci_dma_supported(struct pci_dev *pdev, u64 device_mask)
 	return (device_mask & dma_addr_mask) == dma_addr_mask;
 	return (device_mask & dma_addr_mask) == dma_addr_mask;
 }
 }
 
 
+void pci_resource_to_user(const struct pci_dev *pdev, int bar,
+			  const struct resource *rp, resource_size_t *start,
+			  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;
+
+	*start = rp->start - offset;
+	*end = rp->end - offset;
+}
+
 #endif /* !(CONFIG_PCI) */
 #endif /* !(CONFIG_PCI) */

+ 4 - 0
include/asm-sparc64/pci.h

@@ -200,6 +200,10 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
 struct device_node;
 struct device_node;
 extern struct device_node *pci_device_to_OF_node(struct pci_dev *pdev);
 extern struct device_node *pci_device_to_OF_node(struct pci_dev *pdev);
 
 
+#define HAVE_ARCH_PCI_RESOURCE_TO_USER
+extern void pci_resource_to_user(const struct pci_dev *dev, int bar,
+				 const struct resource *rsrc,
+				 resource_size_t *start, resource_size_t *end);
 #endif /* __KERNEL__ */
 #endif /* __KERNEL__ */
 
 
 #endif /* __SPARC64_PCI_H */
 #endif /* __SPARC64_PCI_H */