Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #ifndef __x8664_PCI_H |
2 | #define __x8664_PCI_H | |
3 | ||
1da177e4 LT |
4 | #ifdef __KERNEL__ |
5 | ||
08f1c192 | 6 | #ifdef CONFIG_CALGARY_IOMMU |
3cb47d79 | 7 | static inline void *pci_iommu(struct pci_bus *bus) |
08f1c192 MBY |
8 | { |
9 | struct pci_sysdata *sd = bus->sysdata; | |
10 | return sd->iommu; | |
11 | } | |
12 | ||
13 | static inline void set_pci_iommu(struct pci_bus *bus, void *val) | |
14 | { | |
15 | struct pci_sysdata *sd = bus->sysdata; | |
16 | sd->iommu = val; | |
17 | } | |
18 | #endif /* CONFIG_CALGARY_IOMMU */ | |
19 | ||
3cb47d79 JP |
20 | extern int (*pci_config_read)(int seg, int bus, int dev, int fn, |
21 | int reg, int len, u32 *value); | |
22 | extern int (*pci_config_write)(int seg, int bus, int dev, int fn, | |
23 | int reg, int len, u32 value); | |
1da177e4 | 24 | |
752bea4a | 25 | extern void dma32_reserve_bootmem(void); |
0dc243ae | 26 | extern void pci_iommu_alloc(void); |
1da177e4 | 27 | |
1da177e4 LT |
28 | /* The PCI address space does equal the physical memory |
29 | * address space. The networking and block device layers use | |
30 | * this boolean for bounce buffer decisions | |
31 | * | |
17a941d8 MBY |
32 | * On AMD64 it mostly equals, but we set it to zero if a hardware |
33 | * IOMMU (gart) of sotware IOMMU (swiotlb) is available. | |
1da177e4 | 34 | */ |
17a941d8 MBY |
35 | #define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys) |
36 | ||
966396d3 | 37 | #if defined(CONFIG_GART_IOMMU) || defined(CONFIG_CALGARY_IOMMU) |
1da177e4 | 38 | |
1da177e4 LT |
39 | #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) \ |
40 | dma_addr_t ADDR_NAME; | |
41 | #define DECLARE_PCI_UNMAP_LEN(LEN_NAME) \ | |
42 | __u32 LEN_NAME; | |
43 | #define pci_unmap_addr(PTR, ADDR_NAME) \ | |
44 | ((PTR)->ADDR_NAME) | |
45 | #define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) \ | |
46 | (((PTR)->ADDR_NAME) = (VAL)) | |
47 | #define pci_unmap_len(PTR, LEN_NAME) \ | |
48 | ((PTR)->LEN_NAME) | |
49 | #define pci_unmap_len_set(PTR, LEN_NAME, VAL) \ | |
50 | (((PTR)->LEN_NAME) = (VAL)) | |
51 | ||
52 | #else | |
53 | /* No IOMMU */ | |
54 | ||
1da177e4 LT |
55 | #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) |
56 | #define DECLARE_PCI_UNMAP_LEN(LEN_NAME) | |
57 | #define pci_unmap_addr(PTR, ADDR_NAME) (0) | |
58 | #define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) do { } while (0) | |
59 | #define pci_unmap_len(PTR, LEN_NAME) (0) | |
60 | #define pci_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0) | |
61 | ||
62 | #endif | |
63 | ||
1da177e4 LT |
64 | #endif /* __KERNEL__ */ |
65 | ||
1da177e4 | 66 | #endif /* __x8664_PCI_H */ |