From: Paul Burton <paul.burton@imgtec.com> To: <linux-mips@linux-mips.org>, Ralf Baechle <ralf@linux-mips.org> Cc: Paul Burton <paul.burton@imgtec.com> Subject: [PATCH v3 07/18] MIPS: PCI: Support generic drivers Date: Wed, 5 Oct 2016 18:18:13 +0100 [thread overview] Message-ID: <20161005171824.18014-8-paul.burton@imgtec.com> (raw) In-Reply-To: <20161005171824.18014-1-paul.burton@imgtec.com> Introduce support for PCI drivers using only functionality provided generically by the PCI subsystem, by adding the minimum arch-provided functions required. The driver this has been developed for & tested with the xilinx-pcie on a MIPS Boston development board. Signed-off-by: Paul Burton <paul.burton@imgtec.com> --- Changes in v3: None Changes in v2: None arch/mips/Kconfig | 1 + arch/mips/pci/Makefile | 1 + arch/mips/pci/pci-generic.c | 52 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 arch/mips/pci/pci-generic.c diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index d31f839..86d5b39 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -2998,6 +2998,7 @@ config PCI_DOMAINS_GENERIC bool config PCI_DRIVERS_GENERIC + select PCI_DOMAINS_GENERIC if PCI_DOMAINS bool config PCI_DRIVERS_LEGACY diff --git a/arch/mips/pci/Makefile b/arch/mips/pci/Makefile index 8478210..4b82148 100644 --- a/arch/mips/pci/Makefile +++ b/arch/mips/pci/Makefile @@ -4,6 +4,7 @@ obj-y += pci.o obj-$(CONFIG_PCI_DRIVERS_LEGACY)+= pci-legacy.o +obj-$(CONFIG_PCI_DRIVERS_GENERIC)+= pci-generic.o # # PCI bus host bridge specific code diff --git a/arch/mips/pci/pci-generic.c b/arch/mips/pci/pci-generic.c new file mode 100644 index 0000000..dce304d --- /dev/null +++ b/arch/mips/pci/pci-generic.c @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2016 Imagination Technologies + * Author: Paul Burton <paul.burton@imgtec.com> + * + * pcibios_align_resource taken from arch/arm/kernel/bios32.c. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include <linux/pci.h> + +/* + * 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. + * + * Why? Because some silly external IO cards only decode + * the low 10 bits of the IO address. The 0x00-0xff region + * is reserved for motherboard devices that decode all 16 + * bits, so it's ok to allocate at, say, 0x2800-0x28ff, + * but we want to try to avoid allocating at 0x2900-0x2bff + * which might have be mirrored at 0x0100-0x03ff.. + */ +resource_size_t pcibios_align_resource(void *data, const struct resource *res, + resource_size_t size, resource_size_t align) +{ + struct pci_dev *dev = data; + resource_size_t start = res->start; + struct pci_host_bridge *host_bridge; + + if (res->flags & IORESOURCE_IO && start & 0x300) + start = (start + 0x3ff) & ~0x3ff; + + start = (start + align - 1) & ~(align - 1); + + host_bridge = pci_find_host_bridge(dev->bus); + + if (host_bridge->align_resource) + return host_bridge->align_resource(dev, res, + start, size, align); + + return start; +} + +void pcibios_fixup_bus(struct pci_bus *bus) +{ + pci_read_bridge_bases(bus); +} -- 2.10.0
WARNING: multiple messages have this Message-ID (diff)
From: Paul Burton <paul.burton@imgtec.com> To: linux-mips@linux-mips.org, Ralf Baechle <ralf@linux-mips.org> Cc: Paul Burton <paul.burton@imgtec.com> Subject: [PATCH v3 07/18] MIPS: PCI: Support generic drivers Date: Wed, 5 Oct 2016 18:18:13 +0100 [thread overview] Message-ID: <20161005171824.18014-8-paul.burton@imgtec.com> (raw) Message-ID: <20161005171813.ueSoB0McOdObW3ladaMwlYstAUd8AN5MmBNZBQ8SOr4@z> (raw) In-Reply-To: <20161005171824.18014-1-paul.burton@imgtec.com> Introduce support for PCI drivers using only functionality provided generically by the PCI subsystem, by adding the minimum arch-provided functions required. The driver this has been developed for & tested with the xilinx-pcie on a MIPS Boston development board. Signed-off-by: Paul Burton <paul.burton@imgtec.com> --- Changes in v3: None Changes in v2: None arch/mips/Kconfig | 1 + arch/mips/pci/Makefile | 1 + arch/mips/pci/pci-generic.c | 52 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 arch/mips/pci/pci-generic.c diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index d31f839..86d5b39 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -2998,6 +2998,7 @@ config PCI_DOMAINS_GENERIC bool config PCI_DRIVERS_GENERIC + select PCI_DOMAINS_GENERIC if PCI_DOMAINS bool config PCI_DRIVERS_LEGACY diff --git a/arch/mips/pci/Makefile b/arch/mips/pci/Makefile index 8478210..4b82148 100644 --- a/arch/mips/pci/Makefile +++ b/arch/mips/pci/Makefile @@ -4,6 +4,7 @@ obj-y += pci.o obj-$(CONFIG_PCI_DRIVERS_LEGACY)+= pci-legacy.o +obj-$(CONFIG_PCI_DRIVERS_GENERIC)+= pci-generic.o # # PCI bus host bridge specific code diff --git a/arch/mips/pci/pci-generic.c b/arch/mips/pci/pci-generic.c new file mode 100644 index 0000000..dce304d --- /dev/null +++ b/arch/mips/pci/pci-generic.c @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2016 Imagination Technologies + * Author: Paul Burton <paul.burton@imgtec.com> + * + * pcibios_align_resource taken from arch/arm/kernel/bios32.c. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include <linux/pci.h> + +/* + * 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. + * + * Why? Because some silly external IO cards only decode + * the low 10 bits of the IO address. The 0x00-0xff region + * is reserved for motherboard devices that decode all 16 + * bits, so it's ok to allocate at, say, 0x2800-0x28ff, + * but we want to try to avoid allocating at 0x2900-0x2bff + * which might have be mirrored at 0x0100-0x03ff.. + */ +resource_size_t pcibios_align_resource(void *data, const struct resource *res, + resource_size_t size, resource_size_t align) +{ + struct pci_dev *dev = data; + resource_size_t start = res->start; + struct pci_host_bridge *host_bridge; + + if (res->flags & IORESOURCE_IO && start & 0x300) + start = (start + 0x3ff) & ~0x3ff; + + start = (start + align - 1) & ~(align - 1); + + host_bridge = pci_find_host_bridge(dev->bus); + + if (host_bridge->align_resource) + return host_bridge->align_resource(dev, res, + start, size, align); + + return start; +} + +void pcibios_fixup_bus(struct pci_bus *bus) +{ + pci_read_bridge_bases(bus); +} -- 2.10.0
next prev parent reply other threads:[~2016-10-05 17:22 UTC|newest] Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-10-05 17:18 [PATCH v3 00/18] MIPS generic kernels, SEAD-3 & Boston support Paul Burton 2016-10-05 17:18 ` Paul Burton 2016-10-05 17:18 ` [PATCH v3 01/18] MIPS: PCI: Use struct list_head lists Paul Burton 2016-10-05 17:18 ` Paul Burton 2016-10-05 17:18 ` [PATCH v3 02/18] MIPS: PCI: Support for CONFIG_PCI_DOMAINS_GENERIC Paul Burton 2016-10-05 17:18 ` Paul Burton 2016-10-05 17:18 ` [PATCH v3 03/18] MIPS: PCI: Make pcibios_set_cache_line_size an initcall Paul Burton 2016-10-05 17:18 ` Paul Burton 2016-10-05 17:18 ` [PATCH v3 04/18] MIPS: PCI: Inline pcibios_assign_all_busses Paul Burton 2016-10-05 17:18 ` Paul Burton 2016-10-05 17:18 ` [PATCH v3 05/18] MIPS: PCI: Split pci.c into pci.c & pci-legacy.c Paul Burton 2016-10-05 17:18 ` Paul Burton 2016-10-05 17:18 ` [PATCH v3 06/18] MIPS: PCI: Introduce CONFIG_PCI_DRIVERS_LEGACY Paul Burton 2016-10-05 17:18 ` Paul Burton 2016-10-05 17:18 ` Paul Burton [this message] 2016-10-05 17:18 ` [PATCH v3 07/18] MIPS: PCI: Support generic drivers Paul Burton 2016-10-05 17:18 ` [PATCH v3 08/18] MIPS: Sanitise coherentio semantics Paul Burton 2016-10-05 17:18 ` Paul Burton 2016-10-05 17:18 ` [PATCH v3 09/18] MIPS: dma-default: Don't check hw_coherentio if device is non-coherent Paul Burton 2016-10-05 17:18 ` Paul Burton 2016-10-05 17:18 ` [PATCH v3 10/18] MIPS: Support per-device DMA coherence Paul Burton 2016-10-05 17:18 ` Paul Burton 2016-10-05 17:18 ` [PATCH v3 11/18] MIPS: Print CM error reports upon bus errors Paul Burton 2016-10-05 17:18 ` Paul Burton 2016-10-05 17:18 ` [PATCH v3 12/18] MIPS: Adjust MIPS64 CAC_BASE to reflect Config.K0 Paul Burton 2016-10-05 17:18 ` Paul Burton 2016-10-05 17:18 ` [PATCH v3 13/18] MIPS: Support generating Flattened Image Trees (.itb) Paul Burton 2016-10-05 17:18 ` Paul Burton 2016-10-05 17:18 ` [PATCH v3 14/18] MIPS: generic: Introduce generic DT-based board support Paul Burton 2016-10-05 17:18 ` Paul Burton 2016-10-05 17:18 ` [PATCH v3 15/18] MIPS: generic: Convert SEAD-3 to a generic board Paul Burton 2016-10-05 17:18 ` Paul Burton 2016-10-05 17:18 ` [PATCH v3 16/18] dt-bindings: Document img,boston-clock binding Paul Burton 2016-10-05 17:18 ` Paul Burton [not found] ` <20161005171824.18014-17-paul.burton-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org> 2016-10-10 13:01 ` Rob Herring 2016-10-10 13:01 ` Rob Herring 2016-10-11 15:56 ` Paul Burton 2016-10-11 15:56 ` Paul Burton 2016-10-11 16:00 ` Paul Burton 2016-10-11 16:00 ` Paul Burton 2016-10-11 20:06 ` Rob Herring 2016-10-11 21:15 ` Paul Burton 2016-10-19 0:46 ` Stephen Boyd 2016-10-19 0:46 ` Stephen Boyd 2016-10-05 17:18 ` [PATCH v3 17/18] clk: boston: Add a driver for MIPS Boston board clocks Paul Burton 2016-10-05 17:18 ` Paul Burton 2016-10-07 9:50 ` Paul Burton 2016-10-05 17:18 ` [PATCH v3 18/18] MIPS: generic: Support MIPS Boston development boards Paul Burton 2016-10-05 17:18 ` Paul Burton
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20161005171824.18014-8-paul.burton@imgtec.com \ --to=paul.burton@imgtec.com \ --cc=linux-mips@linux-mips.org \ --cc=ralf@linux-mips.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.