1#ifndef __ASM_SH64_PCI_H 2#define __ASM_SH64_PCI_H 3 4#ifdef __KERNEL__ 5 6#include <linux/dma-mapping.h> 7 8/* Can be used to override the logic in pci_scan_bus for skipping 9 already-configured bus numbers - to be used for buggy BIOSes 10 or architectures with incomplete PCI setup by the loader */ 11 12#define pcibios_assign_all_busses() 1 13 14/* 15 * These are currently the correct values for the STM overdrive board 16 * We need some way of setting this on a board specific way, it will 17 * not be the same on other boards I think 18 */ 19#if defined(CONFIG_CPU_SUBTYPE_SH5_101) || defined(CONFIG_CPU_SUBTYPE_SH5_103) 20#define PCIBIOS_MIN_IO 0x2000 21#define PCIBIOS_MIN_MEM 0x40000000 22#endif 23 24extern void pcibios_set_master(struct pci_dev *dev); 25 26/* 27 * Set penalize isa irq function 28 */ 29static inline void pcibios_penalize_isa_irq(int irq, int active) 30{ 31 /* We don't do dynamic PCI IRQ allocation */ 32} 33 34/* Dynamic DMA mapping stuff. 35 * SuperH has everything mapped statically like x86. 36 */ 37 38/* The PCI address space does equal the physical memory 39 * address space. The networking and block device layers use 40 * this boolean for bounce buffer decisions. 41 */ 42#define PCI_DMA_BUS_IS_PHYS (1) 43 44#include <linux/types.h> 45#include <linux/slab.h> 46#include <asm/scatterlist.h> 47#include <linux/string.h> 48#include <asm/io.h> 49 50/* pci_unmap_{single,page} being a nop depends upon the 51 * configuration. 52 */ 53#ifdef CONFIG_SH_PCIDMA_NONCOHERENT 54#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) \ 55 dma_addr_t ADDR_NAME; 56#define DECLARE_PCI_UNMAP_LEN(LEN_NAME) \ 57 __u32 LEN_NAME; 58#define pci_unmap_addr(PTR, ADDR_NAME) \ 59 ((PTR)->ADDR_NAME) 60#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) \ 61 (((PTR)->ADDR_NAME) = (VAL)) 62#define pci_unmap_len(PTR, LEN_NAME) \ 63 ((PTR)->LEN_NAME) 64#define pci_unmap_len_set(PTR, LEN_NAME, VAL) \ 65 (((PTR)->LEN_NAME) = (VAL)) 66#else 67#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) 68#define DECLARE_PCI_UNMAP_LEN(LEN_NAME) 69#define pci_unmap_addr(PTR, ADDR_NAME) (0) 70#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) do { } while (0) 71#define pci_unmap_len(PTR, LEN_NAME) (0) 72#define pci_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0) 73#endif 74 75/* Not supporting more than 32-bit PCI bus addresses now, but 76 * must satisfy references to this function. Change if needed. 77 */ 78#define pci_dac_dma_supported(pci_dev, mask) (0) 79 80/* These macros should be used after a pci_map_sg call has been done 81 * to get bus addresses of each of the SG entries and their lengths. 82 * You should only work with the number of sg entries pci_map_sg 83 * returns, or alternatively stop on the first sg_dma_len(sg) which 84 * is 0. 85 */ 86#define sg_dma_address(sg) ((sg)->dma_address) 87#define sg_dma_len(sg) ((sg)->length) 88 89#ifdef CONFIG_PCI 90static inline void pci_dma_burst_advice(struct pci_dev *pdev, 91 enum pci_dma_burst_strategy *strat, 92 unsigned long *strategy_parameter) 93{ 94 *strat = PCI_DMA_BURST_INFINITY; 95 *strategy_parameter = ~0UL; 96} 97#endif 98 99/* Board-specific fixup routines. */ 100extern void pcibios_fixup(void); 101extern void pcibios_fixup_irqs(void); 102 103#ifdef CONFIG_PCI_AUTO 104extern int pciauto_assign_resources(int busno, struct pci_channel *hose); 105#endif 106 107static inline void pcibios_add_platform_entries(struct pci_dev *dev) 108{ 109} 110 111#endif /* __KERNEL__ */ 112 113/* generic pci stuff */ 114#include <asm-generic/pci.h> 115 116/* generic DMA-mapping stuff */ 117#include <asm-generic/pci-dma-compat.h> 118 119#endif /* __ASM_SH64_PCI_H */ 120