All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/7 v4] support mapping PCI device ids to stream ids for MSIs
@ 2016-03-08 15:35 Stuart Yoder
  2016-03-08 15:35 ` [U-Boot] [PATCH 1/7 v4] armv8: ls2080a: remove obsolete stream ID partitioning support Stuart Yoder
                   ` (5 more replies)
  0 siblings, 6 replies; 11+ messages in thread
From: Stuart Yoder @ 2016-03-08 15:35 UTC (permalink / raw)
  To: u-boot

From: Stuart Yoder <stuart.yoder@nxp.com>

A binding for PCI nodes has been finalized specifying how PCI
device IDs can be mapped to MSI specifiers.  See
Documentation/devicetree/bindings/pci/pci-msi.txt in the kernel.

For ls2080a and similar Layerscape SoCs, the MSI specifier is the stream
id.  A programmable table (LUT) in the PCI controller defines the hardware
mapping of PCI requester IDs to stream IDs.

This patch series implements support for this mapping.

Patch 1 removes the obsolete available-stream-id support.
Patch 2 updates stream ID partitioning info to be current
Patch 3 updates pci.h so pci_get_hose_head() is available
Patch 4 implements support for programming the LUT
Patch 5 implements a simple stream ID allocator for PCI
Patch 6 implements a function to set msi-map properties
Patch 7 implements a function to iterate over all PCI buses
        and set up a LUT entry and msi-map for all discovered
        devices

This patch series enables MSIs on ls2080a on v4.5-rc5 and later
kernels.  The obsolete support removed was unused in any
upstream kernels.

-v2 changes
   -in patch 7 removed skip of the host bridge when scanning the
    bus
-v3 changes
   -patch 4: moved LUT #defines to immap_lsch3.h, made index
             allocator return an int
   -patch 5: return 0xffffffff on error
   -patch 7: fixed return value checks
-v4 changes
   -put all device ID to stream ID mapping under LS2 #ifdefs

Stuart Yoder (7):
  armv8: ls2080a: remove obsolete stream ID partitioning support
  armv8: ls2080a: update stream ID partitioning info
  pci: make pci_get_hose_head() available to external users
  pci/layerscape: add support for LUT
  pci/layerscape: add stream ID allocator
  pci/layerscape: fdt: function to set msi-map entries
  pci/layerscape: set LUT and msi-map for discovered PCI devices

 arch/arm/cpu/armv8/fsl-layerscape/fdt.c            |  113 ----------
 .../include/asm/arch-fsl-layerscape/immap_lsch3.h  |    4 +
 .../asm/arch-fsl-layerscape/ls2080a_stream_id.h    |   55 +++--
 drivers/pci/pcie_layerscape.c                      |  217 +++++++++++++-------
 include/pci.h                                      |    1 +
 5 files changed, 186 insertions(+), 204 deletions(-)

-- 
1.7.9.5

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 1/7 v4] armv8: ls2080a: remove obsolete stream ID partitioning support
  2016-03-08 15:35 [U-Boot] [PATCH 0/7 v4] support mapping PCI device ids to stream ids for MSIs Stuart Yoder
@ 2016-03-08 15:35 ` Stuart Yoder
  2016-03-08 15:35 ` [U-Boot] [PATCH 3/7 v4] pci: make pci_get_hose_head() available to external users Stuart Yoder
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Stuart Yoder @ 2016-03-08 15:35 UTC (permalink / raw)
  To: u-boot

From: Stuart Yoder <stuart.yoder@nxp.com>

Remove stream ID partitioning support that has been made
obsolete by upstream device tree bindings that specify how
representing how PCI requester IDs are mapped to MSI specifiers
and SMMU stream IDs.

Signed-off-by: Stuart Yoder <stuart.yoder@nxp.com>
---
-v4: no changes

 arch/arm/cpu/armv8/fsl-layerscape/fdt.c |  113 -------------------------------
 drivers/pci/pcie_layerscape.c           |   70 -------------------
 2 files changed, 183 deletions(-)

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
index 4e4861d..7a64f41 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
@@ -70,115 +70,6 @@ void ft_fixup_cpu(void *blob)
 }
 #endif
 
