Loading arch/sh/include/asm/pci.h +11 −18 Original line number Diff line number Diff line Loading @@ -90,7 +90,6 @@ static inline void pcibios_penalize_isa_irq(int irq, int active) #define pci_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0) #endif #ifdef CONFIG_PCI static inline void pci_dma_burst_advice(struct pci_dev *pdev, enum pci_dma_burst_strategy *strat, unsigned long *strategy_parameter) Loading @@ -99,24 +98,18 @@ static inline void pci_dma_burst_advice(struct pci_dev *pdev, *strategy_parameter = ~0UL; } static inline int __is_pci_memory(unsigned long phys_addr, unsigned long size) { struct pci_channel *p; struct resource *res; for (p = board_pci_channels; p->init; p++) { res = p->mem_resource; if (p->enabled && (phys_addr >= res->start) && (phys_addr + size) <= (res->end + 1)) return 1; } return 0; } #ifdef CONFIG_SUPERH32 /* * If we're on an SH7751 or SH7780 PCI controller, PCI memory is mapped * at the end of the address space in a special non-translatable area. */ #define PCI_MEM_FIXED_START 0xfd000000 #define PCI_MEM_FIXED_END (PCI_MEM_FIXED_START + 0x01000000) #define is_pci_memory_fixed_range(s, e) \ ((s) >= PCI_MEM_FIXED_START && (e) < PCI_MEM_FIXED_END) #else static inline int __is_pci_memory(unsigned long phys_addr, unsigned long size) { return 0; } #define is_pci_memory_fixed_range(s, e) (0) #endif /* Board-specific fixup routines. */ Loading arch/sh/mm/ioremap_32.c +7 −7 Original line number Diff line number Diff line Loading @@ -46,17 +46,15 @@ void __iomem *__ioremap(unsigned long phys_addr, unsigned long size, return NULL; /* * If we're on an SH7751 or SH7780 PCI controller, PCI memory is * mapped at the end of the address space (typically 0xfd000000) * in a non-translatable area, so mapping through page tables for * this area is not only pointless, but also fundamentally * broken. Just return the physical address instead. * If we're in the fixed PCI memory range, mapping through page * tables is not only pointless, but also fundamentally broken. * Just return the physical address instead. * * For boards that map a small PCI memory aperture somewhere in * P1/P2 space, ioremap() will already do the right thing, * and we'll never get this far. */ if (__is_pci_memory(phys_addr, size)) if (is_pci_memory_fixed_range(phys_addr, size)) return (void __iomem *)phys_addr; #if !defined(CONFIG_PMB_FIXED) Loading Loading @@ -121,7 +119,9 @@ void __iounmap(void __iomem *addr) unsigned long seg = PXSEG(vaddr); struct vm_struct *p; if (seg < P3SEG || vaddr >= P3_ADDR_MAX || __is_pci_memory(vaddr, 0)) if (seg < P3SEG || vaddr >= P3_ADDR_MAX) return; if (is_pci_memory_fixed_range(vaddr, 0)) return; #ifdef CONFIG_PMB Loading Loading
arch/sh/include/asm/pci.h +11 −18 Original line number Diff line number Diff line Loading @@ -90,7 +90,6 @@ static inline void pcibios_penalize_isa_irq(int irq, int active) #define pci_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0) #endif #ifdef CONFIG_PCI static inline void pci_dma_burst_advice(struct pci_dev *pdev, enum pci_dma_burst_strategy *strat, unsigned long *strategy_parameter) Loading @@ -99,24 +98,18 @@ static inline void pci_dma_burst_advice(struct pci_dev *pdev, *strategy_parameter = ~0UL; } static inline int __is_pci_memory(unsigned long phys_addr, unsigned long size) { struct pci_channel *p; struct resource *res; for (p = board_pci_channels; p->init; p++) { res = p->mem_resource; if (p->enabled && (phys_addr >= res->start) && (phys_addr + size) <= (res->end + 1)) return 1; } return 0; } #ifdef CONFIG_SUPERH32 /* * If we're on an SH7751 or SH7780 PCI controller, PCI memory is mapped * at the end of the address space in a special non-translatable area. */ #define PCI_MEM_FIXED_START 0xfd000000 #define PCI_MEM_FIXED_END (PCI_MEM_FIXED_START + 0x01000000) #define is_pci_memory_fixed_range(s, e) \ ((s) >= PCI_MEM_FIXED_START && (e) < PCI_MEM_FIXED_END) #else static inline int __is_pci_memory(unsigned long phys_addr, unsigned long size) { return 0; } #define is_pci_memory_fixed_range(s, e) (0) #endif /* Board-specific fixup routines. */ Loading
arch/sh/mm/ioremap_32.c +7 −7 Original line number Diff line number Diff line Loading @@ -46,17 +46,15 @@ void __iomem *__ioremap(unsigned long phys_addr, unsigned long size, return NULL; /* * If we're on an SH7751 or SH7780 PCI controller, PCI memory is * mapped at the end of the address space (typically 0xfd000000) * in a non-translatable area, so mapping through page tables for * this area is not only pointless, but also fundamentally * broken. Just return the physical address instead. * If we're in the fixed PCI memory range, mapping through page * tables is not only pointless, but also fundamentally broken. * Just return the physical address instead. * * For boards that map a small PCI memory aperture somewhere in * P1/P2 space, ioremap() will already do the right thing, * and we'll never get this far. */ if (__is_pci_memory(phys_addr, size)) if (is_pci_memory_fixed_range(phys_addr, size)) return (void __iomem *)phys_addr; #if !defined(CONFIG_PMB_FIXED) Loading Loading @@ -121,7 +119,9 @@ void __iounmap(void __iomem *addr) unsigned long seg = PXSEG(vaddr); struct vm_struct *p; if (seg < P3SEG || vaddr >= P3_ADDR_MAX || __is_pci_memory(vaddr, 0)) if (seg < P3SEG || vaddr >= P3_ADDR_MAX) return; if (is_pci_memory_fixed_range(vaddr, 0)) return; #ifdef CONFIG_PMB Loading