diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-alpha/pci.h | 17 | ||||
-rw-r--r-- | include/asm-arm/pci.h | 8 | ||||
-rw-r--r-- | include/asm-frv/pci.h | 8 | ||||
-rw-r--r-- | include/asm-i386/pci.h | 8 | ||||
-rw-r--r-- | include/asm-ia64/pci.h | 17 | ||||
-rw-r--r-- | include/asm-mips/pci.h | 8 | ||||
-rw-r--r-- | include/asm-parisc/pci.h | 17 | ||||
-rw-r--r-- | include/asm-ppc/pci.h | 8 | ||||
-rw-r--r-- | include/asm-ppc64/pci.h | 17 | ||||
-rw-r--r-- | include/asm-sh/pci.h | 8 | ||||
-rw-r--r-- | include/asm-sh64/pci.h | 8 | ||||
-rw-r--r-- | include/asm-sparc/pci.h | 8 | ||||
-rw-r--r-- | include/asm-sparc64/pci.h | 17 | ||||
-rw-r--r-- | include/asm-v850/pci.h | 8 | ||||
-rw-r--r-- | include/asm-x86_64/pci.h | 8 | ||||
-rw-r--r-- | include/linux/pci.h | 9 |
16 files changed, 174 insertions, 0 deletions
diff --git a/include/asm-alpha/pci.h b/include/asm-alpha/pci.h index 0c7b57bc043a..6c71dc1ad4ca 100644 --- a/include/asm-alpha/pci.h +++ b/include/asm-alpha/pci.h | |||
@@ -223,6 +223,23 @@ pci_dac_dma_sync_single_for_device(struct pci_dev *pdev, dma64_addr_t dma_addr, | |||
223 | /* Nothing to do. */ | 223 | /* Nothing to do. */ |
224 | } | 224 | } |
225 | 225 | ||
226 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | ||
227 | enum pci_dma_burst_strategy *strat, | ||
228 | unsigned long *strategy_parameter) | ||
229 | { | ||
230 | unsigned long cacheline_size; | ||
231 | u8 byte; | ||
232 | |||
233 | pci_read_config_byte(pdev, PCI_CACHE_LINE_SIZE, &byte); | ||
234 | if (byte == 0) | ||
235 | cacheline_size = 1024; | ||
236 | else | ||
237 | cacheline_size = (int) byte * 4; | ||
238 | |||
239 | *strat = PCI_DMA_BURST_BOUNDARY; | ||
240 | *strategy_parameter = cacheline_size; | ||
241 | } | ||
242 | |||
226 | /* TODO: integrate with include/asm-generic/pci.h ? */ | 243 | /* TODO: integrate with include/asm-generic/pci.h ? */ |
227 | static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) | 244 | static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) |
228 | { | 245 | { |
diff --git a/include/asm-arm/pci.h b/include/asm-arm/pci.h index 40ffaefbeb1a..bc2ec425aca5 100644 --- a/include/asm-arm/pci.h +++ b/include/asm-arm/pci.h | |||
@@ -42,6 +42,14 @@ static inline void pcibios_penalize_isa_irq(int irq) | |||
42 | #define pci_unmap_len(PTR, LEN_NAME) ((PTR)->LEN_NAME) | 42 | #define pci_unmap_len(PTR, LEN_NAME) ((PTR)->LEN_NAME) |
43 | #define pci_unmap_len_set(PTR, LEN_NAME, VAL) (((PTR)->LEN_NAME) = (VAL)) | 43 | #define pci_unmap_len_set(PTR, LEN_NAME, VAL) (((PTR)->LEN_NAME) = (VAL)) |
44 | 44 | ||
45 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | ||
46 | enum pci_dma_burst_strategy *strat, | ||
47 | unsigned long *strategy_parameter) | ||
48 | { | ||
49 | *strat = PCI_DMA_BURST_INFINITY; | ||
50 | *strategy_parameter = ~0UL; | ||
51 | } | ||
52 | |||
45 | #define HAVE_PCI_MMAP | 53 | #define HAVE_PCI_MMAP |
46 | extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, | 54 | extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, |
47 | enum pci_mmap_state mmap_state, int write_combine); | 55 | enum pci_mmap_state mmap_state, int write_combine); |
diff --git a/include/asm-frv/pci.h b/include/asm-frv/pci.h index a6a469231f62..13427240664f 100644 --- a/include/asm-frv/pci.h +++ b/include/asm-frv/pci.h | |||
@@ -57,6 +57,14 @@ extern void pci_free_consistent(struct pci_dev *hwdev, size_t size, | |||
57 | */ | 57 | */ |
58 | #define PCI_DMA_BUS_IS_PHYS (1) | 58 | #define PCI_DMA_BUS_IS_PHYS (1) |
59 | 59 | ||
60 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | ||
61 | enum pci_dma_burst_strategy *strat, | ||
62 | unsigned long *strategy_parameter) | ||
63 | { | ||
64 | *strat = PCI_DMA_BURST_INFINITY; | ||
65 | *strategy_parameter = ~0UL; | ||
66 | } | ||
67 | |||
60 | /* | 68 | /* |
61 | * These are pretty much arbitary with the CoMEM implementation. | 69 | * These are pretty much arbitary with the CoMEM implementation. |
62 | * We have the whole address space to ourselves. | 70 | * We have the whole address space to ourselves. |
diff --git a/include/asm-i386/pci.h b/include/asm-i386/pci.h index fb749b85a739..bf07b3af85e3 100644 --- a/include/asm-i386/pci.h +++ b/include/asm-i386/pci.h | |||
@@ -99,6 +99,14 @@ static inline void pcibios_add_platform_entries(struct pci_dev *dev) | |||
99 | { | 99 | { |
100 | } | 100 | } |
101 | 101 | ||
102 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | ||
103 | enum pci_dma_burst_strategy *strat, | ||
104 | unsigned long *strategy_parameter) | ||
105 | { | ||
106 | *strat = PCI_DMA_BURST_INFINITY; | ||
107 | *strategy_parameter = ~0UL; | ||
108 | } | ||
109 | |||
102 | #endif /* __KERNEL__ */ | 110 | #endif /* __KERNEL__ */ |
103 | 111 | ||
104 | /* implement the pci_ DMA API in terms of the generic device dma_ one */ | 112 | /* implement the pci_ DMA API in terms of the generic device dma_ one */ |
diff --git a/include/asm-ia64/pci.h b/include/asm-ia64/pci.h index a8314ee4e7d2..c9f1ab4e477d 100644 --- a/include/asm-ia64/pci.h +++ b/include/asm-ia64/pci.h | |||
@@ -82,6 +82,23 @@ extern int pcibios_prep_mwi (struct pci_dev *); | |||
82 | #define sg_dma_len(sg) ((sg)->dma_length) | 82 | #define sg_dma_len(sg) ((sg)->dma_length) |
83 | #define sg_dma_address(sg) ((sg)->dma_address) | 83 | #define sg_dma_address(sg) ((sg)->dma_address) |
84 | 84 | ||
85 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | ||
86 | enum pci_dma_burst_strategy *strat, | ||
87 | unsigned long *strategy_parameter) | ||
88 | { | ||
89 | unsigned long cacheline_size; | ||
90 | u8 byte; | ||
91 | |||
92 | pci_read_config_byte(pdev, PCI_CACHE_LINE_SIZE, &byte); | ||
93 | if (byte == 0) | ||
94 | cacheline_size = 1024; | ||
95 | else | ||
96 | cacheline_size = (int) byte * 4; | ||
97 | |||
98 | *strat = PCI_DMA_BURST_MULTIPLE; | ||
99 | *strategy_parameter = cacheline_size; | ||
100 | } | ||
101 | |||
85 | #define HAVE_PCI_MMAP | 102 | #define HAVE_PCI_MMAP |
86 | extern int pci_mmap_page_range (struct pci_dev *dev, struct vm_area_struct *vma, | 103 | extern int pci_mmap_page_range (struct pci_dev *dev, struct vm_area_struct *vma, |
87 | enum pci_mmap_state mmap_state, int write_combine); | 104 | enum pci_mmap_state mmap_state, int write_combine); |
diff --git a/include/asm-mips/pci.h b/include/asm-mips/pci.h index c9c576b48556..20b93bfa4565 100644 --- a/include/asm-mips/pci.h +++ b/include/asm-mips/pci.h | |||
@@ -130,6 +130,14 @@ extern void pci_dac_dma_sync_single_for_cpu(struct pci_dev *pdev, | |||
130 | extern void pci_dac_dma_sync_single_for_device(struct pci_dev *pdev, | 130 | extern void pci_dac_dma_sync_single_for_device(struct pci_dev *pdev, |
131 | dma64_addr_t dma_addr, size_t len, int direction); | 131 | dma64_addr_t dma_addr, size_t len, int direction); |
132 | 132 | ||
133 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | ||
134 | enum pci_dma_burst_strategy *strat, | ||
135 | unsigned long *strategy_parameter) | ||
136 | { | ||
137 | *strat = PCI_DMA_BURST_INFINITY; | ||
138 | *strategy_parameter = ~0UL; | ||
139 | } | ||
140 | |||
133 | extern void pcibios_resource_to_bus(struct pci_dev *dev, | 141 | extern void pcibios_resource_to_bus(struct pci_dev *dev, |
134 | struct pci_bus_region *region, struct resource *res); | 142 | struct pci_bus_region *region, struct resource *res); |
135 | 143 | ||
diff --git a/include/asm-parisc/pci.h b/include/asm-parisc/pci.h index 0763c2982fb0..f9f5bf90111d 100644 --- a/include/asm-parisc/pci.h +++ b/include/asm-parisc/pci.h | |||
@@ -230,6 +230,23 @@ extern inline void pcibios_register_hba(struct pci_hba_data *x) | |||
230 | /* export the pci_ DMA API in terms of the dma_ one */ | 230 | /* export the pci_ DMA API in terms of the dma_ one */ |
231 | #include <asm-generic/pci-dma-compat.h> | 231 | #include <asm-generic/pci-dma-compat.h> |
232 | 232 | ||
233 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | ||
234 | enum pci_dma_burst_strategy *strat, | ||
235 | unsigned long *strategy_parameter) | ||
236 | { | ||
237 | unsigned long cacheline_size; | ||
238 | u8 byte; | ||
239 | |||
240 | pci_read_config_byte(pdev, PCI_CACHE_LINE_SIZE, &byte); | ||
241 | if (byte == 0) | ||
242 | cacheline_size = 1024; | ||
243 | else | ||
244 | cacheline_size = (int) byte * 4; | ||
245 | |||
246 | *strat = PCI_DMA_BURST_MULTIPLE; | ||
247 | *strategy_parameter = cacheline_size; | ||
248 | } | ||
249 | |||
233 | extern void | 250 | extern void |
234 | pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region, | 251 | pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region, |
235 | struct resource *res); | 252 | struct resource *res); |
diff --git a/include/asm-ppc/pci.h b/include/asm-ppc/pci.h index 002e7b305777..669e9de7a525 100644 --- a/include/asm-ppc/pci.h +++ b/include/asm-ppc/pci.h | |||
@@ -69,6 +69,14 @@ extern unsigned long pci_bus_to_phys(unsigned int ba, int busnr); | |||
69 | #define pci_unmap_len(PTR, LEN_NAME) (0) | 69 | #define pci_unmap_len(PTR, LEN_NAME) (0) |
70 | #define pci_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0) | 70 | #define pci_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0) |
71 | 71 | ||
72 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | ||
73 | enum pci_dma_burst_strategy *strat, | ||
74 | unsigned long *strategy_parameter) | ||
75 | { | ||
76 | *strat = PCI_DMA_BURST_INFINITY; | ||
77 | *strategy_parameter = ~0UL; | ||
78 | } | ||
79 | |||
72 | /* | 80 | /* |
73 | * At present there are very few 32-bit PPC machines that can have | 81 | * At present there are very few 32-bit PPC machines that can have |
74 | * memory above the 4GB point, and we don't support that. | 82 | * memory above the 4GB point, and we don't support that. |
diff --git a/include/asm-ppc64/pci.h b/include/asm-ppc64/pci.h index 411bf5dee394..20beb10c0902 100644 --- a/include/asm-ppc64/pci.h +++ b/include/asm-ppc64/pci.h | |||
@@ -78,6 +78,23 @@ static inline int pci_dac_dma_supported(struct pci_dev *hwdev,u64 mask) | |||
78 | return 0; | 78 | return 0; |
79 | } | 79 | } |
80 | 80 | ||
81 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | ||
82 | enum pci_dma_burst_strategy *strat, | ||
83 | unsigned long *strategy_parameter) | ||
84 | { | ||
85 | unsigned long cacheline_size; | ||
86 | u8 byte; | ||
87 | |||
88 | pci_read_config_byte(pdev, PCI_CACHE_LINE_SIZE, &byte); | ||
89 | if (byte == 0) | ||
90 | cacheline_size = 1024; | ||
91 | else | ||
92 | cacheline_size = (int) byte * 4; | ||
93 | |||
94 | *strat = PCI_DMA_BURST_MULTIPLE; | ||
95 | *strategy_parameter = cacheline_size; | ||
96 | } | ||
97 | |||
81 | extern int pci_domain_nr(struct pci_bus *bus); | 98 | extern int pci_domain_nr(struct pci_bus *bus); |
82 | 99 | ||
83 | /* Decide whether to display the domain number in /proc */ | 100 | /* Decide whether to display the domain number in /proc */ |
diff --git a/include/asm-sh/pci.h b/include/asm-sh/pci.h index 9c3b63d0105e..7237bc6a7280 100644 --- a/include/asm-sh/pci.h +++ b/include/asm-sh/pci.h | |||
@@ -96,6 +96,14 @@ static inline void pcibios_penalize_isa_irq(int irq) | |||
96 | #define sg_dma_address(sg) (virt_to_bus((sg)->dma_address)) | 96 | #define sg_dma_address(sg) (virt_to_bus((sg)->dma_address)) |
97 | #define sg_dma_len(sg) ((sg)->length) | 97 | #define sg_dma_len(sg) ((sg)->length) |
98 | 98 | ||
99 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | ||
100 | enum pci_dma_burst_strategy *strat, | ||
101 | unsigned long *strategy_parameter) | ||
102 | { | ||
103 | *strat = PCI_DMA_BURST_INFINITY; | ||
104 | *strategy_parameter = ~0UL; | ||
105 | } | ||
106 | |||
99 | /* Board-specific fixup routines. */ | 107 | /* Board-specific fixup routines. */ |
100 | extern void pcibios_fixup(void); | 108 | extern void pcibios_fixup(void); |
101 | extern void pcibios_fixup_irqs(void); | 109 | extern void pcibios_fixup_irqs(void); |
diff --git a/include/asm-sh64/pci.h b/include/asm-sh64/pci.h index 8cc14e139750..0ac15ab01cce 100644 --- a/include/asm-sh64/pci.h +++ b/include/asm-sh64/pci.h | |||
@@ -86,6 +86,14 @@ static inline void pcibios_penalize_isa_irq(int irq) | |||
86 | #define sg_dma_address(sg) ((sg)->dma_address) | 86 | #define sg_dma_address(sg) ((sg)->dma_address) |
87 | #define sg_dma_len(sg) ((sg)->length) | 87 | #define sg_dma_len(sg) ((sg)->length) |
88 | 88 | ||
89 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | ||
90 | enum pci_dma_burst_strategy *strat, | ||
91 | unsigned long *strategy_parameter) | ||
92 | { | ||
93 | *strat = PCI_DMA_BURST_INFINITY; | ||
94 | *strategy_parameter = ~0UL; | ||
95 | } | ||
96 | |||
89 | /* Board-specific fixup routines. */ | 97 | /* Board-specific fixup routines. */ |
90 | extern void pcibios_fixup(void); | 98 | extern void pcibios_fixup(void); |
91 | extern void pcibios_fixup_irqs(void); | 99 | extern void pcibios_fixup_irqs(void); |
diff --git a/include/asm-sparc/pci.h b/include/asm-sparc/pci.h index d200a25a7373..2fd65db95e92 100644 --- a/include/asm-sparc/pci.h +++ b/include/asm-sparc/pci.h | |||
@@ -144,6 +144,14 @@ extern inline int pci_dma_supported(struct pci_dev *hwdev, u64 mask) | |||
144 | 144 | ||
145 | #define pci_dac_dma_supported(dev, mask) (0) | 145 | #define pci_dac_dma_supported(dev, mask) (0) |
146 | 146 | ||
147 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | ||
148 | enum pci_dma_burst_strategy *strat, | ||
149 | unsigned long *strategy_parameter) | ||
150 | { | ||
151 | *strat = PCI_DMA_BURST_INFINITY; | ||
152 | *strategy_parameter = ~0UL; | ||
153 | } | ||
154 | |||
147 | static inline void pcibios_add_platform_entries(struct pci_dev *dev) | 155 | static inline void pcibios_add_platform_entries(struct pci_dev *dev) |
148 | { | 156 | { |
149 | } | 157 | } |
diff --git a/include/asm-sparc64/pci.h b/include/asm-sparc64/pci.h index 2a0c85cd1c11..402667300d01 100644 --- a/include/asm-sparc64/pci.h +++ b/include/asm-sparc64/pci.h | |||
@@ -220,6 +220,23 @@ static inline int pci_dma_mapping_error(dma_addr_t dma_addr) | |||
220 | return (dma_addr == PCI_DMA_ERROR_CODE); | 220 | return (dma_addr == PCI_DMA_ERROR_CODE); |
221 | } | 221 | } |
222 | 222 | ||
223 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | ||
224 | enum pci_dma_burst_strategy *strat, | ||
225 | unsigned long *strategy_parameter) | ||
226 | { | ||
227 | unsigned long cacheline_size; | ||
228 | u8 byte; | ||
229 | |||
230 | pci_read_config_byte(pdev, PCI_CACHE_LINE_SIZE, &byte); | ||
231 | if (byte == 0) | ||
232 | cacheline_size = 1024; | ||
233 | else | ||
234 | cacheline_size = (int) byte * 4; | ||
235 | |||
236 | *strat = PCI_DMA_BURST_BOUNDARY; | ||
237 | *strategy_parameter = cacheline_size; | ||
238 | } | ||
239 | |||
223 | /* Return the index of the PCI controller for device PDEV. */ | 240 | /* Return the index of the PCI controller for device PDEV. */ |
224 | 241 | ||
225 | extern int pci_domain_nr(struct pci_bus *bus); | 242 | extern int pci_domain_nr(struct pci_bus *bus); |
diff --git a/include/asm-v850/pci.h b/include/asm-v850/pci.h index e41941447b49..d26eb8d67311 100644 --- a/include/asm-v850/pci.h +++ b/include/asm-v850/pci.h | |||
@@ -81,6 +81,14 @@ extern void | |||
81 | pci_free_consistent (struct pci_dev *pdev, size_t size, void *cpu_addr, | 81 | pci_free_consistent (struct pci_dev *pdev, size_t size, void *cpu_addr, |
82 | dma_addr_t dma_addr); | 82 | dma_addr_t dma_addr); |
83 | 83 | ||
84 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | ||
85 | enum pci_dma_burst_strategy *strat, | ||
86 | unsigned long *strategy_parameter) | ||
87 | { | ||
88 | *strat = PCI_DMA_BURST_INFINITY; | ||
89 | *strategy_parameter = ~0UL; | ||
90 | } | ||
91 | |||
84 | static inline void pcibios_add_platform_entries(struct pci_dev *dev) | 92 | static inline void pcibios_add_platform_entries(struct pci_dev *dev) |
85 | { | 93 | { |
86 | } | 94 | } |
diff --git a/include/asm-x86_64/pci.h b/include/asm-x86_64/pci.h index 8712520ca47f..8461d6af102e 100644 --- a/include/asm-x86_64/pci.h +++ b/include/asm-x86_64/pci.h | |||
@@ -123,6 +123,14 @@ pci_dac_dma_sync_single_for_device(struct pci_dev *pdev, dma64_addr_t dma_addr, | |||
123 | flush_write_buffers(); | 123 | flush_write_buffers(); |
124 | } | 124 | } |
125 | 125 | ||
126 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | ||
127 | enum pci_dma_burst_strategy *strat, | ||
128 | unsigned long *strategy_parameter) | ||
129 | { | ||
130 | *strat = PCI_DMA_BURST_INFINITY; | ||
131 | *strategy_parameter = ~0UL; | ||
132 | } | ||
133 | |||
126 | #define HAVE_PCI_MMAP | 134 | #define HAVE_PCI_MMAP |
127 | extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, | 135 | extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, |
128 | enum pci_mmap_state mmap_state, int write_combine); | 136 | enum pci_mmap_state mmap_state, int write_combine); |
diff --git a/include/linux/pci.h b/include/linux/pci.h index cfa1455848f4..9ce4f1be093f 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -874,6 +874,15 @@ int pci_scan_bridge(struct pci_bus *bus, struct pci_dev * dev, int max, int pass | |||
874 | #define pci_pool_alloc(pool, flags, handle) dma_pool_alloc(pool, flags, handle) | 874 | #define pci_pool_alloc(pool, flags, handle) dma_pool_alloc(pool, flags, handle) |
875 | #define pci_pool_free(pool, vaddr, addr) dma_pool_free(pool, vaddr, addr) | 875 | #define pci_pool_free(pool, vaddr, addr) dma_pool_free(pool, vaddr, addr) |
876 | 876 | ||
877 | enum pci_dma_burst_strategy { | ||
878 | PCI_DMA_BURST_INFINITY, /* make bursts as large as possible, | ||
879 | strategy_parameter is N/A */ | ||
880 | PCI_DMA_BURST_BOUNDARY, /* disconnect at every strategy_parameter | ||
881 | byte boundaries */ | ||
882 | PCI_DMA_BURST_MULTIPLE, /* disconnect at some multiple of | ||
883 | strategy_parameter byte boundaries */ | ||
884 | }; | ||
885 | |||
877 | #if defined(CONFIG_ISA) || defined(CONFIG_EISA) | 886 | #if defined(CONFIG_ISA) || defined(CONFIG_EISA) |
878 | extern struct pci_dev *isa_bridge; | 887 | extern struct pci_dev *isa_bridge; |
879 | #endif | 888 | #endif |