Loading arch/sh/boards/mach-se/7751/pci.c +6 −3 Original line number Diff line number Diff line Loading @@ -30,6 +30,9 @@ #define PCIC_WRITE(x,v) writel((v), PCI_REG(x)) #define PCIC_READ(x) readl(PCI_REG(x)) #define xPCIBIOS_MIN_IO board_pci_channels->io_resource->start #define xPCIBIOS_MIN_MEM board_pci_channels->mem_resource->start /* * Description: This function sets up and initializes the pcic, sets * up the BARS, maps the DRAM into the address space etc, etc. Loading Loading @@ -97,12 +100,12 @@ int __init pcibios_init_platform(void) * meaning all calls go straight through... use BUG_ON to * catch erroneous assumption. */ BUG_ON(PCIBIOS_MIN_MEM != SH7751_PCI_MEMORY_BASE); BUG_ON(xPCIBIOS_MIN_MEM != SH7751_PCI_MEMORY_BASE); PCIC_WRITE(SH7751_PCIMBR, PCIBIOS_MIN_MEM); PCIC_WRITE(SH7751_PCIMBR, xPCIBIOS_MIN_MEM); /* Set IOBR for window containing area specified in pci.h */ PCIC_WRITE(SH7751_PCIIOBR, (PCIBIOS_MIN_IO & SH7751_PCIIOBR_MASK)); PCIC_WRITE(SH7751_PCIIOBR, (xPCIBIOS_MIN_IO & SH7751_PCIIOBR_MASK)); /* All done, may as well say so... */ printk("SH7751 PCI: Finished initialization of the PCI controller\n"); Loading arch/sh/drivers/pci/pci-lib.c +42 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,41 @@ #include <linux/types.h> #include <linux/pci.h> unsigned long PCIBIOS_MIN_IO = 0x0000; unsigned long PCIBIOS_MIN_MEM = 0; /* * We need to avoid collisions with `mirrored' VGA ports * and other strange ISA hardware, so we always want the * addresses to be allocated in the 0x000-0x0ff region * modulo 0x400. */ void pcibios_align_resource(void *data, struct resource *res, resource_size_t size, resource_size_t align) { struct pci_dev *dev = data; struct pci_channel *chan = dev->sysdata; resource_size_t start = res->start; if (res->flags & IORESOURCE_IO) { if (start < PCIBIOS_MIN_IO + chan->io_resource->start) start = PCIBIOS_MIN_IO + chan->io_resource->start; /* * Put everything into 0x00-0xff region modulo 0x400. */ if (start & 0x300) { start = (start + 0x3ff) & ~0x3ff; res->start = start; } } else if (res->flags & IORESOURCE_MEM) { if (start < PCIBIOS_MIN_MEM + chan->mem_resource->start) start = PCIBIOS_MIN_MEM + chan->mem_resource->start; } res->start = start; } int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, enum pci_mmap_state mmap_state, int write_combine) { Loading @@ -24,3 +59,10 @@ int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, vma->vm_end - vma->vm_start, vma->vm_page_prot); } #ifdef CONFIG_HOTPLUG EXPORT_SYMBOL(pcibios_resource_to_bus); EXPORT_SYMBOL(pcibios_bus_to_resource); EXPORT_SYMBOL(PCIBIOS_MIN_IO); EXPORT_SYMBOL(PCIBIOS_MIN_MEM); #endif arch/sh/drivers/pci/pci-new.c +0 −23 Original line number Diff line number Diff line Loading @@ -129,29 +129,6 @@ pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, res->end = region->end + offset; } void pcibios_align_resource(void *data, struct resource *res, resource_size_t size, resource_size_t align) __attribute__ ((weak)); /* * We need to avoid collisions with `mirrored' VGA ports * and other strange ISA hardware, so we always want the * addresses to be allocated in the 0x000-0x0ff region * modulo 0x400. */ void pcibios_align_resource(void *data, struct resource *res, resource_size_t size, resource_size_t align) { if (res->flags & IORESOURCE_IO) { resource_size_t start = res->start; if (start & 0x300) { start = (start + 0x3ff) & ~0x3ff; res->start = start; } } } int pcibios_enable_device(struct pci_dev *dev, int mask) { u16 cmd, old_cmd; Loading arch/sh/drivers/pci/pci.c +0 −23 Original line number Diff line number Diff line Loading @@ -86,29 +86,6 @@ void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, res->end = region->end; } void pcibios_align_resource(void *data, struct resource *res, resource_size_t size, resource_size_t align) __attribute__ ((weak)); /* * We need to avoid collisions with `mirrored' VGA ports * and other strange ISA hardware, so we always want the * addresses to be allocated in the 0x000-0x0ff region * modulo 0x400. */ void pcibios_align_resource(void *data, struct resource *res, resource_size_t size, resource_size_t align) { if (res->flags & IORESOURCE_IO) { resource_size_t start = res->start; if (start & 0x300) { start = (start + 0x3ff) & ~0x3ff; res->start = start; } } } int pcibios_enable_device(struct pci_dev *dev, int mask) { u16 cmd, old_cmd; Loading arch/sh/include/asm/pci.h +1 −4 Original line number Diff line number Diff line Loading @@ -33,10 +33,7 @@ struct pci_channel { */ extern struct pci_channel board_pci_channels[]; /* ugly as hell, but makes drivers/pci/setup-res.c compile and work */ #define __PCI_CHAN(bus) ((struct pci_channel *)bus->sysdata) #define PCIBIOS_MIN_IO __PCI_CHAN(bus)->io_resource->start #define PCIBIOS_MIN_MEM __PCI_CHAN(bus)->mem_resource->start extern unsigned long PCIBIOS_MIN_IO, PCIBIOS_MIN_MEM; struct pci_dev; Loading Loading
arch/sh/boards/mach-se/7751/pci.c +6 −3 Original line number Diff line number Diff line Loading @@ -30,6 +30,9 @@ #define PCIC_WRITE(x,v) writel((v), PCI_REG(x)) #define PCIC_READ(x) readl(PCI_REG(x)) #define xPCIBIOS_MIN_IO board_pci_channels->io_resource->start #define xPCIBIOS_MIN_MEM board_pci_channels->mem_resource->start /* * Description: This function sets up and initializes the pcic, sets * up the BARS, maps the DRAM into the address space etc, etc. Loading Loading @@ -97,12 +100,12 @@ int __init pcibios_init_platform(void) * meaning all calls go straight through... use BUG_ON to * catch erroneous assumption. */ BUG_ON(PCIBIOS_MIN_MEM != SH7751_PCI_MEMORY_BASE); BUG_ON(xPCIBIOS_MIN_MEM != SH7751_PCI_MEMORY_BASE); PCIC_WRITE(SH7751_PCIMBR, PCIBIOS_MIN_MEM); PCIC_WRITE(SH7751_PCIMBR, xPCIBIOS_MIN_MEM); /* Set IOBR for window containing area specified in pci.h */ PCIC_WRITE(SH7751_PCIIOBR, (PCIBIOS_MIN_IO & SH7751_PCIIOBR_MASK)); PCIC_WRITE(SH7751_PCIIOBR, (xPCIBIOS_MIN_IO & SH7751_PCIIOBR_MASK)); /* All done, may as well say so... */ printk("SH7751 PCI: Finished initialization of the PCI controller\n"); Loading
arch/sh/drivers/pci/pci-lib.c +42 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,41 @@ #include <linux/types.h> #include <linux/pci.h> unsigned long PCIBIOS_MIN_IO = 0x0000; unsigned long PCIBIOS_MIN_MEM = 0; /* * We need to avoid collisions with `mirrored' VGA ports * and other strange ISA hardware, so we always want the * addresses to be allocated in the 0x000-0x0ff region * modulo 0x400. */ void pcibios_align_resource(void *data, struct resource *res, resource_size_t size, resource_size_t align) { struct pci_dev *dev = data; struct pci_channel *chan = dev->sysdata; resource_size_t start = res->start; if (res->flags & IORESOURCE_IO) { if (start < PCIBIOS_MIN_IO + chan->io_resource->start) start = PCIBIOS_MIN_IO + chan->io_resource->start; /* * Put everything into 0x00-0xff region modulo 0x400. */ if (start & 0x300) { start = (start + 0x3ff) & ~0x3ff; res->start = start; } } else if (res->flags & IORESOURCE_MEM) { if (start < PCIBIOS_MIN_MEM + chan->mem_resource->start) start = PCIBIOS_MIN_MEM + chan->mem_resource->start; } res->start = start; } int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, enum pci_mmap_state mmap_state, int write_combine) { Loading @@ -24,3 +59,10 @@ int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, vma->vm_end - vma->vm_start, vma->vm_page_prot); } #ifdef CONFIG_HOTPLUG EXPORT_SYMBOL(pcibios_resource_to_bus); EXPORT_SYMBOL(pcibios_bus_to_resource); EXPORT_SYMBOL(PCIBIOS_MIN_IO); EXPORT_SYMBOL(PCIBIOS_MIN_MEM); #endif
arch/sh/drivers/pci/pci-new.c +0 −23 Original line number Diff line number Diff line Loading @@ -129,29 +129,6 @@ pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, res->end = region->end + offset; } void pcibios_align_resource(void *data, struct resource *res, resource_size_t size, resource_size_t align) __attribute__ ((weak)); /* * We need to avoid collisions with `mirrored' VGA ports * and other strange ISA hardware, so we always want the * addresses to be allocated in the 0x000-0x0ff region * modulo 0x400. */ void pcibios_align_resource(void *data, struct resource *res, resource_size_t size, resource_size_t align) { if (res->flags & IORESOURCE_IO) { resource_size_t start = res->start; if (start & 0x300) { start = (start + 0x3ff) & ~0x3ff; res->start = start; } } } int pcibios_enable_device(struct pci_dev *dev, int mask) { u16 cmd, old_cmd; Loading
arch/sh/drivers/pci/pci.c +0 −23 Original line number Diff line number Diff line Loading @@ -86,29 +86,6 @@ void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, res->end = region->end; } void pcibios_align_resource(void *data, struct resource *res, resource_size_t size, resource_size_t align) __attribute__ ((weak)); /* * We need to avoid collisions with `mirrored' VGA ports * and other strange ISA hardware, so we always want the * addresses to be allocated in the 0x000-0x0ff region * modulo 0x400. */ void pcibios_align_resource(void *data, struct resource *res, resource_size_t size, resource_size_t align) { if (res->flags & IORESOURCE_IO) { resource_size_t start = res->start; if (start & 0x300) { start = (start + 0x3ff) & ~0x3ff; res->start = start; } } } int pcibios_enable_device(struct pci_dev *dev, int mask) { u16 cmd, old_cmd; Loading
arch/sh/include/asm/pci.h +1 −4 Original line number Diff line number Diff line Loading @@ -33,10 +33,7 @@ struct pci_channel { */ extern struct pci_channel board_pci_channels[]; /* ugly as hell, but makes drivers/pci/setup-res.c compile and work */ #define __PCI_CHAN(bus) ((struct pci_channel *)bus->sysdata) #define PCIBIOS_MIN_IO __PCI_CHAN(bus)->io_resource->start #define PCIBIOS_MIN_MEM __PCI_CHAN(bus)->mem_resource->start extern unsigned long PCIBIOS_MIN_IO, PCIBIOS_MIN_MEM; struct pci_dev; Loading