Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1507779

[PATCH 03/12] PCI: iproc: Add BCMA type

Path csiph.com!news.mixmin.net!aioe.org!gothmog.csi.it!bofh.it!news.nic.it!robomod
From Ray Jui <ray.jui@broadcom.com>
Newsgroups linux.kernel
Subject [PATCH 03/12] PCI: iproc: Add BCMA type
Date Tue, 25 Oct 2016 00:20:02 +0200
Message-ID <svVL4-5iq-13@gated-at.bofh.it> (permalink)
References <svVL4-5iq-7@gated-at.bofh.it>
X-Original-To Bjorn Helgaas <bhelgaas@google.com>, Bjorn Helgaas <helgaas@kernel.org>
Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=8d7Dj4Ho5kV5NEdQuPCcwJwRGrgfRyq+k17hiUxnlOU=; b=UaJ2vhK63/ki/Cr4E9l5TN2e+MNrQCOAjbCMAlVTHCWKE6ZZeJoDT8zjgxl9DPeSRq SjY65o9wPUhDcQ6xxFNaOjRX4ltGYqIX2oQYkxKu8z1mW++q4QEJNDBtBy6/kWL7bpXU UhFNMOlaTdzcNAZifbjJ7WqzPdBmUXunRwfJ0=
X-Google-Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=8d7Dj4Ho5kV5NEdQuPCcwJwRGrgfRyq+k17hiUxnlOU=; b=FoDCxfsCYZQmXjJvGHq256XWahrDm477J+R3uKQnHQRQeahXGge5fJ73Gt7mBVyMJF sqW/4y+nBRSp+CpfawobbEbTJxrov9ehXX21iqHQykZpNerP6MQOcngvlwWfJvdc025Z tebPDbcAvmi5IIpWWbhPb2NGqrIyH2f4dO60fiaWozonSpByK11Nhl7GjFX1YLiubFft NpQOPCWHf96Gh1pwakziFLZ4Z+i3+LrbO94sd2szQNTE1yzJoL+EAtRbFHLpg+1/5voo qrKK4HhGHMby3ICgbfkBR2K+GoKMUk3O0zAKXtYPoxm1MbV9jrcARvHb+cLj4JHS4VSs 8sMA==
X-Gm-Message-State ABUngvdcaJPBaYPLSY/xf0nSOT7lOu0kF2HyFFNi0OcbUFGAZBobWsDp6ZboM6LWmYR6VgnX
X-Received by 10.98.57.140 with SMTP id u12mr33619602pfj.127.1477347464811; Mon, 24 Oct 2016 15:17:44 -0700 (PDT)
X-Mailer git-send-email 2.1.4
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 92
Organization linux.* mail to news gateway
X-Original-Cc linux-kernel@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com, linux-pci@vger.kernel.org, Alex Barba <alex.barba@broadcom.com>, Oza Oza <oza.oza@broadcom.com>, Ray Jui <rjui@broadcom.com>, Ray Jui <ray.jui@broadcom.com>
X-Original-Date Mon, 24 Oct 2016 15:17:03 -0700
X-Original-Message-ID <1477347432-17656-4-git-send-email-ray.jui@broadcom.com>
X-Original-References <1477347432-17656-1-git-send-email-ray.jui@broadcom.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1507779

Show key headers only | View raw


The iProc PCIe driver is currently using type IPROC_PCIE_PAXB for
the following SoCs: NS, NSP, Cygnus, NS2, and Pegasus. In fact, the BCMA
based NS uses a legacy PAXB controller that is slightly different from
the PAXB controller used in the rest of SoCs, e.g., some registers are
missing and it does not require software configuration of
outbound/inbound address mapping

A new type IPROC_PCIE_PAXB_BCMA is added in this patch to allow us to
properly support the BCMA based NS along with other iProc based SoCs
going forward

Signed-off-by: Ray Jui <ray.jui@broadcom.com>
Reviewed-by: Scott Branden <scott.branden@broadcom.com>
---
 drivers/pci/host/pcie-iproc-bcma.c |  1 +
 drivers/pci/host/pcie-iproc-msi.c  |  1 +
 drivers/pci/host/pcie-iproc.c      | 14 ++++++++++++++
 drivers/pci/host/pcie-iproc.h      |  3 ++-
 4 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/host/pcie-iproc-bcma.c b/drivers/pci/host/pcie-iproc-bcma.c
