home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-frv / pci.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  3.7 KB  |  126 lines

  1. /* pci.h: FR-V specific PCI declarations
  2.  *
  3.  * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
  4.  * Written by David Howells (dhowells@redhat.com)
  5.  * - Derived from include/asm-m68k/pci.h
  6.  *
  7.  * This program is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU General Public License
  9.  * as published by the Free Software Foundation; either version
  10.  * 2 of the License, or (at your option) any later version.
  11.  */
  12.  
  13. #ifndef ASM_PCI_H
  14. #define    ASM_PCI_H
  15.  
  16. #include <linux/mm.h>
  17. #include <asm/scatterlist.h>
  18. #include <asm-generic/pci-dma-compat.h>
  19. #include <asm-generic/pci.h>
  20.  
  21. struct pci_dev;
  22.  
  23. #define pcibios_assign_all_busses()    0
  24.  
  25. static inline void pcibios_add_platform_entries(struct pci_dev *dev)
  26. {
  27. }
  28.  
  29. extern void pcibios_set_master(struct pci_dev *dev);
  30.  
  31. extern void pcibios_penalize_isa_irq(int irq);
  32.  
  33. #ifdef CONFIG_MMU
  34. extern void *consistent_alloc(gfp_t gfp, size_t size, dma_addr_t *dma_handle);
  35. extern void consistent_free(void *vaddr);
  36. extern void consistent_sync(void *vaddr, size_t size, int direction);
  37. extern void consistent_sync_page(struct page *page, unsigned long offset,
  38.                  size_t size, int direction);
  39. #endif
  40.  
  41. extern void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size,
  42.                   dma_addr_t *dma_handle);
  43.  
  44. extern void pci_free_consistent(struct pci_dev *hwdev, size_t size,
  45.                 void *vaddr, dma_addr_t dma_handle);
  46.  
  47. /* This is always fine. */
  48. #define pci_dac_dma_supported(pci_dev, mask)    (1)
  49.  
  50. /* Return the index of the PCI controller for device PDEV. */
  51. #define pci_controller_num(PDEV)    (0)
  52.  
  53. /* The PCI address space does equal the physical memory
  54.  * address space.  The networking and block device layers use
  55.  * this boolean for bounce buffer decisions.
  56.  */
  57. #define PCI_DMA_BUS_IS_PHYS    (1)
  58.  
  59. /* pci_unmap_{page,single} is a nop so... */
  60. #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME)
  61. #define DECLARE_PCI_UNMAP_LEN(LEN_NAME)
  62. #define pci_unmap_addr(PTR, ADDR_NAME)        (0)
  63. #define pci_unmap_addr_set(PTR, ADDR_NAME, VAL)    do { } while (0)
  64. #define pci_unmap_len(PTR, LEN_NAME)        (0)
  65. #define pci_unmap_len_set(PTR, LEN_NAME, VAL)    do { } while (0)
  66.  
  67. #ifdef CONFIG_PCI
  68. static inline void pci_dma_burst_advice(struct pci_dev *pdev,
  69.                     enum pci_dma_burst_strategy *strat,
  70.                     unsigned long *strategy_parameter)
  71. {
  72.     *strat = PCI_DMA_BURST_INFINITY;
  73.     *strategy_parameter = ~0UL;
  74. }
  75. #endif
  76.  
  77. /*
  78.  *    These are pretty much arbitary with the CoMEM implementation.
  79.  *    We have the whole address space to ourselves.
  80.  */
  81. #define PCIBIOS_MIN_IO        0x100
  82. #define PCIBIOS_MIN_MEM        0x00010000
  83.  
  84. /* Make physical memory consistent for a single
  85.  * streaming mode DMA translation after a transfer.
  86.  *
  87.  * If you perform a pci_map_single() but wish to interrogate the
  88.  * buffer using the cpu, yet do not wish to teardown the PCI dma
  89.  * mapping, you must call this function before doing so.  At the
  90.  * next point you give the PCI dma address back to the card, the
  91.  * device again owns the buffer.
  92.  */
  93. static inline void pci_dma_sync_single(struct pci_dev *hwdev,
  94.                        dma_addr_t dma_handle,
  95.                        size_t size, int direction)
  96. {
  97.     if (direction == PCI_DMA_NONE)
  98.                 BUG();
  99.  
  100.     frv_cache_wback_inv((unsigned long)bus_to_virt(dma_handle),
  101.                 (unsigned long)bus_to_virt(dma_handle) + size);
  102. }
  103.  
  104. /* Make physical memory consistent for a set of streaming
  105.  * mode DMA translations after a transfer.
  106.  *
  107.  * The same as pci_dma_sync_single but for a scatter-gather list,
  108.  * same rules and usage.
  109.  */
  110. static inline void pci_dma_sync_sg(struct pci_dev *hwdev,
  111.                    struct scatterlist *sg,
  112.                    int nelems, int direction)
  113. {
  114.     int i;
  115.  
  116.     if (direction == PCI_DMA_NONE)
  117.                 BUG();
  118.  
  119.     for (i = 0; i < nelems; i++)
  120.         frv_cache_wback_inv(sg_dma_address(&sg[i]),
  121.                     sg_dma_address(&sg[i])+sg_dma_len(&sg[i]));
  122. }
  123.  
  124.  
  125. #endif
  126.