Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 | |
| 84 | static inline void pcibios_add_platform_entries(struct pci_dev *dev) |
| 85 | { |
| 86 | } |
| 87 | |
| 88 | #endif /* __V850_PCI_H__ */ |