diff options
Diffstat (limited to 'include/asm-sh/pci.h')
| -rw-r--r-- | include/asm-sh/pci.h | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/include/asm-sh/pci.h b/include/asm-sh/pci.h index 0a523c85b11c..6ccc948fe216 100644 --- a/include/asm-sh/pci.h +++ b/include/asm-sh/pci.h | |||
| @@ -32,6 +32,34 @@ extern struct pci_channel board_pci_channels[]; | |||
| 32 | #define PCIBIOS_MIN_IO board_pci_channels->io_resource->start | 32 | #define PCIBIOS_MIN_IO board_pci_channels->io_resource->start |
| 33 | #define PCIBIOS_MIN_MEM board_pci_channels->mem_resource->start | 33 | #define PCIBIOS_MIN_MEM board_pci_channels->mem_resource->start |
| 34 | 34 | ||
| 35 | /* | ||
| 36 | * I/O routine helpers | ||
| 37 | */ | ||
| 38 | #ifdef CONFIG_CPU_SUBTYPE_SH7780 | ||
| 39 | #define PCI_IO_AREA 0xFE400000 | ||
| 40 | #define PCI_IO_SIZE 0x00400000 | ||
| 41 | #else | ||
| 42 | #define PCI_IO_AREA 0xFE240000 | ||
| 43 | #define PCI_IO_SIZE 0X00040000 | ||
| 44 | #endif | ||
| 45 | |||
| 46 | #define PCI_MEM_SIZE 0x01000000 | ||
| 47 | |||
| 48 | #define SH4_PCIIOBR_MASK 0xFFFC0000 | ||
| 49 | #define pci_ioaddr(addr) (PCI_IO_AREA + (addr & ~SH4_PCIIOBR_MASK)) | ||
| 50 | |||
| 51 | #if defined(CONFIG_PCI) | ||
| 52 | #define is_pci_ioaddr(port) \ | ||
| 53 | (((port) >= PCIBIOS_MIN_IO) && \ | ||
| 54 | ((port) < (PCIBIOS_MIN_IO + PCI_IO_SIZE))) | ||
| 55 | #define is_pci_memaddr(port) \ | ||
| 56 | (((port) >= PCIBIOS_MIN_MEM) && \ | ||
| 57 | ((port) < (PCIBIOS_MIN_MEM + PCI_MEM_SIZE))) | ||
| 58 | #else | ||
| 59 | #define is_pci_ioaddr(port) (0) | ||
| 60 | #define is_pci_memaddr(port) (0) | ||
| 61 | #endif | ||
| 62 | |||
| 35 | struct pci_dev; | 63 | struct pci_dev; |
| 36 | 64 | ||
| 37 | extern void pcibios_set_master(struct pci_dev *dev); | 65 | extern void pcibios_set_master(struct pci_dev *dev); |
| @@ -87,15 +115,6 @@ static inline void pcibios_penalize_isa_irq(int irq, int active) | |||
| 87 | */ | 115 | */ |
| 88 | #define pci_dac_dma_supported(pci_dev, mask) (0) | 116 | #define pci_dac_dma_supported(pci_dev, mask) (0) |
| 89 | 117 | ||
| 90 | /* These macros should be used after a pci_map_sg call has been done | ||
| 91 | * to get bus addresses of each of the SG entries and their lengths. | ||
| 92 | * You should only work with the number of sg entries pci_map_sg | ||
| 93 | * returns, or alternatively stop on the first sg_dma_len(sg) which | ||
| 94 | * is 0. | ||
| 95 | */ | ||
| 96 | #define sg_dma_address(sg) (virt_to_bus((sg)->dma_address)) | ||
| 97 | #define sg_dma_len(sg) ((sg)->length) | ||
| 98 | |||
| 99 | #ifdef CONFIG_PCI | 118 | #ifdef CONFIG_PCI |
| 100 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | 119 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, |
| 101 | enum pci_dma_burst_strategy *strat, | 120 | enum pci_dma_burst_strategy *strat, |
| @@ -107,11 +126,12 @@ static inline void pci_dma_burst_advice(struct pci_dev *pdev, | |||
| 107 | #endif | 126 | #endif |
| 108 | 127 | ||
| 109 | /* Board-specific fixup routines. */ | 128 | /* Board-specific fixup routines. */ |
| 110 | extern void pcibios_fixup(void); | 129 | void pcibios_fixup(void); |
| 111 | extern void pcibios_fixup_irqs(void); | 130 | int pcibios_init_platform(void); |
| 131 | int pcibios_map_platform_irq(struct pci_dev *dev, u8 slot, u8 pin); | ||
| 112 | 132 | ||
| 113 | #ifdef CONFIG_PCI_AUTO | 133 | #ifdef CONFIG_PCI_AUTO |
| 114 | extern int pciauto_assign_resources(int busno, struct pci_channel *hose); | 134 | int pciauto_assign_resources(int busno, struct pci_channel *hose); |
| 115 | #endif | 135 | #endif |
| 116 | 136 | ||
| 117 | static inline void pcibios_add_platform_entries(struct pci_dev *dev) | 137 | static inline void pcibios_add_platform_entries(struct pci_dev *dev) |
