Merge branch 'pci/devres'
- Export pcim_request_region(), a managed counterpart of pci_request_region(), for use by drivers (Philipp Stanner) - Request the PCI BAR used by xboxvideo (Philipp Stanner) - Export pcim_iomap_region() and deprecate pcim_iomap_regions() (Philipp Stanner) - Request and map drm/ast BARs with pcim_iomap_region() (Philipp Stanner) * pci/devres: drm/ast: Request PCI BAR with devres PCI: Deprecate pcim_iomap_regions() in favor of pcim_iomap_region() drm/vboxvideo: Add PCI region request PCI: Make pcim_request_region() a public function
This commit is contained in:
@@ -287,9 +287,9 @@ static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
regs = pcim_iomap(pdev, 1, 0);
|
||||
if (!regs)
|
||||
return -EIO;
|
||||
regs = pcim_iomap_region(pdev, 1, "ast");
|
||||
if (IS_ERR(regs))
|
||||
return PTR_ERR(regs);
|
||||
|
||||
if (pdev->revision >= 0x40) {
|
||||
/*
|
||||
@@ -311,9 +311,9 @@ static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
|
||||
if (len < AST_IO_MM_LENGTH)
|
||||
return -EIO;
|
||||
ioregs = pcim_iomap(pdev, 2, 0);
|
||||
if (!ioregs)
|
||||
return -EIO;
|
||||
ioregs = pcim_iomap_region(pdev, 2, "ast");
|
||||
if (IS_ERR(ioregs))
|
||||
return PTR_ERR(ioregs);
|
||||
} else {
|
||||
/*
|
||||
* Anything else is best effort.
|
||||
|
||||
@@ -114,6 +114,10 @@ int vbox_hw_init(struct vbox_private *vbox)
|
||||
|
||||
DRM_INFO("VRAM %08x\n", vbox->full_vram_size);
|
||||
|
||||
ret = pcim_request_region(pdev, 0, "vboxvideo");
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Map guest-heap at end of vram */
|
||||
vbox->guest_heap = pcim_iomap_range(pdev, 0,
|
||||
GUEST_HEAP_OFFSET(vbox), GUEST_HEAP_SIZE);
|
||||
|
||||
@@ -728,7 +728,7 @@ EXPORT_SYMBOL(pcim_iounmap);
|
||||
* Mapping and region will get automatically released on driver detach. If
|
||||
* desired, release manually only with pcim_iounmap_region().
|
||||
*/
|
||||
static void __iomem *pcim_iomap_region(struct pci_dev *pdev, int bar,
|
||||
void __iomem *pcim_iomap_region(struct pci_dev *pdev, int bar,
|
||||
const char *name)
|
||||
{
|
||||
int ret;
|
||||
@@ -761,6 +761,7 @@ err_region:
|
||||
|
||||
return IOMEM_ERR_PTR(ret);
|
||||
}
|
||||
EXPORT_SYMBOL(pcim_iomap_region);
|
||||
|
||||
/**
|
||||
* pcim_iounmap_region - Unmap and release a PCI BAR
|
||||
@@ -783,7 +784,7 @@ static void pcim_iounmap_region(struct pci_dev *pdev, int bar)
|
||||
}
|
||||
|
||||
/**
|
||||
* pcim_iomap_regions - Request and iomap PCI BARs
|
||||
* pcim_iomap_regions - Request and iomap PCI BARs (DEPRECATED)
|
||||
* @pdev: PCI device to map IO resources for
|
||||
* @mask: Mask of BARs to request and iomap
|
||||
* @name: Name associated with the requests
|
||||
@@ -791,6 +792,9 @@ static void pcim_iounmap_region(struct pci_dev *pdev, int bar)
|
||||
* Returns: 0 on success, negative error code on failure.
|
||||
*
|
||||
* Request and iomap regions specified by @mask.
|
||||
*
|
||||
* This function is DEPRECATED. Do not use it in new code.
|
||||
* Use pcim_iomap_region() instead.
|
||||
*/
|
||||
int pcim_iomap_regions(struct pci_dev *pdev, int mask, const char *name)
|
||||
{
|
||||
@@ -863,6 +867,7 @@ int pcim_request_region(struct pci_dev *pdev, int bar, const char *name)
|
||||
{
|
||||
return _pcim_request_region(pdev, bar, name, 0);
|
||||
}
|
||||
EXPORT_SYMBOL(pcim_request_region);
|
||||
|
||||
/**
|
||||
* pcim_request_region_exclusive - Request a PCI BAR exclusively
|
||||
|
||||
@@ -892,8 +892,6 @@ static inline pci_power_t mid_pci_get_power_state(struct pci_dev *pdev)
|
||||
#endif
|
||||
|
||||
int pcim_intx(struct pci_dev *dev, int enable);
|
||||
|
||||
int pcim_request_region(struct pci_dev *pdev, int bar, const char *name);
|
||||
int pcim_request_region_exclusive(struct pci_dev *pdev, int bar,
|
||||
const char *name);
|
||||
void pcim_release_region(struct pci_dev *pdev, int bar);
|
||||
|
||||
@@ -2291,8 +2291,11 @@ static inline void pci_fixup_device(enum pci_fixup_pass pass,
|
||||
#endif
|
||||
|
||||
void __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen);
|
||||
void __iomem *pcim_iomap_region(struct pci_dev *pdev, int bar,
|
||||
const char *name);
|
||||
void pcim_iounmap(struct pci_dev *pdev, void __iomem *addr);
|
||||
void __iomem * const *pcim_iomap_table(struct pci_dev *pdev);
|
||||
int pcim_request_region(struct pci_dev *pdev, int bar, const char *name);
|
||||
int pcim_iomap_regions(struct pci_dev *pdev, int mask, const char *name);
|
||||
int pcim_iomap_regions_request_all(struct pci_dev *pdev, int mask,
|
||||
const char *name);
|
||||
|
||||
Reference in New Issue
Block a user