-/*
- * the burden is on the the caller to not request a count
- * exceeding the bounds of the stream_ids[] array
- */
-void alloc_stream_ids(int start_id, int count, u32 *stream_ids, int max_cnt)
-{
-	int i;
-
-	if (count > max_cnt) {
-		printf("\n%s: ERROR: max per-device stream ID count exceed\n",
-		       __func__);
-		return;
-	}
-
-	for (i = 0; i < count; i++)
-		stream_ids[i] = start_id++;
-}
-
-/*
- * This function updates the mmu-masters property on the SMMU
- * node as per the SMMU binding-- phandle and list of stream IDs
- * for each MMU master.
- */
-void append_mmu_masters(void *blob, const char *smmu_path,
-			const char *master_name, u32 *stream_ids, int count)
-{
-	u32 phandle;
-	int smmu_nodeoffset;
-	int master_nodeoffset;
-	int i;
-
-	/* get phandle of mmu master device */
-	master_nodeoffset = fdt_path_offset(blob, master_name);
-	if (master_nodeoffset < 0) {
-		printf("\n%s: ERROR: master not found\n", __func__);
-		return;
-	}
-	phandle = fdt_get_phandle(blob, master_nodeoffset);
-	if (!phandle) { /* if master has no phandle, create one */
-		phandle = fdt_create_phandle(blob, master_nodeoffset);
-		if (!phandle) {
-			printf("\n%s: ERROR: unable to create phandle\n",
-			       __func__);
-			return;
-		}
-	}
-
-	/* append it to mmu-masters */
-	smmu_nodeoffset = fdt_path_offset(blob, smmu_path);
-	if (fdt_appendprop_u32(blob, smmu_nodeoffset, "mmu-masters",
-			       phandle) < 0) {
-		printf("\n%s: ERROR: unable to update SMMU node\n", __func__);
-		return;
-	}
-
-	/* for each stream ID, append to mmu-masters */
-	for (i = 0; i < count; i++) {
-		fdt_appendprop_u32(blob, smmu_nodeoffset, "mmu-masters",
-				   stream_ids[i]);
-	}
-
-	/* fix up #stream-id-cells with stream ID count */
-	if (fdt_setprop_u32(blob, master_nodeoffset, "#stream-id-cells",
-			    count) < 0)
-		printf("\n%s: ERROR: unable to update #stream-id-cells\n",
-		       __func__);
-}
-
-
-/*
- * The info below summarizes how streamID partitioning works
- * for ls2080a and how it is conveyed to the OS via the device tree.
- *
- *  -non-PCI legacy, platform devices (USB, SD/MMC, SATA, DMA)
- *     -all legacy devices get a unique ICID assigned and programmed in
- *      their AMQR registers by u-boot
- *     -u-boot updates the hardware device tree with streamID properties
- *      for each platform/legacy device (smmu-masters property)
- *
- *  -PCIe
- *     -for each PCI controller that is active (as per RCW settings),
- *      u-boot will allocate a range of ICID and convey that to Linux via
- *      the device tree (smmu-masters property)
- *
- *  -DPAA2
- *     -u-boot will allocate a range of ICIDs to be used by the Management
- *      Complex for containers and will set these values in the MC DPC image.
- *     -the MC is responsible for allocating and setting up ICIDs
- *      for all DPAA2 devices.
- *
- */
-#ifdef CONFIG_FSL_LSCH3
-static void fdt_fixup_smmu(void *blob)
-{
-	int nodeoffset;
-
-	nodeoffset = fdt_path_offset(blob, "/iommu at 5000000");
-	if (nodeoffset < 0) {
-		printf("\n%s: WARNING: no SMMU node found\n", __func__);
-		return;
-	}
-
-	/* fixup for all PCI controllers */
-#ifdef CONFIG_PCI
-	fdt_fixup_smmu_pcie(blob);
-#endif
-}
-#endif
-
 void ft_cpu_setup(void *blob, bd_t *bd)
 {
 #ifdef CONFIG_MP
@@ -200,8 +91,4 @@ void ft_cpu_setup(void *blob, bd_t *bd)
 #ifdef CONFIG_FSL_ESDHC
 	fdt_fixup_esdhc(blob, bd);
 #endif
-
-#ifdef CONFIG_FSL_LSCH3
-	fdt_fixup_smmu(blob);
-#endif
 }
diff --git a/drivers/pci/pcie_layerscape.c b/drivers/pci/pcie_layerscape.c
index 99f9c83..bb29222 100644
--- a/drivers/pci/pcie_layerscape.c
+++ b/drivers/pci/pcie_layerscape.c
@@ -664,73 +664,3 @@ void ft_pci_setup(void *blob, bd_t *bd)
 {
 }
 #endif
-
-#if defined(CONFIG_LS2080A) || defined(CONFIG_LS2085A)
-
-void pcie_set_available_streamids(void *blob, const char *pcie_path,
-				  u32 *stream_ids, int count)
-{
-	int nodeoffset;
-	int i;
-
-	nodeoffset = fdt_path_offset(blob, pcie_path);
-	if (nodeoffset < 0) {
-		printf("\n%s: ERROR: unable to update PCIe node\n", __func__);
-		return;
-	}
-
-	/* for each stream ID, append to mmu-masters */
-	for (i = 0; i < count; i++) {
-		fdt_appendprop_u32(blob, nodeoffset, "available-stream-ids",
-				   stream_ids[i]);
-	}
-}
-
-#define MAX_STREAM_IDS 4
-void fdt_fixup_smmu_pcie(void *blob)
-{
-	int count;
-	u32 stream_ids[MAX_STREAM_IDS];
-	u32 ctlr_streamid = 0x300;
-
-	#ifdef CONFIG_PCIE1
-	/* PEX1 stream ID fixup */
-	count =	FSL_PEX1_STREAM_ID_END - FSL_PEX1_STREAM_ID_START + 1;
-	alloc_stream_ids(FSL_PEX1_STREAM_ID_START, count, stream_ids,
-			 MAX_STREAM_IDS);
-	pcie_set_available_streamids(blob, "/pcie at 3400000", stream_ids, count);
-	append_mmu_masters(blob, "/iommu at 5000000", "/pcie at 3400000",
-			   &ctlr_streamid, 1);
-	#endif
-
-	#ifdef CONFIG_PCIE2
-	/* PEX2 stream ID fixup */
-	count =	FSL_PEX2_STREAM_ID_END - FSL_PEX2_STREAM_ID_START + 1;
-	alloc_stream_ids(FSL_PEX2_STREAM_ID_START, count, stream_ids,
-			 MAX_STREAM_IDS);
-	pcie_set_available_streamids(blob, "/pcie at 3500000", stream_ids, count);
-	append_mmu_masters(blob, "/iommu at 5000000", "/pcie at 3500000",
-			   &ctlr_streamid, 1);
-	#endif
-
-	#ifdef CONFIG_PCIE3
-	/* PEX3 stream ID fixup */
-	count =	FSL_PEX3_STREAM_ID_END - FSL_PEX3_STREAM_ID_START + 1;
-	alloc_stream_ids(FSL_PEX3_STREAM_ID_START, count, stream_ids,
-			 MAX_STREAM_IDS);
-	pcie_set_available_streamids(blob, "/pcie at 3600000", stream_ids, count);
-	append_mmu_masters(blob, "/iommu at 5000000", "/pcie at 3600000",
-			   &ctlr_streamid, 1);
-	#endif
-
-	#ifdef CONFIG_PCIE4
-	/* PEX4 stream ID fixup */
-	count =	FSL_PEX4_STREAM_ID_END - FSL_PEX4_STREAM_ID_START + 1;
-	alloc_stream_ids(FSL_PEX4_STREAM_ID_START, count, stream_ids,
-			 MAX_STREAM_IDS);
-	pcie_set_available_streamids(blob, "/pcie at 3700000", stream_ids, count);
-	append_mmu_masters(blob, "/iommu at 5000000", "/pcie@3700000",
-			   &ctlr_streamid, 1);
-	#endif
-}
-#endif
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 3/7 v4] pci: make pci_get_hose_head() available to external users
  2016-03-08 15:35 [U-Boot] [PATCH 0/7 v4] support mapping PCI device ids to stream ids for MSIs Stuart Yoder
  2016-03-08 15:35 ` [U-Boot] [PATCH 1/7 v4] armv8: ls2080a: remove obsolete stream ID partitioning support Stuart Yoder
@ 2016-03-08 15:35 ` Stuart Yoder
  2016-03-08 15:35 ` [U-Boot] [PATCH 4/7 v4] pci/layerscape: add support for LUT Stuart Yoder
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Stuart Yoder @ 2016-03-08 15:35 UTC (permalink / raw)
  To: u-boot

From: Stuart Yoder <stuart.yoder@nxp.com>

put pci_get_hose_head() prototype in header so it is available to
external users-- allowing them to find and iterate over all pci controllers

Signed-off-by: Stuart Yoder <stuart.yoder@nxp.com>
---
-v4: no changes

 include/pci.h |    1 +
 1 file changed, 1 insertion(+)

diff --git a/include/pci.h b/include/pci.h
index 68548b0..8698056 100644
--- a/include/pci.h
+++ b/include/pci.h
@@ -700,6 +700,7 @@ extern void *pci_map_bar(pci_dev_t pdev, int bar, int flags);
 extern void pci_register_hose(struct pci_controller* hose);
 extern struct pci_controller* pci_bus_to_hose(int bus);
 extern struct pci_controller *find_hose_by_cfg_addr(void *cfg_addr);
+extern struct pci_controller *pci_get_hose_head(void);
 
 extern int pci_skip_dev(struct pci_controller *hose, pci_dev_t dev);
 extern int pci_hose_scan(struct pci_controller *hose);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 4/7 v4] pci/layerscape: add support for LUT
  2016-03-08 15:35 [U-Boot] [PATCH 0/7 v4] support mapping PCI device ids to stream ids for MSIs Stuart Yoder
  2016-03-08 15:35 ` [U-Boot] [PATCH 1/7 v4] armv8: ls2080a: remove obsolete stream ID partitioning support Stuart Yoder
  2016-03-08 15:35 ` [U-Boot] [PATCH 3/7 v4] pci: make pci_get_hose_head() available to external users Stuart Yoder
@ 2016-03-08 15:35 ` Stuart Yoder
  2016-03-08 17:30   ` york sun
  2016-03-08 15:35 ` [U-Boot] [PATCH 5/7 v4] pci/layerscape: add stream ID allocator Stuart Yoder
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 11+ messages in thread
From: Stuart Yoder @ 2016-03-08 15:35 UTC (permalink / raw)
  To: u-boot

