mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 03:24:19 +02:00
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:
commit
dceed69701
|
|
@ -287,9 +287,9 @@ static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
regs = pcim_iomap(pdev, 1, 0);
|
regs = pcim_iomap_region(pdev, 1, "ast");
|
||||||
if (!regs)
|
if (IS_ERR(regs))
|
||||||
return -EIO;
|
return PTR_ERR(regs);
|
||||||
|
|
||||||
if (pdev->revision >= 0x40) {
|
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)
|
if (len < AST_IO_MM_LENGTH)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
ioregs = pcim_iomap(pdev, 2, 0);
|
ioregs = pcim_iomap_region(pdev, 2, "ast");
|
||||||
if (!ioregs)
|
if (IS_ERR(ioregs))
|
||||||
return -EIO;
|
return PTR_ERR(ioregs);
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* Anything else is best effort.
|
* 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);
|
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 */
|
/* Map guest-heap at end of vram */
|
||||||
vbox->guest_heap = pcim_iomap_range(pdev, 0,
|
vbox->guest_heap = pcim_iomap_range(pdev, 0,
|
||||||
GUEST_HEAP_OFFSET(vbox), GUEST_HEAP_SIZE);
|
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
|
* Mapping and region will get automatically released on driver detach. If
|
||||||
* desired, release manually only with pcim_iounmap_region().
|
* 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)
|
const char *name)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
@ -761,6 +761,7 @@ static void __iomem *pcim_iomap_region(struct pci_dev *pdev, int bar,
|
||||||
|
|
||||||
return IOMEM_ERR_PTR(ret);
|
return IOMEM_ERR_PTR(ret);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(pcim_iomap_region);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pcim_iounmap_region - Unmap and release a PCI BAR
|
* 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
|
* @pdev: PCI device to map IO resources for
|
||||||
* @mask: Mask of BARs to request and iomap
|
* @mask: Mask of BARs to request and iomap
|
||||||
* @name: Name associated with the requests
|
* @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.
|
* Returns: 0 on success, negative error code on failure.
|
||||||
*
|
*
|
||||||
* Request and iomap regions specified by @mask.
|
* 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)
|
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);
|
return _pcim_request_region(pdev, bar, name, 0);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(pcim_request_region);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pcim_request_region_exclusive - Request a PCI BAR exclusively
|
* 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
|
#endif
|
||||||
|
|
||||||
int pcim_intx(struct pci_dev *dev, int enable);
|
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,
|
int pcim_request_region_exclusive(struct pci_dev *pdev, int bar,
|
||||||
const char *name);
|
const char *name);
|
||||||
void pcim_release_region(struct pci_dev *pdev, int bar);
|
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
|
#endif
|
||||||
|
|
||||||
void __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen);
|
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 pcim_iounmap(struct pci_dev *pdev, void __iomem *addr);
|
||||||
void __iomem * const *pcim_iomap_table(struct pci_dev *pdev);
|
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(struct pci_dev *pdev, int mask, const char *name);
|
||||||
int pcim_iomap_regions_request_all(struct pci_dev *pdev, int mask,
|
int pcim_iomap_regions_request_all(struct pci_dev *pdev, int mask,
|
||||||
const char *name);
|
const char *name);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user