Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * include/asm-v850/pci.h -- PCI support | |
3 | * | |
4 | * Copyright (C) 2001,02 NEC Corporation | |
5 | * Copyright (C) 2001,02 Miles Bader <miles@gnu.org> | |
6 | * | |
7 | * This file is subject to the terms and conditions of the GNU General | |
8 | * Public License. See the file COPYING in the main directory of this | |
9 | * archive for more details. | |
10 | * | |
11 | * Written by Miles Bader <miles@gnu.org> | |
12 | */ | |
13 | ||
14 | #ifndef __V850_PCI_H__ | |
15 | #define __V850_PCI_H__ | |
16 | ||
17 | /* Get any platform-dependent definitions. */ | |
18 | #include <asm/machdep.h> | |
19 | ||
20 | #define pcibios_scan_all_fns(a, b) 0 | |
21 | ||
22 | /* Generic declarations. */ | |
23 | ||
24 | struct scatterlist; | |
25 | ||
26 | extern void pcibios_set_master (struct pci_dev *dev); | |
27 | ||
28 | /* `Grant' to PDEV the memory block at CPU_ADDR, for doing DMA. The | |
29 | 32-bit PCI bus mastering address to use is returned. the device owns | |
30 | this memory until either pci_unmap_single or pci_dma_sync_single_for_cpu is | |
31 | performed. */ | |
32 | extern dma_addr_t | |
33 | pci_map_single (struct pci_dev *pdev, void *cpu_addr, size_t size, int dir); | |
34 | ||
35 | /* Return to the CPU the PCI DMA memory block previously `granted' to | |
36 | PDEV, at DMA_ADDR. */ | |
37 | extern void | |
38 | pci_unmap_single (struct pci_dev *pdev, dma_addr_t dma_addr, size_t size, | |
39 | int dir); | |
40 | ||
41 | /* Make physical memory consistent for a single streaming mode DMA | |
42 | translation after a transfer. | |
43 | ||
44 | If you perform a pci_map_single() but wish to interrogate the | |
45 | buffer using the cpu, yet do not wish to teardown the PCI dma | |
46 | mapping, you must call this function before doing so. At the next | |
47 | point you give the PCI dma address back to the card, you must first | |
48 | perform a pci_dma_sync_for_device, and then the device again owns | |
49 | the buffer. */ | |
50 | extern void | |
51 | pci_dma_sync_single_for_cpu (struct pci_dev *dev, dma_addr_t dma_addr, size_t size, | |
52 | int dir); | |
53 | ||
54 | extern void | |
55 | pci_dma_sync_single_for_device (struct pci_dev *dev, dma_addr_t dma_addr, size_t size, | |
56 | int dir); | |
57 | ||
58 | ||
59 | /* Do multiple DMA mappings at once. */ | |
60 | extern int | |
61 | pci_map_sg (struct pci_dev *pdev, struct scatterlist *sg, int sg_len, int dir); | |
62 | ||
63 | /* Unmap multiple DMA mappings at once. */ | |
64 | extern void | |
65 | pci_unmap_sg (struct pci_dev *pdev, struct scatterlist *sg, int sg_len, | |
66 | int dir); | |
67 | ||
68 | /* Allocate and map kernel buffer using consistent mode DMA for PCI | |
69 | device. Returns non-NULL cpu-view pointer to the buffer if | |
70 | successful and sets *DMA_ADDR to the pci side dma address as well, | |
71 | else DMA_ADDR is undefined. */ | |
72 | extern void * | |
73 | pci_alloc_consistent (struct pci_dev *pdev, size_t size, dma_addr_t *dma_addr); | |
74 | ||
75 | /* Free and unmap a consistent DMA buffer. CPU_ADDR and DMA_ADDR must | |
76 | be values that were returned from pci_alloc_consistent. SIZE must be | |
77 | the same as what as passed into pci_alloc_consistent. References to | |
78 | the memory and mappings assosciated with CPU_ADDR or DMA_ADDR past | |
79 | this call are illegal. */ | |
80 | extern void | |
81 | pci_free_consistent (struct pci_dev *pdev, size_t size, void *cpu_addr, | |
82 | dma_addr_t dma_addr); | |
83 | ||
e24c2d96 DM |
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 | ||
1da177e4 LT |
92 | static inline void pcibios_add_platform_entries(struct pci_dev *dev) |
93 | { | |
94 | } | |
95 | ||
96 | #endif /* __V850_PCI_H__ */ |