From: Stuart Yoder <stuart.yoder@nxp.com>

The per-PCI controller LUT (Look-Up-Table) is a 32-entry table
that maps PCI requester IDs (bus/dev/fun) to a stream ID.

This patch implements infrastructure to enable LUT initialization:
  -define registers offsets
  -add an index to 'struct ls_pcie' to track next available slot in LUT
  -add function to allocate the next available entry index
  -add function to program a LUT entry

Signed-off-by: Stuart Yoder <stuart.yoder@nxp.com>
---
-v4: put new support under LS2 #ifdef

 .../include/asm/arch-fsl-layerscape/immap_lsch3.h  |    4 +++
 drivers/pci/pcie_layerscape.c                      |   30 ++++++++++++++++++++
 2 files changed, 34 insertions(+)

diff --git a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
index 91f3ce8..d04e336 100644
--- a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
+++ b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
@@ -86,6 +86,10 @@
 #define PCIE_LUT_BASE				0x80000
 #define PCIE_LUT_LCTRL0				0x7F8
 #define PCIE_LUT_DBG				0x7FC
+#define PCIE_LUT_UDR(n)         (0x800 + (n) * 8)
+#define PCIE_LUT_LDR(n)         (0x804 + (n) * 8)
+#define PCIE_LUT_ENABLE         (1 << 31)
+#define PCIE_LUT_ENTRY_COUNT    32
 
 /* Device Configuration */
 #define DCFG_BASE		0x01e00000
diff --git a/drivers/pci/pcie_layerscape.c b/drivers/pci/pcie_layerscape.c
index bb29222..8435446 100644
--- a/drivers/pci/pcie_layerscape.c
+++ b/drivers/pci/pcie_layerscape.c
@@ -93,6 +93,7 @@ struct ls_pcie {
 	void __iomem *dbi;
 	void __iomem *va_cfg0;
 	void __iomem *va_cfg1;
+	int next_lut_index;
 	struct pci_controller hose;
 };
 
@@ -482,6 +483,34 @@ static void ls_pcie_setup_ep(struct ls_pcie *pcie, struct ls_pcie_info *info)
 	}
 }
 
