1 | /* SPDX-License-Identifier: GPL-2.0+ */ |
2 | /* Generic I/O port emulation. |
3 | * |
4 | * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. |
5 | * Written by David Howells (dhowells@redhat.com) |
6 | */ |
7 | #ifndef __ASM_GENERIC_PCI_IOMAP_H |
8 | #define __ASM_GENERIC_PCI_IOMAP_H |
9 | |
10 | struct pci_dev; |
11 | #ifdef CONFIG_PCI |
12 | /* Create a virtual mapping cookie for a PCI BAR (memory or IO) */ |
13 | extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max); |
14 | extern void __iomem *pci_iomap_wc(struct pci_dev *dev, int bar, unsigned long max); |
15 | extern void __iomem *pci_iomap_range(struct pci_dev *dev, int bar, |
16 | unsigned long offset, |
17 | unsigned long maxlen); |
18 | extern void __iomem *pci_iomap_wc_range(struct pci_dev *dev, int bar, |
19 | unsigned long offset, |
20 | unsigned long maxlen); |
21 | extern void pci_iounmap(struct pci_dev *dev, void __iomem *); |
22 | /* Create a virtual mapping cookie for a port on a given PCI device. |
23 | * Do not call this directly, it exists to make it easier for architectures |
24 | * to override */ |
25 | #ifdef CONFIG_NO_GENERIC_PCI_IOPORT_MAP |
26 | extern void __iomem *__pci_ioport_map(struct pci_dev *dev, unsigned long port, |
27 | unsigned int nr); |
28 | #elif !defined(CONFIG_HAS_IOPORT_MAP) |
29 | #define __pci_ioport_map(dev, port, nr) NULL |
30 | #else |
31 | #define __pci_ioport_map(dev, port, nr) ioport_map((port), (nr)) |
32 | #endif |
33 | |
34 | #elif defined(CONFIG_GENERIC_PCI_IOMAP) |
35 | static inline void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max) |
36 | { |
37 | return NULL; |
38 | } |
39 | |
40 | static inline void __iomem *pci_iomap_wc(struct pci_dev *dev, int bar, unsigned long max) |
41 | { |
42 | return NULL; |
43 | } |
44 | static inline void __iomem *pci_iomap_range(struct pci_dev *dev, int bar, |
45 | unsigned long offset, |
46 | unsigned long maxlen) |
47 | { |
48 | return NULL; |
49 | } |
50 | static inline void __iomem *pci_iomap_wc_range(struct pci_dev *dev, int bar, |
51 | unsigned long offset, |
52 | unsigned long maxlen) |
53 | { |
54 | return NULL; |
55 | } |
56 | static inline void pci_iounmap(struct pci_dev *dev, void __iomem *addr) |
57 | { } |
58 | #endif |
59 | |
60 | #endif /* __ASM_GENERIC_PCI_IOMAP_H */ |
61 | |