linux/arch/blackfin/include/asm/pci.h
<<
>>
Prefs
   1/* Changed from asm-m68k version, Lineo Inc.    May 2001        */
   2
   3#ifndef _ASM_BFIN_PCI_H
   4#define _ASM_BFIN_PCI_H
   5
   6#include <asm/scatterlist.h>
   7
   8/*
   9 *
  10 * Written by Wout Klaren.
  11 */
  12
  13/* Added by Chang Junxiao */
  14#define PCIBIOS_MIN_IO 0x00001000
  15#define PCIBIOS_MIN_MEM 0x10000000
  16
  17#define PCI_DMA_BUS_IS_PHYS       (1)
  18struct pci_ops;
  19
  20/*
  21 * Structure with hardware dependent information and functions of the
  22 * PCI bus.
  23 */
  24struct pci_bus_info {
  25
  26        /*
  27         * Resources of the PCI bus.
  28         */
  29        struct resource mem_space;
  30        struct resource io_space;
  31
  32        /*
  33         * System dependent functions.
  34         */
  35        struct pci_ops *bfin_pci_ops;
  36        void (*fixup) (int pci_modify);
  37        void (*conf_device) (unsigned char bus, unsigned char device_fn);
  38};
  39
  40#define pcibios_assign_all_busses()     0
  41static inline void pcibios_set_master(struct pci_dev *dev)
  42{
  43
  44        /* No special bus mastering setup handling */
  45}
  46static inline void pcibios_penalize_isa_irq(int irq)
  47{
  48
  49        /* We don't do dynamic PCI IRQ allocation */
  50}
  51static inline dma_addr_t pci_map_single(struct pci_dev *hwdev, void *ptr,
  52                                        size_t size, int direction)
  53{
  54        if (direction == PCI_DMA_NONE)
  55                BUG();
  56
  57         /* return virt_to_bus(ptr); */
  58        return (dma_addr_t) ptr;
  59}
  60
  61/* Unmap a single streaming mode DMA translation.  The dma_addr and size
  62 * must match what was provided for in a previous pci_map_single call.  All
  63 * other usages are undefined.
  64 *
  65 * After this call, reads by the cpu to the buffer are guarenteed to see
  66 * whatever the device wrote there.
  67 */
  68static inline void pci_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr,
  69                                    size_t size, int direction)
  70{
  71        if (direction == PCI_DMA_NONE)
  72                BUG();
  73
  74        /* Nothing to do */
  75}
  76
  77/* Map a set of buffers described by scatterlist in streaming
  78 * mode for DMA.  This is the scather-gather version of the
  79 * above pci_map_single interface.  Here the scatter gather list
  80 * elements are each tagged with the appropriate dma address
  81 * and length.  They are obtained via sg_dma_{address,length}(SG).
  82 *
  83 * NOTE: An implementation may be able to use a smaller number of
  84 *       DMA address/length pairs than there are SG table elements.
  85 *       (for example via virtual mapping capabilities)
  86 *       The routine returns the number of addr/length pairs actually
  87 *       used, at most nents.
  88 *
  89 * Device ownership issues as mentioned above for pci_map_single are
  90 * the same here.
  91 */
  92static inline int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg,
  93                             int nents, int direction)
  94{
  95        if (direction == PCI_DMA_NONE)
  96                BUG();
  97        return nents;
  98}
  99
 100/* Unmap a set of streaming mode DMA translations.
 101 * Again, cpu read rules concerning calls here are the same as for
 102 * pci_unmap_single() above.
 103 */
 104static inline void pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg,
 105                                int nents, int direction)
 106{
 107        if (direction == PCI_DMA_NONE)
 108                BUG();
 109
 110        /* Nothing to do */
 111}
 112
 113/* Make physical memory consistent for a single
 114 * streaming mode DMA translation after a transfer.
 115 *
 116 * If you perform a pci_map_single() but wish to interrogate the
 117 * buffer using the cpu, yet do not wish to teardown the PCI dma
 118 * mapping, you must call this function before doing so.  At the
 119 * next point you give the PCI dma address back to the card, the
 120 * device again owns the buffer.
 121 */
 122static inline void pci_dma_sync_single(struct pci_dev *hwdev,
 123                                       dma_addr_t dma_handle, size_t size,
 124                                       int direction)
 125{
 126        if (direction == PCI_DMA_NONE)
 127                BUG();
 128
 129        /* Nothing to do */
 130}
 131
 132/* Make physical memory consistent for a set of streaming
 133 * mode DMA translations after a transfer.
 134 *
 135 * The same as pci_dma_sync_single but for a scatter-gather list,
 136 * same rules and usage.
 137 */
 138static inline void pci_dma_sync_sg(struct pci_dev *hwdev,
 139                                   struct scatterlist *sg, int nelems,
 140                                   int direction)
 141{
 142        if (direction == PCI_DMA_NONE)
 143                BUG();
 144
 145        /* Nothing to do */
 146}
 147
 148#endif                          /* _ASM_BFIN_PCI_H */
 149