+#if defined(CONFIG_LS2080A) || defined(CONFIG_LS2085A)
+/*
+ * Return next available LUT index.
+ */
+static int ls_pcie_next_lut_index(struct ls_pcie *pcie)
+{
+	if (pcie->next_lut_index < PCIE_LUT_ENTRY_COUNT)
+		return pcie->next_lut_index++;
+	else
+		return -1;  /* LUT is full */
+}
+
+/*
+ * Program a single LUT entry
+ */
+static void ls_pcie_lut_set_mapping(struct ls_pcie *pcie, int index, u32 devid,
+			     u32 streamid)
+{
+	void __iomem *lut;
+
+	lut = pcie->dbi + PCIE_LUT_BASE;
+
+	/* leave mask as all zeroes, want to match all bits */
+	writel((devid << 16), lut + PCIE_LUT_UDR(index));
+	writel(streamid | PCIE_LUT_ENABLE, lut + PCIE_LUT_LDR(index));
+}
+#endif
+
 int ls_pcie_init_ctrl(int busno, enum srds_prtcl dev, struct ls_pcie_info *info)
 {
 	struct ls_pcie *pcie;
@@ -513,6 +542,7 @@ int ls_pcie_init_ctrl(int busno, enum srds_prtcl dev, struct ls_pcie_info *info)
 	pcie->va_cfg1 = map_physmem(info->cfg1_phys,
 				    info->cfg1_size,
 				    MAP_NOCACHE);
+	pcie->next_lut_index = 0;
 
 	/* outbound memory */
 	pci_set_region(&hose->regions[0],
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 5/7 v4] pci/layerscape: add stream ID allocator
  2016-03-08 15:35 [U-Boot] [PATCH 0/7 v4] support mapping PCI device ids to stream ids for MSIs Stuart Yoder
                   ` (2 preceding siblings ...)
  2016-03-08 15:35 ` [U-Boot] [PATCH 4/7 v4] pci/layerscape: add support for LUT Stuart Yoder
@ 2016-03-08 15:35 ` Stuart Yoder
  2016-03-08 15:35 ` [U-Boot] [PATCH 6/7 v4] pci/layerscape: fdt: function to set msi-map entries Stuart Yoder
  2016-03-08 15:35 ` [U-Boot] [PATCH 7/7 v4] pci/layerscape: set LUT and msi-map for discovered PCI devices Stuart Yoder
  5 siblings, 0 replies; 11+ messages in thread
From: Stuart Yoder @ 2016-03-08 15:35 UTC (permalink / raw)
  To: u-boot

From: Stuart Yoder <stuart.yoder@nxp.com>

add a function to return the next available stream ID
for PCI

Signed-off-by: Stuart Yoder <stuart.yoder@nxp.com>
---
-v4: no changes

 drivers/pci/pcie_layerscape.c |   11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/pci/pcie_layerscape.c b/drivers/pci/pcie_layerscape.c
index 8435446..4d24436 100644
--- a/drivers/pci/pcie_layerscape.c
+++ b/drivers/pci/pcie_layerscape.c
@@ -509,6 +509,17 @@ static void ls_pcie_lut_set_mapping(struct ls_pcie *pcie, int index, u32 devid,
 	writel((devid << 16), lut + PCIE_LUT_UDR(index));
 	writel(streamid | PCIE_LUT_ENABLE, lut + PCIE_LUT_LDR(index));
 }
+
+/* returns the next available streamid */
+static u32 ls_pcie_next_streamid(void)
+{
+	static int next_stream_id = FSL_PEX_STREAM_ID_START;
+
+	if (next_stream_id > FSL_PEX_STREAM_ID_END)
+		return 0xffffffff;
+
+	return next_stream_id++;
+}
 #endif
 
 int ls_pcie_init_ctrl(int busno, enum srds_prtcl dev, struct ls_pcie_info *info)
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 6/7 v4] pci/layerscape: fdt: function to set msi-map entries
  2016-03-08 15:35 [U-Boot] [PATCH 0/7 v4] support mapping PCI device ids to stream ids for MSIs Stuart Yoder
                   ` (3 preceding siblings ...)
  2016-03-08 15:35 ` [U-Boot] [PATCH 5/7 v4] pci/layerscape: add stream ID allocator Stuart Yoder
@ 2016-03-08 15:35 ` Stuart Yoder
  2016-03-08 15:35 ` [U-Boot] [PATCH 7/7 v4] pci/layerscape: set LUT and msi-map for discovered PCI devices Stuart Yoder
  5 siblings, 0 replies; 11+ messages in thread
From: Stuart Yoder @ 2016-03-08 15:35 UTC (permalink / raw)
  To: u-boot

From: Stuart Yoder <stuart.yoder@nxp.com>

msi-map properties are used to tell an OS how PCI requester
IDs are mapped to ARM SMMU stream IDs.  This patch defines a
function to append a single msi-map entry to a given PCI controller
device tree node.

Signed-off-by: Stuart Yoder <stuart.yoder@nxp.com>
---
-v4: no changes

 drivers/pci/pcie_layerscape.c |   42 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/drivers/pci/pcie_layerscape.c b/drivers/pci/pcie_layerscape.c
index 4d24436..c3dc911 100644
--- a/drivers/pci/pcie_layerscape.c
+++ b/drivers/pci/pcie_layerscape.c
@@ -520,6 +520,48 @@ static u32 ls_pcie_next_streamid(void)
 
 	return next_stream_id++;
 }
+
+/*
+ * An msi-map is a property to be added to the pci controller
+ * node.  It is a table, where each entry consists of 4 fields
+ * e.g.:
+ *
+ *      msi-map = <[devid] [phandle-to-msi-ctrl] [stream-id] [count]
+ *                 [devid] [phandle-to-msi-ctrl] [stream-id] [count]>;
+ */
+static void fdt_pcie_set_msi_map_entry(void *blob, struct ls_pcie *pcie,
+				       u32 devid, u32 streamid)
+{
+	char pcie_path[19];
+	u32 *prop;
+	u32 phandle;
+	int nodeoffset;
+
+	/* find pci controller node */
+	snprintf(pcie_path, sizeof(pcie_path), "/soc/pcie@%llx",
+		 (u64)pcie->dbi);
+	nodeoffset = fdt_path_offset(blob, pcie_path);
+	if (nodeoffset < 0) {
+		printf("\n%s: ERROR: unable to update PCIe node: %s\n",
+		       __func__, pcie_path);
+		return;
+	}
+
+	/* get phandle to MSI controller */
+	prop = (u32 *)fdt_getprop(blob, nodeoffset, "msi-parent", 0);
+	if (prop == NULL) {
+		printf("\n%s: ERROR: missing msi-parent: %s\n", __func__,
+		       pcie_path);
+		return;
+	}
+	phandle = be32_to_cpu(*prop);
+
+	/* set one msi-map row */
+	fdt_appendprop_u32(blob, nodeoffset, "msi-map", devid);
+	fdt_appendprop_u32(blob, nodeoffset, "msi-map", phandle);
+	fdt_appendprop_u32(blob, nodeoffset, "msi-map", streamid);
+	fdt_appendprop_u32(blob, nodeoffset, "msi-map", 1);
+}
 #endif
 
 int ls_pcie_init_ctrl(int busno, enum srds_prtcl dev, struct ls_pcie_info *info)
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 7/7 v4] pci/layerscape: set LUT and msi-map for discovered PCI devices
  2016-03-08 15:35 [U-Boot] [PATCH 0/7 v4] support mapping PCI device ids to stream ids for MSIs Stuart Yoder
                   ` (4 preceding siblings ...)
  2016-03-08 15:35 ` [U-Boot] [PATCH 6/7 v4] pci/layerscape: fdt: function to set msi-map entries Stuart Yoder
@ 2016-03-08 15:35 ` Stuart Yoder
  5 siblings, 0 replies; 11+ messages in thread
From: Stuart Yoder @ 2016-03-08 15:35 UTC (permalink / raw)
  To: u-boot

From: Stuart Yoder <stuart.yoder@nxp.com>

for all PCI devices discovered in a system:
  -allocate a LUT (look-up-table) entry in that PCI controller
  -allocate a stream ID for the device
  -program and enable a LUT entry (maps PCI requester id to stream ID)
  -set the msi-map property on the controller reflecting the
   LUT mapping

basic bus scanning loop/logic was taken from drivers/pci/pci.c
pci_hose_scan_bus().

Signed-off-by: Stuart Yoder <stuart.yoder@nxp.com>
---
-v4: no changes

 drivers/pci/pcie_layerscape.c |   64 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)

