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>,
John Crispin <blogic@openwrt.org>, <linux-kernel@vger.kernel.org>
Subject: [PATCH v2 06/26] MIPS: PCI: Support generic drivers
Date: Tue, 30 Aug 2016 18:29:09 +0100 [thread overview]
Message-ID: <20160830172929.16948-7-paul.burton@imgtec.com> (raw)
In-Reply-To: <20160830172929.16948-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 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 45c7895..6c5133f 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -2983,6 +2983,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.9.3
next prev parent reply other threads:[~2016-08-30 17:31 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-30 17:29 [PATCH v2 00/26] MIPS generic kernels, SEAD-3 & Boston support Paul Burton
2016-08-30 17:29 ` [PATCH v2 01/26] MIPS: PCI: Support for CONFIG_PCI_DOMAINS_GENERIC Paul Burton
2016-08-30 17:29 ` [PATCH v2 02/26] MIPS: PCI: Make pcibios_set_cache_line_size an initcall Paul Burton
2016-08-30 17:29 ` [PATCH v2 03/26] MIPS: PCI: Inline pcibios_assign_all_busses Paul Burton
2016-08-30 17:29 ` [PATCH v2 04/26] MIPS: PCI: Split pci.c into pci.c & pci-legacy.c Paul Burton
2016-08-30 17:29 ` [PATCH v2 05/26] MIPS: PCI: Introduce CONFIG_PCI_DRIVERS_LEGACY Paul Burton
2016-08-30 17:29 ` Paul Burton [this message]
2016-08-30 17:29 ` [PATCH v2 07/26] MIPS: Sanitise coherentio semantics Paul Burton
2016-08-30 17:29 ` [PATCH v2 08/26] MIPS: dma-default: Don't check hw_coherentio if device is non-coherent Paul Burton
2016-08-30 17:29 ` [PATCH v2 09/26] MIPS: Support per-device DMA coherence Paul Burton
2016-08-30 17:29 ` [PATCH v2 10/26] MIPS: Print CM error reports upon bus errors Paul Burton
2016-08-30 17:29 ` [PATCH v2 11/26] dt-bindings: Document mti,mips-cpc binding Paul Burton
2016-08-30 17:29 ` [PATCH v2 12/26] MIPS: CPC: Provide a default mips_cpc_default_phys_base Paul Burton
2016-08-31 10:21 ` Sergei Shtylyov
2016-08-30 17:29 ` [PATCH v2 13/26] dt-bindings: Document mti,mips-cdmm binding Paul Burton
2016-08-30 17:29 ` [PATCH v2 14/26] MIPS: CDMM: Allow CDMM base address to be specified via DT Paul Burton
2016-08-30 17:29 ` [PATCH v2 15/26] irqchip: mips-cpu: Replace magic 0x100 with IE_SW0 Paul Burton
2016-08-30 17:29 ` [PATCH v2 16/26] irqchip: mips-cpu: Prepare for non-legacy IRQ domains Paul Burton
2016-08-30 17:29 ` [PATCH v2 17/26] irqchip: mips-cpu: Introduce IPI IRQ domain support Paul Burton
2016-09-01 19:46 ` Jason Cooper
2016-08-30 17:29 ` [PATCH v2 18/26] MIPS: smp-mt: Use CPU interrupt controller " Paul Burton
2016-08-30 17:29 ` [PATCH v2 19/26] MIPS: Stengthen IPI IRQ domain sanity check Paul Burton
2016-08-30 17:29 ` [PATCH v2 20/26] MIPS: Adjust MIPS64 CAC_BASE to reflect Config.K0 Paul Burton
2016-08-30 17:29 ` [PATCH v2 21/26] MIPS: Support generating Flattened Image Trees (.itb) Paul Burton
2016-08-30 17:29 ` [PATCH v2 22/26] MIPS: generic: Introduce generic DT-based board support Paul Burton
2016-08-30 17:29 ` [PATCH v2 23/26] MIPS: generic: Convert SEAD-3 to a generic board Paul Burton
2016-08-30 17:29 ` [PATCH v2 24/26] dt-bindings: Document img,boston-clock binding Paul Burton
2016-08-30 17:29 ` [PATCH v2 25/26] clk: boston: Add a driver for MIPS Boston board clocks Paul Burton
2016-08-30 17:29 ` [PATCH v2 26/26] MIPS: generic: Support MIPS Boston development boards 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=20160830172929.16948-7-paul.burton@imgtec.com \
--to=paul.burton@imgtec.com \
--cc=blogic@openwrt.org \
--cc=linux-kernel@vger.kernel.org \
--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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®