Thread (27 messages) 27 messages, 7 authors, 2014-01-22

RE: [02/12,v3] pci: fsl: add structure fsl_pci

From: Roy Zang <hidden>
Date: 2014-01-22 23:38:51
Also in: linux-pci

-----Original Message-----
From: Wood Scott-B07421
Sent: Friday, January 03, 2014 4:19 PM
To: Lian Minghuan-B31939
Cc: linuxppc-dev@lists.ozlabs.org; linux-pci@vger.kernel.org; Zang Roy-
R61911; Bjorn Helgaas
Subject: Re: [02/12,v3] pci: fsl: add structure fsl_pci
=20
On Wed, Oct 23, 2013 at 06:41:24PM +0800, Minghuan Lian wrote:
quoted
PowerPC uses structure pci_controller to describe PCI controller, but
ARM uses structure pci_sys_data. In order to support PowerPC and ARM
simultaneously, the patch adds a structure fsl_pci that contains most
of the members of the pci_controller and pci_sys_data.
Meanwhile, it defines a interface fsl_arch_sys_to_pci() which should
be implemented in architecture-specific PCI controller driver to
convert pci_controller or pci_sys_data to fsl_pci.

Signed-off-by: Minghuan Lian <redacted>

---
change log:
v1-v3:
Derived from http://patchwork.ozlabs.org/patch/278965/

Based on upstream master.
Based on the discussion of RFC version here
http://patchwork.ozlabs.org/patch/274487/

 include/linux/fsl/pci-common.h | 41
+++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)
diff --git a/include/linux/fsl/pci-common.h
b/include/linux/fsl/pci-common.h index 5e4f683..e56a040 100644
--- a/include/linux/fsl/pci-common.h
+++ b/include/linux/fsl/pci-common.h
@@ -102,5 +102,46 @@ struct ccsr_pci {

 };

+/*
+ * Structure of a PCI controller (host bridge)  */ struct fsl_pci {
+	struct list_head node;
+	bool is_pcie;
+	struct device_node *dn;
+	struct device *dev;
+
+	int first_busno;
+	int last_busno;
+	int self_busno;
+	struct resource busn;
+
+	struct pci_ops *ops;
+	struct ccsr_pci __iomem *regs;
+
+	u32 indirect_type;
+
+	struct resource io_resource;
+	resource_size_t io_base_phys;
+	resource_size_t pci_io_size;
+
+	struct resource mem_resources[3];
+	resource_size_t mem_offset[3];
+
+	int global_number;	/* PCI domain number */
+
+	resource_size_t dma_window_base_cur;
+	resource_size_t dma_window_size;
+
+	void *sys;
+};
=20
I don't like the extent to which this duplicates (not moves) PPC's struct
pci_controller.  Also this leaves some fields like "indirect_type"
unexplained (PPC_INDIRECT_TYPE_xxx is only in the PPC header).
INDIRECT type is for configuration space access, I do not think it is ppc h=
eader specific.
It is good to put it to freescale pci common code.
Roy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help