diff --git a/drivers/pci/pcie_layerscape.c b/drivers/pci/pcie_layerscape.c
index c3dc911..2aa415a 100644
--- a/drivers/pci/pcie_layerscape.c
+++ b/drivers/pci/pcie_layerscape.c
@@ -562,6 +562,66 @@ static void fdt_pcie_set_msi_map_entry(void *blob, struct ls_pcie *pcie,
 	fdt_appendprop_u32(blob, nodeoffset, "msi-map", streamid);
 	fdt_appendprop_u32(blob, nodeoffset, "msi-map", 1);
 }
+
+static void fdt_fixup_pcie(void *blob)
+{
+	unsigned int found_multi = 0;
+	unsigned char header_type;
+	int index;
+	u32 streamid;
+	pci_dev_t dev;
+	int bus;
+	unsigned short id;
+	struct pci_controller *hose;
+	struct ls_pcie *pcie;
+	int i;
+
+	for (i = 0, hose = pci_get_hose_head(); hose; hose = hose->next, i++) {
+		pcie = hose->priv_data;
+		for (bus = hose->first_busno; bus <= hose->last_busno; bus++) {
+
+			for (dev =  PCI_BDF(bus, 0, 0);
+			     dev <  PCI_BDF(bus, PCI_MAX_PCI_DEVICES - 1,
+					    PCI_MAX_PCI_FUNCTIONS - 1);
+			     dev += PCI_BDF(0, 0, 1)) {
+
+				if (PCI_FUNC(dev) && !found_multi)
+					continue;
+
+				pci_read_config_word(dev, PCI_VENDOR_ID, &id);
+
+				pci_read_config_byte(dev, PCI_HEADER_TYPE,
+						     &header_type);
+
+				if ((id == 0xFFFF) || (id == 0x0000))
+					continue;
+
+				if (!PCI_FUNC(dev))
+					found_multi = header_type & 0x80;
+
+				streamid = ls_pcie_next_streamid();
+				if (streamid == 0xffffffff) {
+					printf("ERROR: no stream ids free\n");
+					continue;
+				}
+
+				index = ls_pcie_next_lut_index(pcie);
+				if (index < 0) {
+					printf("ERROR: no LUT indexes free\n");
+					continue;
+				}
+
+				/* map PCI b.d.f to streamID in LUT */
+				ls_pcie_lut_set_mapping(pcie, index, dev >> 8,
+							streamid);
+
+				/* update msi-map in device tree */
+				fdt_pcie_set_msi_map_entry(blob, pcie, dev >> 8,
+							   streamid);
+			}
+		}
+	}
+}
 #endif
 
 int ls_pcie_init_ctrl(int busno, enum srds_prtcl dev, struct ls_pcie_info *info)
@@ -740,6 +800,10 @@ void ft_pci_setup(void *blob, bd_t *bd)
 	#ifdef CONFIG_PCIE4
 	ft_pcie_ls_setup(blob, FSL_PCIE_COMPAT, CONFIG_SYS_PCIE4_ADDR, PCIE4);
 	#endif
