iomap: implement pcim_iounmap_regions()
Implement pcim_iounmap_regions() - the opposite of pcim_iomap_regions(). Signed-off-by: Tejun heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
Родитель
a73984a0d5
Коммит
ec04b07584
|
@ -838,6 +838,7 @@ void __iomem * pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen);
|
||||||
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_iomap_regions(struct pci_dev *pdev, u16 mask, const char *name);
|
int pcim_iomap_regions(struct pci_dev *pdev, u16 mask, const char *name);
|
||||||
|
void pcim_iounmap_regions(struct pci_dev *pdev, u16 mask);
|
||||||
|
|
||||||
extern int pci_pci_problems;
|
extern int pci_pci_problems;
|
||||||
#define PCIPCI_FAIL 1 /* No PCI PCI DMA */
|
#define PCIPCI_FAIL 1 /* No PCI PCI DMA */
|
||||||
|
|
26
lib/devres.c
26
lib/devres.c
|
@ -296,5 +296,31 @@ int pcim_iomap_regions(struct pci_dev *pdev, u16 mask, const char *name)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(pcim_iomap_regions);
|
EXPORT_SYMBOL(pcim_iomap_regions);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pcim_iounmap_regions - Unmap and release PCI BARs
|
||||||
|
* @pdev: PCI device to map IO resources for
|
||||||
|
* @mask: Mask of BARs to unmap and release
|
||||||
|
*
|
||||||
|
* Unamp and release regions specified by @mask.
|
||||||
|
*/
|
||||||
|
void pcim_iounmap_regions(struct pci_dev *pdev, u16 mask)
|
||||||
|
{
|
||||||
|
void __iomem * const *iomap;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
iomap = pcim_iomap_table(pdev);
|
||||||
|
if (!iomap)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
|
||||||
|
if (!(mask & (1 << i)))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
pcim_iounmap(pdev, iomap[i]);
|
||||||
|
pci_release_region(pdev, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(pcim_iounmap_regions);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
Загрузка…
Ссылка в новой задаче