Patchwork [U-Boot,2/4] mpc85xx/portals: Add qman and bman ip_cfg field into portal info

login
register
mail settings
Submitter York Sun
Date Oct. 11, 2012, 5:13 p.m.
Message ID <1349975620-21163-2-git-send-email-yorksun@freescale.com>
Download mbox | patch
Permalink /patch/190965/
State Accepted, archived
Delegated to: Andy Fleming
Headers show

Comments

York Sun - Oct. 11, 2012, 5:13 p.m.
From: Haiying Wang <Haiying.Wang@freescale.com>

Because QMan3.0 and BMan2.1 used ip_cfg in ip_rev_2 register to differ the
total portal number, buffer pool number etc, we can use this info to limit
those resources in kernel driver.

Signed-off-by: Haiying Wang <Haiying.Wang@freescale.com>
---
 arch/powerpc/cpu/mpc85xx/portals.c |   13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

Patch

diff --git a/arch/powerpc/cpu/mpc85xx/portals.c b/arch/powerpc/cpu/mpc85xx/portals.c
index 6199633..b59ef69 100644
--- a/arch/powerpc/cpu/mpc85xx/portals.c
+++ b/arch/powerpc/cpu/mpc85xx/portals.c
@@ -182,14 +182,18 @@  void fdt_fixup_qportals(void *blob)
 {
 	int off, err;
 	unsigned int maj, min;
+	unsigned int ip_cfg;
 	u32 rev_1 = in_be32(&qman->ip_rev_1);
+	u32 rev_2 = in_be32(&qman->ip_rev_2);
 	char compat[64];
 	int compat_len;
 
 	maj = (rev_1 >> 8) & 0xff;
 	min = rev_1 & 0xff;
+	ip_cfg = rev_2 & 0xff;
 
-	compat_len = sprintf(compat, "fsl,qman-portal-%u.%u", maj, min) + 1;
+	compat_len = sprintf(compat, "fsl,qman-portal-%u.%u.%u",
+					maj, min, ip_cfg) + 1;
 	compat_len += sprintf(compat + compat_len, "fsl,qman-portal") + 1;
 
 	off = fdt_node_offset_by_compatible(blob, -1, "fsl,qman-portal");
@@ -267,14 +271,19 @@  void fdt_fixup_bportals(void *blob)
 {
 	int off, err;
 	unsigned int maj, min;
+	unsigned int ip_cfg;
 	u32 rev_1 = in_be32(&bman->ip_rev_1);
+	u32 rev_2 = in_be32(&bman->ip_rev_2);
 	char compat[64];
 	int compat_len;
 
 	maj = (rev_1 >> 8) & 0xff;
 	min = rev_1 & 0xff;
 
-	compat_len = sprintf(compat, "fsl,bman-portal-%u.%u", maj, min) + 1;
+	ip_cfg = rev_2 & 0xff;
+
+	compat_len = sprintf(compat, "fsl,bman-portal-%u.%u.%u",
+				 maj, min, ip_cfg) + 1;
 	compat_len += sprintf(compat + compat_len, "fsl,bman-portal") + 1;
 
 	off = fdt_node_offset_by_compatible(blob, -1, "fsl,bman-portal");