+
+	#if defined(CONFIG_LS2080A) || defined(CONFIG_LS2085A)
+	fdt_fixup_pcie(blob);
+	#endif
 }
 
 #else
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 4/7 v4] pci/layerscape: add support for LUT
  2016-03-08 15:35 ` [U-Boot] [PATCH 4/7 v4] pci/layerscape: add support for LUT Stuart Yoder
@ 2016-03-08 17:30   ` york sun
  2016-03-08 19:36     ` Stuart Yoder
  0 siblings, 1 reply; 11+ messages in thread
From: york sun @ 2016-03-08 17:30 UTC (permalink / raw)
  To: u-boot

On 03/08/2016 07:56 AM, Stuart Yoder wrote:
> From: Stuart Yoder <stuart.yoder@nxp.com>
> 
> The per-PCI controller LUT (Look-Up-Table) is a 32-entry table
> that maps PCI requester IDs (bus/dev/fun) to a stream ID.
> 
> This patch implements infrastructure to enable LUT initialization:
>   -define registers offsets
>   -add an index to 'struct ls_pcie' to track next available slot in LUT
>   -add function to allocate the next available entry index
>   -add function to program a LUT entry
> 
> Signed-off-by: Stuart Yoder <stuart.yoder@nxp.com>
> ---
> -v4: put new support under LS2 #ifdef
> 
>  .../include/asm/arch-fsl-layerscape/immap_lsch3.h  |    4 +++
>  drivers/pci/pcie_layerscape.c                      |   30 ++++++++++++++++++++
>  2 files changed, 34 insertions(+)
> 
> diff --git a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
> index 91f3ce8..d04e336 100644
> --- a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
> +++ b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
> @@ -86,6 +86,10 @@
>  #define PCIE_LUT_BASE				0x80000
>  #define PCIE_LUT_LCTRL0				0x7F8
>  #define PCIE_LUT_DBG				0x7FC
> +#define PCIE_LUT_UDR(n)         (0x800 + (n) * 8)
> +#define PCIE_LUT_LDR(n)         (0x804 + (n) * 8)
> +#define PCIE_LUT_ENABLE         (1 << 31)
> +#define PCIE_LUT_ENTRY_COUNT    32
>  
>  /* Device Configuration */
>  #define DCFG_BASE		0x01e00000
> diff --git a/drivers/pci/pcie_layerscape.c b/drivers/pci/pcie_layerscape.c
> index bb29222..8435446 100644
> --- a/drivers/pci/pcie_layerscape.c
> +++ b/drivers/pci/pcie_layerscape.c
> @@ -93,6 +93,7 @@ struct ls_pcie {
>  	void __iomem *dbi;
>  	void __iomem *va_cfg0;
>  	void __iomem *va_cfg1;
> +	int next_lut_index;
>  	struct pci_controller hose;
>  };
>  
> @@ -482,6 +483,34 @@ static void ls_pcie_setup_ep(struct ls_pcie *pcie, struct ls_pcie_info *info)
>  	}
>  }
>  
> +#if defined(CONFIG_LS2080A) || defined(CONFIG_LS2085A)

Would CONFIG_FSL_LSCH3 serve this purpose better? We will have other SoC in the
same family.

York

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 4/7 v4] pci/layerscape: add support for LUT
  2016-03-08 17:30   ` york sun
@ 2016-03-08 19:36     ` Stuart Yoder
  2016-03-08 19:45       ` york sun
  0 siblings, 1 reply; 11+ messages in thread
From: Stuart Yoder @ 2016-03-08 19:36 UTC (permalink / raw)
  To: u-boot



> -----Original Message-----
> From: york sun
> Sent: Tuesday, March 08, 2016 11:30 AM
> To: Stuart Yoder <stuart.yoder@nxp.com>; u-boot at lists.denx.de
> Cc: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>; Yang-Leo Li <leoyang.li@nxp.com>
> Subject: Re: [PATCH 4/7 v4] pci/layerscape: add support for LUT
> 
> On 03/08/2016 07:56 AM, Stuart Yoder wrote:
> > From: Stuart Yoder <stuart.yoder@nxp.com>
> >
> > The per-PCI controller LUT (Look-Up-Table) is a 32-entry table
> > that maps PCI requester IDs (bus/dev/fun) to a stream ID.
> >
> > This patch implements infrastructure to enable LUT initialization:
> >   -define registers offsets
> >   -add an index to 'struct ls_pcie' to track next available slot in LUT
> >   -add function to allocate the next available entry index
> >   -add function to program a LUT entry
> >
> > Signed-off-by: Stuart Yoder <stuart.yoder@nxp.com>
> > ---
> > -v4: put new support under LS2 #ifdef
> >
> >  .../include/asm/arch-fsl-layerscape/immap_lsch3.h  |    4 +++
> >  drivers/pci/pcie_layerscape.c                      |   30 ++++++++++++++++++++
> >  2 files changed, 34 insertions(+)
> >
> > diff --git a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
> b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
> > index 91f3ce8..d04e336 100644
> > --- a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
> > +++ b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
> > @@ -86,6 +86,10 @@
> >  #define PCIE_LUT_BASE				0x80000
> >  #define PCIE_LUT_LCTRL0				0x7F8
> >  #define PCIE_LUT_DBG				0x7FC
> > +#define PCIE_LUT_UDR(n)         (0x800 + (n) * 8)
> > +#define PCIE_LUT_LDR(n)         (0x804 + (n) * 8)
> > +#define PCIE_LUT_ENABLE         (1 << 31)
> > +#define PCIE_LUT_ENTRY_COUNT    32
> >
> >  /* Device Configuration */
> >  #define DCFG_BASE		0x01e00000
> > diff --git a/drivers/pci/pcie_layerscape.c b/drivers/pci/pcie_layerscape.c
> > index bb29222..8435446 100644
> > --- a/drivers/pci/pcie_layerscape.c
> > +++ b/drivers/pci/pcie_layerscape.c
> > @@ -93,6 +93,7 @@ struct ls_pcie {
> >  	void __iomem *dbi;
> >  	void __iomem *va_cfg0;
> >  	void __iomem *va_cfg1;
> > +	int next_lut_index;
> >  	struct pci_controller hose;
> >  };
> >
> > @@ -482,6 +483,34 @@ static void ls_pcie_setup_ep(struct ls_pcie *pcie, struct
> ls_pcie_info *info)
> >  	}
> >  }
> >
> > +#if defined(CONFIG_LS2080A) || defined(CONFIG_LS2085A)
> 
> Would CONFIG_FSL_LSCH3 serve this purpose better? We will have other SoC in the
> same family.

Maybe, I'm open to a common define if we can easily get agreement.

I see at least 7 other references to:
   defined(CONFIG_LS2080A) || defined(CONFIG_LS2085A)

I'd rather not see agreement on a common #define get mixed
up in this patch series which is focused on enabling
MSIs.  But, perhaps we need to agree on a name and 
then clean all the common platform references up.

I'm not sure I like FSL_LSCH3.  A while back we changed the
name of a u-boot directory that had "ch3" in it and changed to:
"fsl-layerscape". So, I thought we were moving in the direction
of removing references to "ch3".

In Linux we use CONFIG_ARCH_LAYERSCAPE to refer to the ARMv8
family of SoCs.  While LAYERSCAPE is not ideal, it may be
better than CH3 which is a reference to an internal name
that no one outside of NXP will ever understand.

My vote would be CONFIG_LAYERSCAPE.

