diff options
author | Haiying Wang <Haiying.Wang@freescale.com> | 2012-10-11 07:13:38 +0000 |
---|---|---|
committer | Andy Fleming <afleming@freescale.com> | 2012-10-22 15:52:46 -0500 |
commit | b0e8115741cbba252e64f3b4e81799de57248a26 (patch) | |
tree | 3d49aff3f26638a63c1843683913bdb1a0eb6f55 | |
parent | ee52b188ca2c631427d197056ab7b71b9e23bde7 (diff) | |
download | u-boot-imx-b0e8115741cbba252e64f3b4e81799de57248a26.zip u-boot-imx-b0e8115741cbba252e64f3b4e81799de57248a26.tar.gz u-boot-imx-b0e8115741cbba252e64f3b4e81799de57248a26.tar.bz2 |
mpc85xx/portals: Add qman and bman ip_cfg field into portal info
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>
Signed-off-by: Andy Fleming <afleming@freescale.com>
-rw-r--r-- | arch/powerpc/cpu/mpc85xx/portals.c | 13 |
1 files changed, 11 insertions, 2 deletions
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"); |