diff options
author | Mikael Starvik <mikael.starvik@axis.com> | 2005-07-27 14:44:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-07-27 19:26:00 -0400 |
commit | 59c61138a556cf89692e0d5bd2c9de5df54b824f (patch) | |
tree | d068341a2b6384a5b8be6b86b85a2b1073f43a19 /include/asm-cris/pci.h | |
parent | 4f18cfbf0990bfc2e8e7706eeb9e5bef898ae923 (diff) |
[PATCH] CRIS update: pci
Patches to make it possible to add PCI support.
Signed-off-by: Mikael Starvik <starvik@axis.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/asm-cris/pci.h')
-rw-r--r-- | include/asm-cris/pci.h | 102 |
1 files changed, 97 insertions, 5 deletions
diff --git a/include/asm-cris/pci.h b/include/asm-cris/pci.h index c61041531889..2064bc1de074 100644 --- a/include/asm-cris/pci.h +++ b/include/asm-cris/pci.h | |||
@@ -1,13 +1,105 @@ | |||
1 | #ifndef __ASM_CRIS_PCI_H | 1 | #ifndef __ASM_CRIS_PCI_H |
2 | #define __ASM_CRIS_PCI_H | 2 | #define __ASM_CRIS_PCI_H |
3 | 3 | ||
4 | #include <linux/config.h> | ||
5 | |||
6 | #ifdef __KERNEL__ | ||
7 | #include <linux/mm.h> /* for struct page */ | ||
8 | |||
9 | /* Can be used to override the logic in pci_scan_bus for skipping | ||
10 | already-configured bus numbers - to be used for buggy BIOSes | ||
11 | or architectures with incomplete PCI setup by the loader */ | ||
12 | |||
13 | #define pcibios_assign_all_busses(void) 1 | ||
14 | |||
15 | extern unsigned long pci_mem_start; | ||
16 | #define PCIBIOS_MIN_IO 0x1000 | ||
17 | #define PCIBIOS_MIN_MEM 0x10000000 | ||
18 | |||
19 | #define PCIBIOS_MIN_CARDBUS_IO 0x4000 | ||
20 | |||
21 | void pcibios_config_init(void); | ||
22 | struct pci_bus * pcibios_scan_root(int bus); | ||
23 | int pcibios_assign_resources(void); | ||
24 | |||
25 | void pcibios_set_master(struct pci_dev *dev); | ||
26 | void pcibios_penalize_isa_irq(int irq); | ||
27 | struct irq_routing_table *pcibios_get_irq_routing_table(void); | ||
28 | int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq); | ||
29 | |||
30 | /* Dynamic DMA mapping stuff. | ||
31 | * i386 has everything mapped statically. | ||
32 | */ | ||
33 | |||
34 | #include <linux/types.h> | ||
35 | #include <linux/slab.h> | ||
4 | #include <asm/scatterlist.h> | 36 | #include <asm/scatterlist.h> |
5 | #include <asm-generic/pci-dma-compat.h> | 37 | #include <linux/string.h> |
38 | #include <asm/io.h> | ||
6 | 39 | ||
7 | /* ETRAX chips don't have a PCI bus. This file is just here because some stupid .c code | 40 | struct pci_dev; |
8 | * includes it even if CONFIG_PCI is not set. | 41 | |
42 | /* The PCI address space does equal the physical memory | ||
43 | * address space. The networking and block device layers use | ||
44 | * this boolean for bounce buffer decisions. | ||
9 | */ | 45 | */ |
10 | #define PCI_DMA_BUS_IS_PHYS (1) | 46 | #define PCI_DMA_BUS_IS_PHYS (1) |
11 | 47 | ||
12 | #endif /* __ASM_CRIS_PCI_H */ | 48 | /* pci_unmap_{page,single} is a nop so... */ |
49 | #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) | ||
50 | #define DECLARE_PCI_UNMAP_LEN(LEN_NAME) | ||
51 | #define pci_unmap_addr(PTR, ADDR_NAME) (0) | ||
52 | #define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) do { } while (0) | ||
53 | #define pci_unmap_len(PTR, LEN_NAME) (0) | ||
54 | #define pci_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0) | ||
55 | |||
56 | /* This is always fine. */ | ||
57 | #define pci_dac_dma_supported(pci_dev, mask) (1) | ||
13 | 58 | ||
59 | static inline dma64_addr_t | ||
60 | pci_dac_page_to_dma(struct pci_dev *pdev, struct page *page, unsigned long offset, int direction) | ||
61 | { | ||
62 | return ((dma64_addr_t) page_to_phys(page) + | ||
63 | (dma64_addr_t) offset); | ||
64 | } | ||
65 | |||
66 | static inline struct page * | ||
67 | pci_dac_dma_to_page(struct pci_dev *pdev, dma64_addr_t dma_addr) | ||
68 | { | ||
69 | return pfn_to_page(dma_addr >> PAGE_SHIFT); | ||
70 | } | ||
71 | |||
72 | static inline unsigned long | ||
73 | pci_dac_dma_to_offset(struct pci_dev *pdev, dma64_addr_t dma_addr) | ||
74 | { | ||
75 | return (dma_addr & ~PAGE_MASK); | ||
76 | } | ||
77 | |||
78 | static inline void | ||
79 | pci_dac_dma_sync_single_for_cpu(struct pci_dev *pdev, dma64_addr_t dma_addr, size_t len, int direction) | ||
80 | { | ||
81 | } | ||
82 | |||
83 | static inline void | ||
84 | pci_dac_dma_sync_single_for_device(struct pci_dev *pdev, dma64_addr_t dma_addr, size_t len, int direction) | ||
85 | { | ||
86 | } | ||
87 | |||
88 | #define HAVE_PCI_MMAP | ||
89 | extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, | ||
90 | enum pci_mmap_state mmap_state, int write_combine); | ||
91 | |||
92 | |||
93 | static inline void pcibios_add_platform_entries(struct pci_dev *dev) | ||
94 | { | ||
95 | } | ||
96 | |||
97 | #endif /* __KERNEL__ */ | ||
98 | |||
99 | /* implement the pci_ DMA API in terms of the generic device dma_ one */ | ||
100 | #include <asm-generic/pci-dma-compat.h> | ||
101 | |||
102 | /* generic pci stuff */ | ||
103 | #include <asm-generic/pci.h> | ||
104 | |||
105 | #endif /* __ASM_CRIS_PCI_H */ | ||