Stuart

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 4/7 v4] pci/layerscape: add support for LUT
  2016-03-08 19:36     ` Stuart Yoder
@ 2016-03-08 19:45       ` york sun
  2016-03-08 19:58         ` Stuart Yoder
  0 siblings, 1 reply; 11+ messages in thread
From: york sun @ 2016-03-08 19:45 UTC (permalink / raw)
  To: u-boot

On 03/08/2016 11:36 AM, Stuart Yoder wrote:
> 
> 
>> -----Original Message-----
>> From: york sun
>> Sent: Tuesday, March 08, 2016 11:30 AM
>> To: Stuart Yoder <stuart.yoder@nxp.com>; u-boot at lists.denx.de
>> Cc: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>; Yang-Leo Li <leoyang.li@nxp.com>
>> Subject: Re: [PATCH 4/7 v4] pci/layerscape: add support for LUT
>>
>> On 03/08/2016 07:56 AM, Stuart Yoder wrote:
>>> From: Stuart Yoder <stuart.yoder@nxp.com>
>>>
>>> The per-PCI controller LUT (Look-Up-Table) is a 32-entry table
>>> that maps PCI requester IDs (bus/dev/fun) to a stream ID.
>>>
>>> This patch implements infrastructure to enable LUT initialization:
>>>   -define registers offsets
>>>   -add an index to 'struct ls_pcie' to track next available slot in LUT
>>>   -add function to allocate the next available entry index
>>>   -add function to program a LUT entry
>>>
>>> Signed-off-by: Stuart Yoder <stuart.yoder@nxp.com>
>>> ---
>>> -v4: put new support under LS2 #ifdef
>>>
>>>  .../include/asm/arch-fsl-layerscape/immap_lsch3.h  |    4 +++
>>>  drivers/pci/pcie_layerscape.c                      |   30 ++++++++++++++++++++
>>>  2 files changed, 34 insertions(+)
>>>
>>> diff --git a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
>> b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
>>> index 91f3ce8..d04e336 100644
>>> --- a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
>>> +++ b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
>>> @@ -86,6 +86,10 @@
>>>  #define PCIE_LUT_BASE				0x80000
>>>  #define PCIE_LUT_LCTRL0				0x7F8
>>>  #define PCIE_LUT_DBG				0x7FC
>>> +#define PCIE_LUT_UDR(n)         (0x800 + (n) * 8)
>>> +#define PCIE_LUT_LDR(n)         (0x804 + (n) * 8)
>>> +#define PCIE_LUT_ENABLE         (1 << 31)
>>> +#define PCIE_LUT_ENTRY_COUNT    32
>>>
>>>  /* Device Configuration */
>>>  #define DCFG_BASE		0x01e00000
>>> diff --git a/drivers/pci/pcie_layerscape.c b/drivers/pci/pcie_layerscape.c
>>> index bb29222..8435446 100644
>>> --- a/drivers/pci/pcie_layerscape.c
>>> +++ b/drivers/pci/pcie_layerscape.c
>>> @@ -93,6 +93,7 @@ struct ls_pcie {
>>>  	void __iomem *dbi;
>>>  	void __iomem *va_cfg0;
>>>  	void __iomem *va_cfg1;
>>> +	int next_lut_index;
>>>  	struct pci_controller hose;
>>>  };
>>>
>>> @@ -482,6 +483,34 @@ static void ls_pcie_setup_ep(struct ls_pcie *pcie, struct
>> ls_pcie_info *info)
>>>  	}
>>>  }
>>>
>>> +#if defined(CONFIG_LS2080A) || defined(CONFIG_LS2085A)
>>
>> Would CONFIG_FSL_LSCH3 serve this purpose better? We will have other SoC in the
>> same family.
> 
> Maybe, I'm open to a common define if we can easily get agreement.
> 
> I see at least 7 other references to:
>    defined(CONFIG_LS2080A) || defined(CONFIG_LS2085A)
> 
> I'd rather not see agreement on a common #define get mixed
> up in this patch series which is focused on enabling
> MSIs.  But, perhaps we need to agree on a name and 
> then clean all the common platform references up.
> 
> I'm not sure I like FSL_LSCH3.  A while back we changed the
> name of a u-boot directory that had "ch3" in it and changed to:
> "fsl-layerscape". So, I thought we were moving in the direction
> of removing references to "ch3".
> 
> In Linux we use CONFIG_ARCH_LAYERSCAPE to refer to the ARMv8
> family of SoCs.  While LAYERSCAPE is not ideal, it may be
> better than CH3 which is a reference to an internal name
> that no one outside of NXP will ever understand.
> 
> My vote would be CONFIG_LAYERSCAPE.
> 

We already have CONFIG_FSL_LSCH3 and CONFIG_FSL_LSCH2 in U-Boot. My concern is
not the name. If you see your change fits CONFIG_FSL_LSCH3, you can go ahead to
use it. Or if it only applies to CONFIG_LS2080A and CONFIG_LS2085A, you can keep
your change. With aother LSCH3 SoC around the corner, I am trying to save you
the trouble to fix it when that comes.

York

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 4/7 v4] pci/layerscape: add support for LUT
  2016-03-08 19:45       ` york sun
