summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/cpu/mpc85xx/portals.c
diff options
context:
space:
mode:
authorHaiying Wang <Haiying.Wang@freescale.com>2011-03-01 09:30:07 -0500
committerKumar Gala <galak@kernel.crashing.org>2011-04-27 22:29:03 -0500
commit2a0ffb84c7ea4ecd7654bda1599fd36b90435501 (patch)
tree7954601e598ef5e7798503397c4d442f83b3a8a3 /arch/powerpc/cpu/mpc85xx/portals.c
parent2bad42a0c89bd1a977c05e994ba73e4e6030f945 (diff)
downloadblackbird-obmc-uboot-2a0ffb84c7ea4ecd7654bda1599fd36b90435501.tar.gz
blackbird-obmc-uboot-2a0ffb84c7ea4ecd7654bda1599fd36b90435501.zip
powerpc/85xx: Add device tree fixup for bman portal
Fix fdt bportal to pass the bman revision number to kernel via device tree. Signed-off-by: Haiying Wang <Haiying.Wang@freescale.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/cpu/mpc85xx/portals.c')
-rw-r--r--arch/powerpc/cpu/mpc85xx/portals.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/arch/powerpc/cpu/mpc85xx/portals.c b/arch/powerpc/cpu/mpc85xx/portals.c
index e8d53bb2fd..c014163e3c 100644
--- a/arch/powerpc/cpu/mpc85xx/portals.c
+++ b/arch/powerpc/cpu/mpc85xx/portals.c
@@ -31,6 +31,7 @@
#include <asm/fsl_liodn.h>
static ccsr_qman_t *qman = (void *)CONFIG_SYS_FSL_QMAN_ADDR;
+static ccsr_bman_t *bman = (void *)CONFIG_SYS_FSL_BMAN_ADDR;
void setup_portals(void)
{
@@ -250,3 +251,32 @@ err:
off = fdt_node_offset_by_compatible(blob, off, "fsl,qman-portal");
}
}
+
+void fdt_fixup_bportals(void *blob)
+{
+ int off, err;
+ unsigned int maj, min;
+ u32 rev_1 = in_be32(&bman->ip_rev_1);
+ 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;
+ compat_len += sprintf(compat + compat_len, "fsl,bman-portal") + 1;
+
+ off = fdt_node_offset_by_compatible(blob, -1, "fsl,bman-portal");
+ while (off != -FDT_ERR_NOTFOUND) {
+ err = fdt_setprop(blob, off, "compatible", compat, compat_len);
+ if (err < 0) {
+ printf("ERROR: unable to create props for %s: %s\n",
+ fdt_get_name(blob, off, NULL),
+ fdt_strerror(err));
+ return;
+ }
+
+ off = fdt_node_offset_by_compatible(blob, off, "fsl,bman-portal");
+ }
+
+}
OpenPOWER on IntegriCloud