index 8ce0890..bd4c9ec 100644
--- a/drivers/pci/host/pcie-iproc-bcma.c
+++ b/drivers/pci/host/pcie-iproc-bcma.c
@@ -54,6 +54,7 @@ static int iproc_pcie_bcma_probe(struct bcma_device *bdev)
 
 	pcie->dev = dev;
 
+	pcie->type = IPROC_PCIE_PAXB_BCMA;
 	pcie->base = bdev->io_addr;
 	if (!pcie->base) {
 		dev_err(dev, "no controller registers\n");
diff --git a/drivers/pci/host/pcie-iproc-msi.c b/drivers/pci/host/pcie-iproc-msi.c
index 9a2973b..9fad791 100644
--- a/drivers/pci/host/pcie-iproc-msi.c
+++ b/drivers/pci/host/pcie-iproc-msi.c
@@ -563,6 +563,7 @@ int iproc_msi_init(struct iproc_pcie *pcie, struct device_node *node)
 	}
 
 	switch (pcie->type) {
+	case IPROC_PCIE_PAXB_BCMA:
 	case IPROC_PCIE_PAXB:
 		msi->reg_offsets = iproc_msi_reg_paxb;
 		msi->nr_eq_region = 1;
diff --git a/drivers/pci/host/pcie-iproc.c b/drivers/pci/host/pcie-iproc.c
index 3f4884a..f3b3340 100644
--- a/drivers/pci/host/pcie-iproc.c
+++ b/drivers/pci/host/pcie-iproc.c
@@ -100,6 +100,17 @@ enum iproc_pcie_reg {
 	IPROC_PCIE_MAX_NUM_REG,
 };
 
+/* iProc PCIe PAXB BCMA registers */
+static const u16 iproc_pcie_reg_paxb_bcma[] = {
+	[IPROC_PCIE_CLK_CTRL]         = 0x000,
+	[IPROC_PCIE_CFG_IND_ADDR]     = 0x120,
+	[IPROC_PCIE_CFG_IND_DATA]     = 0x124,
+	[IPROC_PCIE_CFG_ADDR]         = 0x1f8,
+	[IPROC_PCIE_CFG_DATA]         = 0x1fc,
+	[IPROC_PCIE_INTX_EN]          = 0x330,
+	[IPROC_PCIE_LINK_STATUS]      = 0xf0c,
+};
+
 /* iProc PCIe PAXB registers */
 static const u16 iproc_pcie_reg_paxb[] = {
 	[IPROC_PCIE_CLK_CTRL]     = 0x000,
@@ -469,6 +480,9 @@ static int iproc_pcie_rev_init(struct iproc_pcie *pcie)
 	const u16 *regs;
 
 	switch (pcie->type) {
+	case IPROC_PCIE_PAXB_BCMA:
+		regs = iproc_pcie_reg_paxb_bcma;
+		break;
 	case IPROC_PCIE_PAXB:
 		regs = iproc_pcie_reg_paxb;
 		break;
diff --git a/drivers/pci/host/pcie-iproc.h b/drivers/pci/host/pcie-iproc.h
index 83643d5..768be05 100644
--- a/drivers/pci/host/pcie-iproc.h
+++ b/drivers/pci/host/pcie-iproc.h
@@ -24,7 +24,8 @@
  * endpoint devices.
  */
 enum iproc_pcie_type {
-	IPROC_PCIE_PAXB = 0,
+	IPROC_PCIE_PAXB_BCMA = 0,
+	IPROC_PCIE_PAXB,
 	IPROC_PCIE_PAXC,
 };
 
-- 
2.1.4

Back to linux.kernel | Previous | Next | Find similar | Unroll thread


Thread

[PATCH 03/12] PCI: iproc: Add BCMA type Ray Jui <ray.jui@broadcom.com> - 2016-10-25 00:20 +0200

csiph-web