@ 2016-03-08 19:58         ` Stuart Yoder
  0 siblings, 0 replies; 11+ messages in thread
From: Stuart Yoder @ 2016-03-08 19:58 UTC (permalink / raw)
  To: u-boot



> -----Original Message-----
> From: york sun
> Sent: Tuesday, March 08, 2016 1:46 PM
> To: Stuart Yoder <stuart.yoder@nxp.com>; u-boot at lists.denx.de
> Cc: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>; Yang-Leo Li <leoyang.li@nxp.com>
> Subject: Re: [PATCH 4/7 v4] pci/layerscape: add support for LUT
> 
> On 03/08/2016 11:36 AM, Stuart Yoder wrote:
> >
> >
> >> -----Original Message-----
> >> From: york sun
> >> Sent: Tuesday, March 08, 2016 11:30 AM
> >> To: Stuart Yoder <stuart.yoder@nxp.com>; u-boot at lists.denx.de
> >> Cc: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>; Yang-Leo Li <leoyang.li@nxp.com>
> >> Subject: Re: [PATCH 4/7 v4] pci/layerscape: add support for LUT
> >>
> >> On 03/08/2016 07:56 AM, Stuart Yoder wrote:
> >>> From: Stuart Yoder <stuart.yoder@nxp.com>
> >>>
> >>> The per-PCI controller LUT (Look-Up-Table) is a 32-entry table
> >>> that maps PCI requester IDs (bus/dev/fun) to a stream ID.
> >>>
> >>> This patch implements infrastructure to enable LUT initialization:
> >>>   -define registers offsets
> >>>   -add an index to 'struct ls_pcie' to track next available slot in LUT
> >>>   -add function to allocate the next available entry index
> >>>   -add function to program a LUT entry
> >>>
> >>> Signed-off-by: Stuart Yoder <stuart.yoder@nxp.com>
> >>> ---
> >>> -v4: put new support under LS2 #ifdef
> >>>
> >>>  .../include/asm/arch-fsl-layerscape/immap_lsch3.h  |    4 +++
> >>>  drivers/pci/pcie_layerscape.c                      |   30 ++++++++++++++++++++
> >>>  2 files changed, 34 insertions(+)
> >>>
> >>> diff --git a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
> >> b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
> >>> index 91f3ce8..d04e336 100644
> >>> --- a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
> >>> +++ b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
> >>> @@ -86,6 +86,10 @@
> >>>  #define PCIE_LUT_BASE				0x80000
> >>>  #define PCIE_LUT_LCTRL0				0x7F8
> >>>  #define PCIE_LUT_DBG				0x7FC
> >>> +#define PCIE_LUT_UDR(n)         (0x800 + (n) * 8)
> >>> +#define PCIE_LUT_LDR(n)         (0x804 + (n) * 8)
> >>> +#define PCIE_LUT_ENABLE         (1 << 31)
> >>> +#define PCIE_LUT_ENTRY_COUNT    32
> >>>
> >>>  /* Device Configuration */
> >>>  #define DCFG_BASE		0x01e00000
> >>> diff --git a/drivers/pci/pcie_layerscape.c b/drivers/pci/pcie_layerscape.c
> >>> index bb29222..8435446 100644
> >>> --- a/drivers/pci/pcie_layerscape.c
> >>> +++ b/drivers/pci/pcie_layerscape.c
> >>> @@ -93,6 +93,7 @@ struct ls_pcie {
> >>>  	void __iomem *dbi;
> >>>  	void __iomem *va_cfg0;
> >>>  	void __iomem *va_cfg1;
> >>> +	int next_lut_index;
> >>>  	struct pci_controller hose;
> >>>  };
> >>>
> >>> @@ -482,6 +483,34 @@ static void ls_pcie_setup_ep(struct ls_pcie *pcie, struct
> >> ls_pcie_info *info)
> >>>  	}
> >>>  }
> >>>
> >>> +#if defined(CONFIG_LS2080A) || defined(CONFIG_LS2085A)
> >>
> >> Would CONFIG_FSL_LSCH3 serve this purpose better? We will have other SoC in the
> >> same family.
> >
> > Maybe, I'm open to a common define if we can easily get agreement.
> >
> > I see at least 7 other references to:
> >    defined(CONFIG_LS2080A) || defined(CONFIG_LS2085A)
> >
> > I'd rather not see agreement on a common #define get mixed
> > up in this patch series which is focused on enabling
> > MSIs.  But, perhaps we need to agree on a name and
> > then clean all the common platform references up.
> >
> > I'm not sure I like FSL_LSCH3.  A while back we changed the
> > name of a u-boot directory that had "ch3" in it and changed to:
> > "fsl-layerscape". So, I thought we were moving in the direction
> > of removing references to "ch3".
> >
> > In Linux we use CONFIG_ARCH_LAYERSCAPE to refer to the ARMv8
> > family of SoCs.  While LAYERSCAPE is not ideal, it may be
> > better than CH3 which is a reference to an internal name
> > that no one outside of NXP will ever understand.
> >
> > My vote would be CONFIG_LAYERSCAPE.
> >
> 
> We already have CONFIG_FSL_LSCH3 and CONFIG_FSL_LSCH2 in U-Boot. My concern is
> not the name. If you see your change fits CONFIG_FSL_LSCH3, you can go ahead to
> use it. Or if it only applies to CONFIG_LS2080A and CONFIG_LS2085A, you can keep
> your change. With aother LSCH3 SoC around the corner, I am trying to save you
> the trouble to fix it when that comes.

Sure, makes sense...I'll change to use the existing CH3 define.  I suspect
that the existing references to defined(CONFIG_LS2080A) || defined(CONFIG_LS2085A)
should probably change at some point.

Stuart

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-03-08 19:58 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-08 15:35 [U-Boot] [PATCH 0/7 v4] support mapping PCI device ids to stream ids for MSIs Stuart Yoder
2016-03-08 15:35 ` [U-Boot] [PATCH 1/7 v4] armv8: ls2080a: remove obsolete stream ID partitioning support Stuart Yoder
2016-03-08 15:35 ` [U-Boot] [PATCH 3/7 v4] pci: make pci_get_hose_head() available to external users Stuart Yoder
2016-03-08 15:35 ` [U-Boot] [PATCH 4/7 v4] pci/layerscape: add support for LUT Stuart Yoder
2016-03-08 17:30   ` york sun
2016-03-08 19:36     ` Stuart Yoder
2016-03-08 19:45       ` york sun
2016-03-08 19:58         ` Stuart Yoder
2016-03-08 15:35 ` [U-Boot] [PATCH 5/7 v4] pci/layerscape: add stream ID allocator Stuart Yoder
2016-03-08 15:35 ` [U-Boot] [PATCH 6/7 v4] pci/layerscape: fdt: function to set msi-map entries Stuart Yoder
2016-03-08 15:35 ` [U-Boot] [PATCH 7/7 v4] pci/layerscape: set LUT and msi-map for discovered PCI devices Stuart Yoder

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.